Obsah:
- Krok 1: Jak I2c funguje
- Krok 2: Knihovna
- Krok 3: Správce
- Krok 4: Použití I2c
- Krok 5: Použití jednoho drátu
- Krok 6: Implicitní čtení
- Krok 7: Jednoduché čtení
- Krok 8: Úplné čtení
- Krok 9: Schéma připojení
- Krok 10: Arduino: OneWire
- Krok 11: Arduino: I2c
- Krok 12: Esp8266 (D1Mini) OneWire
- Krok 13: Esp8266 (D1Mini) I2c
- Krok 14: Díky
Video: DHT12 (levný snímač vlhkosti a teploty i2c), rychlé snadné použití: 14 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Aktualizace a další najdete na mém webu
Mám rád senzor, který lze použít se 2 vodiči (protokol i2c), ale miluji ten levný.
Toto je knihovna Arduino a esp8266 pro řadu velmi levných snímačů teploty/vlhkosti DHT12 (méně než 1 $), které pracují s i2c nebo jedním drátovým připojením.
Velmi užitečné, pokud chcete použít esp01 (pokud používáte sériové, máte pouze 2 piny) pro čtení vlhkosti a teploty a jejich zobrazení na i2c LCD.
AI četl, že to někdy vypadá, že to potřebuje kalibraci, ale mám strom toho a získávám hodnotu velmi podobnou DHT22. Pokud máte tento problém kalibraci, otevřete problém na github a přidám implementaci.
Krok 1: Jak I2c funguje
I2C pracuje se dvěma vodiči, SDA (datový řádek) a SCL (hodinový řádek).
Obě tyto linky jsou otevřené, ale jsou vytaženy rezistory.
Obvykle je na lince jeden pán a jeden nebo více otroků, i když může být více mistrů, ale o tom si povíme později.
Master i slave mohou přenášet nebo přijímat data, proto může být zařízení v jednom z těchto čtyř stavů: hlavní vysílání, hlavní příjem, podřízený přenos, podřízený příjem.
Krok 2: Knihovna
Moji knihovnu najdete zde.
Ke stažení
Klikněte na tlačítko DOWNLOADS v pravém horním rohu, přejmenujte nekomprimovanou složku DHT12.
Zkontrolujte, zda složka DHT obsahuje DHT12.cpp a DHT12.h.
Umístěte složku knihovny DHT do složky / libraries /.
Pokud je to vaše první knihovna, budete možná muset vytvořit podsložku knihoven.
Restartujte IDE.
Krok 3: Správce
Tento libray se snaží napodobit chovatele standardních snímačů knihovny DHT (a kopírovat hodně kódu) a přidávám kód pro správu i2c olso stejným způsobem.
Tato metoda je stejná jako u snímače knihovny DHT, s některými přidáním funkce rosného bodu.
Krok 4: Použití I2c
Pro použití s i2c (výchozí adresa a výchozí SDA SCL pin) je konstruktor:
DHT12 dht12;
a vezměte výchozí hodnotu pro pin SDA SCL.
(Je možné předefinovat pomocí specifikovaného konstruktoru pro esp8266, potřebného pro ESP-01). nebo
DHT12 dht12 (uint8_t addressOrPin)
addressOrPin -> adresa
změnit adresu.
Krok 5: Použití jednoho drátu
Použití jednoho drátu:
DHT12 dht12 (uint8_t addressOrPin, true)
addressOrPin -> pin
logická hodnota je výběr režimu oneWire nebo i2c.
Krok 6: Implicitní čtení
Můžete jej použít s „implicitním“, „jednoduchým čtením“nebo „plným čtením“: Implicitní, pouze první čtení provádí skutečné čtení senzoru, druhé čtení se stane za 2 sekundy. interval jsou uložená hodnota prvního čtení.
// Čtení senzoru má 2 sekundy uplynulého času, pokud neprojdete parametrem síly
// Čtení teploty jako Celsia (výchozí) float t12 = dht12.readTemperature (); // Čtení teploty jako Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Odečty senzorů mohou být také až 2 sekundy staré (je to velmi pomalý senzor) float h12 = dht12.readHumidity (); // Výpočet tepelného indexu ve stupních Fahrenheita (výchozí) float hif12 = dht12.computeHeatIndex (f12, h12); // Výpočet tepelného indexu ve stupních Celsia (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Výpočet rosného bodu ve Fahrenheitech (výchozí) float dpf12 = dht12.dewPoint (f12, h12); // Výpočet rosného bodu ve stupních Celsia (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Krok 7: Jednoduché čtení
Jednoduché čtení pro získání stavu přečtení.
// Čtení senzoru má 2 sekundy uplynulého času, pokud nepředáte parametr síly
bool chk = dht12.read (); // true read is ok, false read problem
// Čtení teploty jako stupňů Celsia (výchozí)
float t12 = dht12.readTemperature (); // Čtení teploty jako Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Odečty senzorů mohou být také až 2 sekundy staré (je to velmi pomalý senzor) float h12 = dht12.readHumidity (); // Výpočet tepelného indexu ve stupních Fahrenheita (výchozí) float hif12 = dht12.computeHeatIndex (f12, h12); // Výpočet tepelného indexu ve stupních Celsia (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Výpočet rosného bodu ve Fahrenheitech (výchozí) float dpf12 = dht12.dewPoint (f12, h12); // Výpočet rosného bodu ve stupních Celsia (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Krok 8: Úplné čtení
Úplné čtení pro získání zadaného stavu.
// Čtení senzoru má 2 sekundy uplynulého času, pokud neprojdete parametrem síly
DHT12:: ReadStatus chk = dht12.readStatus (); Serial.print (F ("\ nČíst snímač:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); přestávka; případ DHT12:: ERROR_CHECKSUM: Serial.println (F ("Chyba kontrolního součtu")); přestávka; případ DHT12:: ERROR_TIMEOUT: Serial.println (F ("Chyba časového limitu")); přestávka; případ DHT12:: ERROR_TIMEOUT_LOW: Serial.println (F ("Chyba časového limitu při nízkém signálu, zkuste dát vysoký odpor vytažení")); přestávka; případ DHT12:: ERROR_TIMEOUT_HIGH: Serial.println (F ("Chyba časového limitu při nízkém signálu, zkuste dát nízký odpor vytažení")); přestávka; případ DHT12:: ERROR_CONNECT: Serial.println (F ("Chyba připojení")); přestávka; případ DHT12:: ERROR_ACK_L: Serial.println (F ("chyba AckL")); přestávka; případ DHT12:: ERROR_ACK_H: Serial.println (F ("chyba AckH")); přestávka; případ DHT12:: ERROR_UNKNOWN: Serial.println (F ("Unknown error DETECTED")); přestávka; případ DHT12:: NONE: Serial.println (F ("Žádný výsledek")); přestávka; výchozí: Serial.println (F ("Neznámá chyba")); přestávka; }
// Čtení teploty jako stupňů Celsia (výchozí)
float t12 = dht12.readTemperature (); // Čtení teploty jako Fahrenheit (isFahrenheit = true) float f12 = dht12.readTemperature (true); // Odečty senzorů mohou být také až 2 sekundy staré (je to velmi pomalý senzor) float h12 = dht12.readHumidity (); // Vypočítejte tepelný index ve Fahrenheitech (výchozí) float hif12 = dht12.computeHeatIndex (f12, h12); // Výpočet tepelného indexu ve stupních Celsia (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Výpočet rosného bodu ve Fahrenheitech (výchozí) float dpf12 = dht12.dewPoint (f12, h12); // Výpočet rosného bodu ve stupních Celsia (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
Krok 9: Schéma připojení
U příkladů je schéma připojení a je důležité použít správný vytahovací odpor.
Díky Bobadas, dplasa a adafruit, za sdílení kódu v githubu (kde beru nějaký 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: Díky
Dětské hřiště Arduino (https://playground.arduino.cc/Main/DHT12SensorLibrary)
Série projektů i2c (kolekce):
- Teplotní vlhkostní senzor
- Analogový expandér
- Digitální expandér
- LCD displej
Doporučuje:
Jak používat snímač vlhkosti a teploty DHT12 I2C s Arduino: 7 kroků
Jak používat snímač vlhkosti a teploty DHT12 I2C s Arduino: V tomto tutoriálu se naučíme, jak používat snímač vlhkosti a teploty DHT12 I2C s Arduino a zobrazovat hodnoty na OLED displeji. Podívejte se na video
Raspberry Pi - snímač vlhkosti a teploty HIH6130 I2C Python Výukový program: 4 kroky
Raspberry Pi - snímač vlhkosti a teploty HIH6130 I2C Python Výukový program: HIH6130 je snímač vlhkosti a teploty s digitálním výstupem. Tyto senzory poskytují úroveň přesnosti ± 4% RH. Díky špičkové dlouhodobé stabilitě, skutečné teplotně kompenzované digitální I2C, špičkové spolehlivosti, energetické účinnosti
Bezdrátový monitor vlhkosti (ESP8266 + snímač vlhkosti): 5 kroků
Bezdrátový monitor vlhkosti (ESP8266 + senzor vlhkosti): Koupil jsem petržel v květináči a většinu dne byla půda suchá. Rozhodl jsem se proto, že tento projekt o snímání vlhkosti půdy v květináči s petrželkou zkontroluji, když potřebuji zalít zeminu vodou. Myslím, že tento senzor (kapacitní senzor vlhkosti v1.2) je dobrý
PCF8591 (i2c Analog I/O Expander) Rychlé snadné použití: 9 kroků
PCF8591 (i2c Analog I/O Expander) Rychlé snadné použití: Knihovna pro použití i2c pcf8591 IC s arduino a esp8266. Tento IC může ovládat (až 4) analogový vstup a/nebo 1 analogový výstup, jako je měření napětí, čtení hodnoty termistoru nebo vyblednutí LED. Umí číst analogovou hodnotu a zapisovat analogovou hodnotu pouze pomocí 2 vodičů (perfektní
DIY MusiLED, hudební synchronizované LED diody s aplikací Windows a Linux na jedno kliknutí (32bitová a 64bitová). Snadné obnovení, snadné použití, snadné přenesení: 3 kroky
DIY MusiLED, synchronizované LED diody hudby s aplikací Windows a Linux jediným kliknutím (32bitová a 64bitová). Snadno se obnovuje, snadno se používá a snadno se přenáší: Tento projekt vám pomůže připojit 18 LED diod (6 červených + 6 modrých + 6 žlutých) k desce Arduino a analyzovat signály zvukové karty vašeho počítače v reálném čase a přenášet je do LED diody je rozsvítí podle efektů rytmu (Snare, High Hat, Kick)