Sensoren wollen nicht funktionieren

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,

    das ist meine erste Anfrage in diesem Forum. Normalerweise versuche ich mir mit google weiterzuhelfen, aber hier habe ich keine Idee mehr.

    Ich benutze einen PI3 b um eine Wetterstation aufzubauen. Einen BMP180 Sensor habe ich über I2C Bus bereits zum laufen bekommen.

    Nun wollte ich zusätzlich noch einen DHT22 und einen 433MHz Empfänger RXB6 hinzufügen. Leider ist es mir bei keinem der beiden Sensoren gelungen irgendwelche Signale am PI zu empfangen. Es kommt genau nichts an der PI an. :wallbash:

    Im Falle des RXB6 scheint es keine Pegeländerung am GPIO zu geben (überprüft mit pilight-raw) .

    Auch am DHT22 bekomme ich keine Daten (loldht 4 "Data not good")

    Kann es sein, dass die GPIO noch irgendwie für gepulste Daten freigegeben werden müssen?

    Zu meiner Hardware: Ich benutze einen PI3 b mit raspbian, ein Breadbord und T-shape gobbler. Eine zusätzliche Spannungsversorgung nutze ich nicht.

    Hat jemand eine Idee, woran es klemmen könnte?

    Vieln Dank

    Fiedibus:danke_ATDE:

    Die Definition von Wahnsinn ist, immer wieder das Gleiche zu tun und andere Ergebnisse zu erwarten.

  • Moin Diedibus,

    erstmal: Herzlich Willkommen im Forum!

    Der DHT22 ist ein 1-wire-Gerät. Dazu kann man sudo raspi-confignutzen. Dort wird der 1-wire-bus generell eingeschaltet.

    Aber in diesem Fall gibt es eine overlay-Datei.

    Such mal in /boot/overlays/README nach den Begriff dht11. Dort stehen die Daten die in die /boot/config.txt eingetragen werden müssen.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

    Einmal editiert, zuletzt von Bernd666 (31. Oktober 2017 um 17:54)

  • Moin narazur,

    was ist an meiner Behauptung, der DHT22 ist ein 1-wire-Gerät, falsch?

    Benutzt er mehr wie ein Draht zur Datenübertragung?

    Außerdem hat dein Beitrag nichts wertvolles zur Lösung gebracht.

    Gruss Bernd

    //edit

    Deine Signatur hat einen anderen Inhalt als drauf steht...

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

    Einmal editiert, zuletzt von Bernd666 (31. Oktober 2017 um 16:58)

  • Moin narazur,

    was ist an meiner Behauptung, der DHT22 ist ein 1-wire-Gerät, falsch?

    Es stimmt einfach nicht. 1-wire ist ein Bus system mit einem ganz bestimmten Protokoll, wie etwa auch I2C oder SPI. Siehe https://de.wikipedia.org/wiki/1-Wire

    Der DHT22 ist KEIN 1-wire device, du brauchst auf dem Raspberry Pi einen eigenen Treiber, du kannst ihn NICHT mit dem 1-wire Treiber auf dem Raspberry Pi betreiben. Siehe auch z.B hier: https://www.raspberrypi.org/forums/viewtopic.php?f=44&t=135434

    T'schuldige wenn ich mich oben zu vorsichtig/unklar ausgedrückt habe.

    Außerdem hat dein Beitrag nichts wertvolles zur Lösung gebracht.

    Gruss Bernd

    Ich passe meinen Beitrag entsprechend an, und hoffentlich habe ich mich dieses mal klar genug ausgedrückt.

  • Moin nurazur,

    so ist es richtig.

    Danke dafür.

    Darum ja auch mein Hinweis auf dem Treiber im device-tree.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hallo Bernd,


    vielen Dank für deine schnelle Antwort.

    1-wire war schon eingeschaltet. Ich habe in der config.txt die folgende Zeile eingefügt:

    Code
    dtoverlay=dht11,gpiopin=4

    Es hat aber nicht geholfen, in der syslog kam es dann zu folgenden Eintrag:

    Code
    Oct 31 14:17:09 raspberrypi kernel: [    5.437925] pinctrl-bcm2835 3f200000.gpio: pin gpio4 already requested by dht11@0; cannot claim for onewire@0
    Oct 31 14:17:09 raspberrypi kernel: [    5.437954] pinctrl-bcm2835 3f200000.gpio: pin-4 (onewire@0) status -22
    Oct 31 14:17:09 raspberrypi kernel: [    5.437971] pinctrl-bcm2835 3f200000.gpio: could not request pin 4 (gpio4) from group gpio4  on device pinctrl-bcm2835
    Oct 31 14:17:09 raspberrypi kernel: [    5.437985] w1-gpio onewire@0: Error applying setting, reverse things back
    Oct 31 14:17:09 raspberrypi kernel: [    5.438117] w1-gpio onewire@0: gpio pin 4, external pullup pin -1, parasitic power 0
    Oct 31 14:17:09 raspberrypi kernel: [    5.438137] w1-gpio onewire@0: gpio_request (pin) failed
    Oct 31 14:17:09 raspberrypi kernel: [    5.438163] w1-gpio: probe of onewire@0 failed with error -16

    Ich gehe davon aus, dass der Dienst onewire schon den GPIO belegt. Die onewire - Einträge sind auch ohne den Eintrag in der config.txt vorhanden.

    Was ich nicht verstehe ist die Zeile

    Code
    w1-gpio onewire@0: gpio pin 4, external pullup pin -1, parasitic power 0

    Ist das ok so oder weist das auf einen Fehler hin.

    Gruß der Fiedibus

    Die Definition von Wahnsinn ist, immer wieder das Gleiche zu tun und andere Ergebnisse zu erwarten.

  • Moin Fiedibus,

    schalte mal, bitte, 1-wire aus. Lass nur den overlay drin. Ich denke auch das die beiden Einträge sich nicht mögen.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Moin Fiedibus,

    Plus und Minus vom Raspberry hast du hoffentlich vergessen einzuzeichnen...

    Denk dran besser die 3,3V nehmen.

    Ansonsten sieht es gut aus.

    Und Meldungen im Log müssen ja nicht sein, wenn alles richtig ist.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hi Fiedibus,

    seh' ich jetzt auch so ... sollte passen, vorausgesetzt Du hast die 3V3 als Versorgungsspannung genommen.

    Hast Du 1-Wire in raspi-config deaktiviert?

    Kommen (immer) noch irgendwelche Fehlermeldungen in syslog?

    Hast Du mal ein anderes Programm zum Ausprobieren verwendet? Da gibts imho was von Adafruit ...

    cu,

    -ds-

  • Hallo,

    ja, die 3,3V habe ich. Ich habe einen anderen T-cobbler, der die Außenbahnen mit 5V bzw. 3.3V versorgt.

    Ich habe mal die Adafruit - Library installiert, hilft aber auch nicht...

    Code
    pi@raspberrypi:~/Adafruit_Python_DHT/examples $ sudo ./AdafruitDHT.py 22 4
    ^CTraceback (most recent call last):
      File "./AdafruitDHT.py", line 41, in <module>
        humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
      File "build/bdist.linux-armv7l/egg/Adafruit_DHT/common.py", line 97, in read_retry
    KeyboardInterrupt

    Onewire ist ausgeschaltet, morgen sehe ich mir das syslog noch einmal an und messe mal, ob da aus dem DHT auch was rauskommt. Leider habe ich kein Oszilloskop, sonnst könnte man da eine bessere Analyse machen.

    Gruß Fiedibus

    Die Definition von Wahnsinn ist, immer wieder das Gleiche zu tun und andere Ergebnisse zu erwarten.

  • Moin Fiedibus,

    magst du mal schreiben, wie du den DHT22 abfragst?

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Bernd666

    hat Fiedibus doch dokumentiert: er ruft das Skript

    sudo ./AdafruitDHT.py 22 4

    auf, will sagen er hat einen DHT22 und will ihn an GPIO4 abfragen.

    Offensichtlich kommt nichts zurück und er unterbricht das Skript mit CTRL+C.

    Richtig?

    Also das sieht mir ganz nach einem fundamentalen Problem aus:

    a) der DHT22 ist kaputt

    b) der DHT22 ist falsch angeschlossen. In diesem Fall würde ein Foto helfen.

    c) in 99.9% der Fälle ist es die Stromversorgung oder der Treiber (Standardspruch meiner Ingenieursgattin:))

    c1) ich hasse Steckbretter, bei mir wird alles geloetet.

    c2) der "Treiber" scheidet hier ausnahmsweise aus, den kenne ich und der geht (naja, Raspbian Wheezy auf Raspberry Pi Model B, das waren noch Zeiten!;))

    d) vielleicht ist der GPIO4 mit 1-wire überfordert, man kann ja mal testweise einen anderen GPIO versuchen?

    e) der GPIO4 ist physikalisch tot. Dann würde der Tip in d) vielleicht helfen.

    Gruß

    nurazur

  • Moin Fiedibus,

    Du hast den Treiber für den DHT22 in der Config.txt eingetragen und neu gestartet.

    Und zwar sodtoverlay=dht11. Dann wird, default, der Pin 4 genutzt.

    Du startest kein Programm!!

    Du öffnest ein Terminalfenster.

    Dann nachfolgenden Befehl eingeben

    Code
    pi@bernd-mini:~ $  ls -l /sys/bus/iio/devices/iio\:device0/   <-- Befehl
    insgesamt 0
    -r--r--r-- 1 root root 4096 Nov  2 00:49 dev
    -rw-r--r-- 1 root root 4096 Nov  2 00:49 in_humidityrelative_input
    -rw-r--r-- 1 root root 4096 Nov  2 00:49 in_temp_input
    -r--r--r-- 1 root root 4096 Nov  2 00:49 name
    lrwxrwxrwx 1 root root    0 Nov  2 00:49 of_node -> ../../../../firmware/devicetree/base/dht11@0
    drwxr-xr-x 2 root root    0 Nov  2 00:49 power
    lrwxrwxrwx 1 root root    0 Nov  2 00:49 subsystem -> ../../../../bus/iio
    -rw-r--r-- 1 root root 4096 Nov  2 00:49 uevent

    Wenn du auch diese Ausgabe hast, kommt folgendes

    Code
    pi@bernd-mini:~ $ cat /sys/bus/iio/devices/iio\:device0/in_temp_input  <-- Befehl
    21700                                                                      Ausgabe

    Nächster Befehl

    Code
    pi@bernd-mini:~ $ cat /sys/bus/iio/devices/iio\:device0/in_humidityrelative_input
    66000

    Das ist nun ein einfacher Test. Damit ist bewiesen das dein DHT22 geht, oder nicht.

    Die Library von Adafruit ist relativ alt. Die machen Bitbanging auf dem angegeben Port.

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Hallo,

    vielen Dank an alle die geantwortet haben.

    ich fange erst mal mit dem Bild vom Board an. Die Abfrage habe ich mit AdafruitDHT oder mit lolDHT  gemacht.

    1-Wire ist deaktiviert.

    Und dann noch die Scripte

    Code
    pi@raspberrypi:~ $ ls -l /sys/bus/iio/devices/iio\:device0/
    insgesamt 0
    -r--r--r-- 1 root root 4096 Nov  3 19:34 dev
    -rw-r--r-- 1 root root 4096 Nov  3 19:34 in_humidityrelative_input
    -rw-r--r-- 1 root root 4096 Nov  3 19:34 in_temp_input
    -r--r--r-- 1 root root 4096 Nov  3 19:34 name
    lrwxrwxrwx 1 root root    0 Nov  3 19:34 of_node -> ../../../../firmware/devicetree/base/dht11@0
    drwxr-xr-x 2 root root    0 Nov  3 19:34 power
    lrwxrwxrwx 1 root root    0 Okt 31 20:13 subsystem -> ../../../../bus/iio
    -rw-r--r-- 1 root root 4096 Okt 31 20:12 uevent
    Code
    pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_temp_input
    cat: /sys/bus/iio/devices/iio:device0/in_temp_input: Die Wartezeit für die Verbindung ist abgelaufen
    
    pi@raspberrypi:~ $ cat /sys/bus/iio/devices/iio\:device0/in_humidityrelative_input
    cat: /sys/bus/iio/devices/iio:device0/in_humidityrelative_input: Die Wartezeit für die Verbindung ist abgelaufen

    Sieht aus, als wenn da wirklich nichts ankommt :conf:

    Ich gehe mal davon aus, dass der Sensor tot ist :@

    Der Fiedibus

    Die Definition von Wahnsinn ist, immer wieder das Gleiche zu tun und andere Ergebnisse zu erwarten.

  • Das Bild ist leider nicht sehr deutlich, aber soweit ich das erkennen kann:

    Der DHT22 hat 4 Beinchen. Von vorne gesehen, wird der erste Pin von links auf VCC angeschlossen, der zweite ist die Datenleitung. Der dritte hat keine Funktion, die Masse (GND) wird am 4. Pin angeschlossen. Soweit ich erkennen kann, ist bei dir die Masse am 3. Bein, nicht am 4.

    Von den Koordinaten sehe ich Vcc an 28, Datenleitung an 29, und 30 an Masse. Aber wie der DHT eingesteckt ist, vermag ich nicht zu erkennen....

    Siehe meinen Beitrag #18, Fall b.

Jetzt mitmachen!

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