Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

DHT11 /DHT22 Temperatursensor

Komponenten und Verbrauchsmaterialien

DHT11 Temperatur- und Feuchtigkeitssensor (4 Pins)
× 1
Raspberry Pi 2 Model B
× 1
Arduino UNO
× 1
Überbrückungsdraht von Stecker auf Stecker
× 3
Breadboard (generisch)
× 1
4,7K Widerstand
× 1
Cobbler Breakout Kit
× 1

Apps und Onlinedienste

Microsoft Windows 10 IoT Core
Arduino-IDE
Raspberry Pi Raspbian
Microsoft Visual Studio 2015
WinSCP
PuTTY

Über dieses Projekt

Einführung

Hintergrund

Der DHT11 ist ein 4-Pin (ein Pin ist unbenutzt) Temperatur- und Feuchtigkeitssensor, der 20 % - 90 % relative Luftfeuchtigkeit und 0 bis 50 °C messen kann. Der Sensor kann zwischen 3 und 5,5 V DC betrieben werden und kommuniziert über sein eigenes proprietäres OneWire-Protokoll. Dieses Protokoll erfordert ein sehr genaues Timing, um die Daten vom Sensor zu erhalten. Die LOW- und HIGH-Bits werden auf dem Draht durch die Zeitdauer codiert, in der das Signal HIGH ist. Die Gesamtzeit für eine Messung beträgt maximal 23,4 ms. Dies beinhaltet eine Verzögerung von 18 ms, die zum Starten der Datenübertragung erforderlich ist, und ein Zeitfenster von bis zu 5,4 ms für die Daten. Einzelne Signale können zwischen 20 μs und 80 μs lang sein.

Als Windows 10 IoT Core zum ersten Mal verfügbar wurde, schnappte ich mir meinen Raspberry Pi 2 und meinen DHT11-Sensor und probierte es in C# aus. Ich stellte schnell fest, dass es nicht funktionieren würde. Das Problem mit C# im Windows 10 IoT Core ist, dass es einfach nicht schnell genug sein wird (zumindest im Moment nicht).

Ich habe im Microsoft-Forum gepostet und mich mit anderen Entwicklern ausgetauscht, die das gleiche Problem haben. Schließlich stieß ich auf eine Microsoft-Antwort zum OneWire-Protokoll in Windows 10 IoT Core, die lautete:

Nach einer Weile erhielt ich eine Antwort auf meinen Beitrag, die lautete:

Nun, das wird großartig und ich freue mich wirklich auf die bevorstehende Funktion, aber wer kann warten? Ich habe kürzlich gesehen, dass Microsoft ein Beispiel zur Unterstützung des OneWire-Protokolls mit dem DHT11 als Beispielsensor und der Verwendung von C++ unter Windows 10 IoT Core veröffentlicht hat. Ich habe dies als Gelegenheit gesehen, es in C# zu bringen.

In diesem Projekt geht es darum, dieses Beispiel in eine Bibliothek zu verwandeln, die in C# verwendet werden kann. Ich bin der Person dankbar, die die Bibliothek geschrieben hat, um diesen beliebten Sensor in Windows 10 IoT Core nützlich zu machen, und hoffentlich wird er mit dieser Bibliothek noch nützlicher.

Bibliothek

Die Bibliothek, die ich erstellt habe, ist eine einfache Überarbeitung des ursprünglich von Microsoft geposteten Codes, daher nehme ich keine Anerkennung für die Arbeit, die zum Abrufen der Sensorablesung geleistet wurde.

Die Bibliothek präsentiert eine einfache Klasse namens Dht11 im Namensraum Sensors.Dht . Das Erstellen eines neuen Objekts in C# ist einfach.

Öffnen Sie zuerst den GPIO-Pin, an den der DHT11-Sensor-Pin angeschlossen ist.

mit Sensors.Dht;GpioPin-Pin =GpioController.GetDefault().OpenPin(4, GpioSharingMode.Exclusive); 

Dann übergeben Sie diesen Pin an den Konstruktor des Dht11 -Klasse und geben Sie den GPIO Pin Drive Mode an. Auf diese Weise können Sie entscheiden, ob Sie Ihren eigenen Pull-up-Widerstand hinzufügen.

Dht11 dht11 =new Dht11(_pin, GpioPinDriveMode.Input); 

Um einen Messwert vom Gerät abzurufen, verwenden Sie GetReadingAsync Methode.

DhtReading lesen =warten dht11.GetReadingAsync().AsTask(); 

Es liegt eine Überladung vor, die die Angabe des maximalen Wiederholungswerts ermöglicht. Der Standardwert ist 20. Dies gibt an, wie viele Versuche unternommen werden, den Sensor zu lesen, bevor aufgegeben und ein fehlgeschlagener Messwert zurückgegeben wird.

Das DhtReading Struktur ist definiert als:

public value struct DhtReading{  bool TimedOut; bool Ist gültig; doppelte Temperatur; doppelte Luftfeuchtigkeit; int RetryCount;}; 

Beobachtungen

Obwohl der Sensor in C++ arbeitet, erhält er nicht jedes Mal einen Messwert. Daher ist eine Wiederholungsoption in der Klasse erforderlich (dies ist tatsächlich Teil des Microsoft-Beispiels). Ich dachte, es wäre am besten, dies mit anderen Plattformen zu vergleichen, um zu sehen, wie es funktioniert. Ich habe Code auf dem Raspberry Pi 2 mit Raspbian sowie auf einem Arduino Uno ausprobiert. Der Code, den ich für beide verwendet habe, wurde in das GitHub-Repository aufgenommen.

Das in diesem Projekt enthaltene Video zeigt und vergleicht die Ausgabe von jeder dieser Plattformen.

Erste Schritte

Bauen Sie die Schaltung für den Raspberry Pi 2 zusammen

Verwenden Sie diese Anleitung, um die Schaltung zusammenzubauen, während Sie das Diagramm unten auf der Seite als Richtlinie verwenden (beachten Sie, dass die Farbe der Drähte optional ist und ausgewählt wurde, um die Schaltung beim Aufbau leicht zu verfolgen).

  • Platzieren Sie den T-förmigen Schuster am linken Ende des halben Größe+-Bretts (wo die Zahlen bei 1 beginnen). Die beiden Pins ganz links befinden sich in E1 und F1 auf der Tafel. Die beiden Pins ganz rechts befinden sich bei E20 und F20
  • Platzieren Sie den 4,7 K-Widerstand zwischen A4 und 3V3
  • Schließen Sie ein orangefarbenes Überbrückungskabel von Stecker zu Stecker zwischen B4 . an und F28
  • Schließen Sie ein rotes Stecker-zu-Stecker-Überbrückungskabel zwischen F29 . an und 3V3
  • Schließen Sie ein schwarzes Stecker-zu-Stecker-Überbrückungskabel zwischen F30 . an und GND
  • Platzieren Sie die DHT11-Sensoren in J30 (-), J29 (+) und J28 (s)
  • Stecken Sie das Flachbandkabel in den Schuster und den Raspberry Pi

Bauen Sie die Schaltung für den Arduino zusammen

Verwenden Sie diese Anleitung, um die Schaltung zusammenzubauen, während Sie das Diagramm unten auf der Seite als Richtlinie verwenden (beachten Sie, dass die Farbe der Drähte optional ist und ausgewählt wurde, um die Schaltung beim Aufbau leicht zu verfolgen).

  • Platzieren Sie den 4,7 K-Widerstand zwischen E12 und E13
  • Schließen Sie ein weißes Stecker-zu-Stecker-Überbrückungskabel zwischen D13 . an und Pin 5 im Arduino
  • Schließen Sie ein rotes Stecker-zu-Stecker-Überbrückungskabel zwischen D12 . an und die 5V Pin im Arduino
  • Schließen Sie ein schwarzes Stecker-zu-Stecker-Überbrückungskabel zwischen D11 . an und GND auf dem Arduino
  • Setzen Sie die DHT11-Sensoren in A11 . ein (-), A12 (+) und A13 (s)
  • Schließen Sie das USB-Kabel von Ihrem Computer an Ihren Arduino an

Unten sind Fotos von den Schaltungen, die ich gebaut habe.

Starten der Anwendung für den Raspberry Pi

Wählen Sie Debug, ARM-Konfiguration und Remote-Computer. Klicken Sie nun mit der rechten Maustaste auf das Projekt, wählen Sie Eigenschaft und klicken Sie dann auf Tag debuggen. Geben Sie als Nächstes die Raspberry Pi 2-IP-Adresse in das Feld Remote-Computer ein und deaktivieren Sie Authentifizierung verwenden.

Drücken Sie F5 . Die Anwendung wird auf dem Gerät bereitgestellt, was beim ersten Mal einige Minuten dauern kann.

Starten der Anwendung für den Arduino

Die Skizze für dieses Projekt ist in GitHub in einer Datei namens Dht11_Speed verfügbar . Starten Sie die Arduino IDE und öffnen Sie die Skizze. Laden Sie die Skizze zum Arduino hoch (Strg U ) und starten Sie dann den Serial Monitor (Strg Shift M )

Wenn Sie sich nicht sicher sind, wie Sie dies tun sollen oder neu in dieser Umgebung sind, zeigt das folgende Video, wie dies geht.

Starten der Anwendung für Raspbian

Der C-Code für den Raspberry Pi ist in GitHub für dieses Projekt in einer Datei namens Dht11.c verfügbar . Der Quellcode muss auf den Raspberry Pi kopiert und dort kompiliert werden. Ich verwende gerne WinSCP, um Dateien zu kopieren. Wenn Sie diese Anwendung nicht haben, empfehle ich Ihnen, sie jetzt herunterzuladen und zu installieren. Der Quellcode verwendet wiringPi, das vor dem Kompilieren der Anwendung installiert werden muss.

Der Befehl zum Kompilieren des Codes auf dem Raspberry Pi lautet:

gcc -oDht11_Speed ​​Dht11_Speed.c -L/usr/local/lib -lwiringPi -std=c99 -lm 

Um die Anwendung auszuführen, geben Sie den Befehl ein:

sudo ./Dht11_Speed ​​1000 10 

Wobei 1000 eine Verzögerung von 1000 ms (1 Sek.) und 10 die Anzahl der zu lesenden Abtastwerte angibt.

Das Video zeigt detaillierter, wie Sie den Code kopieren und auf dem Raspberry Pi mit Raspbian kompilieren. Um zu erfahren, wie Sie Raspbian auf Ihren Raspberry Pi laden, gehen Sie zu https://www.raspberrypi.org/downloads/raspbian/.

Video

Das folgende Video ist eine Demonstration der Anwendung:

Sehen Sie sich dieses Video auf YouTube im Theatermodus an, um die beste Qualität zu erzielen.

Code

Visual Studio 2015 C#/C++-Quellcode
https://github.com/porrey/dht.git

Schaltpläne

Dht11_RPi2.fzz Dht11_Arduino.fzz

Herstellungsprozess

  1. Himbeer-Pi-Temperaturlogger
  2. TMP006-Temperatursensor-Python-Bibliothek mit Raspberry Pi,
  3. Python- und Raspberry Pi-Temperatursensor
  4. 1-Draht-Temperatursensor DS1820 am Raspberry Pi (GPIO direkt)
  5. Raspberry Pi 1-Draht digitaler Thermometersensor (DS18B20)
  6. Raspberry Pi Temperatur- und Lichtsensor
  7. Raspberry Pi-Temperatursensor
  8. Raspberry PI-basiertes IoT-Projekt zum Verbinden des DHT11-Sensors
  9. Lagertemperatursensor | Detektor
  10. Infrarotsensor-Temperaturmessungen