TXT-Controller / ftrobopy / i2c / bme680

Alles rund um TX(T) und RoboPro, mit ft-Hard- und Software
Computing using original ft hard- and software
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
flo_txt
Beiträge: 1
Registriert: 15 Aug 2022, 16:35

TXT-Controller / ftrobopy / i2c / bme680

Beitrag von flo_txt » 15 Aug 2022, 16:59

Hallo zusammen,

ich möchte mittels ftrobopy und TXT-Controller über I2C den Umweltsensor (BME680) auslesen (verbunden über ext).
Ausgeführt wird der Code online. Der TXT ist über Usb-Ethernet Adapter mit einem Rechner verknüpft.
Kommunikation und sonstige Ausführung von ftrobopy code ist getestet und funktioniert.
Wenn ich allerdings folgenden Code ausführe wird immer None zurückgeliefert.
Laut Datenblatt sollte doch 0x76 oder 0x77 die Geräteadresse sein.
Ziel ist es einen Wert auslesen zu können also erstmal egal von welchem der Sensoren.
Ist das generelle vorgehen überhaupt richtig und falls ja, hat hier zufällig jemand Ahnung wieso None returned wird?

Code: Alles auswählen

self.txt = ftrobopy.ftrobopy(host=f"192.168.8.2", port=65000)
res = self.txt.i2c_read(0x76, 0x00, debug=True)
print(res)
Ich freue mich über Unterstützung.
Beste Grüße
Florian

Torsten
Beiträge: 261
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: TXT-Controller / ftrobopy / i2c / bme680

Beitrag von Torsten » 15 Aug 2022, 21:09

Hallo Florian,
flo_txt hat geschrieben:
15 Aug 2022, 16:59

Wenn ich allerdings folgenden Code ausführe wird immer None zurückgeliefert.
Laut Datenblatt sollte doch 0x76 oder 0x77 die Geräteadresse sein.
Ziel ist es einen Wert auslesen zu können also erstmal egal von welchem der Sensoren.
Ist das generelle vorgehen überhaupt richtig und falls ja, hat hier zufällig jemand Ahnung wieso None returned wird?

Code: Alles auswählen

self.txt = ftrobopy.ftrobopy(host=f"192.168.8.2", port=65000)
res = self.txt.i2c_read(0x76, 0x00, debug=True)
print(res)
im Prinzip ist Dein Code korrekt und sollte funktionieren ... allerdings nur, wenn er als fertiges Python-Script direkt ausgeführt wird.

Erklärung: Der Prozess, der auf dem TXT die I2C-Kommunikation zu einem über Netzwerk angeschlossenen PC übernimmt, hat die Eigenart sich automatisch zu beenden, wenn er über mehr als 4 Sekunden kein I2C-Kommando vom PC erhält. Damit ist dann der Rückgabewert von i2c_read() gleich None.

Solltest Du den Code in einer interaktiven Python-Shell von Hand eingetippt haben, hat das Eintippen der 2. Zeile wahrscheinlich länger als 4 Sekunden gedauert und der I2C-Prozess auf dem TXT hatte sich schon beendet, als der PC das Kommando an den TXT abgeschickt hatte.

Noch eine kleine Anmerkung:
wenn Du die USB Ethernet-Verbindung zwischen TXT und PC verwenden möchtest, ist die korrekte IP-Nummer 192.168.7.2 (über die 192.168.8.2 wird das WLAN-Netzwerk des TXT im Access-Point-Modus verwendet). ftrobopy hat einen Autodetekt-Mechanismus, der versucht, den TXT automatisch zu finden. Er wird über den 'auto'-Parameter aktiviert:

Code: Alles auswählen

txt=ftrobopy.ftrobopy('auto')
Falls Du Deinen TXT als WLAN-Client im Heimnetz betreibst, musst Du allerdings die korrekte IP-Nummer verwenden, die Dein WLAN-Router dem TXT (z.B. per DHCP) zugeordnet hat.

Eine andere Fehlerquelle, die mir jetzt noch einfällt, könnte ein fehlendes Kabel zur Stromversorgung des Umwelt-Sensors über den +9V Ausgang des TXT sein (ist mir auch schon passiert).

Viele Grüße
Torsten

Antworten