Seite 1 von 1

Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 08:45
von timax1998
Moin,
ich arbeite an einem Umweltmodul, welchen auch einen Gassensor beinhaltet (CCS811). Nun tritt immer einige Sekunden nach Programmstart folgender Fehler auf (beim Beispielprogramm auch):

Traceback (most recent call last):
File "mainicm.py", line 97, in <module>
TVOC = ccs811.tvoc
File "/usr/local/lib/python3.7/dist-packages/adafruit_ccs811.py", line 189, in tvoc
self._update_data()
File "/usr/local/lib/python3.7/dist-packages/adafruit_ccs811.py", line 148, in _update_data
if self.data_ready:
File "/usr/local/lib/python3.7/dist-packages/adafruit_register/i2c_bit.py", line 60, in __get__
i2c.write_then_readinto(self.buffer, self.buffer, out_end=1, in_start=1)
File "/usr/local/lib/python3.7/dist-packages/adafruit_bus_device/i2c_device.py", line 149, in write_then_readinto
in_end=in_end,
File "/usr/local/lib/python3.7/dist-packages/busio.py", line 141, in writeto_then_readfrom
stop=stop,
File "/usr/local/lib/python3.7/dist-packages/adafruit_blinka/microcontroller/generic_linux/i2c.py", line 88, in writeto_then_readfrom
address, buffer_out[out_start:out_end], in_end - in_start
File "/usr/local/lib/python3.7/dist-packages/Adafruit_PureIO/smbus.py", line 273, in read_i2c_block_data
ioctl(self._device.fileno(), I2C_RDWR, request)
OSError: [Errno 121] Remote I/O error

Die Verkabelung habe ich schon mehrmals überprüft und auch alle anderen Sensoren welche über I2C arbeiten funktionieren ohne Probleme.

Grüße,
Tim

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 09:37
von sparrow
Dann zeig doch mal Code, bei dem das Problem auftritt.

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 09:44
von timax1998

Code: Alles auswählen

import time
import board
import busio
import adafruit_ccs811

i2c = busio.I2C(board.SCL, board.SDA)
ccs811 = adafruit_ccs811.CCS811(i2c)

while not ccs811.data_ready:
    pass
#temp = ccs811.temperature
#ccs811.temp_offset = temp-25

while True:
    print("CO2: {} PPM, TVOC: {} PPM" .format(ccs811.eco2, ccs811.tvoc))
    #time.sleep(0.5)

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 09:45
von __deets__
Bleibt leider trotzdem ein Hardware-Problem, verschiedene Sensoren reagieren unterschiedlich auf zb timing Variationen auf dem Bus durch parasitäre Kapazitäten etc. Du kannst bestenfalls versuchen mit geringerer Geschwindigkeit zu arbeiten, die Topologie zu verbessern, den Sensor alleine ausprobieren oder auszutauschen. Python nutzt da nur direkt die OS APIs ohne selbst was beizutragen, und das OS nutzt nur die I2C Hardware selbst.

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 09:48
von timax1998
Das Problem mit geringerer Geschwindigkeit ist, dass das Modul mehrere Stunden laufen soll und Live Daten liefert was für den Gyro und den Accel Sensor wichtig ist.

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 10:03
von __deets__
Du kannst für verschiedene Sensoren verschiedene Geschwindigkeiten benutzen.

Und erstmal musst du rausfinden was geht, bevor du einschränkst, was du tun kannst.

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 10:12
von timax1998
Ich lasse das Programm mal mit einem delay von 500ms laufen um zu schauen wie lange es dauert bis der Fehler wieder auftaucht, wenn er das überhaupt tut.

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 10:53
von timax1998
Das Programm leif eine 3/4 Stunde und ist dann wie schon erwähnt abgebrochen und hat den oben genannten Fehler in der Konsole ausgegeben.

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 11:02
von Sirius3
Du solltest Dich von der Illusion verabschieden, ein Programm zu schreiben, das ohne Fehler durchläuft. Du mußt auf den Hardwarefehler reagieren und entsprechend dafür sorgen, dass Du weiter arbeiten kannst.

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 11:08
von timax1998
Was könnte man denn z.b. gegen den Hardware Fehler machen, die kabel können es nicht sein das habe ich schon mehrmals geprüft. Auch die Lötstellen sind in Ordnung. Zudem werden mir auch Werte angezeigt, was bedeutet der Sensor arbeitet.

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 11:41
von __deets__
Mit einem Oszilloskop auf die Leitungen schauen. Und nochmal: ich habe dir diverse Strategien genannt, um überhaupt mal zu einer Diagnose und potentiellen Lösung zu kommen. Die musst du erstmal durcharbeiten. Wenn das zu einem Ergebnis führt, kann man immer noch überlegen, wie man das ins Gesamtsystem integriert.

Re: Errno 121 kommt nach einigen Sekunden (CCS811)

Verfasst: Dienstag 29. September 2020, 11:59
von __deets__
Hier sind zb einige der Strategien detaillierter ausgeführt: https://www.ti.com/lit/an/scaa106/scaa1 ... le.de%252F

Und um das nochmal ganz klar zu sagen: nur weil alles verkabelt ist, und du das mit einem Multimeter durchmessen kannst, ist das noch lange kein guter Bus! Die signalqualität kann trotzdem beeinträchtigt sein.