
Tartalomjegyzék:
- 1. lépés: Az I2c működése
- 2. lépés: Könyvtár
- 3. lépés: Viselkedés
- 4. lépés: I2c használat
- 5. lépés: Egy vezeték használata
- 6. lépés: Implicit olvasás
- 7. lépés: Egyszerű olvasás
- 8. lépés: Teljes olvasmány
- 9. lépés: Csatlakozási rajz
- 10. lépés: Arduino: OneWire
- 11. lépés: Arduino: I2c
- 12. lépés: Esp8266 (D1Mini) OneWire
- 13. lépés: Esp8266 (D1Mini) I2c
- 14. lépés: Köszönöm
2025 Szerző: John Day | [email protected]. Utoljára módosítva: 2025-01-23 14:47

A frissítéseket és egyebeket megtalál a webhelyemen:
Szeretem a 2 vezetékes (i2c protokoll) használható érzékelőt, de szeretem az olcsót.
Ez egy Arduino és esp8266 könyvtár a DHT12 sorozat nagyon alacsony költségű (kevesebb, mint 1 $) hőmérséklet/páratartalom érzékelőihez, amelyek i2c -vel vagy egy vezetékes csatlakozással működnek.
Nagyon hasznos, ha az esp01 -et szeretné használni (ha soros módot használ, akkor csak 2 tűs) a páratartalom és a hőmérséklet leolvasásához, és megjelenítéséhez az i2c LCD -n.
Az AI azt olvasta, hogy néha úgy tűnik, hogy kalibrálni kell, de van ilyen fa, és nagyon hasonló értéket kapok, mint a DHT22. Ha kalibrálja ezt a problémát, nyissa meg a problémát a githubon, és hozzáadom a megvalósítást.
1. lépés: Az I2c működése

Az I2C két vezetékkel működik, az SDA (adatvonal) és az SCL (óravonal).
Mindkét vezeték nyitott lefolyású, de ellenállással felhúzva.
Általában egy mester és egy vagy több szolga van a vonalon, bár több mester is lehet, de erről később beszélünk.
Mind a mesterek, mind a slave -k képesek adatokat továbbítani vagy fogadni, ezért egy eszköz a következő négy állapot egyikében lehet: master adás, master fogadás, slave adás, slave fogadás.
2. lépés: Könyvtár
A könyvtáramat itt találod.
Letölteni
Kattintson a LETÖLTÉS gombra a jobb felső sarokban, nevezze át a tömörítetlen mappát DHT12 -re.
Ellenőrizze, hogy a DHT mappa tartalmazza -e a DHT12.cpp és a DHT12.h fájlokat.
Helyezze a DHT könyvtár mappáját a / libraries / mappába.
Előfordulhat, hogy létre kell hoznia a könyvtárak almappáját, ha ez az első könyvtára.
Indítsa újra az IDE -t.
3. lépés: Viselkedés
Ez a libray megpróbálja utánozni a szokásos DHT könyvtári érzékelők viselkedését (és sok kódot másol), és hozzáadom a kódot az i2c olso azonos módon történő kezeléséhez.
A módszer ugyanaz, mint a DHT könyvtári érzékelőnél, néhány olyan, mint a harmatpont funkció.
4. lépés: I2c használat
Az i2c -vel (alapértelmezett cím és alapértelmezett SDA SCL pin) való használathoz a konstruktor:
DHT12 dht12;
és vegye fel az SDA SCL pin alapértelmezett értékét.
(Lehetőség van az ESP-01-hez szükséges esp8266 specifikus konstruktorral történő újradefiniálásra). vagy
DHT12 dht12 (uint8_t addressOrPin)
addressOrPin -> cím
címet változtatni.
5. lépés: Egy vezeték használata
Egy vezeték használata:
DHT12 dht12 (uint8_t addressOrPin, true)
addressOrPin -> pin
A logikai érték a oneWire vagy az i2c mód kiválasztása.
6. lépés: Implicit olvasás
Használhatja "implicit", "simple read" vagy "fullread" módokkal: Implicit, csak az első olvasás valós leolvasást végez az érzékelőn, a másik olvasás 2 másodpercen belül. intervallum az első olvasás tárolt értéke.
// Az érzékelő leolvasása 2 másodperc eltelt idővel rendelkezik, hacsak nem adja át az erőparamétert
// A hőmérséklet olvasása Celsius -ban (alapértelmezett) float t12 = dht12.readTemperature (); // A hőmérséklet olvasása Fahrenheit (isFahrenheit = igaz) float f12 = dht12.readTemperature (true); // Az érzékelő leolvasása akár 2 másodperces "régi" is lehet (nagyon lassú érzékelő) float h12 = dht12.readHumidity (); // Hőindex kiszámítása Fahrenheitben (alapértelmezett) float hif12 = dht12.computeHeatIndex (f12, h12); // Hőindex számítása Celsius -ban (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Harmatpont kiszámítása Fahrenheitben (alapértelmezett) float dpf12 = dht12.dewPoint (f12, h12); // Harmatpont kiszámítása Celsius -ban (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
7. lépés: Egyszerű olvasás
Egyszerű olvasás az olvasási állapot megszerzéséhez.
// Az érzékelő leolvasása 2 másodperc eltelt idővel rendelkezik, hacsak nem adja át az erőparamétert
bool chk = dht12.read (); // igaz olvasás rendben van, hamis olvasási probléma
// A hőmérséklet olvasása Celsius -ban (alapértelmezett)
float t12 = dht12.readTemperature (); // A hőmérséklet olvasása Fahrenheit (isFahrenheit = igaz) float f12 = dht12.readTemperature (true); // Az érzékelők leolvasása akár 2 másodperces „régi” is lehet (nagyon lassú érzékelő) float h12 = dht12.readHumidity (); // Hőindex kiszámítása Fahrenheitben (alapértelmezett) float hif12 = dht12.computeHeatIndex (f12, h12); // Hőindex számítása Celsius -ban (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Harmatpont kiszámítása Fahrenheitben (alapértelmezett) float dpf12 = dht12.dewPoint (f12, h12); // Harmatpont kiszámítása Celsius -ban (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
8. lépés: Teljes olvasmány
Teljes olvasás a megadott állapot eléréséhez.
// Az érzékelő leolvasása 2 másodperc eltelt idővel rendelkezik, hacsak nem adja át az erőparamétert
DHT12:: Olvasási állapot chk = dht12.readStatus (); Serial.print (F ("\ nOlvasószenzor:")); switch (chk) {case DHT12:: OK: Serial.println (F ("OK")); szünet; eset DHT12:: ERROR_CHECKSUM: Serial.println (F ("Ellenőrző összeg hiba")); szünet; DHT12:: ERROR_TIMEOUT eset: Serial.println (F ("Időtúllépési hiba")); szünet; DHT12:: ERROR_TIMEOUT_LOW eset: Serial.println (F ("Időtúllépési hiba az alacsony jelnél, próbáljon meg magas húzóellenállást")); szünet; DHT12:: ERROR_TIMEOUT_HIGH eset: Serial.println (F ("Időtúllépési hiba alacsony jel esetén, próbáljon alacsony húzóellenállást tenni")); szünet; DHT12:: ERROR_CONNECT eset: Serial.println (F ("Csatlakozási hiba")); szünet; DHT12:: ERROR_ACK_L: Serial.println (F ("AckL hiba")); szünet; DHT12:: ERROR_ACK_H: Serial.println (F ("AckH hiba")); szünet; DHT12 eset: ERROR_UNKNOWN: Serial.println (F ("Ismeretlen hiba DETECTED")); szünet; DHT12 eset: NINCS: Serial.println (F ("Nincs eredmény")); szünet; alapértelmezett: Serial.println (F ("Ismeretlen hiba")); szünet; }
// A hőmérséklet olvasása Celsius -ban (alapértelmezett)
float t12 = dht12.readTemperature (); // A hőmérséklet olvasása Fahrenheit (isFahrenheit = igaz) float f12 = dht12.readTemperature (true); // Az érzékelők leolvasása akár 2 másodperces „régi” is lehet (nagyon lassú érzékelő) float h12 = dht12.readHumidity (); // Hőindex kiszámítása Fahrenheitben (alapértelmezett) float hif12 = dht12.computeHeatIndex (f12, h12); // Hőindex számítása Celsius -ban (isFahreheit = false) float hic12 = dht12.computeHeatIndex (t12, h12, false); // Harmatpont kiszámítása Fahrenheitben (alapértelmezett) float dpf12 = dht12.dewPoint (f12, h12); // Harmatpont kiszámítása Celsius -ban (isFahreheit = false) float dpc12 = dht12.dewPoint (t12, h12, false);
9. lépés: Csatlakozási rajz
Példákkal a csatlakozási rajz, fontos a megfelelő felhúzó ellenállás használata.
Köszönöm Bobadas -nak, dplasa -nak és adafruitnak, hogy megosztják a kódot a github -ban (ahol néhány kódot és ötletet veszek).
10. lépés: Arduino: OneWire

11. lépés: Arduino: I2c

12. lépés: Esp8266 (D1Mini) OneWire

13. lépés: Esp8266 (D1Mini) I2c

14. lépés: Köszönöm
Arduino játszótér (https://playground.arduino.cc/Main/DHT12SensorLibrary)
i2c projekt sorozat (Gyűjtemény):
- Hőmérséklet páratartalom érzékelő
- Analóg bővítő
- Digitális bővítő
- LCD kijelzö
Ajánlott:
NodeMCU Lua Olcsó 6 $ kártya MicroPython hőmérséklet- és páratartalom -naplózással, Wifi és mobil statisztika: 4 lépés

NodeMCU Lua Olcsó 6 dolláros tábla MicroPython hőmérséklet- és páratartalom -naplózással, Wifi és mobil statisztikák: Ez alapvetően felhőjárás -állomás, ellenőrizheti a telefonon lévő adatokat, vagy használhat néhány telefont élő kijelzőként , a szobában, üvegházban, laborban, hűtőtérben vagy más helyeken
ESP8266 NodeMCU hozzáférési pont (AP) webszerverhez DT11 hőmérséklet -érzékelővel és nyomtatási hőmérséklet és páratartalom a böngészőben: 5 lépés

ESP8266 NodeMCU hozzáférési pont (AP) webszerverhez DT11 hőmérséklet -érzékelővel és nyomtatási hőmérséklet és páratartalom a böngészőben: Sziasztok srácok, a legtöbb projektben ESP8266 -ot használunk, és a legtöbb projektben ESP8266 -ot használunk webszerverként, így az adatok hozzáférhetők bármilyen eszköz wifi -n keresztül az ESP8266 által üzemeltetett webszerver elérésével, de az egyetlen probléma az, hogy működő útválasztóra van szükségünk
PCF8591 (i2c analóg I/O bővítő) Gyors, egyszerű használat: 9 lépés

PCF8591 (i2c analóg I/O bővítő) Gyors, egyszerű használat: Könyvtár az i2c pcf8591 IC használatához arduino és esp8266 használatával. Ez az IC (4 -ig) vezérelheti az analóg bemenetet és/vagy 1 analóg kimenetet, például a feszültség mérését, a termisztor értékének leolvasását vagy a LED elhalványítását. Az analóg értékek leolvasása és analóg értékének írása csak 2 vezetékkel (tökéletes
Gyors, gyors, olcsó, jó megjelenésű LED -es szobavilágítás (bárki számára): 5 lépés (képekkel)

Gyors, gyors, olcsó, jó megjelenésű LED-es szobavilágítás (bárkinek): Üdvözlök mindenkit :-) Ez az első tanulságos, ezért a megjegyzéseket szívesen fogadom :-) Remélem, hogy megmutatom, hogyan lehet gyorsan LED-es világítást készíteni MINDEN apróság. Amire szüksége van: Kábel LED -ek Ellenállások (510 Ohm 12V -ra) Lépcsők Forrasztópáka Vágók és egyéb alapok
Gyors és egyszerű lágy kapcsolók (gyors prototípus készítéshez): 5 lépés

Gyors és egyszerű lágy kapcsolók (gyors prototípus készítéshez): A lágy kapcsolók elkészítésének sokféle módja van. Ez az utasítás egy másik lehetőséget kínál a nagyon gyors prototípushoz a lágy kapcsolóhoz, amely alumínium szalagot használ a vezető szövet helyett, és szilárd huzalokat a vezető szál helyett, ami