Tartalomjegyzék:

Otthoni hálózati hőmérséklet -érzékelő: 7 lépés
Otthoni hálózati hőmérséklet -érzékelő: 7 lépés

Videó: Otthoni hálózati hőmérséklet -érzékelő: 7 lépés

Videó: Otthoni hálózati hőmérséklet -érzékelő: 7 lépés
Videó: Hogyan kössünk össze két PC-t az otthoni hálózaton 2024, November
Anonim
Otthoni hálózati hőmérséklet -érzékelő
Otthoni hálózati hőmérséklet -érzékelő

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

Vásárolni
Vásárolni

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

Beállítás és háttér
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

Az Arduino - ESP12 rész
Az Arduino - ESP12 rész
Az Arduino - ESP12 rész
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 ESP tesztelése hálózati időprotokoll (NTP) ügyfélként
Az ESP tesztelése hálózati időprotokoll (NTP) ügyfélként
Az ESP tesztelése hálózati időprotokoll (NTP) ügyfélként
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

A DHT22 érzékelő tesztelése
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…

Összerakás…
Összeraká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

A dolgok szerver oldala
A dolgok szerver oldala
A dolgok szerver oldala
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: