Obsah:
- Krok 1: Ako funguje I2c
- Krok 2: Knižnica
- Krok 3: Správca
- Krok 4: Použitie I2c
- Krok 5: Použitie jedného drôtu
- Krok 6: Implicitné čítanie
- Krok 7: Jednoduché čítanie
- Krok 8: Úplné prečítanie
- Krok 9: Schéma pripojenia
- Krok 10: Arduino: OneWire
- Krok 11: Arduino: I2c
- Krok 12: Esp8266 (D1Mini) OneWire
- Krok 13: Esp8266 (D1Mini) I2c
- Krok 14: Ďakujem
Video: DHT12 (lacný snímač vlhkosti a teploty i2c), rýchle jednoduché použitie: 14 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Aktualizáciu a ďalšie nájdete na mojom webe
Mám rád senzor, ktorý je možné použiť s 2 vodičmi (protokol i2c), ale milujem ten lacný.
Toto je knižnica Arduino a esp8266 pre sériu DHT12 veľmi lacných senzorov teploty/vlhkosti (menej ako 1 $), ktoré fungujú s i2c alebo jedným káblovým pripojením.
Veľmi užitočné, ak chcete použiť esp01 (ak používate sériové číslo, máte iba 2 kolíky) na čítanie vlhkosti a teploty a ich zobrazenie na displeji LCD i2c.
AI čítal, že sa niekedy zdá, že je potrebná kalibrácia, ale mám na to strom a získam hodnotu veľmi podobnú DHT22. Ak máte tento problém kalibračný, otvorte problém na github a pridám implementáciu.
Krok 1: Ako funguje I2c
I2C pracuje s dvoma vodičmi, SDA (dátový riadok) a SCL (hodinový riadok).
Obe tieto vedenia sú otvorené, ale sú vyťahované odpormi.
Na linke je spravidla jeden pán a jeden alebo viacerí otroci, aj keď môže byť viac majstrov, ale o tom neskôr.
Master aj slave môžu prenášať alebo prijímať údaje, preto môže byť zariadenie v jednom z týchto štyroch stavov: hlavný prenos, hlavný príjem, podradený prenos, podriadený príjem.
Krok 2: Knižnica
Moju knižnicu nájdete tu.
Stiahnuť
Kliknite na tlačidlo STIAHNUTIE v pravom hornom rohu, premenujte nekomprimovaný priečinok DHT12.
Skontrolujte, či priečinok DHT obsahuje DHT12.cpp a DHT12.h.
Umiestnite priečinok knižnice DHT do priečinka / libraries /.
Ak je to vaša prvá knižnica, možno budete musieť vytvoriť podpriečinok knižníc.
Reštartujte IDE.
Krok 3: Správca
Tento libray sa snaží napodobniť správcu štandardných senzorov knižnice DHT (a kopírovať veľa kódu) a ja pridávam kód na správu i2c olso rovnakým spôsobom.
Metóda je rovnaká ako v prípade senzora knižnice DHT, s niektorými funkciami podobnými rosnému bodu.
Krok 4: Použitie I2c
Na použitie s i2c (predvolená adresa a predvolený pin SCA SDA SCL) je konštruktor:
DHT12 dht12;
a vezmite predvolenú hodnotu pre pin SCA SDA.
(Je možné predefinovať pomocou špecifikovaného kontruktora pre esp8266, potrebné pre ESP-01). alebo
DHT12 dht12 (uint8_t addressOrPin)
addressOrPin -> adresa
zmeniť adresu.
Krok 5: Použitie jedného drôtu
Použitie jedného drôtu:
DHT12 dht12 (uint8_t addressOrPin, true)
addressOrPin -> pin
booleovská hodnota je výber režimu oneWire alebo i2c.
Krok 6: Implicitné čítanie
Môžete ho použiť s „implicitným“, „jednoduchým čítaním“alebo „úplným prečítaním“: Implicitné, iba prvé čítanie vykoná skutočné čítanie zo senzora, druhé čítanie za 2 sekundy. Interval je uložená hodnota prvého čítania.
// Čítanie senzora má za sebou 2 sekundy, pokiaľ neprejdete parametrom sily
// Čítanie teploty ako Celzia (predvolené) float t12 = dht12.readTemperature (); // Prečítajte teplotu ako Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Hodnoty senzora môžu byť tiež „staré“až 2 sekundy (je to veľmi pomalý senzor) float h12 = dht12.readHumidity (); // Vypočítajte tepelný index vo Fahrenheite (predvolené) float hif12 = dht12.computeHeatIndex (f12, h12); // Vypočítajte tepelný index v stupňoch Celzia (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Vypočítajte rosný bod vo Fahrenheite (predvolené) float dpf12 = dht12.dewPoint (f12, h12); // Vypočítajte rosný bod v stupňoch Celzia (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Krok 7: Jednoduché čítanie
Jednoduché čítanie na získanie stavu prečítania.
// Čítanie senzora má za sebou 2 sekundy, pokiaľ neprejdete parametrom sily
bool chk = dht12.read (); // pravdivé čítanie je v poriadku, falošný problém s čítaním
// Čítanie teploty ako Celzia (predvolené)
float t12 = dht12.readTemperature (); // Prečítajte teplotu ako Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Hodnoty senzora môžu byť tiež „staré“až 2 sekundy (je to veľmi pomalý senzor) float h12 = dht12.readHumidity (); // Vypočítajte tepelný index vo Fahrenheite (predvolené) float hif12 = dht12.computeHeatIndex (f12, h12); // Vypočítajte tepelný index v stupňoch Celzia (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Vypočítajte rosný bod vo Fahrenheite (predvolené) float dpf12 = dht12.dewPoint (f12, h12); // Vypočítajte rosný bod v stupňoch Celzia (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Krok 8: Úplné prečítanie
Úplným prečítaním získate určený stav.
// Čítanie senzora má za sebou 2 sekundy, pokiaľ neprejdete parametrom sily
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nČítať senzor:")); prepínač (chk) {prípad DHT12:: OK: Serial.println (F ("OK")); prestávka; prípad DHT12:: ERROR_CHECKSUM: Serial.println (F ("Chyba kontrolného súčtu")); prestávka; prípad DHT12:: ERROR_TIMEOUT: Serial.println (F ("Chyba časového limitu")); prestávka; prípad DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Chyba časového limitu pri nízkom signáli, skúste dať vysoký odpor vytiahnutia")); prestávka; prípad DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Chyba časového limitu pri nízkom signáli, skúste položiť nízky odpor vytiahnutia")); prestávka; prípad DHT12:: ERROR_CONNECT: Serial.println (F ("Chyba pripojenia")); prestávka; prípad DHT12:: ERROR_ACK_L: Serial.println (F ("chyba AckL")); prestávka; prípad DHT12:: ERROR_ACK_H: Serial.println (F ("chyba AckH")); prestávka; prípad DHT12:: ERROR_UNKNOWN: Serial.println (F ("Unknown error DETECTED")); prestávka; prípad DHT12:: NONE: Serial.println (F ("Žiadny výsledok")); prestávka; predvolené: Serial.println (F ("Neznáma chyba")); prestávka; }
// Čítanie teploty ako Celzia (predvolené)
float t12 = dht12.readTemperature (); // Prečítajte teplotu ako Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Hodnoty senzora môžu byť tiež „staré“až 2 sekundy (je to veľmi pomalý senzor) float h12 = dht12.readHumidity (); // Vypočítajte tepelný index vo Fahrenheite (predvolené) float hif12 = dht12.computeHeatIndex (f12, h12); // Vypočítajte tepelný index v stupňoch Celzia (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Vypočítajte rosný bod vo Fahrenheite (predvolené) float dpf12 = dht12.dewPoint (f12, h12); // Vypočítajte rosný bod v stupňoch Celzia (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Krok 9: Schéma pripojenia
V príkladoch je schéma zapojenia a je dôležité použiť správny vyťahovací odpor.
Vďaka Bobadasovi, dplasa a adafruitovi, za zdieľanie kódu v github (kde beriem nejaký kód a nápady).
Krok 10: Arduino: OneWire
Krok 11: Arduino: I2c
Krok 12: Esp8266 (D1Mini) OneWire
Krok 13: Esp8266 (D1Mini) I2c
Krok 14: Ďakujem
Ihrisko Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
Séria projektov i2c (zbierka):
- Teplotný snímač vlhkosti
- Analógový expandér
- Digitálny expandér
- Displej LCD
Odporúča:
Ako používať snímač vlhkosti a teploty DHT12 I2C s Arduino: 7 krokov
Ako používať snímač vlhkosti a teploty DHT12 I2C s Arduino: V tomto návode sa naučíme, ako používať snímač vlhkosti a teploty DHT12 I2C s Arduino a zobrazovať hodnoty na OLED displeji. Pozrite si video
Raspberry Pi - snímač vlhkosti a teploty HIH6130 I2C Python Výukový program: 4 kroky
Senzor vlhkosti a teploty Raspberry Pi - HIH6130 I2C Python Návod: HIH6130 je snímač vlhkosti a teploty s digitálnym výstupom. Tieto senzory poskytujú úroveň presnosti ± 4% relatívnej vlhkosti. Vďaka špičkovej dlhodobej stabilite, skutočnému digitálnemu I2C s teplotnou kompenzáciou, špičkovej spoľahlivosti, energetickej účinnosti
Bezdrôtový monitor vlhkosti (ESP8266 + snímač vlhkosti): 5 krokov
Bezdrôtový monitor vlhkosti (ESP8266 + snímač vlhkosti): Kúpil som petržlen v kvetináči a väčšinu dňa bola pôda suchá. Preto som sa rozhodol urobiť tento projekt o snímaní vlhkosti pôdy v kvetináči s petržlenovou vňaťou, aby som v prípade potreby zalial pôdu vodou a skontroloval, kedy je potrebné ju naliať. Myslím si, že tento senzor (kapacitný snímač vlhkosti v1.2) je dobrý
PCF8591 (analógový expandér I/O i2c) Rýchle jednoduché použitie: 9 krokov
PCF8591 (analógový expandér I/O i2c) Rýchle jednoduché použitie: Knižnica na použitie i2c pcf8591 IC s arduino a esp8266. Tento IC môže ovládať (až 4) analógový vstup a/alebo 1 analógový výstup, ako je meranie napätia, čítanie hodnoty termistora alebo vyblednutie LED. Dokáže čítať analógovú hodnotu a zapisovať analógovú hodnotu iba pomocou 2 vodičov (perfektne
Rýchle a jednoduché mäkké prepínače (pre rýchle prototypovanie): 5 krokov
Rýchle a jednoduché mäkké prepínače (pre rýchle vytváranie prototypov): Existuje mnoho rôznych spôsobov, ako vytvoriť mäkké prepínače. Tento návod ukazuje ďalšiu možnosť veľmi rýchleho prototypu mäkkého spínača, ktorý používa namiesto vodivej textílie hliníkovú pásku a namiesto vodivého vlákna pevné drôty, ktoré