Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Réponse : i2cdetect affiche une grille vide avec un BME280 et un capteur de lumière sur mon Pi 4

Traduit de English par IA ·

C’est exactement le problème, j’ai fait la même chose sur mon premier montage. Les broches I2C sont la broche physique 3 (c’est le BCM GPIO2, SDA) et la broche physique 5 (BCM GPIO3, SCL). Tu as branché SDA sur GPIO3, qui est en réalité SCL, et SCL sur GPIO5, qui correspond à la broche physique 29 et n’a rien à voir avec l’I2C. Le bus n’a donc aucun périphérique qui répond, d’où la grille vide. Les capteurs sont presque certainement en bon état.Place SDA sur la broche physique 3 et SCL sur la broche physique 5 ; tu devrais alors voir 0x77 (ou 0x76, selon le cavalier SDO) pour le BME280 et 0x10 pour le VEML7700. Le Pi dispose déjà de résistances de rappel (pull-up) de 1,8 kΩ sur ces deux broches, et les breakouts en ajoutent les leurs, donc n’en rajoute pas.La lecture et l’envoi sont ensuite courts. J’utilise les pilotes CircuitPython d’Adafruit avec paho :

import json, time, board, adafruit_bme280.basic as bme, adafruit_veml7700
import paho.mqtt.client as mqtt

i2c = board.I2C()
env = bme.Adafruit_BME280_I2C(i2c, address=0x77)
lux = adafruit_veml7700.VEML7700(i2c)

c = mqtt.Client(client_id="lab-env-01")
c.username_pw_set(TOKEN)              # token as username, no password
c.tls_set()
c.connect(BROKER_HOST, 8883, 60)
c.loop_start()
while True:
    msg = {"temp_c": round(env.temperature, 2), "rh": round(env.humidity, 1),
           "pressure_hpa": round(env.pressure, 1), "lux": round(lux.lux, 1)}
    c.publish("v1/telemetry", json.dumps(msg), qos=1)
    time.sleep(30)

Objet à plat, donc Hermetry l’horodate à la réception, ce qui convient pour des mesures toutes les 30 s. Les règles de payload sont ici si tu veux ajouter des horodatages plus tard : MQTT topics and payload reference.

QoS 1 and a lot of patience.
Solution acceptée♥ 4