Pour mesurer l’humidité avec un Raspberry Pi Pico 2 W, choisissez le BME280. Les deux capteurs Bosch mesurent la pression et la température. Le BME280 ajoute l’humidité relative. Si vous possédez déjà un module bleu dont la référence vous paraît ambiguë, MicroPython peut lire son identifiant avant que vous n’installiez un pilote.
Quel capteur pour une station météo ou un baromètre ?
| Besoin | BME280 | BMP280 |
|---|---|---|
| Humidité relative de l’air | Oui | Non |
| Pression et température | Oui | Oui |
| Identifiant Bosch de série au registre 0xD0 | 0x60 | 0x58 |
Pour suivre l’humidité d’une pièce ou d’une serre, achetez un module qui spécifie la mesure en % HR. Pour suivre la tendance de pression avec un baromètre, un BMP280 déjà disponible répond au besoin. Un pilote différent ne peut pas ajouter la mesure d’humidité au BMP280. Les deux températures sont celles relevées près de la puce. Éloignez le module des sources de chaleur si vous cherchez la température de l’air.
Brancher le module Adafruit en I²C sur le Pico 2 W
Débranchez le Pico de l’USB avant de câbler. Sur les cartes Adafruit illustrées, reliez 3V3(OUT) du Pico (broche physique 36) à VIN et une masse GND (par exemple la broche 3) à GND. Reliez GP0 (broche 1, SDA) à SDI et GP1 (broche 2, SCL) à SCK. Le programme utilise le bus I²C0 à 100 kHz. Sur un autre module, suivez son schéma pour l’alimentation, le mode I²C et les résistances de rappel. Brochage officiel du Pico · Broches du BME280 Adafruit · Broches du BMP280 Adafruit.
Lire le registre d’identification en MicroPython
Copiez le programme dans Thonny et exécutez-le sur le Pico équipé de MicroPython. Un scan du bus affiche les adresses qui répondent. BME280 et BMP280 peuvent tous deux utiliser 0x76 ou 0x77. Pour les départager, le programme lit un octet au registre 0xD0. Il laisse les autres périphériques tranquilles. Lecture d’un registre I²C avec MicroPython.
Afficher le programme complet
"""Identifier un BME280 ou BMP280 sur le bus I2C du Raspberry Pi Pico 2 W."""
NOMS = {0x60: "BME280", 0x58: "BMP280"}
def identifier(bus):
presents = set(bus.scan())
lignes = []
for adresse in (0x76, 0x77):
if adresse not in presents:
continue
try:
valeur = bus.readfrom_mem(adresse, 0xD0, 1)[0]
except OSError:
lignes.append("0x%02X : lecture impossible" % adresse)
continue
lignes.append("0x%02X : ID 0x%02X (%s)" %
(adresse, valeur, NOMS.get(valeur, "identifiant inconnu")))
return lignes
def main():
from machine import I2C, Pin
bus = I2C(0, sda=Pin(0), scl=Pin(1), freq=100000)
resultats = identifier(bus)
for ligne in resultats:
print(ligne)
if not resultats:
print("Aucun module détecté à 0x76 ou 0x77.")
if __name__ == "__main__":
main()Télécharger le programme MicroPython et ses six tests (ZIP gratuit).
La ligne 0x76 : ID 0x60 (BME280) indique un BME280 à l’adresse 0x76. Avec un BMP280 à la même adresse, la dernière partie devient ID 0x58 (BMP280). Ces sorties ont été vérifiées sur un bus simulé. L’identifiant oriente le choix du pilote. Pour valider la mesure, l’étape suivante consiste à lire l’humidité avec le pilote BME280 et à vérifier que la valeur évolue avec les conditions de la pièce.
Que vérifier si le Pico ne reconnaît rien ?
Aucune adresse. Vérifiez la masse commune, l’alimentation, l’ordre SDA/SCL et le numéro du bus. Identifiant inconnu. Notez sa valeur et cherchez la référence précise de la puce. Deux modules à la même adresse. Essayez-les un par un, puis vérifiez si l’un des modules permet de changer l’adresse avec sa broche SDO. Fiche Bosch BME280 · Fiche Bosch BMP280.
Les deux modules Adafruit en photo

Voir Adafruit BME280 sur Amazon.fr.

Voir Adafruit BMP280 sur Amazon.fr.
Vous hésitez encore sur la carte à offrir ou à programmer ? Notre comparatif micro:bit et Pico 2 W montre deux projets à essayer et le matériel de départ.


One Comment on “BME280 ou BMP280 pour le Pico 2 W : lequel mesure l’humidité ?”