Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

i2cdetect muestra una cuadrícula vacía con un BME280 y un sensor de luz en mi Pi 4

i2cdetect muestra una cuadrícula vacía con un BME280 y un sensor de luz en mi Pi 4

Resuelto 6 4

Traducido del English por IA ·

Vale, esto es para mi monitor de ambiente del laboratorio (proyecto de 2.º año). Pi 4, Raspberry Pi OS Bookworm, una placa breakout BME280 y otra VEML7700 de luz (lux), ambas de estilo Adafruit con sus propios reguladores. El plan es que Python en la Pi lea las dos cada 30 s y publique en Hermetry. La parte de Hermetry ya funciona, probé con un valor falso y aparece en mi placa.Los sensores no. Activé I2C en raspi-config, reinicié y:

$ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
...
70: -- -- -- -- -- -- -- --

Conexionado: VIN al pin 1 (3,3 V), GND al pin 6, SDA al GPIO 3, SCL al GPIO 5. Ambas placas están conectadas en cadena en una protoboard. Ya cambié los cables puente. ¿Es posible que los dos sensores estén defectuosos? No eran muy caros.

Timestamps in UTC or it didn't happen.
♥ 0

Traducido del English por IA ·

¿Por qué es el bus 1 y no el 0? Siempre me lo he preguntado con estos comandos

Timestamps in UTC or it didn't happen.
♥ 0

Traducido del English por IA ·

El bus 0 está reservado para la EEPROM de identificación del HAT en los pines 27/28. El bus 1 es el de usuario. Aoife, cuando dices «GPIO 3», ¿te refieres al pin físico 3 o al GPIO 3 de BCM?

♥ 0

Traducido del English por IA ·

…Me guié por los números impresos en mi cable breakout, que creo que son números GPIO. ¿Entonces GPIO3 y GPIO5?

Timestamps in UTC or it didn't happen.
♥ 0

Traducido del English por IA ·

Ese es el problema, yo hice exactamente lo mismo en mi primer montaje. Los pines I2C son el pin físico 3 (es el BCM GPIO2, SDA) y el pin físico 5 (BCM GPIO3, SCL). Tú tienes SDA en GPIO3, que en realidad es SCL, y SCL en GPIO5, que es el pin físico 29 y no es I2C en absoluto. Por eso el bus no tiene ningún dispositivo respondiendo y obtienes la cuadrícula vacía. Casi con toda seguridad los sensores están bien.Mueve SDA al pin físico 3 y SCL al pin físico 5; entonces deberías ver 0x77 (o 0x76, según el jumper SDO) para el BME280 y 0x10 para el VEML7700. La Pi ya tiene resistencias pull-up de 1,8 kΩ en esos dos pines, y las placas breakout añaden las suyas, así que no añadas más.Luego la lectura y el envío son breves. Uso los drivers de CircuitPython de Adafruit más 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)

Objeto plano, así que Hermetry le asigna la hora de recepción, lo cual sirve para lecturas de 30 s. Las reglas del payload están aquí si más adelante quieres añadir marcas de tiempo: MQTT topics and payload reference.

QoS 1 and a lot of patience.
Solución aceptada♥ 4

Traducido del English por IA ·

Sí, era eso 🤦 Moví dos cables y aparecieron las dos direcciones (0x10 y 0x77). El script funcionó a la primera y las cuatro teclas ya están en mi placa. Lección aprendida: los números de pin físicos y los números GPIO no son lo mismo

Timestamps in UTC or it didn't happen.
♥ 0

Traducido del English por IA ·

gracias Lee por la explicación del bus 0, ahora tiene sentido

Timestamps in UTC or it didn't happen.
♥ 0
Viendo 7 entradas – de la 1 a la 7 (de un total de 7)
  • Debes estar registrado para responder a este debate.

Únete a la conversación

Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

Compartir