Anfängerfrage DHT 22

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

  • Ich glaub ich gebe es langsam auf...

    Build Essential war schon installiert und auf dem aktuellsten Stand. Beim installieren der Automake Autoconf kam zuerst ein Fehler nach erneuter Installation aber weiter durchgelaufen. Die Fehler bleiben aber weiterhin wie beschrieben...

    Es wäre wichtig hier auch die Fehlermeldungen zu posten. Ansonsten fällt es schwer aus Aussagen wie: "Die Fehler bleiben aber weiterhin wie beschrieben." eine Ursache für
    den Fehler auszumachen.

    In jedem Fall scheinen auf deinem Raspbian einige Pakete zu fehlen, die Vorraussetzung fürs kompilieren von WiringPi bzw. rpi_dht22 sind.

    Also nochmal, was sind bzw. waren die Fehlermeldungen?

  • Da hast du natürlich Recht.Hier die genau Fehlermeldung bei der Ausführung von ./build:

    GPIO Utility
    [Link]
    gpio.o: In function `main':
    gpio.c:(.text.startup+0x154): undefined reference to `wiringPiSetupPiFaceForGpioProg'
    gpio.c:(.text.startup+0x580): undefined reference to `gertboardSPISetup'
    gpio.c:(.text.startup+0x594): undefined reference to `gertboardAnalogWrite'
    gpio.c:(.text.startup+0x760): undefined reference to `gertboardSPISetup'
    gpio.c:(.text.startup+0x770): undefined reference to `gertboardAnalogRead'
    collect2: error: ld returned 1 exit status
    Makefile:45: recipe for target 'gpio' failed
    make: *** [gpio] Error 1

    Make Failed...
    Please check the messages and fix any problems. If you're still stuck,
    then please email all the output and as many details as you can to
    projects@drogon.net

    Hier im Forum als auch im Internet findet man mehrere Ansätze, warum dieser Fehler auftritt:

    - package libi2dev fehlt. Habe ich schon nachinstalliert
    - Keine Ausführungsrechte. Habe ich durch chmod 755 build ausgeschlossen

  • Kannst Du nochmal folgendes versuchen?

    Code
    cd wiringPi
    git pull origin
    ./build clean
    ./build

    Weiter oben hast Du geschrieben, dass Du wiringPi bereits mit apt-get install installiert hast.
    Welche Ausgabe bekommst Du denn, wenn Du:

    Code
    git clone https://github.com/sweetpi/rpi_dht22
     cd rpi_dht22
    ./configure 
    make
    sudo ./rpi_dht22 pin1 [pin2...]

    ausführst?

  • Beim Versuch wiringPi zu installieren kommt weiterhin die gleiche beschriebene Meldung im Post davor.

    Wenn ich versuche eine Ausgabe zu erzeugen kommt die Ausgabe: Kommando nicht gefunden. Das einzige "ungewöhnliche" was ich bei der Installation entdecken konnte war das bei ./configure die Punkte checking wiringPi presence no und checking for wiringPi no ausgegeben wurden. Sonst stand alles auf Yes. Eine Fehlermeldung kam weder bei ./configure noch bei make.

    Ich habe den Pi extra gestern Abend nochmal komplett neu aufgesetzt über Noobs. Dabei habe ich Raspbian aufgespielt und direkt nach der Installation apt-get update und apt-get upgrade durchgeführt.


  • Beim Versuch wiringPi zu installieren kommt weiterhin die gleiche beschriebene Meldung im Post davor.

    Wenn ich versuche eine Ausgabe zu erzeugen kommt die Ausgabe: Kommando nicht gefunden. Das einzige "ungewöhnliche" was ich bei der Installation entdecken konnte war das bei ./configure die Punkte checking wiringPi presence no und checking for wiringPi no ausgegeben wurden. Sonst stand alles auf Yes. Eine Fehlermeldung kam weder bei ./configure noch bei make.

    Ich habe den Pi extra gestern Abend nochmal komplett neu aufgesetzt über Noobs. Dabei habe ich Raspbian aufgespielt und direkt nach der Installation apt-get update und apt-get upgrade durchgeführt.

    Was meinst Du denn mit "Ausgabe erzeugen?" Was hast Du denn eingegeben und welches Kommando wurde nicht gefunden?

    Die Ausgabe von ./configure bedeutet lediglich, dass die WiringPi header Dateien nicht auf Deinem System gefunden wurden bzw. installiert sind.
    Das kann ich irgendwie nicht nachvollziehen, weil Du oben geschrieben hast, dass wiringpi bereits über 'apt-get install wiringpi' installiert wurde. :s

    Inzwischen habe ich mir die Fehlermeldung etwas genauer angesehen.

    Code
    [Link]
    gpio.o: In function `main':
    gpio.c:(.text.startup+0x154): undefined reference to `wiringPiSetupPiFaceForGpioProg'
    gpio.c:(.text.startup+0x580): undefined reference to `gertboardSPISetup'
    gpio.c:(.text.startup+0x594): undefined reference to `gertboardAnalogWrite'
    gpio.c:(.text.startup+0x760): undefined reference to `gertboardSPISetup'
    gpio.c:(.text.startup+0x770): undefined reference to `gertboardAnalogRead'
    collect2: error: ld returned 1 exit status
    Makefile:46: recipe for target 'gpio' failed
    make: *** [gpio] Error 1

    Die Ausgabe besagt lediglich, dass sich das GPIO-Utility nicht mit der WiringPi Library verlinken lässt. Wenn man die entsprechenden Zeilen
    für das GPIO Utility im build script auskommentiert, läuft das build script ohne Fehlermeldung durch.

    Code
    #  echo
    #  echo "GPIO Utility"
    #  cd ../gpio
    #  make
    #  check-make-ok
    #  sudo make install
    #  check-make-ok



    Im Verzeichnis rpi_dht22 konnte ich anschließend mit

    Code
    ./configure
    make

    rpi_dht22 kompilieren. Wenn Dich die die Warnung stört, dass automake nicht gefunden wird, kannst Du automake mit apt-get install nachinstallieren.
    Für den Betrieb vom DHT22 ist das GPIO-Utility nicht erforderlich. Ich habe Gordon Henderson bereits eine Nachricht geschickt um zu fragen wie man den
    Fehler beseitigt. Bei früheren Versionen war der Fehler nicht aufgetreten.

  • pi


    :thumbs1:
    -ds-

    Ok, ich habe den Fehler gefunden. Weil ich hier genügend Pis rumstehen habe, habe ich es nochmal auf einem anderen Pi2 probiert.
    Die Ursache ist ein Konflikt zwischen dem build script bzw. der bereits installierten wiringpi library aus dem Raspbian repo (2.24)
    und den Quellen vom github. Anstelle der kompilierten Version der library verwendet der Linker die Version aus dem Raspbian
    repo. Weil es verschiedene Versionen sind, funktioniert es nicht. Zudem landet die library aus dem repo in /usr/lib, die aus dem github
    wird in /usr/local/lib installiert. Böse Falle ... und wieder was dazugelernt!

    Stex
    Nach dem Entfernen mit 'apt-get purge wiringpi' läuft das build script fehlerfrei durch.

  • Super! Vielen Dank! Das Auskommentieren hatte auch schon geholfen. Allerdings bekomme ich bei sudo ./rpi_dht22 pin4 ein : Kommando nicht gefunden zurück.

    Edit: Mit der anderen Bibliothek hat sich nun auch eine Änderung eingestellt. Über sudo ./Adafruit_DHT 22 4 bekomme ich jetzt keine Aufhänger mehr sondern dauerhaft auf jedem Pin Data (0) zurück geliefert.

    Einmal editiert, zuletzt von Stex (6. Januar 2016 um 23:09)


  • Super! Vielen Dank! Das Auskommentieren hatte auch schon geholfen. Allerdings bekomme ich bei sudo ./rpi_dht22 pin4 ein : Kommando nicht gefunden zurück.

    Edit: Mit der anderen Bibliothek hat sich nun auch eine Änderung eingestellt. Über sudo ./Adafruit_DHT 22 4 bekomme ich jetzt keine Aufhänger mehr sondern dauerhaft auf jedem Pin Data (0) zurück geliefert.

    Ok, das liegt daran, dass das Programm rpi_dht und nicht rpi_dht22 heißt! Wenn Du es nicht schon nach /usr/local/bin kopiert hast, kannst Du es
    außerdem nur durch Angabe des kompletten Pfads aufrufen, oder nach einem 'cd' in das Verzeichnis rpi_dht22 mit ./rpi_dht.

    Wenn immer noch Data (0) zurückgeliefert wird, heisst das, dass mit Deiner Verkabelung etwas nicht stimmt. Wenn ich das ausführe ohne dass ein DHT22
    angeschlossen ist, bekomme ich auch nur diese Ausgabe:

    Code
    Using pin #4
    Data (0): 0x0 0x0 0x0 0x0 0x0

    Und noch ein Hinweis: Der Sensor "mag es nicht" in Intervallen kleiner als 2 Sekunden abgefragt zu werden. Du musst ihm eine kleine Pause von mindestens 2 Sekunden
    gönnen. Wie oben geschrieben solltest Du Dir außerdem angewöhnen die Ausgaben der Programme zu posten. Ich rate Dir auch dringend mal ein bisschen über die Linux Grundlagen zu lesen z.B. hier https://www.raspberrypi.org/magpi/issues/essentials-bash-vol1/, denn wenn Du diese nicht beherrscht, fängst Du Dir hier schnell ein RTFM ein :D oder bekommst gar keine Antwort.

    Es gibt auch hier im Forum eine sehr nützliche Linksammlung, damit nicht dauernd das Rad neu erfunden wird bzw. für Probleme die eigentlich gar keine sind ein neuer
    Thread gestartet wird. Es ist nämlich mühselig immer wieder dieselben Fragen beantworten zu müssen ...

    Also: Erst Lesen, dann Fragen :thumbs1:!

    Nix für ungut!

    Beste Grüße,
    /luetzel

  • Das stimmt so nicht sorry. In der Read Me steht explizit man soll sudo ./rpi_dht22 pinX eingeben. Außerdem befinde ich mich natürlich im Verzeichnis wenn ich den Befehl ausführe.

    Die Schaltung ist wie bereits gepostet aus dem Forum hier entnommen und 1:1 nachgebaut. Was ich mittlerweile nicht ausschließen möchte ist dass der Sensor über den Jordan nach dem ganzen Stecken gegangen ist. Gibt es eine Möglichkeit dies in irgendeiner Form zu testen? Vermutlich nicht nehme ich an.


  • Das stimmt so nicht sorry. In der Read Me steht explizit man soll sudo ./rpi_dht22 pinX eingeben. Außerdem befinde ich mich natürlich im Verzeichnis wenn ich den Befehl ausführe.

    Jo, das steht zwar so im Readme, aber das heisst ja noch lange nicht, dass das auch richtig ist ... :wallbash:
    Lass Dir mal mit 'ls -la' den Inhalt vom rpi_dht22 Verzeichnis anzeigen:

    Dir wird nämlich 'Komando nicht gefunden' angezeigt, weil es die Datei rpi_dht22 gar nicht gibt ...
    Und wo nüscht iss, da kann der Pi auch nüscht ausführen ...

  • Oh man.. Ich dachte wenigstens auf das ReadMe kann man sich verlassen. Du hat natürlich Recht. Funktioniern tut es jetzt auf Seiten des Programms. Die Verkabelung wird wahrscheinlich falsch sein oder der Sensor ist beim ganzen hin und her gestecke kaputt gegangen


  • Oh man.. Ich dachte wenigstens auf das ReadMe kann man sich verlassen. Du hat natürlich Recht. Funktioniern tut es jetzt auf Seiten des Programms. Die Verkabelung wird wahrscheinlich falsch sein oder der Sensor ist beim ganzen hin und her gestecke kaputt gegangen

    Naja, wenn du nicht aus Versehen VCC und GND verpolt hast, dann wird der Sensor sicher noch leben. Die Verkabelung ist ja auch nicht soo kompliziert.
    Wenn man mit dem Widerstand VCC und Data "überbrückt" reichen ja drei Kabel aus.

    Ich vermute mal, dass Du die falschen Pin-Nummern verwendest. Vielleicht hilft ja diese Tabelle:

    gpio1.png

Jetzt mitmachen!

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