Turinys:
- 1 žingsnis: eikite apsipirkti
- 2 žingsnis: sąranka ir fonas
- 3 žingsnis: „Arduino“- ESP12 dalis
- 4 žingsnis: išbandykite ESP kaip tinklo laiko protokolo (NTP) klientą
- 5 žingsnis: išbandykite DHT22 jutiklį
- 6 veiksmas: sujungimas …
- 7 žingsnis: Serverio dalykai
Video: Namų tinklo temperatūros jutiklis: 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:46
Ką reikia žinoti norint įgyvendinti šį projektą:
Turite žinoti apie:- kai kuriuos elektronikos įgūdžius (litavimas)
- „Linux“
- „Arduino IDE“
(turėsite atnaujinti papildomas IDE plokštes:
- ESP plokštės atnaujinimas/programavimas naudojant „Arduino IDE“.
(internete yra keletas puikių pamokų)
Tai galima padaryti naudojant „Arduino Uno“arba naudojant FTDI (USB į nuoseklųjį adapterį).
Aš naudojau „Uno“, nes kompiuteryje neturėjau jokio nuoseklaus prievado ir neturėjau FTDI
1 žingsnis: eikite apsipirkti
Ko jums reikės, kad tai įvyktų?
Skaitmeniniam temperatūros ir drėgmės jutikliui:
- Duonos lenta arba alternatyva, pvz., Prototipas PCB, lituoklis, lituoklis…
- Kažkoks laidas
- du džemperiai
- 10k omų rezistorius
- ESP12F (kiti modeliai taip pat gali veikti …)
- DHT22 (šiek tiek brangesnis nei DHT11, bet tikslesnis)
- 3 AA įkraunamos baterijos ir baterijų laikiklis
- maža plastikinė dėžutė jūsų projektui sudėti
- Vėlesniame etape tarp akumuliatoriaus ir ESP planuoju pridėti HT7333 su dviem 10uF kondensatoriais
stabilizuoti įėjimo įtampą (VCC) iki rekomenduojamos 3,3 V, bet taip pat apsaugoti ESP nuo viršįtampio.
Tinklo daliai:
- Jūsų namų „WiFi“tinklas
Dėl serverio dalies:
- Bet kuri „Linux“sistema (visada įjungta!)
Aš naudojau „Raspberry Pi“(kurį taip pat naudoju kaip serverį savo lauko IP kameroms).
- gcc kompiliatorius, kad sudarytų jūsų serverio kodą
- „rrdtool“paketas duomenims saugoti ir grafikams kurti
- apache (ar kita žiniatinklio serveris)
Jūsų mėgstamiausias kompiuteris ar nešiojamas kompiuteris su „Arduino IDE“.
2 žingsnis: sąranka ir fonas
Šioje „WiFi“versijoje prijungtas - o ne sakyti IOT - temperatūros ir drėgmės jutiklis naudojau ESP12F, DHT22 ir 3 AA baterijų laikiklį su įkraunamomis baterijomis.
Kas 20 minučių ESP atlieka matavimą iš DHT22 ir siunčia jį į serverį („Raspberry Pi“) per UDP mano namų „WiFi“tinkle. Išsiuntus matavimus, ESP užmiega. Tai reiškia, kad tik modulio laikrodis realiuoju laiku lieka įjungtas, todėl sutaupoma neįtikėtinai daug energijos. Maždaug 5 sekundes moduliui reikia apie 100 mA, tada per 20 minučių užmigti tik 150uA.
Nenorėjau naudotis jokia interneto paslauga, nes turiu „Raspberry Pi“, kuri visada yra įjungta, ir tokiu būdu man buvo malonu parašyti ir serverio dalį.
Serveryje („Raspberry Pi“, kuriame veikia „Raspbian“) parašiau paprastą UDP klausyklę (serverį), kuri išsaugo vertes į paprastą RRD. („Round Robin“duomenų bazė naudojant „Tobias Oetiker“RRDtool.)
„RRDtool“pranašumas yra tas, kad sukuriate savo duomenų bazę vieną kartą ir jos dydis išlieka tas pats. Taip pat nereikia, kad fone veiktų duomenų bazės serveris (pvz., „MySQLd“). „RRDtool“suteikia jums įrankius duomenų bazei kurti ir diagramoms generuoti.
Mano serveris periodiškai kuria grafikus ir viską rodo labai paprastame http puslapyje. Galiu peržiūrėti savo rodmenis naudodami paprastą naršyklę prisijungęs prie „Apache2“žiniatinklio serverio „Raspberry Pi“!
Galiausiai neturėjau FTDI (USB į serijinį), todėl naudojau savo „Arduino UNO“. Turite prijungti TX ir RX bei ESP ir UNO GND. (Žinau, tavo nuojauta gali liepti kirsti RX ir TX… taip pat bandė, neveikia.)
Aš nepadariau lygio konvertavimo (UNO: aukštas = 5 V, bet ESP iš esmės yra 3,3 V įrenginys … Rinkoje yra keletas gražių FTDI, kuriuose netgi galite pasirinkti aukštą lygį 5 arba 3,3 V.
Mano grandinę maitina 3 įkraunamos AA baterijos - taigi iš tikrųjų 3 X 1,2 V. Vėlesniame etape aš ketinu įdėti HT7333 tarp akumuliatoriaus bloko ir grandinės dėl saugumo; naujai įkrautos baterijos gali turėti daugiau nei 1,2 V įtampą, o ESP turėtų būti maitinamas min. 3V ir maks. 3.6V. Taip pat, jei nuspręsiu - silpnumo akimirką - įdėti šarmines baterijas (3 X 1,5 V = 4,5 V), mano ESP nebus kepti!
Aš taip pat svarsčiau galimybę naudoti 10 cm x 10 cm saulės skydelį, tačiau tai nebuvo verta vargo. Atlikdamas 3 matavimus per valandą (iš esmės 3x 5 sekundes, esant maksimaliai 100 mA, o likusiam laikui @ 100uA), tikiuosi, kad 1 metus maitinu savo grandinę iš tų pačių įkraunamų baterijų.
3 žingsnis: „Arduino“- ESP12 dalis
Šį projektą vykdžiau įvairiais žingsniais.
Yra keletas nuorodų, padedančių importuoti ESP12 (dar žinomą kaip ESP8266) į „Arduino IDE“. (Turėjau naudoti 2.3.0 versiją, o ne naujausią dėl klaidos, kuri tuo metu galėjo būti išspręsta …)
Pradėjau prijungdamas ESP per savo „Arduino UNO“(naudojamas tik kaip tiltas tarp kompiuterio per USB prie serijos) prie ESP serijinės sąsajos. Yra atskiros instrukcijos, paaiškinančios tai.
Baigęs projektą palikau laidus, kad galėčiau prisijungti prie serijos, jei man kada nors prireiktų trikčių šalinimo. RX
Tada turite prijungti ESP12 taip:
ESP kaiščiai…
GND UNO GND
RX UNO RX
TX UNO TX
LT VCC
GPIO15 GND
Iš pradžių bandžiau maitinti savo ESP iš 3,3 V UNO, bet greitai pradėjau maitinti savo ESP su maitinimo šaltiniu, tačiau galite naudoti ir akumuliatorių.
GPIO0 Aš prijungiau šį su trumpikliu prie GND, kad būtų galima mirksėti (= programuoti) ESP.
Pirmasis bandymas: palikite trumpiklį atvirą ir paleiskite serijinį monitorių „Arduino IDE“(esant 115200 baudų!).
Įjungę ESP maitinimo ciklą, turėtumėte pamatyti keletą šiukšlių simbolių ir tada tokį pranešimą:
„Ai-Thinker Technology Co. Ltd.“paruošta
Šiuo režimu ESP veikia šiek tiek kaip senamadiškas modemas. Turite naudoti AT komandas.
Išbandykite šias komandas:
AT+RST
ir dvi toliau nurodytas komandas
AT+CWMODE = 3
Gerai
AT+CWLAP
Tai turėtų pateikti visų vietovės „WiFi“tinklų sąrašą.
Jei tai veikia, esate pasirengęs kitam žingsniui.
4 žingsnis: išbandykite ESP kaip tinklo laiko protokolo (NTP) klientą
„Arduino IDE“skiltyje Failas, pavyzdžiai, ESP8266WiFi įkelkite „NTPClient“.
Kad jis veiktų, reikia atlikti nedidelius pakeitimus; turite įvesti savo „WiFi“tinklo SSID ir slaptažodį.
Dabar uždėkite trumpiklį, trumpai sujungdami GPIO0 su GND.
Įjunkite ESP maitinimo ciklą ir įkelkite eskizą į ESP.
Po kompiliavimo turėtų būti pradėtas įkėlimas į ESP. Atsisiunčiant kodą, ESP mėlynas šviesos diodas greitai mirksės.
Pastebėjau, kad turiu šiek tiek pažaisti iš naujo paleisdamas IDE, iš naujo paleisdamas ESP, kol įkėlimas veiks.
Prieš pradėdami rinkti/įkelti eskizą, būtinai uždarykite serijos konsolę (= nuoseklųjį monitorių), nes tai neleis jums įkelti.
Kai įkėlimas pavyko, galite iš naujo atidaryti serijinį monitorių, kad pamatytumėte, kaip ESP efektyviai gauna laiko iš interneto.
Puiku, jūs užprogramavote savo ESP, prisijungėte prie „WiFi“ir gavote laiko iš interneto.
Kitas žingsnis bus išbandyti DHT22.
5 žingsnis: išbandykite DHT22 jutiklį
Dabar reikia papildomų laidų.
DHT kaiščiai… Prijunkite jutiklio 1 kaištį (kairėje) prie VCC (3.3V)
Prijunkite 2 kaištį ESP GPIO5 (eskizo DHTPIN)
Prijunkite jutiklio 4 kaištį (dešinėje) prie GROUND
Prijunkite 10K rezistorių nuo 2 kaiščio (duomenys) prie jutiklio 1 kaiščio (maitinimas).
Panašiai kaip NTP testas, suraskite DHTtester eskizą ir pataisykite jį taip:
#define DHTPIN 5 // mes pasirinkome GPIO5 prisijungti prie jutiklio#define DHTTYPE DHT22 // kadangi mes naudojame DHT22, bet šis kodas/biblioteka taip pat tinka DHT11
Vėl uždarykite serijinį monitorių, įjunkite ESP maitinimo ciklą ir sukompiliuokite bei paleiskite ESP.
Jei viskas gerai, matavimai turėtų būti rodomi serijiniame monitoriuje.
Su jutikliu galite šiek tiek pažaisti. Jei kvėpuosite, pamatysite, kaip padidėja drėgmė.
Jei turite (ne LED) stalinę lempą, galite apšviesti jutiklį, kad jis šiek tiek įkaistų.
Puiku! Dabar veikia dvi didelės jutiklio dalys.
Kitame žingsnyje pakomentuosiu galutinį kodą.
6 veiksmas: sujungimas …
Vėlgi kai kurie papildomi laidai … tai leidžia padaryti „DeepSleep“.
Atminkite, kad „DeepSleep“yra neįtikėtina „IoT“įrenginių funkcija.
Tačiau jei jūsų jutiklis yra prijungtas prie „DeepSleep“, gali būti sunku perprogramuoti ESP, todėl ketiname užmegzti dar vieną jungiamąjį ryšį tarp
GPIO16-RST.
Taip, tai TURI būti GPIO16, nes būtent tas GPIO yra priverstas pažadinti įrenginį, kai realiojo laiko laikrodis išsijungia po „DeepSleep“!
Kol bandote, galite nuspręsti padaryti 15 sekundžių „DeepSleep“.
Kai derinau, perkėliau trumpiklį į GPIO0, kad galėčiau paleisti savo programą.
Kai atsisiuntimas bus baigtas, perkelčiau trumpiklį į GPIO16, kad „DeepSleep“veiktų.
ESP kodas vadinamas TnHclient.c
Turite pakeisti savo SSID, slaptažodį ir serverio IP adresą.
Yra papildomų kodo eilučių, kurias galite naudoti trikčių šalinimui arba sąrankos testavimui.
7 žingsnis: Serverio dalykai
Dažnas nesusipratimas, kad UDP yra nepatikimas, o TCP yra…
Tai taip pat kvaila, kaip sakyti, kad plaktukas yra naudingesnis už atsuktuvą. Jie tiesiog yra skirtingi labai naudingi įrankiai ir jie abu turi savo paskirtį.
Beje, be UDP internetas neveiktų … DNS yra pagrįstas UDP.
Taigi, aš pasirinkau UDP, nes jis yra labai lengvas, lengvas ir greitas.
Aš linkęs manyti, kad mano „WiFi“yra labai patikimas, todėl klientas atsiųs ne daugiau kaip 3 UDP paketus, jei patvirtinimas „Gerai!“nėra gautas.
„TnHserver“C kodas yra TnHServer.c faile.
Kodekse yra keletas paaiškinimų.
Serveryje mums reikės papildomų įrankių: rrdtool, apache ir galbūt tcpdump.
Norėdami įdiegti „rrdtool“„Raspbian“, galite tiesiog įdiegti paketą taip: apt-get install rrdtool
Jei reikia derinti tinklo srautą, „tcpdump“yra naudingas apt-get install tcpdump
Man reikėjo žiniatinklio serverio, kad galėčiau naudoti naršyklę, kad galėčiau peržiūrėti grafikus: apt-get install apache2
Aš naudoju šį įrankį: https://rrdwizard.appspot.com/index.php, kad gaučiau komandą sukurti „Round Robin“duomenų bazę. Jums reikia tai paleisti tik vieną kartą (jei pirmą kartą tai padarysite teisingai).
rrdtool sukurkite „TnHdatabase.rrd“-pradėkite dabar-10s
-žingsnis „1200“
„DS: temperatūra: MATUOLIS: 1200: -20,5: 45,5“
„DS: Drėgmė: GAUGE: 1200: 0: 100.0“
„RRA: VIDUTINIS: 0,5: 1: 720“
„RRA: VIDUTINIS: 0,5: 3: 960“
„RRA: VIDUTINIS: 0.5: 18: 1600“
Galiausiai naudoju „crontab“įrašą, kad iš naujo paleisčiau „TnHserver“kiekvieną vidurnaktį. „TnHserver“naudoju kaip įprastas vartotojas (ty NE šaknis) kaip saugumo priemonė.
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
Galite patikrinti, ar „TnHserver“veikia
$ ps -save | grep TnHserver
ir jūs galite patikrinti, ar jis klausosi paketų 7777 prievade
$ netstat -anu
Aktyvūs interneto ryšiai (serveriai ir nustatyti)
Proto Recv-Q Send-Q Vietinis adresas Užsienio adreso valstybė
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Galiausiai „CreateTnH_Graphs.sh.txt“yra scenarijaus pavyzdys, leidžiantis generuoti diagramas. (Aš sukuriu scenarijus kaip root, galbūt nenorėsite to daryti.)
Naudodami labai paprastą tinklalapį, galite žiūrėti diagramas iš bet kurios savo namų tinklo naršyklės.
Rekomenduojamas:
„Arduino“saulės energijos temperatūros ir drėgmės jutiklis kaip 433 MHz „Oregon“jutiklis: 6 žingsniai
„Arduino“saulės energijos temperatūros ir drėgmės jutiklis kaip 433 MHz „Oregon“jutiklis: tai saulės energija varomo temperatūros ir drėgmės jutiklio konstrukcija. Jutiklis imituoja 433 MHz „Oregon“jutiklį ir matomas „Telldus Net“šliuzuose. Ko jums reikia: 1x „10-LED“Saulės energijos judesio jutiklis " iš Ebay. Įsitikinkite, kad parašyta 3,7 V tešla
Gedimams atsparus temperatūros jutiklio tinklo valdiklis: 8 žingsniai
Gedimams atsparus temperatūros jutiklio tinklo valdiklis: šioje instrukcijoje parodyta, kaip „Arduino Uno“plokštę paversti vienos paskirties valdikliu, skirtu DS18B20 temperatūros jutikliams, galintiems automatiškai izoliuoti sugedusius jutiklius. Valdiklis gali valdyti iki 8 jutiklių su „Arduino“Uno. (A
„IoT“tinklo valdiklis. 9 dalis. Daiktų internetas, namų automatika: 10 žingsnių (su paveikslėliais)
„IoT“tinklo valdiklis. 9 dalis. Daiktų internetas, namų automatizavimas: atsisakymas Skaitykite šį pirmą kartą Šioje instrukcijoje išsamiai aprašytas projektas, kuriame naudojama elektros energija (šiuo atveju JK 240 VAC RMS), nors buvo stengiamasi naudoti saugią praktiką ir gerus projektavimo principus, visada yra mirtino pavojaus išrinkti
JUTIKLIS SUHU DENGAN LCD DAN LED (temperatūros jutiklis su LCD ir LED): 6 žingsniai (su nuotraukomis)
JUTIKLIS SUHU DENGAN LCD DAN LED (temperatūros jutiklis su skystųjų kristalų ekranu ir šviesos diodu): hai, saya Devi Rivaldi mahasiswa UNIVERSITAS NUSA PUTRA dari Indonesia, di sini saya akan berbagi cara membuat sensor suhu menggunakan Arduino dengan Išvestis LCD ir LED. Ini adalah pembaca suhu dengan desain saya sendiri, dengan sensor ini and
„WiFi IoT“temperatūros ir drėgmės jutiklis. Dalis: 8 daiktų internetas, namų automatizavimas: 9 žingsniai
„WiFi IoT“temperatūros ir drėgmės jutiklis. 8 straipsnis. Daiktų internetas, namų automatizavimas: įžanga 4 dalis. Daiktų internetas, namų automatizavimas, įskaitant visas būtinas programinės įrangos funkcijas, kad būtų galima sėkmingai