Capteur de niveau Arduino Bluetooth pour cuve

Présentation de la création d’un capteur de niveau à ultrasons à l’aide d’une carte Arduino communiquant en Bluetooth avec un smartphone pour mesurer le niveau d’une cuve (à eau par exemple).

Dans mon cas je souhaite mesurer le niveau d’eau dans un récupérateur d’eau de pluie opaque, pouvant être ouvert sur le dessus.

1/ Le récupérateur d’eau de pluie et le projet

La cuve ou récupérateur d’eau de pluie se présente comme sur la photo ci-dessous. Il est opaque donc impossible de voir le niveau et l’ouverture est sur le dessus, ainsi même pour une estimation du niveau restant, il faut monter sur une chaise et utiliser une lampe. On peut par contre poser un objet sur le dessus de la cuve sans utiliser une chaise.

L’objectif est donc d’utiliser un capteur à ultrasons pour connaitre la distance entre le haut de la cuve et l’eau (en le posant sur le dessus), puis avec quelques calculs de déterminer la quantité d’eau restante dans la cuve.

2/ Le matériel utilisé pour la création du capteur de niveau à ultrasons communiquant en Bluetooth

  • Carte Arduino Uno
  • Capteur à ultrasons HC-SR04
  • Module Bluetooth HC-05
  • Breadboard mini
  • Fils de connexion
  • (Imprimante 3D pour le boitier, facultatif)

3/ Fonctionnement du capteur de niveau de la cuve

Le capteur de niveau que nous allons utiliser dans ce projet est le HC-SR04, qui est un capteur à ultrasons. Le HC-SR04 émet un signal à ultrasons qui rebondit sur la surface du liquide stocké dans la cuve, puis retourne au capteur. Le temps que prend le signal pour revenir est mesuré et utilisé pour calculer la distance entre la surface du liquide et le capteur. On calcule ensuite le volume restant dans la cuve à l’aide de cette distance.

Cette distance et le volume restant dans la cuve sont ensuite transmis via le module Bluetooth à notre smartphone, préalablement appairé à celui-ci.

4/ Les branchements de la carte Arduino avec le capteur US HC-SR04 et le module Bluetooth HC-05

Les branchements sont les suivants :

  1. Broche 5V de l’Arduino à une rangée de la breadboard
  2. Repartir de la ligne 5V de la breadboard vers la broche VCC du capteur US
  3. Sur la ligne 5V de la breadboard, repartir vers la broche VCC du module Bluetooth
  4. Broche GND de l’Arduino à une broche GND du module Bluetooth
  5. Broche GND de l’Arduino à une broche GND du capteur US
  6. PIN 8 de l’Arduino vers la broche Echo du capteur US
  7. PIN 9 de l’Arduino vers une rangée de la breadboard
  8. Sur la même rangée de la breadboard, ajouter une résistance de 470 ohms.
  9. Repartir de cette même rangée de la breadboard, vers la broche Trig du capteur US

5/ Code pour la programmation de l’Arduino

Le code suivant permet de mesurer la distance entre la surface du liquide et le capteur de niveau et la convertit en cm. Puis il transmet cette information à notre téléphone via Bluetooth (il effectue également le calcul du volume restant dans mon cas, mais cela est spécifique à chaque cuve) :

#define echoPin 8
#define trigPin 9

#include <SoftwareSerial.h>

SoftwareSerial Bluetooth(2, 3); // RX, TX

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Bluetooth.begin(9600);
  Serial.begin(9600);
}

void loop() {
  long duration, distance, volume;
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2); 

  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;

  volume = 250 - (10*(distance-8))/5;

  Serial.print("Distance : ");
  Serial.print(distance);
  Serial.println(" cm");

  Bluetooth.print("Distance : ");
  Bluetooth.print(distance);
  Bluetooth.println(" cm");

  Serial.print("Volume : ");
  Serial.print(volume);
  Serial.println(" litres");

  Bluetooth.print("Volume : ");
  Bluetooth.print(volume);
  Bluetooth.println(" litres");
  
  delay(1000);

Il faut installer la bibliothèque SoftwareSerial avant de téléverser le programme pour communiquer avec le module Bluetooth en utilisant les broches RX et TX de l’Arduino (onglet « Gérer les bibliothèques »).

Attention au moment de téléverser le code sur la carte Arduino, il faudra débrancher le module Bluetooth. Les lignes 27 et 37 à 43 sont spécifiques à mon projet, il faudra donc les modifier dans votre cas, en cherchant par exemple de combien de cm descend l’eau pour 10l en moins puis faire le calcul. Pour mon exemple la cuve a la même forme partout ce qui facilite les calculs.

6/ Réception des données sur le smartphone

Maintenant que tout est en place, il ne reste plus qu’à recevoir les données sur notre téléphone. Pour cela, il vous faut une application capable de recevoir les données Bluetooth. Il existe plusieurs applications gratuites sur le Play Store ou l’App Store. J’utiliserai l’application « Serial Bluetooth Terminal » disponible gratuitement sur le Play Store pour mon exemple.

Tout d’abord appairez le module Bluetooth avec votre téléphone. Pour cela appuyez sur le bouton du module lorsque celui-ci est sous tension, jusqu’à ce qu’il clignote rapidement. Ensuite sur votre smartphone, activez le Bluetooth et recherchez le HC-05. Le code par défaut est généralement 1234 ou 0000 (voir dans la documentation).

Ensuite, laissez activer ou activez le Bluetooth puis ouvrez l’application :

Dans le menu en haut à gauche (trois petits traits), appuyez sur « Devices », puis « HC-05 ».

Une fois connecté, vous devriez voir les données s’afficher sur l’application. Les données envoyées par le module HC-05 contiennent la distance mesurée par le capteur de niveau en temps réel et le volume calculé, avec une mise à jour toutes les secondes.

L’application communique et nous donne ainsi en temps réel la distance entre le capteur et la surface de l’eau. Le programme retourne aussi le volume d’eau restant dans la cuve !

7/ Le boitier à l’imprimante 3D

Le système Arduino + capteur US + module Bluetooth peut être tenu à la main au dessus de la cuve pour une mesure. Mais pour peaufiner le projet, j’ai fait le plan et imprimé un boitier permettant de disposer de tous les éléments et pouvant ainsi être facilement transporté et posé sur le haut de la cuve.

Le boitier dispose d’une fente de dimensions correspondantes au capteur US pour l’envoi et la réception + dans mon cas de deux supports sur les côtés pour pouvoir être posé sur le dessus de la cuve (ouverture circulaire).

Le système reste ainsi bien en place, en étant toujours positionné de la même façon sur le haut de la cuve.

8/ Conclusion

Dans cet article, nous avons vu comment créer un capteur de niveau à l’aide d’un capteur de distance ultrasonique HC-SR04, d’un module Bluetooth HC-05 et d’une carte Arduino Uno. Nous avons également vu comment envoyer les données mesurées à notre téléphone via Bluetooth.

Ce type de projet peut avoir de nombreuses utilisations pratiques, telles que la surveillance du niveau d’eau dans une citerne, la mesure du niveau de remplissage d’un réservoir de carburant ou encore la mesure du niveau de grains dans un silo. Les données peuvent être collectées en temps réel, le délai entre deux mesures pouvant être modifié dans le programme.

On peut aussi envisager d’autres fonctions telles que des alertes ou des graphiques en temps réel pour mieux visualiser les données.

Commentez pour toute remarque ou question !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.