Tartalomjegyzék:
- 1. lépés: Vásároljon
- 2. lépés: Beállítás és háttér
- 3. lépés: Az Arduino - ESP12 rész
- 4. lépés: Az ESP tesztelése hálózati időprotokoll (NTP) ügyfélként
- 5. lépés: A DHT22 érzékelő tesztelése
- 6. lépés: Összeállítás…
- 7. lépés: A dolgok szerver oldala
Videó: Otthoni hálózati hőmérséklet -érzékelő: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Mit kell tudni a projekt megvalósításához:
Tudnia kell a következőkről:- Néhány elektronikai készség (forrasztás)
- Linux
- Arduino IDE
(további táblákat kell frissítenie az IDE -ben:
- ESP kártya frissítése/programozása az Arduino IDE segítségével.
(a neten van néhány jó oktatóanyag)
Ezt megteheti Arduino Uno vagy FTDI (usb -soros adapter) használatával.
Az Uno -t azért használtam, mert nem volt soros portom a PC -n, és nem volt FTDI -m
1. lépés: Vásároljon
Mi kell ahhoz, hogy ez megtörténjen?
A digitális hőmérséklet- és páratartalom -érzékelőhöz:
- Vagy kenyérsütő deszka, vagy egy alternatíva, mint a prototípus PCB, forrasztópáka, forrasztópáka…
- Valami drót
- két jumper
- 10 k ohmos ellenállás
- ESP12F (más modellek is működhetnek …)
- DHT22 (kicsit drágább, mint a DHT11, de pontosabb)
- 3 db AA újratölthető elem és elemtartó
- egy kis műanyag doboz a projekt elhelyezéséhez
- Egy későbbi szakaszban HT7333 -at tervezek hozzáadni két 10uF kondenzátorral az akkumulátor és az ESP között
a bemeneti feszültség (VCC) stabilizálása az ajánlott 3,3 V -ra, de az ESP túlfeszültség elleni védelme is.
A Hálózat részhez:
- Az otthoni WiFi hálózat
A szerver részhez:
- Bármilyen Linux alapú rendszer (mindig bekapcsolva!)
Egy Raspberry Pi -t használtam (amelyet szerverként is használok a kültéri IP -kameráimhoz.)
- gcc fordító a szerver kódjának fordításához
- rrdtool csomag az adatok tárolására és grafikonok készítésére
- apache (vagy más webszerver)
Kedvenc PC -je vagy laptopja Arduino IDE -vel.
2. lépés: Beállítás és háttér
A WiFi -hez csatlakoztatott - mondjuk IOT - hőmérséklet- és páratartalom -érzékelőnek ebben a verziójában ESP12F, DHT22 és 3 AA elemtartót használtam újratölthető elemekkel.
Az ESP 20 percenként mérést végez a DHT22 -ből, és elküldi azt egy szerverre (egy Raspberry Pi) UDP -n keresztül az otthoni WiFi hálózatomon. A mérések elküldése után az ESP mély álomba merül. Ez azt jelenti, hogy csak a modul valós idejű órája marad áram alatt, ami hihetetlen energiamegtakarítást eredményez. Körülbelül 5 másodpercig a modul körülbelül 100 mA -t igényel, majd a 20 perces mély alvás során csak 150uA.
Nem akartam semmilyen internet alapú szolgáltatást használni, mert megvan a Raspberry Pi, amely mindig be van kapcsolva, és így örömmel írtam a szerver részt is.
A szerverre (Raspberry Pi, amelyen Raspbian fut) írtam egy egyszerű UDP figyelőt (szervert), amely az értékeket egy egyszerű RRD -be tárolja. (Kerek Robin adatbázis Tobias Oetiker RRDtool használatával.)
Az RRDtool előnye, hogy egyszer hozza létre az adatbázist, és a mérete változatlan marad. Egyébként nem kell, hogy a háttérben adatbázis -kiszolgáló (például a mySQLd) futjon. Az RRDtool eszközöket biztosít az adatbázis létrehozásához és a grafikonok létrehozásához.
A szerver rendszeresen készíti a grafikonokat, és mindent egy nagyon egyszerű http oldalon jelenít meg. Egyszerű böngészővel olvashatom leolvasásaimat, ha csatlakozom a Raspberry Pi Apache2 webszerveréhez!
Végül nem volt FTDI -m (USB -soros), ezért az Arduino UNO -t használtam. Csatlakoztatnia kell a TX -eket, az RX -eket és az ESP és az UNO GND -jét. (Tudom, hogy az ösztöne azt mondja, hogy keresztezze az RX -eket és a TX -eket … kipróbálta, nem működik.)
Nem végeztem szintkonverziót (UNO: Magas = 5 V, de az ESP alapvetően egy 3.3 V -os eszköz … Vannak szép FTDI -k a piacon, ahol akár 5 vagy 3,3 V -os magas szintet is kiválaszthat.
Az áramköröm 3 db újratölthető AA elemmel működik - tehát valójában 3 X 1.2V. Egy későbbi fázisban HT7333 -at kívánok helyezni az akkumulátor és az áramkör közé a biztonság érdekében; az újonnan feltöltött akkumulátorok 1,2 V -nál nagyobbak lehetnek, és az ESP -t min. 3V és max. 3.6V. Továbbá, ha a gyengeség pillanatában úgy döntök, hogy alkáli elemeket teszek (3 X 1,5 V = 4,5 V), akkor az ESP nem sül ki!
Én is fontolóra vettem egy 10x10 cm -es napelem használatát, de egyszerűen nem éri meg a fáradságot. Ha óránként 3 mérést végzek (alapvetően 3x 5 másodperc @ 100mA max.
3. lépés: Az Arduino - ESP12 rész
Ezt a projektet különböző lépésekben hajtottam végre.
Számos link segít az ESP12 (más néven ESP8266) importálásában az Arduino IDE -be. (A 2.3.0 verziót kellett használnom a legújabb helyett egy hiba miatt, amelyet időközben megoldhattak …)
Az ESP csatlakoztatásával kezdtem az Arduino UNO -n keresztül (csak hídként használtam a számítógépem között USB -n keresztül a soroshoz) az ESP soros interfészéhez. Ezt külön utasítások magyarázzák.
A befejezett projektben hagytam a vezetékeket, hogy csatlakozzak a soroshoz, ha esetleg hibaelhárításra lesz szükségem
Ezután az ESP12 -et a következőképpen kell bekötni:
ESP csapok…
GND UNO GND
RX UNO RX
TX UNO TX
HU VCC
GPIO15 GND
Kezdetben az ESP 3.3V -ról próbáltam táplálni az ESP -t, de gyorsan áttértem az ESP tápellátására, de használhatja az akkumulátort is.
GPIO0 Csatlakoztattam ezt egy jumperrel a GND -hez, hogy engedélyezze az ESP villogását (= programozását).
Első teszt: hagyja nyitva a jumpert, és indítson el egy soros monitort az Arduino IDE -ben (115200 baudon!).
Ha bekapcsolja az ESP -t, látnia kell néhány szemét karaktert, majd egy ilyen üzenetet:
Az Ai-Thinker Technology Co. Ltd. készen áll
Ebben az üzemmódban az ESP kicsit olyan, mint egy régimódi modem. AT parancsokat kell használnia.
Próbálja ki a következő parancsokat:
AT+RST
és a következő két parancs
+CWMODE = 3
rendben
AT+CWLAP
Ez megadja a környék összes WiFi hálózatának listáját.
Ha ez működik, akkor készen áll a következő lépésre.
4. lépés: Az ESP tesztelése hálózati időprotokoll (NTP) ügyfélként
Az Arduino IDE fájlban, példák, ESP8266WiFi alatt töltse be az NTPClient programot.
A működéshez kisebb módosítások szükségesek; be kell írnia a WiFi hálózat SSID -jét és jelszavát.
Most helyezze el az áthidalót, rövidre zárva a GPIO0 -t a GND -vel.
Kapcsolja be az ESP -t, és töltse fel a vázlatot az ESP -be.
Az összeállítás után meg kell kezdeni a feltöltést az ESP -be. Az ESP kék LED -je gyorsan villog a kód letöltése közben.
Észrevettem, hogy kicsit játszanom kell az IDE újraindításával, az ESP újraindításával, mielőtt a feltöltés működne.
Mielőtt elkezdené a vázlat összeállítását/feltöltését, feltétlenül zárja be a soros konzolt (= soros monitort), mert ez megakadályozza a feltöltést.
Miután a feltöltés sikeres volt, újra megnyithatja a soros monitort, és láthatja, hogy az ESP hatékonyan szerez időt az internetről.
Remek, beprogramozta az ESP -t, csatlakozott a WiFi -hez, és időt kapott az internetről.
A következő lépésben teszteljük a DHT22 -t.
5. lépés: A DHT22 érzékelő tesztelése
Most további vezetékekre van szükség.
DHT csapok … Csatlakoztassa az érzékelő 1. tűjét (bal oldalon) a VCC (3.3V)
Csatlakoztassa a 2 -es tűt ESP GPIO5 (DHTPIN a vázlatban)
Csatlakoztassa az érzékelő 4. tűjét (a jobb oldalon) a GROUND -hoz
Csatlakoztasson egy 10K ellenállást az érzékelő 2. tűjéről (adat) az 1. tűhöz (tápellátás).
Az NTP teszthez hasonlóan keresse meg a DHTtester vázlatot, és csípje be a következő módon:
#define DHTPIN 5 // a GPIO5 -öt választottuk az érzékelőhöz való csatlakozáshoz
Ismét zárja be a soros monitort, kapcsolja be az ESP -t, és fordítsa le és villanja fel az ESP -t.
Ha minden jól megy, látnia kell a méréseket a soros monitoron.
Játszhatsz egy kicsit az érzékelővel. Ha belélegzik, látni fogja, hogy a páratartalom emelkedik.
Ha van (nem LED) asztali lámpája, ragyoghat az érzékelőn, hogy kissé felmelegedjen.
Nagy! Az érzékelő két nagy része működik.
A következő lépésben a végső kódról szólok.
6. lépés: Összeállítás…
Ismét néhány extra huzalozás … ez lehetővé teszi a DeepSleep lehetőségét.
Ne feledje, a DeepSleep hihetetlen funkció az IoT -eszközök számára.
Ha azonban az érzékelője a DeepSleep -hez van csatlakoztatva, nehéz lehet az ESP újraprogramozása, ezért újabb jumper kapcsolatot létesítünk
GPIO16-RST.
Igen, KELL lennie GPIO16 -nak, mert ez az a GPIO, amely be van kapcsolva, hogy felébressze az eszközt, amikor a Valós idejű óra kikapcsol a DeepSleep után!
Tesztelés közben dönthet úgy, hogy 15 másodperces DeepSleepet végez.
Amikor hibakeresést végeztem, áthelyeztem a jumpert a GPIO0 -ra, hogy felvillanhassam a programomat.
A letöltés befejezése után áthelyezném a jumpert a GPIO16 -ra, hogy a DeepSleep működjön.
Az ESP kódja TnHclient.c
Meg kell változtatnia az SSID -t, a jelszót és a szerver IP -címét.
További kódsorok használhatók a hibaelhárításhoz vagy a beállítás teszteléséhez.
7. lépés: A dolgok szerver oldala
Gyakori félreértés, hogy az UDP megbízhatatlan, a TCP pedig…
Ez ugyanolyan butaság, mint azt mondani, hogy a kalapács hasznosabb, mint egy csavarhúzó. Egyszerűen különbözõ, nagyon hasznos eszközök, és mindkettõnek megvan a maga használata.
Egyébként UDP nélkül az Internet nem működne… A DNS UDP -n alapul.
Tehát az UDP -t választottam, mert nagyon könnyű, könnyű és gyors.
Hajlamos vagyok azt gondolni, hogy a WiFi nagyon megbízható, így az ügyfél legfeljebb 3 UDP csomagot küld, ha az "OK!" nem érkezik meg.
A TnHserver C-kódja a TnHServer.c fájlban található.
A kódban számos megjegyzés található, amelyek ezt magyarázzák.
Szükségünk lesz néhány extra eszközre a szerveren: rrdtool, apache és talán tcpdump.
Az rrdtool Raspbian-ra történő telepítéséhez egyszerűen telepítse a csomagot az alábbiak szerint: apt-get install rrdtool
Ha a hálózati forgalmat kell hibakeresni, akkor a tcpdump jól jön az apt-get install tcpdump
Szükségem volt egy webszerverre, hogy böngészőt használhassak a grafikonok megtekintéséhez: apt-get install apache2
Ezt az eszközt használtam: https://rrdwizard.appspot.com/index.php, hogy megkapjam a Round Robin Database létrehozásának parancsát. Ezt csak egyszer kell futtatnia (ha elsőre sikerül).
rrdtool hozza létre a TnHdatabase.rrd -t-kezdje most-10s
-"1200" lépés
"DS: Hőmérséklet: MÉRŐ: 1200: -20,5: 45,5"
"DS: Páratartalom: MÉRŐ: 1200: 0: 100.0"
"RRA: ÁTLAG: 0,5: 1: 720"
"RRA: ÁTLAG: 0,5: 3: 960"
"RRA: ÁTLAG: 0.5: 18: 1600"
Végül egy crontab bejegyzéssel újraindítom a TnHserver -t minden nap éjfélkor. A TnHservert normál felhasználóként (azaz NEM rootként) futtatom biztonsági óvintézkedésként.
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
Ezzel ellenőrizheti, hogy a TnHserver fut -e
$ ps -elf | grep TnHserver
és ezzel ellenőrizheti, hogy a 7777 -es porton figyeli -e a csomagokat
$ netstat -anu
Aktív internetkapcsolat (szerverek és létrehozott)
Proto Recv-Q Send-Q Helyi cím Külföldi címállapot
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Végül a CreateTnH_Graphs.sh.txt egy példa szkript a grafikonok létrehozásához. (A parancsfájlokat rootként generálom, lehet, hogy nem szeretné ezt megtenni.)
Egy nagyon egyszerű weboldal segítségével megtekintheti a grafikonokat az otthoni hálózat bármely böngészőjéből.
Ajánlott:
Otthoni automatizálás NodeMCU érintőérzékelő LDR hőmérséklet -szabályozó relével: 16 lépés
Otthoni automatizálás a NodeMCU érintőérzékelő LDR hőmérséklet -szabályozó relével: Korábbi NodeMCU projektjeim során két háztartási készüléket irányítottam a Blynk App alkalmazástól. Sok megjegyzést és üzenetet kaptam, hogy frissítsem a projektet kézi vezérléssel és további funkciókkal. Tehát megterveztem ezt az intelligens otthoni bővítő dobozt. Ebben az IoT -ban
Raspberry Pi RF Távirányítású hálózati aljzatok (hálózati csatlakozók): 6 lépés
Raspberry Pi RF Távirányítású hálózati aljzatok (hálózati csatlakozók): Irányítson olcsó 433 MHz-es hálózati aljzatokat (fali aljzatokat) egy Raspberry Pi segítségével. A Pi megtanulhatja az aljzatok távirányítójának kimeneti vezérlőkódjait, és programvezérléssel aktiválhatja azokat a ház bármely távirányítóján
Digitális hőmérséklet widget / otthoni hőmérő: 7 lépés
Digitális hőmérséklet -widget / otthoni hőmérő: Egy kicsi és jó megjelenésű digitális hőmérő a Dallas DS18B20 digitális érzékelő és az Arduino Pro Micro segítségével 3,3 V -on. Minden úgy van kialakítva, hogy pontosan illeszkedjen és a helyére pattanjon, nincs szükség csavarokra vagy ragasztóra! Nem annyira, de jól néz ki
IoT hálózati vezérlő. 9. rész: IoT, otthoni automatizálás: 10 lépés (képekkel)
IoT hálózati vezérlő. 9. rész: IoT, otthoni automatizálás: Jogi nyilatkozat OLVASD EL EZT AZ ELSŐT választ
Otthoni automatizálás: Riasztás és LCD kijelző, amikor a hőmérséklet a küszöbérték felett van: 5 lépés
Otthoni automatizálás: Riasztás és kijelző az LCD -n, ha a hőmérséklet meghaladja a küszöbértéket: Ez a blog bemutatja, hogyan lehet otthoni automatizálási rendszert készíteni, amely riasztást ad, amikor a hőmérséklet eléri a programozott küszöbértéket. Folyamatosan megjeleníti a szoba aktuális hőmérsékletét az LCD -n, és cselekvésre van szükség