DH-11-Sensor auf einem Raspberry Pi & Arduino

Ich versuche, meinen DH-11-Sensor auf meinem Himbeer-Pi zum Laufen zu bringen, aber nach mehreren Versuchen ist es mir nicht gelungen. Ich habe das folgende Tutorial von Adafruit befolgt:

https://learn.adafruit.com/dht-humidity-sensing-on-raspberry-pi-with-gdocs-logging

Meine Versuche waren erfolglos. Ich bekomme einfach keinerlei Rückmeldung vom Sensor. Ich weiß, dass meine beiden DH11 / DH22-Sensoren funktionieren, weil ich Daten von ihnen lese, wenn ich dieselbe Schaltung mit meinen Arduinos mache und ein Skript ausführe. Ich glaube auch nicht, dass die GPIOs meiner Himbeere in irgendeiner Weise beschädigt sind, da ich es mit 5 versucht habe und keine Daten erhalten habe.

Ich versuche nicht, Dinge in einem Google-Dokument zu protokollieren, wie es das Tutorial tut, ich versuche nur, Daten vom Sensor mit der Himbeere zu lesen. Ich habe Pläne, die Daten auf einem Server zu protokollieren und remote darauf zuzugreifen ... Aber für dass ich zuerst Messwerte vom Sensor erhalten muss.

Nun, hat das jemand erreicht? Daten von einem DH11/DH22 im Himbeer-Pi lesen? Wenn ja, können Sie mir sagen, welches Tutorial Sie befolgt haben? Ich habe nach einigen da draußen gesucht, aber es scheint, dass Adafruit's bei weitem das beliebteste ist.

Vielen Dank für Ihre Hilfe!

Beifall!

Haben Sie schon erfolgreich GPIO auf RasPi verwendet? Muss als root (sudo) ausgeführt werden, um Zugriff auf GPIO zu haben.
Ja, ich mache andere Projekte... Also liegt es nicht daran
schau dir diesen Beitrag an electronic.stackexchange.com/questions/236530/… ; und wenn Sie bereit sind, den Code auszuprobieren, würde mich sehr interessieren, ob er auch für ein DHT11 geeignet ist. Ich versuche mit diesem Code, die Spitzen aufgrund von DHT11-Fehlern herauszuschneiden, und es scheint bisher zu funktionieren.

Antworten (2)

Das Tutorial von Adafruit mag ein beliebtes Tutorial sein, aber die eigentliche Softwareimplementierung ist vielleicht nicht die beste (Achtung, ich habe meine eigene Softwarelösung und sollte daher nicht als unparteiisch betrachtet werden).

Die DHT11/DHT22 erzeugen einen Bitstrom, um den Messwert zu codieren. Die Länge jeder High-Impulszeit codiert, ob das Bit eine Null oder eine Eins ist. Das Timing dieser Bits ist entscheidend, um einen gültigen Messwert zu erhalten.

Die meisten Implementierungen verwenden für die Bits eine Beschäftigt-Wartezeit, die anfällig für Linux-Neuplanungsprobleme ist. Diese Implementierungen funktionieren, sind aber nicht zuverlässig. Möglicherweise müssen Sie drei von vier Messungen vornehmen, bevor Sie eine erhalten, die die Prüfsummenberechnung besteht (dazwischen jeweils mehrere Sekunden warten).

Eine zuverlässige Methode besteht darin, die SPI-Hardware zum Lesen des Bitstroms zu verwenden. Das führt zu Fehlerraten von besser als 1 zu 100.000 Messwerten.

Die andere Methode besteht darin, meine Pigpio- Bibliothek zu verwenden, die gpio-Ereignisse bis auf die Mikrosekundenebene heruntertaktet. DHT22 Python-Beispiel hier . Der Github hat ein DHT11-Beispiel .

Hintergrundinformationen siehe Beitrag

Danke, dass du mir die richtige Richtung aufgezeigt hast. Ich sehe, dass Sie hier eine etwas komplizierte Terminologie verwenden. Ich wollte schon immer meine eigenen Skripte erstellen und nicht nur bereits codierte verwenden. Haben Sie irgendwelche Ratschläge, wie ich anfangen kann, wenn es darum geht, Bits zu timen und Messwerte zu erhalten? Danke! Deine Hilfe ist sehr Willkommen!
@JackGal Ich schlage vor, Sie laden mein Piscope herunter und sehen sich die vom Sensor während einer Messung erzeugte Wellenform an. Dann werfen Sie einen Blick auf die verschiedenen Softwarelösungen, um zu sehen, wie sie die Wellenform erfassen und interpretieren. Indem Sie die Wellenform mit den Lösungen vergleichen, können Sie sich für Ihre eigene Lösung entscheiden. Viel Glück.

Es gibt einige Schritte zum Lesen des DHT11 mit Himbeere. Wenn Sie zunächst die WiringPi-Bibliothek verwenden, können Sie loslegen. Es gibt bereits einige Implementierungen im Internet. Aber wenn Sie es in meinem Fall ohne externe Bibliotheken machen wollen, müssen Sie den Speicher von Himbeere abbilden, um die GPIO-Pins zu manipulieren. Dann benötigen Sie einen präzisen Timer, um dem DHT11 ein Initiierungssignal zu senden, das den Sensor dazu veranlasst, Ihnen Daten zu liefern. Die Timer können Sie dem Datenblatt des Produkts entnehmen. Danach sendet Ihnen der Sensor 5 Datenbits. Der erste ist der ganzzahlige Teil der Feuchtigkeit. Der zweite ist der Dezimalteil der Luftfeuchtigkeit. An dritter und vierter Stelle stehen die Temperaturwerte. Und das fünfte Bit ist die Prüfsumme.

Sie können meine Implementierung hier sehen .