Inhaltsverzeichnis:
- Schritt 1: Wie I2c funktioniert
- Schritt 2: Bibliothek
- Schritt 3: Verhalten
- Schritt 4: I2c-Nutzung
- Schritt 5: Ein-Draht-Nutzung
- Schritt 6: Implizites Lesen
- Schritt 7: Einfaches Lesen
- Schritt 8: Vollständiges Lesen
- Schritt 9: Anschlussdiagramm
- Schritt 10: Arduino: OneWire
- Schritt 11: Arduino: I2c
- Schritt 12: Esp8266 (D1Mini) OneWire
- Schritt 13: Esp8266 (D1Mini) I2c
- Schritt 14: Danke
Video: DHT12 (i2c Günstiger Feuchtigkeits- und Temperatursensor), schnelle einfache Bedienung - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Updates und anderes findet ihr auf meiner Seite
Ich mag einen Sensor, der mit 2 Drähten verwendet werden kann (i2c-Protokoll), aber ich liebe den preiswerten.
Dies ist eine Arduino- und esp8266-Bibliothek für die DHT12-Serie von sehr kostengünstigen Temperatur- / Feuchtigkeitssensoren (weniger als 1 $), die mit i2c oder einer Drahtverbindung arbeiten.
Sehr nützlich, wenn Sie esp01 verwenden möchten (wenn Sie seriell verwenden, haben Sie nur 2 Pins), um Luftfeuchtigkeit und Temperatur zu lesen und auf dem i2c-LCD anzuzeigen.
AI hat gelesen, dass manchmal eine Kalibrierung erforderlich ist, aber ich habe einen Baum davon und erhalte einen Wert, der dem von DHT22 sehr ähnlich ist. Wenn Sie dieses Problem kalibrieren haben, öffnen Sie das Problem auf github und ich füge die Implementierung hinzu.
Schritt 1: Wie I2c funktioniert
I2C arbeitet mit seinen zwei Drähten, SDA (Datenleitung) und SCL (Taktleitung).
Beide Leitungen sind Open-Drain, werden aber mit Widerständen hochgezogen.
Normalerweise gibt es einen Master und einen oder mehrere Slaves an der Leitung, obwohl es mehrere Master geben kann, aber darüber werden wir später sprechen.
Sowohl Master als auch Slaves können Daten senden oder empfangen, daher kann sich ein Gerät in einem dieser vier Zustände befinden: Master senden, Master empfangen, Slave senden, Slave empfangen.
Schritt 2: Bibliothek
Hier finden Sie meine Bibliothek.
Herunterladen
Klicken Sie oben rechts auf die Schaltfläche DOWNLOADS, benennen Sie den unkomprimierten Ordner DHT12 um.
Überprüfen Sie, ob der DHT-Ordner DHT12.cpp und DHT12.h enthält.
Platzieren Sie den DHT-Bibliotheksordner in Ihrem /libraries/-Ordner.
Möglicherweise müssen Sie den Unterordner Bibliotheken erstellen, wenn es sich um Ihre erste Bibliothek handelt.
Starten Sie die IDE neu.
Schritt 3: Verhalten
Diese Bibliothek versucht, das Verhalten von Standard-DHT-Bibliothekssensoren zu emulieren (und eine Menge Code zu kopieren), und ich füge den Code hinzu, um i2c auf dieselbe Weise zu verwalten.
Die Methode ist die gleiche wie beim DHT-Bibliothekssensor, wobei einige wie die Taupunktfunktion hinzugefügt werden.
Schritt 4: I2c-Nutzung
Zur Verwendung mit i2c (Standardadresse und Standard-SDA-SCL-Pin) lautet der Konstruktor:
DHT12 dht12;
und nehmen Sie den Standardwert für den SDA-SCL-Pin.
(Es ist möglich, mit dem angegebenen Konstruktor für esp8266 neu zu definieren, das für ESP-01 benötigt wird). oder
DHT12 dht12(uint8_t AdresseOrPin)
AdresseOrPin -> Adresse
Adresse zu ändern.
Schritt 5: Ein-Draht-Nutzung
So verwenden Sie einen Draht:
DHT12 dht12(uint8_t addressOrPin, true)
AdresseOrPin -> Pin
boolescher Wert ist die Auswahl des oneWire- oder i2c-Modus.
Schritt 6: Implizites Lesen
Sie können es mit "implizit", "simple read" oder "fullread" verwenden: Implizit, nur der erste Read führt einen echten Read des Sensors durch, der andere Read, der in 2 Sekunden erfolgt. Intervall sind der gespeicherte Wert des ersten Lesevorgangs.
// Das Lesen des Sensors hat 2 Sekunden verstrichene Zeit, es sei denn, Sie übergeben den Force-Parameter
// Temperatur als Celsius lesen (Standard) float t12 = dht12.readTemperature (); // Temperatur als Fahrenheit lesen (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensormesswerte können auch bis zu 2 Sekunden alt sein (es ist ein sehr langsamer Sensor) float h12 = dht12.readHumidity (); // Wärmeindex in Fahrenheit berechnen (Standard) float hif12 = dht12.computeHeatIndex(f12, h12); // Wärmeindex in Celsius berechnen (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Taupunkt in Fahrenheit berechnen (Standard) float dpf12 = dht12.dewPoint(f12, h12); // Taupunkt in Celsius berechnen (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Schritt 7: Einfaches Lesen
Einfaches Lesen, um einen Lesestatus zu erhalten.
// Das Lesen des Sensors hat 2 Sekunden verstrichene Zeit, es sei denn, Sie übergeben den Force-Parameter
bool chk = dht12.read(); // True Read ist ok, False Read Problem
// Temperatur als Celsius lesen (Standard)
float t12 = dht12.readTemperature(); // Temperatur als Fahrenheit lesen (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensormesswerte können auch bis zu 2 Sekunden alt sein (es ist ein sehr langsamer Sensor) float h12 = dht12.readHumidity (); // Wärmeindex in Fahrenheit berechnen (Standard) float hif12 = dht12.computeHeatIndex(f12, h12); // Wärmeindex in Celsius berechnen (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Taupunkt in Fahrenheit berechnen (Standard) float dpf12 = dht12.dewPoint(f12, h12); // Taupunkt in Celsius berechnen (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Schritt 8: Vollständiges Lesen
Vollständiger Lesevorgang, um einen bestimmten Status abzurufen.
// Das Lesen des Sensors hat 2 Sekunden verstrichene Zeit, es sei denn, Sie übergeben den Force-Parameter
DHT12::ReadStatus chk = dht12.readStatus(); Serial.print (F("\nSensor lesen: ")); Schalter (chk) { Fall DHT12::OK: Serial.println (F ("OK")); brechen; Fall DHT12::ERROR_CHECKSUM: Serial.println(F("Prüfsummenfehler")); brechen; Fall DHT12::ERROR_TIMEOUT: Serial.println(F("Timeout-Fehler")); brechen; Fall DHT12::ERROR_TIMEOUT_LOW: Serial.println (F ("Timeout-Fehler bei niedrigem Signal, versuchen Sie einen hohen Pullup-Widerstand")); brechen; Fall DHT12::ERROR_TIMEOUT_HIGH: Serial.println(F("Timeout-Fehler bei niedrigem Signal, versuchen Sie einen niedrigen Pullup-Widerstand zu setzen")); brechen; Fall DHT12::ERROR_CONNECT: Serial.println(F("Verbindungsfehler")); brechen; Fall DHT12::ERROR_ACK_L: Serial.println(F("AckL-Fehler")); brechen; Fall DHT12::ERROR_ACK_H: Serial.println(F("AckH-Fehler")); brechen; Fall DHT12::ERROR_UNKNOWN: Serial.println(F("Unbekannter Fehler DETECTED")); brechen; Fall DHT12::NONE: Serial.println (F ("Kein Ergebnis")); brechen; Standard: Serial.println (F ("Unbekannter Fehler")); brechen; }
// Temperatur als Celsius lesen (Standard)
float t12 = dht12.readTemperature(); // Temperatur als Fahrenheit lesen (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensormesswerte können auch bis zu 2 Sekunden alt sein (es ist ein sehr langsamer Sensor) float h12 = dht12.readHumidity (); // Wärmeindex in Fahrenheit berechnen (Standard) float hif12 = dht12.computeHeatIndex(f12, h12); // Wärmeindex in Celsius berechnen (isFahreheit = false) float hic12 = dht12.computeHeatIndex(t12, h12, false); // Taupunkt in Fahrenheit berechnen (Standard) float dpf12 = dht12.dewPoint(f12, h12); // Taupunkt in Celsius berechnen (isFahreheit = false) float dpc12 = dht12.dewPoint(t12, h12, false);
Schritt 9: Anschlussdiagramm
Mit Beispielen gibt es den Anschlussplan, es ist wichtig, den richtigen Pullup-Widerstand zu verwenden.
Danke an Bobadas, dplasa und adafruit, um den Code in github zu teilen (wo ich Code und Ideen nehme).
Schritt 10: Arduino: OneWire
Schritt 11: Arduino: I2c
Schritt 12: Esp8266 (D1Mini) OneWire
Schritt 13: Esp8266 (D1Mini) I2c
Schritt 14: Danke
Arduino-Spielplatz (https://playground.arduino.cc/Main/DHT12SensorLibrary)
i2c-Projektreihe (Sammlung):
- Temperatur-Feuchtesensor
- Analoger Expander
- Digitaler Expander
- LCD Bildschirm
Empfohlen:
Schnelle und einfache Möglichkeit, Ihren Sperrbildschirm in 6 einfachen Schritten zu ändern (Windows 8-10): 7 Schritte
Schnelle und einfache Möglichkeit, Ihren Sperrbildschirm in 6 einfachen Schritten zu ändern (Windows 8-10): Möchten Sie die Dinge auf Ihrem Laptop oder PC ändern? Möchten Sie eine Veränderung in Ihrer Atmosphäre? Befolgen Sie diese schnellen und einfachen Schritte, um den Sperrbildschirm Ihres Computers erfolgreich zu personalisieren
Günstiger und einfacher Batteriehalter Version 1: 7 Schritte
Günstiger und einfacher Batteriehalter Version 1: Batteriehalter halten natürlich Batterien und sind SEHR nützlich in elektronischen Projekten, insbesondere bei solchen, die Batterien benötigen. Dies ist der einfachste Batteriehalter, den ich mir vorstellen kann. Das Beste ist, dass es billig ist und Haushaltsgegenstände verwendet werden, die
Günstiger und einfacher Batteriehalter Version 2: 6 Schritte
Günstiger und einfacher Batteriehalter Version 2: Dies ist die zweite Version meines Batteriehalters. Dieser Halter ist für diejenigen, die eine schöne enge Passform mögen. Tatsächlich ist es so eng, dass Sie etwas brauchen, um die leere Batterie herauszuhebeln. Das heißt, wenn Sie es zu klein messen und nicht genug Platz für den Schläger lassen
Schnelle und einfache Softswitches (für schnelles Prototyping): 5 Schritte
Schnelle und einfache Softswitches (für Quick Prototyping): Es gibt viele verschiedene Möglichkeiten, um Softswitches zu erstellen. Dieses anweisbare zeigt eine weitere Option eines sehr schnellen Prototyps für den weichen Schalter, bei dem ein Aluminiumband anstelle von leitfähigem Gewebe und massive Drähte anstelle eines leitfähigen Fadens verwendet werden, die bot
Inventar - Schnelle PC-Diagnose jetzt abgelöst, siehe unten: 6 Schritte
Inventar - Schnelle PC-Diagnose jetzt abgelöst, siehe unten: Wenn Sie jemals an einem PC arbeiten müssen, der sich nicht vor Ihnen befindet, benötigen Sie eine genaue Inventarisierung. Dieses instructable kam rein, weil ein Kollege Schwierigkeiten hat, einen Treiber für einen PC zu finden. Ich werde Aida32 Personal von http://majorgeeks.com verwenden