Appuyez sur Entrée pour voir vos résultats ou Echap pour annuler.

Température, humidité et pression avec bme280 et Raspberry PI

C’est tellement rendu facile… J’étais le genre de p’tit gars à défaire tout ce qui avait de l’électronique dedans. Mon père (un charpentier, patenteux touche-à-tout ❤), m’a initié à l’électronique très jeune. Il m’a acheté un kit pour enfants pour faire une radio AM/FM. C’est fou de voir que, grâce à ça, 25 ans plus tard, je suis en train d’écrire à propos de comment prendre la température, l’humidité relative et la pression ambiante avec un Raspberry Pi et un bme280.

 Qu’est-ce que bme280?

Le module bme280 est un module I²C simple qu’on peut utiliser dans un projet électronique, au même titre qu’on installe une dépendance dans une application. Il contient un capteur de température, d’humidité et de pression. Vous pouvez trouver sa datasheet ici pour plus de détails.

L’objectif ici sera de créer une api avec node et express qui tourne sur le Raspberry Pi connecté au bme280 afin d’obtenir les informations du module au format json.

Cool, non?

Connexion du bme280 au Raspberry Pi

Bien que le bme280 supporte aussi le protocole de communication SPI, nous allons nous concentrer sur le I²C comme mentionné plus haut. Si vous regardez sur le module bme280, il devrait y avoir une définition claire des entrées / sorties :

Évidemment, VCC et GND vont être connectées à respectivement aux pins 3V et Ground du Pi (1 et 6). Pour le protocole I²C, on va avoir besoin des pins SDA et SCL connectées à celles du même nom sur le Pi (3 et 5). Les deux autres servant au protocole SPI, elles ne seront pas utilisées.

Configuration du Raspberry Pi

Si vous avez installé Raspbian, les pilotes pour la communication I²C sont désactivés par défaut. Pour les activer, vous devez aller dans les paramètres du Pi.

Pour ce faire, aller dans le menu principal, puis Preferences et Raspberry Pi Configuration. Puis, sous l’onglet Interfaces, sélectionner enabled pour I²C :

Puis, redémarrer.

Le code

Pour communiquer avec le module bme280, nous avons plusieurs options. J’ai choisi pour cet article de faire l’api avec node, express et cette librairie qui simplifie l’interface entre le Pi et le bme280. Le code est donc très simple :

Pour vulgariser,  app.get("/api/sensor", (req, res) => crée un endpoint de type GET sur l’URL /api/sensor, puis une lecture du module est faite et résultat est retourné au format JSON :

Et boom 🤯

La température est en degrés Celsius (°C), la pression atmosphérique est en hectopascal (hPa) et l’humidité relative est en pourcentage (%)

Conclusion

Vous avez donc appris aujourd’hui comment prendre la température, l’humidité relative et la pression atmosphérique ambiante via une api avec un Raspberry PI. On peut très bien s’imaginer une application qui contrôlerait ces paramètres automatiquement dans une maison, ou encore un assistant pour la culture en serre.

Merci de nous suivre chaque semaine. Si vous avez aimé, n’hésitez surtout pas à partager dans vos réseaux sociaux. Notre blogue est gratuit et sans pub, et si jamais vous vous essayez dans un projet comme celui-ci, envoyez-le-moi!

Suivez-nous par courriel!

Saisissez votre adresse courriel pour vous abonner au blog d'Ezo et recevoir une notification de chaque nouvel article par email.