Inhoudsopgave:
- Stap 1: Hoe I2c werkt
- Stap 2: Bibliotheek
- Stap 3: Gedrag
- Stap 4: I2c-gebruik
- Stap 5: Gebruik van één draad
- Stap 6: Impliciet lezen
- Stap 7: Eenvoudig lezen
- Stap 8: Volledig lezen
- Stap 9: Aansluitschema
- Stap 10: Arduino: OneWire
- Stap 11: Arduino: I2c
- Stap 12: Esp8266 (D1Mini) OneWire
- Stap 13: Esp8266 (D1Mini) I2c
- Stap 14: Bedankt
Video: DHT12 (i2c goedkope vochtigheids- en temperatuursensor), snel en eenvoudig gebruik - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Je kunt updates en andere vinden op mijn site
Ik hou van een sensor die kan worden gebruikt met 2-draads (i2c-protocol), maar ik ben dol op de goedkope.
Dit is een Arduino- en esp8266-bibliotheek voor de DHT12-serie van zeer goedkope temperatuur- / vochtigheidssensoren (minder dan $ 1 $) die werken met i2c of een draadverbinding.
Zeer handig als u esp01 wilt gebruiken (als u serieel gebruikt, heeft u slechts 2 pins) om vochtigheid en temperatuur te lezen en weer te geven op i2c LCD.
AI las dat het soms lijkt dat kalibratie nodig is, maar ik heb hiervan een boom en krijg een waarde die erg lijkt op DHT22. Als je dit probleem hebt gekalibreerd, open dan het probleem op github en ik voeg implementatie toe.
Stap 1: Hoe I2c werkt
I2C werkt met zijn twee draden, de SDA (datalijn) en SCL (kloklijn).
Beide lijnen zijn open-drain, maar worden opgetrokken met weerstanden.
Meestal is er één master en één of meerdere slaves aan de lijn, hoewel er meerdere masters kunnen zijn, maar daar komen we later op terug.
Zowel masters als slaves kunnen gegevens verzenden of ontvangen, daarom kan een apparaat zich in een van deze vier toestanden bevinden: master verzenden, master ontvangen, slave verzenden, slave ontvangen.
Stap 2: Bibliotheek
Mijn bibliotheek vind je hier.
Downloaden
Klik op de DOWNLOADS-knop in de rechterbovenhoek, hernoem de niet-gecomprimeerde map DHT12.
Controleer of de DHT-map DHT12.cpp en DHT12.h bevat.
Plaats de DHT-bibliotheekmap in uw /libraries/-map.
Mogelijk moet u de submap bibliotheken maken als dit uw eerste bibliotheek is.
Start de IDE opnieuw.
Stap 3: Gedrag
Deze bibliotheek probeert het gedrag van standaard DHT-bibliotheeksensoren na te bootsen (en kopieer veel code), en ik voeg de code toe om i2c olso op dezelfde manier te beheren.
De methode is hetzelfde als de DHT-bibliotheeksensor, met enkele toevoegingen zoals een dauwpuntfunctie.
Stap 4: I2c-gebruik
Voor gebruik met i2c (standaardadres en standaard SDA SCL-pin) is de constructor:
DHT12 dht12;
en neem de standaardwaarde voor de SDA SCL-pin.
(Het is mogelijk om opnieuw te definiëren met gespecificeerde contructor voor esp8266, nodig voor ESP-01). of
DHT12 dht12(uint8_t adresOrPin)
adresOrPin -> adres
adres wijzigen.
Stap 5: Gebruik van één draad
Om één draad te gebruiken:
DHT12 dht12(uint8_t adresOrPin, waar)
adresOrPin -> pin
booleaanse waarde is de selectie van oneWire- of i2c-modus.
Stap 6: Impliciet lezen
U kunt het gebruiken met "impliciet", "eenvoudig lezen" of "volledig lezen": impliciet, alleen de eerste uitlezing doet een echte uitlezing van de sensor, de andere uitlezing wordt in 2sec. interval zijn de opgeslagen waarde van de eerste lezing.
// Het lezen van de sensor heeft 2 seconden verstreken tijd, tenzij u de force-parameter doorgeeft
// Lees temperatuur als Celsius (de standaard) float t12 = dht12.readTemperature (); // Lees temperatuur als Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensormetingen kunnen ook tot 2 seconden 'oud' zijn (het is een zeer trage sensor) float h12 = dht12.readHumidity(); // Bereken warmte-index in Fahrenheit (de standaard) float hif12 = dht12.computeHeatIndex (f12, h12); // Bereken warmte-index in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Bereken het dauwpunt in Fahrenheit (de standaard) float dpf12 = dht12.dewPoint (f12, h12); // Bereken het dauwpunt in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Stap 7: Eenvoudig lezen
Eenvoudig lezen om een leesstatus te krijgen.
// Het lezen van de sensor heeft 2 seconden verstreken tijd, tenzij u de force-parameter doorgeeft
bool chk = dht12.read(); // true read is ok, false read probleem
// Lees temperatuur als Celsius (de standaard)
float t12 = dht12.readTemperature(); // Lees temperatuur als Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensormetingen kunnen ook tot 2 seconden 'oud' zijn (het is een zeer trage sensor) float h12 = dht12.readHumidity(); // Bereken warmte-index in Fahrenheit (de standaard) float hif12 = dht12.computeHeatIndex (f12, h12); // Bereken warmte-index in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Bereken het dauwpunt in Fahrenheit (de standaard) float dpf12 = dht12.dewPoint (f12, h12); // Bereken het dauwpunt in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Stap 8: Volledig lezen
Volledig gelezen om een gespecificeerde status te krijgen.
// Het lezen van de sensor heeft 2 seconden verstreken tijd, tenzij u de force-parameter doorgeeft
DHT12::ReadStatus chk = dht12.readStatus(); Serial.print(F("\nLees sensor: ")); switch (chk) { case DHT12::OK: Serial.println(F("OK")); pauze; geval DHT12::ERROR_CHECKSUM: Serial.println (F ("Checksum-fout")); pauze; case DHT12::ERROR_TIMEOUT: Serial.println (F ("Time-outfout")); pauze; case DHT12::ERROR_TIMEOUT_LOW: Serial.println(F("Time-outfout bij laag signaal, probeer hoge pullup-weerstand te plaatsen")); pauze; case DHT12::ERROR_TIMEOUT_HIGH: Serial.println(F("Time-outfout bij laag signaal, probeer een lage pullup-weerstand te plaatsen")); pauze; case DHT12::ERROR_CONNECT: Serial.println (F ("Verbindingsfout")); pauze; geval DHT12::ERROR_ACK_L: Serial.println (F ("AckL-fout")); pauze; geval DHT12::ERROR_ACK_H: Serial.println (F ("AckH-fout")); pauze; case DHT12::ERROR_UNKNOWN: Serial.println(F("Onbekende fout DETECTED")); pauze; case DHT12::NONE: Serial.println(F("Geen resultaat")); pauze; standaard: Serial.println(F("Onbekende fout")); pauze; }
// Lees temperatuur als Celsius (de standaard)
float t12 = dht12.readTemperature(); // Lees temperatuur als Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Sensormetingen kunnen ook tot 2 seconden 'oud' zijn (het is een zeer trage sensor) float h12 = dht12.readHumidity(); // Bereken warmte-index in Fahrenheit (de standaard) float hif12 = dht12.computeHeatIndex (f12, h12); // Bereken warmte-index in Celsius (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Bereken het dauwpunt in Fahrenheit (de standaard) float dpf12 = dht12.dewPoint (f12, h12); // Bereken het dauwpunt in Celsius (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Stap 9: Aansluitschema
Met voorbeelden zijn er het aansluitschema, het is belangrijk om de juiste pullup-weerstand te gebruiken.
Met dank aan Bobadas, dplasa en adafruit, om de code te delen in github (waar ik wat code en ideeën neem).
Stap 10: Arduino: OneWire
Stap 11: Arduino: I2c
Stap 12: Esp8266 (D1Mini) OneWire
Stap 13: Esp8266 (D1Mini) I2c
Stap 14: Bedankt
Arduino-speeltuin (https://playground.arduino.cc/Main/DHT12SensorLibrary)
i2c projectserie (Collectie):
- Temperatuur vochtigheidssensor
- Analoge uitbreiding
- Digitale uitbreiding
- LCD scherm
Aanbevolen:
Ongebruikelijke aangepaste doos/behuizing (snel, eenvoudig, modulair, goedkoop): 7 stappen
Ongebruikelijke aangepaste doos/behuizing (snel, eenvoudig, modulair, goedkoop): het doel van deze Instructables is om u te laten zien hoe u een goedkope, aangepaste, modulaire doos/behuizing kunt maken. tools en budget. Dit is mijn eerste Instructables (ook Engels is niet mijn eerste taal), dus wees alsjeblieft
Goedkope, eenvoudig te maken laptopstandaard: 4 stappen
Goedkope, eenvoudig te maken laptopstandaard: dit is een laptopstandaard voor mijn Acer Aspire 5032-laptop. je kunt het voor elke laptop maken met rubberen pads aan de onderkant (reden later) door de breedte van de houten balken aan te passen aan de breedte van je laptop. dit is mijn eerste instructable dus geef je co
Snel en eenvoudig de stekker van de laptop repareren: 5 stappen
Quick and Easy Laptop Power Plug Fix: Achtergrond: Ik heb 2 HP laptops thuis en helaas zijn de beide stekkers die naar de stroomaansluiting van de notebooks gaan al een tijdje los. Mijn zus die het beu is om te proberen de stekker zo te draaien dat de AC-adapter een
Bouw een projectbox - snel, goedkoop & Eenvoudig.: 5 stappen
Bouw een projectbox - snel, goedkoop & Makkelijk.: We hadden een beschermende projectdoos nodig in onze winkel met een raam aan de voorkant, zodat we de status van onze componenten in de gaten konden houden. De projectdozen die we online vonden, werkten niet. -Degenen die goed geprijsd waren, waren veel te klein om in onze componenten te passen
Video's van internet naar uw iPod krijgen, snel, eenvoudig en GRATIS!: 5 stappen
Video's van internet naar uw iPod krijgen, snel, eenvoudig en GRATIS!: Soms zie je een video op YouTube en wil je die op je iPod. Dat deed ik, en ik kon er niet achter komen, maar toen deed ik het, dus besloot ik het met internet te delen. Deze handleiding is alleen van toepassing op YouTube als je dezelfde downloadsoftware gebruikt