Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

Antwort auf: SCD30 am Pi liefert Remote I/O-Fehler, soll ich I2C in Python per Bit-Banging schreiben?

Von Türkçe mit KI übersetzt ·

Schreib das nicht selbst in Python, der Kernel hat bereits ein fertiges Software-I2C, das das Bit-Banging übernimmt und Clock Stretching korrekt überwacht. Genau deshalb habe ich den SCD30 darauf umgestellt. /boot/config.txt (bei Bookworm /boot/firmware/config.txt):

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

Neu starten und mit i2cdetect -y 3 prüfen, ob 0x61 erscheint. Im Code SMBus(3) statt SMBus(1) verwenden. Den Sensor an GPIO 23/24 anschließen und einen 4,7k-Pull-up nach 3,3V setzen (die internen Pull-ups der Hardware-I2C-Pins sind hier nicht vorhanden). Falls du andere Sensoren hast, können diese auf Bus 1 bleiben.
Lies außerdem gemäß dem „Data Ready“-Befehl des Sensors (0x0202) aus; liest du, während die Messung nicht bereit ist, kommt auch hier Unsinn heraus. Tritt zwischendurch wieder ein Fehler auf, wiederhole die Leseoperation einmal und überspringe diese Ablesung; für eine übersprungene Ablesung sende nichts, in Hermetry bleibt der letzte Wert erhalten.

Akzeptierte Lösung♥ 2