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

Respuesta a: El SCD30 en la Pi da error de Remote I/O, ¿debo escribir el I2C en Python con bit-banging?

Traducido del Türkçe por IA ·

No lo escribas tú en Python, el kernel ya tiene un I2C por software listo que hace el bit-banging y vigila correctamente el clock stretching. Justo por eso yo también pasé el SCD30 a él. /boot/config.txt (en Bookworm /boot/firmware/config.txt):

dtoverlay=i2c-gpio,bus=3,i2c_gpio_sda=23,i2c_gpio_scl=24,i2c_gpio_delay_us=2

Reinicia y comprueba con i2cdetect -y 3 que aparece 0x61. En el código, usa SMBus(3) en lugar de SMBus(1). Mueve el sensor a GPIO 23/24 y pon una resistencia pull-up de 4,7k a 3,3V (los pull-ups internos de los pines I2C del hardware no están aquí). Si tienes otros sensores, pueden quedarse en el bus 1.
Además, haz la lectura según el comando «data ready» del sensor (0x0202); si lees mientras la medición no está lista, también sale basura. Si aun así vuelve a producirse un error, reintenta una vez y omite esa lectura; para una lectura omitida no envíes nada, en Hermetry se mantiene el último valor.

Solución aceptada♥ 2