DHT22 / adafruit_dht / adafruit-circuitpython-dht -> ich hänge gerade

  • Hallo zusammen,

    ich hoffe ich werde nicht gleich gesteinigt, aber mit der Suche bin ich nicht wirklich weiter gekommen.

    Ich heisse Christian und steige gerade in das Thema Raspberry mit Bezug zu Sensoren ein. Mein Problem: Ich möchte die Temperatur und die Luftfeuchtigkeit eines DHT22 AM2302 Sensors auslesen. Der Quellcode lautet wie folgt:

    Code
    import Adafruit_DHT
    sensor = Adafruit_DHT.DHT22
    humidity, temp = Adafruit_DHT.read_retry(sensor, 4)

    Mir ist klar, dass der Code im Moment sinnfrei ist, da er ja, wenn er funktionieren würde, rein gar nichts "bewirkt". Mein Problem ist dabei, dass ich folgende Fehlermelder erhalte:

    %Run temp_rlf.py

    Traceback (most recent call last):

    File "/home/pi/Documents/temp_rlf.py", line 5, in <module>

    humidity, temp = Adafruit_DHT.read_retry(sensor, 4)

    File "/home/pi/.local/lib/python3.7/site-packages/Adafruit_DHT/common.py", line 94, in read_retry

    humidity, temperature = read(sensor, pin, platform)

    File "/home/pi/.local/lib/python3.7/site-packages/Adafruit_DHT/common.py", line 80, in read

    platform = get_platform()

    File "/home/pi/.local/lib/python3.7/site-packages/Adafruit_DHT/common.py", line 60, in get_platform

    from . import Beaglebone_Black

    File "/home/pi/.local/lib/python3.7/site-packages/Adafruit_DHT/Beaglebone_Black.py", line 24, in <module>

    from . import Beaglebone_Black_Driver as driver

    ImportError: cannot import name 'Beaglebone_Black_Driver' from 'Adafruit_DHT' (/home/pi/.local/lib/python3.7/site-packages/Adafruit_DHT/__init__.py)

    Ich habe mittlerweile rausgefunden, dass die Bibliothek wohl veraltet ist und man eher auf adafruit-circuitpython-dht setzen sollte. Wenn ich das richtig deute, wird der Sensor dort so "eingebunden":

    Code
    import adafruit_dht
    import board
    dhtDevice = adafruit_dht.DHT22(board.D4)

    Was ich nicht verstehe: ist D18 der GPIO Pin? Bei mir gibt es da eine Fehlermeldung wenn ich das starten möchte.

    Ich habe in der Verzweiflung mal den DHT22 gegen einen DHT11 getauscht, weil ich mir nicht sicher war, ob der Pullup Widerstand beim 22er richtig gesetzt war. Der DHT11 scheint wohl keinen Pullup Widerstand zu brauchen, deshalb folgender Versuch:

    Code
    import adafruit_dht
    dht_device = adafruit_dht.DHT11(4)

    Da bekomme ich zumindest schonmal folgende Rückmeldung: Unable to set line 4 to input

    Ich habe in den Anhängen mal meine ursprüngliche Schaltung mit dem DHT22 angehängt. Vielleicht hatte ja jemand von euch ähnliche Anlaufschwierigkeiten bei dem Thema. Ich habe bisher leider trotz Recherche nichts gefunden, was mir geholfen hat. Sollte das Thema hier schon besprochen worden sein und ich bin einfach zu blöd zum suchen, möchte ich das entschuldigen. Ich stehe hier voll auf dem Schlauch glaube ich.

    Danke für die Hilfe im voraus!

    liebe Grüße

    Christian

  • DHT22 / adafruit_dht / adafruit-circuitpython-dht -> ich hänge gerade? Schau mal ob du hier fündig wirst!

  • Grüße,

    das D4 heißt du musst den Datenpin des Sensors am GPIO4 anschließen. Richtig.

    Hast du alle notwendigen Sachen installiert?

    Also Setuptools, die adafruit_dht library und libgpiod2?

    Wenn ja und du hast den Datenpin (GPIO 4) richtig angeschlossen kannst das Script probieren:

    Ich hab leider noch nicht gefunden wie die Adafruit Library die Pins vom Pi bezeichnet.

  • Wenn die Programme einmal liefen, dann wird der libgpiod_pulsein Prozess nicht mehr beendet. Vielleicht bekommst du das mit dhtDevice.exit() am Ende des Programms in den Griff. Ansonsten musst du den Raspberry neustarten oder den Prozess manuell im Taskmanager suchen und beenden, bevor das Programm wieder funktioniert. Alternativ geht auch eine Endlosschleife, sodass das Programm nie beendet wird.

  • Eure Tipps haben mich schon mal weiter gebracht! Vielen Dank! Ich bin die Installationen in den Links durchgegangen und dann habe ich für das Testprogramm auf der Konsole auch ausgaben gehabt - YIPIEEH. Lade ich das gleiche Skript in Thonny, bekomme ich eine Fehlermeldung (siehe Bilder). Muss ich in Thonny den Interpreter umstellen?

    In der Konsole wirft mir...

    Code
    python3 --version

    ...folgendes aus:

    Code
    Python 3.7.3

    In Thonny ist im Reiter Interpreter "The same interpreter which runs Thonny (default)" eingestellt.

    Unter Details steht dann

    /usr/bin/python3

  • Normalerweise brauchst du kein "sudo" vor dem Befehl. Das sollte auch normal vom user pi aus klappen, oder wie hast du die Module installiert?

    Hast du die Datei "board,py", die bei dir offen ist, selbst erstellt oder nur die vorhandene Datei geöffnet?

  • Gegebenfalls musst du das Adafruit-Blinka auch deinstallieren und neu installieren.

    Code
    pip3 uninstall Adafruit-Blinka
    Code
    pip3 install adafruit-blinka

    Edit:

    Nochmal zum selbst nachlesen hier die Problembehandlung.

    Gleich unter :
    Getting an error message about "board" not found or "board" has no attribute

    Einmal editiert, zuletzt von keepfear (20. März 2021 um 21:25)

  • Gegebenfalls musst du das Adafruit-Blinka auch deinstallieren und neu installieren.

    Code
    pip3 uninstall Adafruit-Blinka
    Code
    pip3 install adafruit-blinka

    Edit:

    Nochmal zum selbst nachlesen hier die Problembehandlung.

    Gleich unter :
    Getting an error message about "board" not found or "board" has no attribute

    Habe ich gerade auch gemacht. Hier nochmal die aktualisierte Ausgabe von pip3 list:

  • So, ich denke das wars. Es funktioniert! Das mit dem Prozess ist so wie von euch beschrieben. Ich werde nun mal anfangen, die restlichen Bauteile anzuschließen das das Skript zu schreiben.

    Vielen Dank für eure Hilfe! Ich werde euch berichten was aus dem Projekt geworden ist.

    Gruß

    Christian

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!