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

Réponse à : Le SCD30 sur Pi génère une erreur Remote I/O, dois-je écrire l'I2C en Python avec du bit-banging ?

Traduit de Türkçe par IA ·

Ne l’écris pas toi-même en Python, le noyau dispose déjà d’un I2C logiciel prêt à l’emploi qui fait le bit-banging et surveille correctement le clock stretching. C’est justement pour cette raison que j’ai migré le SCD30 vers lui. /boot/config.txt (sur Bookworm /boot/firmware/config.txt) :

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

Redémarre, puis vérifie avec i2cdetect -y 3 que 0x61 apparaît. Dans le code, utilise SMBus(3) au lieu de SMBus(1). Déplace le capteur sur GPIO 23/24 et place une résistance de tirage (pull-up) de 4,7k vers 3,3V (les pull-ups internes des broches I2C matérielles ne sont pas présentes ici). Si tu as d’autres capteurs, ils peuvent rester sur le bus 1.
Fais aussi la lecture selon la commande « data ready » du capteur (0x0202) : si tu lis alors que la mesure n’est pas prête, tu obtiens également n’importe quoi. Si une erreur survient encore de temps en temps, réessaie une fois et saute cette lecture ; pour une lecture sautée, n’envoie rien, la dernière valeur reste dans Hermetry.

Solution acceptée♥ 2