DHT22 und DS18B20

  • Hallo Leute,


    ich würde gern zwei Temperatursensoren (DS18B20) und einen Temperatur- und Luftfeuchtigkeitssensor (DHT22) an den Raspberry Pi 2 anschliessen,
    ist das überhaupt möglich? Bisher habe ich leider noch keine Möglichkeit gefunden.


    Beide Sensoren werden an den GPIO 4 angeschlossen.


    -Kann ich einfach beide Typen da anschliessen?
    -Kann ich einem anderen GPIO die gleichen Eigenschaften / Funktionen geben?
    -Kann ich einen der beiden Sensortypen an einen anderen GPIO anschliessen?


    Von den DS18B20 kann ich ja mehrere einfach anschliessen, und jeder wird eindeutig erkannt.
    Kann ich auch auf die gleiche Art und Weise auch mehrere DHT22 anschliessen?


    Ich hoffe ich habe mich verständlich ausgedrückt und jemand hier kann mir helfen.


    Grüße RaspaKiri

  • [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]@ raspakiri[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Hallo Leute,[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]ich würde gern zwei Temperatursensoren (DS18B20) und einen Temperatur- und Luftfeuchtigkeitssensor (DHT22) an den Raspberry Pi 2 anschliessen,[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]ist das überhaupt möglich? Ja    Bisher habe ich leider noch keine Möglichkeit gefunden. Kann ich mir kaum vorstellen, es gibt unzählige Anleitungen im Netz.[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Beide Sensoren werden an den GPIO 4 angeschlossen. Nö, nur die DS18B20[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]-Kann ich einfach beide Typen da anschliessen? Nein[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]-Kann ich einem anderen GPIO die gleichen Eigenschaften / Funktionen geben? Der DS18B20 gehört an GPIO 4.[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]-Kann ich einen der beiden Sensortypen an einen anderen GPIO anschliessen? Ja, den DHT22[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Von den DS18B20 kann ich ja mehrere einfach anschliessen, und jeder wird eindeutig erkannt. Ja, richtig.[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Kann ich auch auf die gleiche Art und Weise auch mehrere DHT22 anschliessen? Nein, jeder DHT 22 braucht ein GPIO[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Ich hoffe ich habe mich verständlich ausgedrückt und jemand hier kann mir helfen.[/font]


    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Grüße RaspaKiri[/font]

    Edited once, last by rmjspa ().

  • Vielen Dank.
    (GPIO4; Pin 29; wiringPi 21; da kann man spät abends schon mal durcheinander kommen.) :wallbash:


    Ziel ist es nun, die Daten von zwei DS18B20'ern und einem DHT22'er in eine rrd-Datenbank zu schreiben, kann mir jemand sagen wie ich das automatisieren kann?

  • Ich nochmal, bisher habe ich es geschafft, die beiden DS18b20 und den DHT22 anzuschließen und die Werte abzufragen. Als nächstes möchte ich die Daten automatisch mit einen cronjob alle 30 Sekunden abfragen und in eine Datenbank schreiben.


    -Kann ich alle drei Sensoren in einer Datei abfragen?
    +Habt ihr hierfür ein paar Tipps?
    -Welche Datenbank ist hierfür zu empfehlen?



    Ich hoffe ich habe mich verständlich ausgedrückt.

  • Die Abfrage ist in einer Datei möglich. Die DHT22 hängen an verschiedenene GPIOs und sind deshalb ohne zeitliche Einschränkungen abfragbar. Bei den DS18B20 solltest Du zwischen dem Aufruf der Sensoren eine Pause einlegen, weil die digitale Aufbereitung der Daten im Sensor etwas dauert. Man könnte das genau ausrechnen, aber nimm einfach 2 Sekunden, dass da bist Du bei 2 Sensoren auf der ganz sicheren Seite.


    Jeder Schreibzugriff auf die SD-Karte verkürzt die Lebenszeit dieser. Eine Datenbank erzeugt sehr viele Schreibzugriffe (Ablage der Daten und "internes" Datenbankmanagement), da bietet sich eine Datenbank auf einem USB-Datenträger oder im Netzwerk an. Die Wahl der Datenbank ist Geschmackssache, da für die Aufgabe jede Datenbank oversized ist. Trotzdem ist eine Datenbank zu empfehlen, weil der Zugriff auf die Daten, wen es dann eine große Menge werden, einfach ist, sofern die Datenbank richtig aufgebaut ist.

  • Vielen Dank für die schnelle Antwort. ;)


    Hab mich wohl doch nicht so verständlich Ausgedrückt, wie ich dachte. :blush:
    Es sind 3 Sensoren, 2x DS18b20 und 1x DHT22.


    Was aber dank deiner Aussage nicht relevant ist.


    Aufbau der Abfrage:

    Code
    1. DHT22 auslesen / Werte speichern
    2. DS18b20 auslesen / Wert speichern
    3. Warte 2 Sekunden
    4. DS18b20 auslesen / Wert speichern


    Als Datenbank würde ich dann rrdtool verwenden wollen.
    Diese müsste dann doch so erzeugt werden, oder?


    Code
    rrdtool create TemperaturAufzeichnung.rrd --step 120 
    DS:temp01:GAUGE:600:10:100
    DS:temp02:GAUGE:600:10:100
    DS:temp03:GAUGE:600:10:100
    DS:lf01:GAUGE:600:10:100 
    RRA:AVERAGE:0.5:1:1200 
    RRA:MIN:0.5:12:2400 
    RRA:MAX:0.5:12:2400 
    RRA:AVERAGE:0.5:12:2400


    Aber wie lese ich jetzt die Sensoren aus, und bekomme die Werte in die Datenbank und an die richtige stelle?


    PS: Das mit der Haltbarkeit der SD-Karten ist ein guter Hinweis, vielen Dank dafür.
    Zum Verständnis: Funktioniert ein USB-Stick nicht genauso? Die Haltbarkeit ist also auch begrenzt? Ich muss also damit rechnen, dass ich den alle paar Jahre wechseln muss, richtig?

  • rrd ist nicht mein Ding, aber es gibt dazu genug Beispiele für alle Programmiersprachen, ebenso wie für das Auslesen der Sensoren.
    Ein USB-Stick verschleißt auch, aber da ist kein betriebssystem drauf. Die SD-Karte hat mit dem BS schon sehr viel zu arbeiten, deswegen sollte man alles was im Produktivbetrieb unnötig ist (z.B. benötigt man normalerweise bei einem laufenden System viele logs gar nicht) abschalten.

  • Ok, vielen Dank für die Hilfe. :bravo2:


    Im Moment frage ich die Daten einfach per php ab und lasse sie mir anzeigen.


    DS18b20:

    Code
    $temp01 = exec('cat /sys/bus/w1/devices/22-XXXXXXXXXXXX/w1_slave |grep t=');
     $temp01 = explode('t=',$temp01);
    $temp01 = $temp01[1] / 1000;
    $temp01 = round($temp01,2);
    
    
    echo $temp01 . " °C";


    ABER beim DHT22 stehe ich aufm Schlauch, kann mir da jemand helfen?

  • Kann ich den Masse-Anschluss für beide Sensoren verwenden?


    Also für den DHT* und den DS18B20 einmal Masse.
    3Volt und Datenleitung jeder einen extra Anschluss.


    Sind quasi 5 Pins belegt.

    Raspi 3 mit Kodi 18 + Netflix & Amazon

    Raspi2 B+ als Datenlogger                            

    Edited once, last by Ruco ().

  • Hallo Ruco,


    Du kannst nicht nur - Du musst sogar!


    Wobei es Dir überlassen bleibt, ob Du den gleichen GND des RPi nimmst oder verschiedene. Das ist deswegen belanglos, weil die GNDs eh miteinander verbunden sind.


    Beste Grüße


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Könnt ihr da mal bitte drüber gucken ob der Aufbau so passt?
    Meine Temperatursensoren laufen ja soweit.
    Da aber die DHT sind noch immer nicht da sind, kann ich nicht alles testen.
    Würde aber gerne den Rest schonmal zusammenlöten.


    Geht das mit der Versorgungsspannung so?




    Grüße

  • Hallo.
    Sollte ok sein.
    Aber beim lesen drauf achten, beim DHT gilt das gleiche wie für den DS.
    ca 2sec Zeit lassen vor dem nächsten lesen.


    Auf Leitungslängen achten. Ab ~3m und mehr ruhig mal runter mit dem Pull-up auf 3k3, oder mit nem Poti probieren, aber nicht unter ~1k2.


    gruß root

  • Um den 1wire-Bus mit DT zu aktivieren gibt man ja folgende Zeile in /boot/config.txt ein:
    dtoverlay=w1-gpio


    Damit wäre standardmäßig der GPIO4 für 1wire zuständig. Die Verwendung des Parameters gpiopin erlaubt jedoch auch einen anderen Pin zu nutzen.


    dtoverlay=w1-gpio,gpiopin=18
    Für GPIO18.


    So die Anleitung aus einem Tutorial.


    Jetzt habe ich mehrere DS18B20 an GPIO4, und einen DHT22 an an einem anderen Sensor.
    Die Abfrage der DSDS18B20 klappt, nur den DHT22 erkennt er nicht. Was muss in dem config.txt geändert/hinzugefügt werden?
    Bzw. wie habt ihr es gemacht?


    Vielen Dank.