Dans cet article, je vais vous expliquer comment j'ai utilisé un capteur BMP180 pour mesurer la pression atmosphérique. Pour tester le capteur, je l'ai placé à l'intérieur d'un récipient hermétique mis sous pression grâce à une pompe à vélo.
Le BMP180
Le BMP180 est un circuit intégré mis au point par Bosch Sensortec conçu pour mesurer la pression atmosphérique avec précision. Typiquement, il est utilisé pour des observations météorologiques ou pour la détermination de l'altitude à partir de la pression.
Le circuit intégré est minuscule; pour nous faciliter la tâche, c'est important de nous procurer un breakout tout fait, qui pourra facilement être inséré dans une breadboard, ou branché à une carte Arduino. Le module que j'ai utilisé porte le numéro GY-68.
Connexions du module GY-68 à un Arduino Uno
Le BMP180 utilise le protocole i2c, nous ne sommes donc pas surpris de constater qu'il comporte 4 connecteurs:
** Ces broches sont différentes pour certains modèles d'Arduino, comme par exemple Mega et Leonardo.
Bibliothèque Sparkfun
Plutôt qu'étudier la fiche technique du BMP180 afin de tout programmer moi-même, j'ai installé la bibliothèque conçue par Sparkfun.
Après avoir procédé à l'installation de cette bibliothèque, vous pouvez jeter un coup d'oeil à l'exemple "SFE_BMP180_example" qui montre comment mesurer la température et la pression, en plus de calculer la pression au niveau de la mer en utilisant l'altitude.
Dispositif pour tester le capteur
Pour vérifier que le capteur fonctionnait adéquatement, j'ai construit un petit récipient dans lequel il était possible d'augmenter la pression grâce à une pompe conçue pour gonfler les ballons.
Le capteur BMP180 se trouve à l'intérieur du récipient, alors que l'Arduino est à l'extérieur: les fils qui relient le BMP180 à l'Arduino passent par un petit trou, calfeutré avec de l'epoxy.
Voici le dispositif complet. J'ai ajouté une brique par-dessus le récipient pour éviter que le couvercle s'ouvre trop tôt sous l'effet de la pression (un couvercle vissable aurait donné de meilleurs résultats).
Sketch
L'exemple "SFE_BMP180_example" fourni avec la bibliothèque affiche un certain nombre d'informations inutiles, et le délai de 5 secondes entre deux mesures consécutives ne convenait pas à mes besoins. Je l'ai donc modifié pour qu'il n'affiche rien d'autre que la pression en hectopascals, en prenant deux mesures à chaque seconde.
D'après ce que j'ai compris, il est nécessaire de prendre une mesure de température avant de prendre la mesure de pression, c'est pourquoi j'ai laissé en place la fonction getTemperature même si je n'affiche pas la valeur mesurée.
Résultats
Voici ce que ça donne. Au moment de la mesure, la pression atmosphérique était d'environ 1002 hPa, mais elle a grimpé jusqu'à 1059 hPa pendant que je pompais de l'air à l'intérieur du récipient.
À lire également
Yves Pelletier (Twitter, Facebook)
Le BMP180
Le BMP180 est un circuit intégré mis au point par Bosch Sensortec conçu pour mesurer la pression atmosphérique avec précision. Typiquement, il est utilisé pour des observations météorologiques ou pour la détermination de l'altitude à partir de la pression.
Le circuit intégré est minuscule; pour nous faciliter la tâche, c'est important de nous procurer un breakout tout fait, qui pourra facilement être inséré dans une breadboard, ou branché à une carte Arduino. Le module que j'ai utilisé porte le numéro GY-68.
Connexions du module GY-68 à un Arduino Uno
Le BMP180 utilise le protocole i2c, nous ne sommes donc pas surpris de constater qu'il comporte 4 connecteurs:
- VIN doit être branché à la sortie 5 V de l'Arduino*
- GND doit être branché à une des broches GND de l'Arduino
- SCL doit être branché à l'entrée A5 de l'Arduino Uno**
- SDA doit être branché à l'entrée A4 de l'Arduino Uno**
** Ces broches sont différentes pour certains modèles d'Arduino, comme par exemple Mega et Leonardo.
Connexions du module GY-68 à un ESP8266
- VIN branché à 3,3 V de l'ESP8266
- GND branché à une des broches GND de l'ESP8266
- SCL branché à la broche GPIO 5 de l'ESP8266
- SDA branché à la broche GPIO 4 de l'ESP8266
Connexions du module GY-68 à un ESP32
- VIN branché à 3,3 V de l'ESP32
- GND branché à une des broches GND de l'ESP32
- SCL branché à la broche D22 de l'ESP32
- SDA branché à la broche D21 de l'ESP32
Connexions du module GY-68 à un STM32F103C8T6 "Blue Pill"
- VIN branché à 3,3 V de la Blue Pill
- GND branché à une des broches GND de la Blue Pill
- SCL branché à la broche B6 de la Blue Pill
- SDA branché à la broche B7 de la Blue Pill
Connexions du module GY-68 à un STM32 Nucleo (F030R8)
- VIN branché à 3,3 V de du Nucleo
- GND branché à une des broches GND du Nucleo
- SCL branché à la broche SCL/D15 du Nucleo
- SDA branché à la broche SDA/D14 du Nucleo
Bibliothèque Sparkfun
Plutôt qu'étudier la fiche technique du BMP180 afin de tout programmer moi-même, j'ai installé la bibliothèque conçue par Sparkfun.
Après avoir procédé à l'installation de cette bibliothèque, vous pouvez jeter un coup d'oeil à l'exemple "SFE_BMP180_example" qui montre comment mesurer la température et la pression, en plus de calculer la pression au niveau de la mer en utilisant l'altitude.
Dispositif pour tester le capteur
Pour vérifier que le capteur fonctionnait adéquatement, j'ai construit un petit récipient dans lequel il était possible d'augmenter la pression grâce à une pompe conçue pour gonfler les ballons.
Le capteur BMP180 se trouve à l'intérieur du récipient, alors que l'Arduino est à l'extérieur: les fils qui relient le BMP180 à l'Arduino passent par un petit trou, calfeutré avec de l'epoxy.
Voici le dispositif complet. J'ai ajouté une brique par-dessus le récipient pour éviter que le couvercle s'ouvre trop tôt sous l'effet de la pression (un couvercle vissable aurait donné de meilleurs résultats).
Sketch
L'exemple "SFE_BMP180_example" fourni avec la bibliothèque affiche un certain nombre d'informations inutiles, et le délai de 5 secondes entre deux mesures consécutives ne convenait pas à mes besoins. Je l'ai donc modifié pour qu'il n'affiche rien d'autre que la pression en hectopascals, en prenant deux mesures à chaque seconde.
D'après ce que j'ai compris, il est nécessaire de prendre une mesure de température avant de prendre la mesure de pression, c'est pourquoi j'ai laissé en place la fonction getTemperature même si je n'affiche pas la valeur mesurée.
Résultats
Voici ce que ça donne. Au moment de la mesure, la pression atmosphérique était d'environ 1002 hPa, mais elle a grimpé jusqu'à 1059 hPa pendant que je pompais de l'air à l'intérieur du récipient.
À lire également
- Mesure de la pression dans un liquide avec BMP180 et Arduino
- Fabrication d'une flûte à bec MIDI (BMP180 et Arduino)
- Capteur de pression BMP180 et STM32 Nucleo (mbed)
- La liste des expériences scientifiques décrites dans ce blog
Yves Pelletier (Twitter, Facebook)
Vraiment génial ce blog, merci.
RépondreSupprimerBravo mais nous esperond la voir à video merci infiniment
RépondreSupprimerbonjour
RépondreSupprimerblog tres instructif, merci
une question : pourquoi doit-on brancher le bpm180 sur le 3v3, le module integre un reg 662k 3v3 qui permet de l'alimenter en 5 volts ?
C'est vrai! J'ai fait tous mes tests à 3,3 V (sans problème), mais la présence du régulateur permet d'utiliser une alimentation de 5 V.
Supprimerbonjour, lors de la mise en place du programme sur arduino, quand le veux vérifier celui ca ne fonctionne pas pourriez vous m'aider svp. Merci
RépondreSupprimerJe viens ici déterrer ce post, car il y a une information erronée qui circule sur le net. Si on utilise un Arduino, il faut alimenter le BMP180 breakout board en 5V et surtout pas en 3.3V. En effet, la petite carte contient un régulateur. Par ailleurs, si vous l'alimentez en 3.3V, les bus data et données de l'Arduino étant en 5V, vous vous trouvez à injecter du 5V sur l'alimentation 3.3V de l'Arduino. C'est pas bon !! Pour vous en persuader, branchez un oscillo sur votre 3.3V. A chaque lecture du BMP180 par l'Arduino vous verrez votre 3.3V monter à 4V, 4,5V, à la récurrence de votre interrogation.
RépondreSupprimerQu'on se le dise ! Si vous utilisez un micro-contrôleur alimenté en 3.3V, alors oui vous pouvez l'alimenter en 3.3V ( même si je ne sais pas comment le régulateur sur la carte va réagir .... ).
J'ai vérifié et, effectivement, la tension d'entrée passe de 3,3 V à 4,2 V! Je vais modifier le schéma...
SupprimerBonjour,
RépondreSupprimerNous avons problème: notre capteur affiche un baisse de pression, alors qu'elle devrait augmenter. Auriez vous une idée quant à l'origine de se problème ?
Merci d'avance :)
je n'arrive pas a trouver la bibliothèque SFE_BMP180.h
RépondreSupprimer