Baromètre analogique et digital avec un ESP32 & un capteur BMP180 (article en cours de rédaction).

Il existe 1000 et une descriptions de baromètres digitaux basés sur le capteur BMP180 servi par un Arduino, un ESP8266 ou un ESP32. Alors pourquoi celle-ci ?

Elle diffère des autres par l’ajout d’un galvanomètre à cadre mobile des années 60 qui (outre le côté vintage) permet de voir la tendance d’un seul coup d’oeuil à la façon de l’aiguille mobile des baromètres anéroïdes d’antan.

Vous savez : l’aiguille que l’on met en correspondance avec l’aiguille d’affichage de la pression atmosphérique après avoir tapoté le baromètre…

Le montage s’appuie sur un capteur de pression atmosphérique géré par un microcontrôleur qui doit aussi être capable de générer une tension continue représentative de la pression pour alimenter le galvanomètre de tendance de la pression atmosphérique. Ce capteur inclut aussi une mesure de température qui ne sera pas utilisée ici.

Pour cela il faut nécessairement un microcontrôleur doté d’un DAC (Digital to Analog Converter).

L’Arduino Due dispose bien de 2 canaux DAC, mais il est relativement onéreux (même en version clone). Comme l’ESP8266 ne dispose pas de DAC, mon choix s’est porté sur l’ESP32 qui est la version évoluée de l’ESP8266. Ce microcontrôleur se trouve à moins de 10 Euros sur une plateforme Américaine bien connue et à deux fois moins cher sur d’autres plateformes asiatiques toutes aussi connues.

De plus ce microcontrôleur dispose de fonctions WIFI bien utiles pour pouvoir par la suite enrichir le programme à l’envi.

Aspect matériel : l’ensemble se décline autour des composants suivants :

  • Un ESP32 & son support (ou pas),
  • Un BME 180 & son support (ou pas),
  • Un afficheur LCD I2C,
  • Un galvanomètre à cadre mobile (100 µA, mais toute autre valeur jusqu’à 1 mA fera aussi bien l’affaire),
  • Une résistance de 22 K Ohms (à ajuster en fonction d’un galvanomètre différent),
  • Un potentiomètre de 47 K Ohms (à ajuster en fonction d’un galvanomètre différent),
  • Une plaquette à trous,
  • Un peu de fil de câblage,
  • Le boitier qui vous plaira : c’est plus à ce niveau que la difficulté arrive quand il faut loger tout ce petit monde et faire des découpes rondes et rectangulaires, mais ça c’est une autre histoire. Il est toujours possible de réaliser ce montage avec une plaquette de type « breadboard » mais ce ne sera qu’expérimental,
  • Une alimentation de type chargeur de téléphone portable (la consommation du microcontrôleur et de l’afficheur sont minimes).

Aspect logiciel : Ayant bien cherché je me suis rabattu sur la plateforme Arduino, car à ma connaissance c’est la seule qui permette nativement de pouvoir utiliser les DAC de l’ESP32. Je suis preneur d’informations si quelqu’un a réussi a traiter le sujet en micro-Python par exemple.

Les composants

Le microcontrôleur
Le capteur
L’afficheur I2C
Un galvanomètre

Le schéma de câblage (zoomer pour voir les détails)

L’afficheur et le capteur sont connectés en I2C au microcontrôleur, le voltmètre constitué du microampèremètre de la résistance de 22 K Ohms et du potentiomètre est relié au port 25 de l’ESP32.
Le microcontrôleur est alimenté directement par une alimentation de téléphone portable en micro USB, son modèle n’est pas critique vu la faible consommation du montage (moins de 100 mA).

La partie logicielle

L’IDE Arduino

J’ai considéré que le lecteur connaissait l’environnement de développement Arduino.

Si ce n’est pas encore le cas je conseille vivement la page suivante qui sans nul doute va vous permettre de vous familiariser avec cet environnement :

https://www.arduino-france.com/tutoriels/ide-arduino-installation-et-utilisation/

Mais il existe une pléthore de forums Arduino dans le monde et dans toutes les langues.

Sans rentrer dans trop de détails sachez qu’outre les platines Arduino bien connues (Arduino Uno, Arduino Nano, Arduino Due, etc..) cet environnement permet aussi de développer (dans le langage Arduino qui est proche du C++) de nombreux autres microcontrôleurs comme l’ESP8266 et l’ESP32 objet du présent montage.

Il vous faudra installer :

Dans les préférences (« Fichier », « Préférences ») : le lien vers les produits espressif

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Dans le gestionnaire de cartes (« Outil », « Type de carte ») : « ESP32 »

Sans oublier de (bien) configurer le port série émulé par la connexion USB de l’ESP32, il suffit pour cela d’aller voir dans le gestionnaire de périphériques de Windows au niveau « Ports (COM & LPT). Le numéro de port varie d’un ordinateur à l’autre.

Dans le gestionnaire de bibliothèques : la bibliothèque BMP085 qui est compatible avec le capteur BMP180 : (« outil », »gérer les bibliothèques »)

Et avant de lancer la compilation, dans le gestionnaire de cartes : choisir le microcontrôleur ESP32 (« outil », « type de carte », « gestionnaire de carte ») : « ESP 32 DEV Module »

Le code en langage Arduino

/*
* CopyLeft Christian Thomas
* 18/03/2020
*/
#include <Wire.h>
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;
#include <LiquidCrystal_I2C.h>

// Sélection de l’afficheur LCD, nombre de colonnes et de lignes
int lcdColumns = 16;
int lcdRows = 2;

// Définition adresse de l’afficheur LCD, nombre de colonnes et de lignes
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);

void setup() {
// Initialisation LCD
lcd.init();
// Allumage éclairage LCD
lcd.backlight();

// Vérification présence du capteur BMP180
if (!bmp.begin()) {
Serial.println(« Capteur BMP180 non trouvé, vérifier le cablage »);
while (1) {}
}
}

void loop()
// Boucle principale
{
// Sortie analogiques sur galvanomètre
// conversion digitale analogique sur 8 bits sur port DAC N° 1 (D25)
dacWrite(25,bmp.readPressure()/10);
// Le deuxième port digital analogique reste disponible pour une autre convertion analogique si nécessaire
// La température par exemple
// dacWrite(26,bmp.readTemperature() * 5);

// Affichage LCD 2 lignes (position du curseur / numéro de ligne)
lcd.setCursor(0,0);
lcd.print(« Pr Atmospherique »);
lcd.setCursor(0,1);
lcd.print(bmp.readPressure());
lcd.setCursor(10,1);
lcd.print(« Pascal »);

// Fréquence de mise à jour de 3 seconde
delay(3000);
}

Le produit fini

Intérieur et raccordements
A droite le potentiomètre qui permet de centrer l’aiguille du galvanomètre pour observer les variations comme on le faisait avec l’aiguille centrale d’un baromètre anéroïde.

A l’usage les variations de pression atmosphérique même de faible ampleur sont très visible sur le galvanomètre, déplacer le montage de deux niveaux dans une maison donne une variation d’une graduation sur mon galvanomètre.

Compte tenu de la richesse de l’ESP32 il sera possible de rajouter de multiples fonctions, notamment en utilisant le WIFI (création d’un mini serveur WEB, envoi de notifications, etc…).

2 réponses sur “Baromètre analogique et digital avec un ESP32 & un capteur BMP180 (article en cours de rédaction).”

  1. Long time supporter, and thought I’d drop a comment.

    Your wordpress site is very sleek – hope you don’t mind me asking what theme you’re using?
    (and don’t mind if I steal it? :P)

    I just launched my site –also built in wordpress like yours– but the theme slows (!) the site down quite a bit.

    In case you have a minute, you can find it by searching
    for « royal cbd » on Google (would appreciate any feedback) – it’s still in the works.

    Keep up the good work– and hope you all take care of yourself during the coronavirus scare!

    1. Hi Justin!
      Thank you for your comment.
      I am just starting this small Web Site.
      I will have a look on your royal cbd.

      The theme I currently use is Twenty Seventeen.

      Regards
      Christian

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *