Përmbajtje:
- Hapi 1: Shkoni në pazar
- Hapi 2: Konfigurimi dhe Sfondi
- Hapi 3: Pjesa Arduino - ESP12
- Hapi 4: Testimi i ESP Si klient i Protokollit të Kohes së Rrjetit (NTP)
- Hapi 5: Testimi i sensorit DHT22
- Hapi 6: Vendoseni së bashku…
- Hapi 7: Ana e Gjërave në Server
Video: Sensori i temperaturës së rrjetit në shtëpi: 7 hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:17
Çfarë duhet të dini për të realizuar këtë projekt:
Duhet të dini për:- Disa aftësi elektronike (bashkim)
- Linux
- Arduino IDE
(do t'ju duhet të përditësoni bordet shtesë në IDE:
- azhurnimi/programimi i një bordi ESP përmes Arduino IDE.
(ka disa mësime të mira në dispozicion në internet)
Kjo mund të bëhet duke përdorur një Arduino Uno ose duke përdorur një FTDI (përshtatës usb në serial).
Kam përdorur Uno -in tim sepse nuk kisha asnjë port serik në kompjuterin tim dhe as nuk kisha një FTDI
Hapi 1: Shkoni në pazar
Çfarë do t'ju duhet për ta bërë këtë të ndodhë?
Për sensorin dixhital të temperaturës dhe lagështisë:
- Ose një dërrasë buke ose një alternativë si prototipi i PCB -së, saldimit, hekurit …
- Pak tela
- dy kërcyes
- një rezistencë 10k Ohm
- një ESP12F (modele të tjera mund të funksionojnë gjithashtu …)
- një DHT22 (pak më e shtrenjtë se DHT11 por më e saktë)
- 3 bateri AA të rimbushshme dhe një mbajtës baterie
- një kuti e vogël plastike për të futur projektin tuaj
- Në një fazë të mëvonshme kam në plan të shtoj një HT7333 me dy kondensatorë 10uF midis paketës së baterisë dhe ESP
për të stabilizuar tensionin hyrës (VCC) në 3.3V të rekomanduar, por edhe për të mbrojtur ESP nga mbitensioni.
Për pjesën e Rrjetit:
- Rrjeti juaj WiFi në shtëpi
Për pjesën e serverit:
- Çdo sistem i bazuar në Linux (gjithmonë i ndezur!)
Kam përdorur një Raspberry Pi (të cilën gjithashtu e përdor si server për kamerat e mia IP në natyrë.)
- përpiluesi gcc për të përpiluar kodin tuaj të serverit
- paketë rrdtool për të ruajtur të dhënat dhe për të gjeneruar grafikë
- apache (ose një server tjetër në internet)
Kompjuteri ose laptopi juaj i preferuar me Arduino IDE në të.
Hapi 2: Konfigurimi dhe Sfondi
Në këtë version të një WiFi të lidhur - për të mos thënë IOT - sensorin e temperaturës dhe lagështisë, kam përdorur një ESP12F, një DHT22 dhe një mbajtës baterie 3 AA me bateri të rimbushshme.
Çdo 20 minuta ESP merr një matje nga DHT22 dhe e dërgon atë në një server (një Raspberry Pi) përmes UDP në rrjetin tim WiFi në shtëpi. Pasi të jenë dërguar matjet, ESP shkon në gjumë të thellë. Kjo do të thotë që vetëm Ora e Kohës Reale e modulit mbetet e fuqizuar, duke rezultuar në një kursim të jashtëzakonshëm të energjisë. Për rreth 5 sekonda, moduli kërkon rreth 100mA, pastaj gjatë 20 minutave në gjumë të thellë vetëm 150uA.
Unë nuk doja të përdorja asnjë shërbim të bazuar në Internet sepse kam Raspberry Pi tim i cili është gjithnjë i ndezur gjithsesi dhe në këtë mënyrë pata kënaqësinë të shkruaj edhe pjesën e serverit.
Në server (një Raspberry Pi që drejton Raspbian) kam shkruar një dëgjues (server) të thjeshtë UDP i cili ruan vlerat në një RRD të thjeshtë. (Baza e të dhënave Robin Robin duke përdorur RRDtool nga Tobias Oetiker.)
Avantazhi i RRDtool është se ju krijoni bazën tuaj të të dhënave një herë dhe madhësia mbetet e njëjtë. Gjithashtu nuk keni nevojë të keni një server të bazës së të dhënave (si mySQLd) që funksionon në sfond. RRDtool ju jep mjetet për të krijuar bazën e të dhënave dhe për të gjeneruar grafikët.
Serveri im krijon grafikët në mënyrë periodike dhe shfaq gjithçka në një faqe shumë të thjeshtë http. Unë mund t'i konsultoj leximet e mia me një shfletues të thjeshtë duke u lidhur me serverin në internet Apache2 në Raspberry Pi!
Së fundi, unë nuk kisha një FTDI (USB në Serial) kështu që kam përdorur Arduino UNO tim. Ju duhet të lidhni TX dhe RX dhe GND të ESP dhe UNO. (E di, instinkti juaj mund t'ju thotë të kaloni RX dhe TX … e provova gjithashtu, nuk funksionon.)
Unë nuk bëra një konvertim të nivelit (UNO: High = 5V por ESP është në thelb një pajisje 3.3V … Ka disa FTDI të këndshëm në treg ku mund të zgjidhni edhe nivelin tuaj të lartë që të jetë 5 ose 3.3V.
Qarku im mundësohet nga 3 bateri AA të rimbushshme - pra në fakt 3 X 1.2V. Në një fazë të mëvonshme kam ndërmend të vendos një HT7333 midis paketës së baterisë dhe qarkut për siguri; bateritë e sapokarkuara mund të kenë më shumë se 1.2V dhe ESP duhet të mundësohet me min. 3V dhe max. 3.6V Gjithashtu nëse vendos - në një moment dobësie - të vendos bateri alkaline (3 X 1.5V = 4.5V) ESP -ja ime nuk do të skuqet!
Mendova gjithashtu të përdor një panel diellor 10 cm x 10 cm, por thjesht nuk ia vlente sherri. Duke bërë 3 matje në orë (në thelb 3x 5 sekonda @ 100mA max. Dhe pjesën tjetër të kohës @ 100uA), shpresoj që të furnizoj qarkun tim për 1 vit me të njëjtat bateri të rimbushshme.
Hapi 3: Pjesa Arduino - ESP12
Unë e bëra këtë projekt në hapa të ndryshëm.
Ka disa lidhje që ju ndihmojnë të importoni ESP12 (aka. ESP8266) në Arduino IDE. (Më është dashur të përdor versionin 2.3.0 në vend të atij të fundit për shkak të një defekti që mund të ishte zgjidhur ndërkohë …)
Fillova duke lidhur ESP, mbi Arduino UNO tim (përdoret vetëm si urë lidhëse midis kompjuterit tim përmes USB në Serial) në ndërfaqen serike ESP. Ka udhëzues të veçantë që e shpjegojnë këtë.
Në projektin tim të përfunduar i lashë telat për t'u lidhur me Serialin në rast se më duhet ndonjëherë të zgjidh problemin. RX
Pastaj ju duhet të lidhni ESP12 tuaj si më poshtë:
Kunjat ESP…
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
Fillimisht u përpoqa të fuqizoja ESP -në time nga 3.3V në UNO, por shpejt kalova në fuqizimin e ESP -së time me një Furnizim me energji në stol, por ju gjithashtu mund të përdorni paketën tuaj të baterisë.
GPIO0 Unë e lidha këtë me një bluzë në GND për të mundësuar ndezjen (= programimin) e ESP.
Testi i parë: lërini bluzën të hapur dhe filloni një monitor serik në Arduino IDE (në 115200 baud!).
Cikli i energjisë ESP, duhet të shihni disa karaktere plehrash dhe më pas një mesazh si:
Ai-Thinker Technology Co Ltd gati
Në këtë mënyrë, ESP vepron pak si një modem i modës së vjetër. Ju duhet të përdorni komandat AT.
Provoni komandat e mëposhtme:
AT+RST
dhe dy komandat e mëposhtme
AT+CWMODE = 3
Ne rregull
AT+CWLAP
Kjo duhet t'ju japë një listë të të gjitha rrjeteve WiFi në zonë.
Nëse kjo po funksionon, ju jeni gati për hapin tjetër.
Hapi 4: Testimi i ESP Si klient i Protokollit të Kohes së Rrjetit (NTP)
Në Arduino IDE, nën File, Shembuj, ESP8266WiFi, ngarkoni NTPClient.
Ndryshime të vogla janë të nevojshme për ta bërë atë të funksionojë; duhet të vendosni SSID -in tuaj dhe fjalëkalimin e rrjetit tuaj WiFi.
Tani vendosni kërcyesin, duke shkurtuar GPIO0 në GND.
Cikli i energjisë ESP dhe ngarko skicën në ESP.
Pas përpilimit, ngarkimi në ESP duhet të fillojë. LED blu në ESP do të pulsojë me shpejtësi ndërsa kodi po shkarkohet.
Vura re që më duhej të luaja pak me rifillimin e IDE, duke rifilluar ESP para se të funksiononte ngarkimi.
Para se të filloni të përpiloni/ngarkoni skicën, sigurohuni që të mbyllni tastierën serike (= monitor serik) sepse kjo do t'ju pengojë të bëni ngarkimin.
Pasi ngarkimi të ketë sukses, mund të rihapni monitorin serik për të parë që ESP të marrë kohë në mënyrë efektive nga Interneti.
E shkëlqyeshme, ju keni programuar ESP tuaj, jeni lidhur me WiFi tuaj dhe keni marrë kohë nga Interneti.
Hapi tjetër ne do të testojmë DHT22.
Hapi 5: Testimi i sensorit DHT22
Tani kërkohen instalime elektrike shtesë.
Kunjat DHT… Lidhni pinin 1 (në të majtë) të sensorit në VCC (3.3V)
Lidhni pin 2 ESP GPIO5 (DHTPIN në skicë)
Lidhni kunjin 4 (në të djathtë) të sensorit në GROUND
Lidhni një rezistencë 10K nga kunja 2 (të dhëna) në kunjin 1 (fuqia) e sensorit.
Ngjashëm me testin NTP, shkoni gjeni skicën DHTtester dhe ndryshojeni atë në mënyrën e mëposhtme:
#define DHTPIN 5 // ne zgjodhëm GPIO5 për t'u lidhur me sensorin#përcakto DHTTYPE DHT22 // pasi ne po përdorim një DHT22 por ky kod/bibliotekë është i përshtatshëm edhe për DHT11
Përsëri, mbyllni monitorin serik, qarkulloni energjinë ESP dhe përpiloni dhe ndizni ESP.
Nëse gjithçka shkon mirë, duhet të shihni që matjet shfaqen në monitorin serik.
Mund të luani pak me sensorin. Nëse merrni frymë mbi të, do të shihni që lagështia të rritet.
Nëse keni një llambë tavoline (jo LED), mund të shkëlqeni në sensor për ta ngrohur pak.
Shkëlqyeshëm! Dy pjesë të mëdha të sensorit tani janë duke punuar.
Në hapin tjetër do të komentoj kodin përfundimtar.
Hapi 6: Vendoseni së bashku…
Përsëri disa instalime elektrike shtesë … kjo është për të bërë të mundur DeepSleep.
Mos harroni, DeepSleep është një funksion i jashtëzakonshëm për pajisjet IoT.
Sidoqoftë, nëse sensori juaj është i lidhur për DeepSleep, mund të jetë e vështirë të riprogramoni ESP kështu që ne do të bëjmë një lidhje tjetër kërcyese midis
GPIO16-RST.
Po, DUHET të jetë GPIO16, sepse ky është GPIO që është i lidhur me forcë për të zgjuar pajisjen kur Ora e Kohes Real fiket pas DeepSleep!
Ndërsa jeni duke testuar, mund të vendosni të bëni një DeepSleep 15 sekondash.
Kur po bëja korrigjimin e gabimeve, do ta transferoja kërcyesin në GPIO0 në mënyrë që të ndizja programin tim.
Pas shkarkimit të plotë, unë do ta transferoja kërcyesin në GPIO16 në mënyrë që DeepSleep të funksiononte.
Kodi për ESP quhet TnHclient.c
Ju duhet të ndryshoni SSID -in tuaj, Fjalëkalimin dhe adresën IP të serverit tuaj.
Ka linja shtesë të kodit që mund të përdorni për të zgjidhur probleme ose për të testuar konfigurimin tuaj.
Hapi 7: Ana e Gjërave në Server
Ashtë një keqkuptim i zakonshëm që UDP nuk është i besueshëm dhe TCP është…
Kjo është po aq budalla sa të thuash një çekiç është më i dobishëm se një kaçavidë. Ato janë thjesht mjete të ndryshme shumë të dobishme dhe të dyja kanë përdorimet e tyre.
Nga rruga, pa UDP Interneti nuk do të funksiononte … DNS bazohet në UDP.
Pra, zgjodha UDP sepse është shumë i lehtë, i lehtë dhe i shpejtë.
Unë prirem të mendoj se WiFi im është shumë i besueshëm kështu që klienti do të dërgojë më së shumti 3 pako UDP nëse konfirmimi "OK!" nuk merret.
Kodi C për TnHserver është në skedarin TnHServer.c.
Ka disa komente në kod që e shpjegojnë atë.
Do të na duhen disa mjete shtesë në server: rrdtool, apache dhe ndoshta tcpdump.
Për të instaluar rrdtool në Raspbian, thjesht mund ta instaloni paketën si kjo: apt-get install rrdtool
Nëse keni nevojë të korrigjoni trafikun e rrjetit, tcpdump vjen në ndihmë apt-get install tcpdump
Më duhej një server në internet që të mund të përdorja një shfletues për të konsultuar grafikët: apt-get install apache2
Kam përdorur këtë mjet: https://rrdwizard.appspot.com/index.php për të marrë komandën për të krijuar bazën e të dhënave Round Robin. Ju duhet vetëm ta ekzekutoni këtë një herë (nëse e merrni atë siç duhet herën e parë).
rrdtool krijoni TnHdatabase.rrd-filloni tani-10s
-hapi '1200'
'DS: Temperatura: GAUGE: 1200: -20.5: 45.5'
'DS: Lagështia: GAUGE: 1200: 0: 100.0'
'RRA: MESATARE: 0.5: 1: 720'
'RRA: MESATARE: 0.5: 3: 960'
'RRA: MESATARE: 0.5: 18: 1600'
Më në fund, unë përdor një hyrje crontab për të rifilluar TnHserver tim çdo ditë në mesnatë. Unë e drejtoj TnHserver si një përdorues normal (dmth. NUK root) si një masë paraprake sigurie.
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
Ju mund të kontrolloni që TnHserver po funksionon duke bërë
$ ps -veta | grep TnHserver
dhe mund të verifikoni se po dëgjon paketat në portin 7777 duke bërë
$ netstat -anu
Lidhje aktive në internet (serverë dhe të vendosur)
Proto Recv-Q Send-Q Adresa Vendore Adresa e Jashtme Shteti
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Së fundi CreateTnH_Graphs.sh.txt është një skenar shembull për të gjeneruar grafikët. (Unë i krijoj skriptet si rrënjë, ju mund të mos dëshironi ta bëni këtë.)
Duke përdorur një faqe interneti shumë të thjeshtë ju mund të shikoni grafikët nga çdo shfletues në rrjetin tuaj shtëpiak.
Recommended:
Automatizimi në shtëpi Me NodeMCU Touch Sensor LDR Rele për kontrollimin e temperaturës: 16 hapa
Automatizimi i Shtëpisë Me Reletën e Kontrollit të Temperaturës NodeMCU Touch Sensor: Në projektet e mia të kaluara të NodeMCU, unë kam kontrolluar dy pajisje shtëpiake nga Blynk App. Kam marrë shumë komente dhe mesazhe për të përmirësuar projektin me Kontrollin manual dhe shtimin e më shumë veçorive. Kështu që unë kam projektuar këtë Kuti Zgjerimi të Shtëpisë së Zgjuar. Në këtë IoT
Leximi i temperaturës duke përdorur sensorin e temperaturës LM35 Me Arduino Uno: 4 hapa
Leximi i temperaturës duke përdorur sensorin e temperaturës LM35 Me Arduino Uno: Përshëndetje djema në këtë udhëzues ne do të mësojmë se si të përdorim LM35 me Arduino. Lm35 është një sensor i temperaturës i cili mund të lexojë vlerat e temperaturës nga -55 ° C në 150 ° C. Shtë një pajisje 3-terminale që siguron tension analog proporcional me temperaturën. E lartë
Kontrolluesi i Rrjetit të Sensorit të Temperaturës me Gabim Tolerant: 8 Hapa
Kontrollues i Rrjetit të Sensorit të Temperaturës me Gabim-Tolerant: Ky Instructable ju tregon se si të konvertoni një bord Arduino Uno në një kontrollues me një qëllim të vetëm për një sërë sensorë të temperaturës DS18B20 të aftë për izolim të automatizuar të sensorëve të gabuar. Kontrolluesi mund të menaxhojë deri në 8 sensorë me Arduino Uno. (Një
Kontrolluesi i rrjetit IoT. Pjesa 9: IoT, Automatizimi në shtëpi: 10 hapa (me fotografi)
Kontrolluesi i rrjetit IoT. Pjesa 9: IoT, Automatizimi i Shtëpisë: Mospranim LEXO KIST PARST Ky udhëzues detajon një projekt i cili përdor energjinë kryesore (në këtë shembull UK 240VAC RMS), ndërsa çdo kujdes është marrë për të përdorur praktika të sigurta dhe parime të mira të projektimit, ekziston gjithmonë një rrezik potencialisht vdekjeprurës zgjedh
Sensori i temperaturës dhe lagështisë IoT WiFi. Pjesa: 8 IoT, Automatizimi në shtëpi: 9 hapa
Sensori i temperaturës dhe lagështisë IoT WiFi. Pjesa: 8 IoT, Automatizimi i Shtëpisë: Preambulë Ky artikull dokumenton forcimin praktik dhe zhvillimin e mëtejshëm të një Udhëzuesi të mëparshëm: 'Pimping' pajisja juaj e parë IoT WiFi. Pjesa 4: IoT, Automatizimi i Shtëpisë duke përfshirë të gjithë funksionalitetin e nevojshëm të softuerit për të mundësuar suksesin