Satura rādītājs:
- 1. darbība: dodieties iepirkties
- 2. darbība: iestatīšana un fons
- 3. darbība: Arduino - ESP12 daļa
- 4. darbība. ESP kā tīkla laika protokola (NTP) klienta pārbaude
- 5. darbība. DHT22 sensora pārbaude
- 6. darbība: salieciet to kopā…
- 7. darbība: lietu servera puse
Video: Mājas tīkla temperatūras sensors: 7 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:54
Kas jums jāzina, lai izveidotu šo projektu:
Jums jāzina par:- dažām elektronikas prasmēm (lodēšana)
- Linux
- Arduino IDE
(jums būs jāatjaunina papildu dēļi IDE:
- ESP plates atjaunināšana/programmēšana, izmantojot Arduino IDE.
(tīmeklī ir pieejamas dažas jaukas apmācības)
To var izdarīt, izmantojot Arduino Uno vai izmantojot FTDI (USB uz seriālo adapteri).
Es izmantoju savu Uno, jo manā datorā nebija seriālā porta, kā arī man nebija FTDI
1. darbība: dodieties iepirkties
Kas jums būs nepieciešams, lai tas notiktu?
Digitālajam temperatūras un mitruma sensoram:
- Vai nu maizes dēlis, vai alternatīva, piemēram, PCB prototips, lodmetāls, lodāmurs…
- Kāds vads
- divi džemperi
- 10k omu rezistors
- ESP12F (var darboties arī citi modeļi …)
- DHT22 (nedaudz dārgāks nekā DHT11, bet precīzāks)
- 3 AA uzlādējamas baterijas un bateriju turētājs
- maza plastmasas kastīte, kurā ievietot savu projektu
- Vēlāk plānoju starp akumulatoru un ESP pievienot HT7333 ar diviem 10uF kondensatoriem
lai stabilizētu ieejas spriegumu (VCC) līdz ieteicamajam 3.3V, bet arī lai aizsargātu ESP no pārsprieguma.
Tīkla daļai:
- Jūsu mājas WiFi tīkls
Servera daļai:
- Jebkura Linux balstīta sistēma (vienmēr ieslēgta!)
Es izmantoju Raspberry Pi (ko izmantoju arī kā serveri savām āra IP kamerām).
- gcc kompilators, lai apkopotu jūsu servera kodu
- rrdtool pakotne, lai saglabātu datus un ģenerētu grafikus
- apache (vai cits tīmekļa serveris)
Jūsu iecienītākais dators vai klēpjdators ar Arduino IDE.
2. darbība: iestatīšana un fons
Šajā WiFi versijā pievienotajam - lai neteiktu IOT - temperatūras un mitruma sensoram es izmantoju ESP12F, DHT22 un 3 AA bateriju turētāju ar uzlādējamām baterijām.
Ik pēc 20 minūtēm ESP veic mērījumus no DHT22 un nosūta to uz serveri (Raspberry Pi), izmantojot UDP manā mājas WiFi tīklā. Pēc mērījumu nosūtīšanas ESP nonāk dziļā miegā. Tas nozīmē, ka tikai moduļa reāllaika pulkstenis paliek ieslēgts, tādējādi iegūstot neticamu enerģijas taupīšanu. Apmēram 5 sekundes modulim ir nepieciešami aptuveni 100 mA, tad 20 minūšu dziļā miegā tikai 150uA.
Es negribēju izmantot nevienu interneta pakalpojumu, jo man ir mans Raspberry Pi, kas vienmēr ir ieslēgts, un šādā veidā man bija prieks uzrakstīt arī servera daļu.
Serverī (Raspberry Pi, kurā darbojas Raspbian) esmu uzrakstījis vienkāršu UDP klausītāju (serveri), kas saglabā vērtības vienkāršā RRD. (Round Robin datu bāze, izmantojot Tobias Oetiker RRDtool.)
RRDtool priekšrocība ir tāda, ka jūs izveidojat savu datu bāzi vienreiz, un izmērs paliek nemainīgs. Turklāt fonā nav jādarbojas datu bāzes serverim (piemēram, mySQLd). RRDtool sniedz rīkus datu bāzes izveidei un diagrammu ģenerēšanai.
Mans serveris periodiski izveido grafikus un parāda visu ļoti vienkāršā http lapā. Es varu iepazīties ar saviem lasījumiem, izmantojot vienkāršu pārlūkprogrammu, pieslēdzoties Raspaberry Pi tīmekļa serverim Apache2!
Visbeidzot, man nebija FTDI (USB uz seriālu), tāpēc es izmantoju savu Arduino UNO. Jums ir jāpievieno TX un RX un ESP un UNO GND. (Es zinu, jūsu instinkts var likt jums šķērsot RX un TX's … arī mēģinājis, nedarbojas.)
Es neveicu līmeņa pārveidošanu (UNO: augsts = 5 V, bet ESP būtībā ir 3.3 V ierīce … Tirgū ir dažas jaukas FTDI, kur jūs pat varat izvēlēties savu augsto līmeni 5 vai 3,3 V.
Manu ķēdi darbina 3 AA uzlādējamas baterijas - tātad faktiski 3 X 1.2V. Vēlākā posmā es plānoju drošības nolūkos ievietot HT7333 starp akumulatoru un ķēdi; tikko uzlādētiem akumulatoriem varētu būt vairāk nekā 1,2 V, un ESP vajadzētu darbināt ar min. 3V un maks. 3.6V. Arī tad, ja es izlemšu - vājuma brīdī - ievietot sārma baterijas (3 X 1,5 V = 4,5 V), mans ESP netiks cepts!
Es arī apsvēru iespēju izmantot 10 x 10 cm saules paneli, taču tas vienkārši nebija problēmu vērts. Veicot 3 mērījumus stundā (būtībā 3x 5 sekundes @ 100mA max.
3. darbība: Arduino - ESP12 daļa
Es īstenoju šo projektu dažādos posmos.
Ir vairākas saites, kas palīdz importēt ESP12 (pazīstams arī kā ESP8266) Arduino IDE. (Man bija jāizmanto versija 2.3.0, nevis jaunākā, jo radās kļūda, kas, iespējams, tikmēr bija atrisināta …)
Es sāku, pievienojot ESP, izmantojot savu Arduino UNO (izmanto tikai kā tiltu starp datoru, izmantojot USB, lai sērijveida), līdz ESP seriālajam interfeisam. Ir atsevišķi norādījumi, kas to izskaidro.
Pabeigtajā projektā es atstāju vadus, lai izveidotu savienojumu ar seriālu, ja man kādreiz būs nepieciešams novērst problēmas
Pēc tam ESP12 jāpievieno šādi:
ESP tapas…
GND UNO GND
RX UNO RX
TX UNO TX
LV VCC
GPIO15 GND
Sākumā es mēģināju barot savu ESP no 3.3 V uz UNO, bet es ātri pārgāju pie ESP barošanas ar stenda barošanas avotu, bet jūs varat izmantot arī savu akumulatoru.
GPIO0 Šo savienoju ar džemperi GND, lai iespējotu ESP mirgošanu (= programmēšanu).
Pirmais tests: atstājiet džemperi atvērtu un palaidiet sērijveida monitoru Arduino IDE (ar 115200 bodu!).
Ieslēdzot ESP barošanas ciklu, jums vajadzētu redzēt dažas atkritumu rakstzīmes un pēc tam šādu ziņojumu:
Ai-Thinker Technology Co. Ltd. gatavs
Šajā režīmā ESP darbojas kā vecmodīgs modems. Jums jāizmanto AT komandas.
Izmēģiniet šādas komandas:
AT+RST
un sekojošās divas komandas
AT+CWMODE = 3
labi
AT+CWLAP
Tam vajadzētu parādīt visu šajā apgabalā esošo WiFi tīklu sarakstu.
Ja tas darbojas, jūs esat gatavs nākamajam solim.
4. darbība. ESP kā tīkla laika protokola (NTP) klienta pārbaude
Arduino IDE sadaļā Fails, piemēri, ESP8266WiFi, ielādējiet NTPClient.
Lai tas darbotos, ir nepieciešami nelieli pielāgojumi; jums ir jāievada sava WiFi tīkla SSID un parole.
Tagad novietojiet džemperi, saīsinot GPIO0 uz GND.
Ieslēdziet ESP barošanas ciklu un augšupielādējiet skici ESP.
Pēc apkopošanas jāsāk augšupielāde ESP. Kad kods tiek lejupielādēts, ESP zilā gaismas diode ātri mirgos.
Es pamanīju, ka man bija nedaudz jāspēlē, restartējot IDE, restartējot ESP, pirms augšupielāde darbosies.
Pirms sākat apkopot/augšupielādēt skici, noteikti aizveriet seriālo konsoli (= sērijas monitoru), jo tas neļaus augšupielādēt.
Kad augšupielāde ir izdevusies, varat atkārtoti atvērt seriālo monitoru, lai redzētu, kā ESP efektīvi iegūst laiku no interneta.
Lieliski, esat ieprogrammējis savu ESP, izveidojis savienojumu ar WiFi un ieguvis laiku no interneta.
Nākamais solis mēs pārbaudīsim DHT22.
5. darbība. DHT22 sensora pārbaude
Tagad ir nepieciešama papildu elektroinstalācija.
DHT tapas… Savienojiet sensora 1. tapu (kreisajā pusē) ar VCC (3.3V)
Pievienojiet 2. tapu ESP GPIO5 (skicē DHTPIN)
Pievienojiet sensora 4. tapu (labajā pusē) pie ZEMES
Pievienojiet 10K rezistoru no kontakta 2 (dati) līdz sensora 1. tapai (jauda).
Līdzīgi kā NTP testā, atrodiet DHTtester skici un izlabojiet to šādā veidā:
#define DHTPIN 5 // mēs izvēlējāmies GPIO5, lai izveidotu savienojumu ar sensoru#define DHTTYPE DHT22 //, jo mēs izmantojam DHT22, taču šis kods/bibliotēka ir piemērota arī DHT11
Atkal aizveriet seriālo monitoru, ieslēdziet ESP barošanas ciklu un apkopojiet un zibspuldzējiet ESP.
Ja viss ir kārtībā, mērījumi tiek parādīti sērijas monitorā.
Ar sensoru var mazliet paspēlēties. Ja jūs uz to elpojat, jūs redzēsit paaugstinātu mitrumu.
Ja jums ir galda lampa (ne LED), varat spīdēt uz sensora, lai to nedaudz uzsildītu.
Lieliski! Divas lielas sensora daļas tagad darbojas.
Nākamajā solī es komentēšu galīgo kodu.
6. darbība: salieciet to kopā…
Atkal daži papildu vadi … tas ir nepieciešams, lai padarītu DeepSleep iespējamu.
Atcerieties, ka DeepSleep ir neticama funkcija IoT ierīcēm.
Tomēr, ja jūsu sensors ir savienots ar DeepSleep, ESP var būt grūti pārprogrammēt, tāpēc mēs izveidosim vēl vienu savienojuma savienojumu starp
GPIO16-RST.
Jā, tam ir jābūt GPIO16, jo tas ir GPIO, kas ir pieslēgts, lai modinātu ierīci, kad reālā laika pulkstenis izslēdzas pēc DeepSleep!
Testēšanas laikā varat izlemt veikt 15 sekunžu dziļo miegu.
Kad es veicu atkļūdošanu, es pārvietotu džemperi uz GPIO0, lai es varētu zibināt savu programmu.
Kad lejupielāde ir pabeigta, es pārvietotu džemperi uz GPIO16, lai DeepSleep darbotos.
ESP kodu sauc par TnHclient.c
Jums ir jāmaina sava SSID, parole un servera IP adrese.
Ir papildu koda rindas, kuras varat izmantot, lai novērstu traucējumus vai pārbaudītu iestatījumus.
7. darbība: lietu servera puse
Tas ir izplatīts pārpratums, ka UDP nav uzticams un TCP ir…
Tas ir tikpat muļķīgi kā teikt, ka āmurs ir noderīgāks par skrūvgriezi. Tie ir vienkārši ļoti noderīgi rīki, un tiem abiem ir savs pielietojums.
Starp citu, bez UDP internets nedarbotos … DNS pamatā ir UDP.
Tātad, es izvēlējos UDP, jo tas ir ļoti viegls, vienkāršs un ātrs.
Man ir tendence domāt, ka mans WiFi ir ļoti uzticams, tāpēc klients nosūtīs ne vairāk kā 3 UDP paketes, ja apstiprinājums "Labi!" nav saņemts.
TnHserver C kods ir failā TnHServer.c.
Kodeksā ir vairāki komentāri, kas to izskaidro.
Mums būs nepieciešami daži papildu rīki serverī: rrdtool, apache un varbūt tcpdump.
Lai instalētu rrdtool Raspbian, jūs varat vienkārši instalēt paketi šādi: apt-get install rrdtool
Ja jums ir nepieciešams atkļūdot tīkla trafiku, tcpdump ir noderīgs apt-get install tcpdump
Lai apskatītu grafikus, man bija nepieciešams tīmekļa serveris, lai varētu izmantot pārlūkprogrammu: apt-get install apache2
Es izmantoju šo rīku: https://rrdwizard.appspot.com/index.php, lai iegūtu komandu izveidot Round Robin datu bāzi. Jums tas jāpalaiž tikai vienu reizi (ja pirmo reizi viss ir kārtībā).
rrdtool izveidojiet TnHdatabase.rrd-sāciet tagad-10s
-solis "1200"
"DS: Temperatūra: GAUGE: 1200: -20,5: 45,5"
"DS: Mitrums: GAUGE: 1200: 0: 100.0"
"RRA: VIDĒJĀ: 0,5: 1: 720"
"RRA: VIDĒJĀ: 0,5: 3: 960"
"RRA: VIDĒJĀ: 0.5: 18: 1600"
Visbeidzot, es izmantoju crontab ierakstu, lai restartētu savu TnHserver katru dienu pusnaktī. Es izmantoju TnHserver kā parasts lietotājs (ti, NAV root) kā drošības līdzeklis.
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
To var pārbaudīt, vai TnHserver darbojas
$ ps -pats | grep TnHserver
un jūs varat pārbaudīt, vai tā klausās paketes portā 7777, darot to
$ netstat -anu
Aktīvi interneta savienojumi (serveri un izveidoti)
Proto Recv-Q Send-Q Vietējā adrese Ārvalstu adreses valsts
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Visbeidzot CreateTnH_Graphs.sh.txt ir skripta paraugs, lai ģenerētu grafikus. (Es ģenerēju skriptus kā root, iespējams, nevēlaties to darīt.)
Izmantojot ļoti vienkāršu tīmekļa lapu, varat skatīties grafikus no jebkuras mājas tīkla pārlūkprogrammas.
Ieteicams:
Arduino saules enerģijas temperatūras un mitruma sensors kā 433 MHz Oregon sensors: 6 soļi
Arduino saules enerģijas temperatūras un mitruma sensors kā 433 MHz Oregon sensors: tas ir saules enerģijas temperatūras un mitruma sensora konstrukcija. Sensors atdarina 433 MHz Oregon sensoru un ir redzams Telldus Net vārtejā. Kas jums nepieciešams: 1x "10-LED Saules enerģijas kustības sensors " no ebay. Pārliecinieties, ka ir rakstīts 3.7v mīkla
Mājas tīkla iestatīšana: 6 soļi
Mājas tīkla iestatīšana: Tīkla iestatīšana sākumā var šķist biedējoša, taču, tiklīdz jums ir viss nepieciešamais, to ir ļoti viegli izdarīt. Tradicionālajai iestatīšanai ir nepieciešams modems un maršrutētājs, bet dažiem var būt nepieciešams vairāk aprīkojuma, bet dažiem - mazāk. Ir daudz dažādu
Kļūdu tolerants temperatūras sensora tīkla kontrolieris: 8 soļi
Kļūdu tolerants temperatūras sensora tīkla kontrolleris: šajā pamācībā ir parādīts, kā pārvērst Arduino Uno plati par viena mērķa kontrolieri DS18B20 temperatūras sensoru kopumam, kas spēj automātiski izolēt bojātus sensorus. Kontrolieris var pārvaldīt līdz 8 sensoriem, izmantojot Arduino Uno. (A
IoT tīkla kontrolieris. 9. daļa: IoT, mājas automatizācija: 10 soļi (ar attēliem)
IoT tīkla kontrolieris. 9. daļa: IoT, mājas automatizācija: atruna IZLASIET ŠO PIRMAJI ievēlēt
WiFi IoT temperatūras un mitruma sensors. Daļa: 8 IoT, mājas automatizācija: 9 soļi
WiFi IoT temperatūras un mitruma sensors. 8. pants. IoT, mājas automatizācija: preambula 4. daļa: IoT, mājas automatizācija, ieskaitot visu nepieciešamo programmatūras funkcionalitāti, lai gūtu panākumus