Sadržaj:

Senzor temperature kućne mreže: 7 koraka
Senzor temperature kućne mreže: 7 koraka

Video: Senzor temperature kućne mreže: 7 koraka

Video: Senzor temperature kućne mreže: 7 koraka
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Studeni
Anonim
Senzor temperature kućne mreže
Senzor temperature kućne mreže

Što trebate znati za izradu ovog projekta:

Morate znati o:- nekim vještinama elektronike (lemljenje)

- Linux

- Arduino IDE

(morat ćete ažurirati dodatne ploče u IDE -u:

- ažuriranje/programiranje ESP ploče putem Arduino IDE -a.

(na webu su dostupni neki lijepi vodiči)

To se može učiniti pomoću Arduino Uno -a ili pomoću FTDI -ja (USB -serijski adapter).

Koristio sam svoj Uno jer nisam imao serijski port na računaru niti sam imao FTDI

Korak 1: Idite u kupovinu

Ići kupovati
Ići kupovati

Što će vam trebati da se ovo dogodi?

Za digitalni osjetnik temperature i vlažnosti:

- Ili matična ploča ili alternativa poput prototipa tiskane ploče, lemljenja, lemilice …

- Neka žica

- dva skakača

- otpornik od 10 k Ohma

- ESP12F (i drugi modeli mogu raditi …)

- DHT22 (malo skuplji od DHT11, ali točniji)

- 3 AA punjive baterije i držač baterija

- mala plastična kutija u koju ćete staviti svoj projekt

- U kasnijoj fazi planiram dodati HT7333 s dva 10uF kondenzatora između baterije i ESP -a

za stabilizaciju ulaznog napona (VCC) na preporučenih 3,3 V ali i za zaštitu ESP -a od prenapona.

Za dio o mreži:

- Vaša kućna WiFi mreža

Za poslužiteljski dio:

- Bilo koji sustav temeljen na Linuxu (uvijek uključen!)

Koristio sam Raspberry Pi (koji također koristim kao poslužitelj za svoje vanjske IP kamere.)

- gcc kompajler za sastavljanje koda vašeg poslužitelja

- rrdtool paket za pohranu podataka i generiranje grafikona

- apache (ili neki drugi web poslužitelj)

Vaše omiljeno računalo ili prijenosno računalo s Arduino IDE -om na njemu.

Korak 2: Postavljanje i pozadina

Postavljanje i pozadina
Postavljanje i pozadina

U ovoj verziji WiFi spojenog - da ne kažem IOT - senzora temperature i vlažnosti zraka koristio sam ESP12F, DHT22 i držač baterija od 3 AA s punjivim baterijama.

Svakih 20 minuta ESP uzima mjerenje s DHT22 i šalje ga na poslužitelj (Raspberry Pi) preko UDP -a na mojoj kućnoj WiFi mreži. Nakon što su mjerenja poslana, ESP prelazi u duboki san. To znači da samo sat u stvarnom vremenu na modulu ostaje napajan, što rezultira nevjerojatnom uštedom energije. Za oko 5 sekundi, modulu je potrebno oko 100mA, a zatim tijekom 20 minuta duboki san samo 150uA.

Nisam želio koristiti bilo koju internetsku uslugu jer imam svoj Raspberry Pi koji je ionako uvijek uključen, pa sam na ovaj način imao zadovoljstvo napisati i poslužiteljski dio.

Na poslužitelju (Raspberry Pi s Raspbian -om) napisao sam jednostavan UDP slušatelj (poslužitelj) koji pohranjuje vrijednosti u jednostavan RRD. (Round Robin Database using RRDtool by Tobias Oetiker.)

Prednost RRDtoola je što jednom kreirate bazu podataka, a veličina ostaje ista. Inače ne morate imati poslužitelj baze podataka (poput mySQLd) koji radi u pozadini. RRDtool vam daje alate za stvaranje baze podataka i generiranje grafikona.

Moj poslužitelj povremeno stvara grafikone i prikazuje sve na vrlo jednostavnoj http stranici. Mogu pročitati svoja očitanja jednostavnim preglednikom povezivanjem na web poslužitelj Apache2 na Raspberry Pi!

Konačno, nisam imao FTDI (USB na serijski) pa sam koristio svoj Arduino UNO. Morate spojiti TX i RX i GND ESP -a i UNO -a. (Znam, vaš instinkt bi vam mogao reći da prijeđete RX -ove i TX -ove … pokušao je i to, ne uspijeva.)

Nisam napravio konverziju razine (UNO: Visoka = 5V, ali ESP je u osnovi 3.3V uređaj … Na tržištu postoje lijepi FTDI -ji na kojima čak možete odabrati svoju visoku razinu od 5 ili 3.3V.

Moj krug napajaju 3 AA punjive baterije - dakle zapravo 3 X 1,2V. U kasnijoj fazi namjeravam staviti HT7333 između baterije i kruga radi sigurnosti; novo napunjene baterije mogle bi imati više od 1,2 V, a ESP bi se trebao napajati s min. 3V i max. 3.6V. Također, ako odlučim - u trenutku slabosti - staviti alkalne baterije (3 X 1,5 V = 4,5 V) moj ESP se neće pržiti!

Razmišljao sam i o korištenju solarne ploče dimenzija 10 cm x 10 cm, ali jednostavno nije vrijedilo gnjavaže. Radeći 3 mjerenja na sat (u osnovi 3x 5 sekundi pri maksimalno 100mA, a ostatak vremena pri 100uA), nadam se da ću napajati svoj krug 1 godinu na istim punjivim baterijama.

Korak 3: Arduino - dio ESP12

Arduino - dio ESP12
Arduino - dio ESP12
Arduino - dio ESP12
Arduino - dio ESP12

Ovaj sam projekt radio u različitim koracima.

Postoji nekoliko veza koje vam pomažu pri uvozu ESP12 (zvanog ESP8266) u Arduino IDE. (Morao sam koristiti verziju 2.3.0 umjesto najnovije zbog greške koja je u međuvremenu možda riješena …)

Počeo sam spajanjem ESP -a, preko svog Arduino UNO -a (koristi se samo kao most između računala preko USB -a na serijski) na ESP serijsko sučelje. Postoje zasebni instruktori koji to objašnjavaju.

U svom dovršenom projektu ostavio sam žice za spajanje na serijski broj u slučaju da ikada budem trebao otkloniti probleme. RX

Zatim morate spojiti svoj ESP12 na sljedeći način:

ESP pinovi…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

U početku sam pokušao napajati svoj ESP iz 3.3V na UNO -u, ali brzo sam prešao na napajanje svog ESP -a pomoću stolnog napajanja, ali možete koristiti i bateriju.

GPIO0 Ovaj sam spojio kratkospojnikom na GND kako bih omogućio treperenje (= programiranje) ESP -a.

Prvi test: ostavite kratkospojnik otvoren i pokrenite serijski monitor u Arduino IDE -u (na 115200 bauda!).

Uključite ESP, trebali biste vidjeti neke znakove smeća, a zatim poruku poput:

Ai-Thinker Technology Co. Ltd. spremno

U ovom načinu rada ESP djeluje pomalo kao zastarjeli modem. Morate koristiti AT naredbe.

Isprobajte sljedeće naredbe:

AT+RST

i sljedeće dvije naredbe

AT+CWMODE = 3

u redu

AT+CWLAP

Ovo bi vam trebalo dati popis svih WiFi mreža na tom području.

Ako ovo radi, spremni ste za sljedeći korak.

Korak 4: Testiranje ESP -a kao klijenta mrežnog vremenskog protokola (NTP)

Testiranje ESP -a kao klijenta mrežnog vremenskog protokola (NTP)
Testiranje ESP -a kao klijenta mrežnog vremenskog protokola (NTP)
Testiranje ESP -a kao klijenta mrežnog vremenskog protokola (NTP)
Testiranje ESP -a kao klijenta mrežnog vremenskog protokola (NTP)

U Arduino IDE -u, pod Datoteka, Primjeri, ESP8266WiFi, učitajte NTPClient.

Za njegovo funkcioniranje potrebna su manja podešavanja; morate unijeti svoj SSID i lozinku svoje WiFi mreže.

Sada postavite kratkospojnik, spojivši GPIO0 na GND.

Uključite ESP ciklusom i prenesite skicu na ESP.

Nakon kompilacije trebao bi započeti prijenos na ESP. Plava LED dioda na ESP -u brzo će treptati tijekom preuzimanja koda.

Primijetio sam da se moram malo poigrati s ponovnim pokretanjem IDE -a, ponovnim pokretanjem ESP -a prije nego što je upload uspio.

Prije nego počnete sastavljati/učitavati skicu, zatvorite serijsku konzolu (= serijski monitor) jer će vas to spriječiti u prijenosu.

Nakon što prijenos uspije, možete ponovno otvoriti serijski monitor kako biste vidjeli kako ESP učinkovito dobiva vrijeme s Interneta.

Odlično, programirali ste svoj ESP, spojeni na WiFi i dobili ste vrijeme s interneta.

Sljedeći korak testirat ćemo DHT22.

Korak 5: Testiranje osjetnika DHT22

Testiranje osjetnika DHT22
Testiranje osjetnika DHT22

Sada je potrebno dodatno ožičenje.

DHT pinovi … Spojite pin 1 (lijevo) senzora na VCC (3,3 V)

Spojite pin 2 ESP GPIO5 (DHTPIN na skici)

Spojite pin 4 (s desne strane) senzora na UZEMLJENJE

Spojite 10K otpornik s pina 2 (podaci) na pin 1 (napajanje) senzora.

Slično kao i kod NTP testa, idite na skicu DHTtestera i podesite je na sljedeći način:

#define DHTPIN 5 // odabrali smo GPIO5 za povezivanje sa senzorom#define DHTTYPE DHT22 // budući da koristimo DHT22, ali ovaj kôd/knjižnica je također prikladan za DHT11

Ponovno zatvorite serijski monitor, uključite ESP i uključite i prebacite ESP.

Ako je sve u redu, trebali biste vidjeti da se mjerenja pojavljuju na serijskom monitoru.

Možete se malo poigrati sa senzorom. Ako udišete, vidjet ćete kako se vlaga povećava.

Ako imate (ne LED) stolnu svjetiljku, možete zasvijetliti senzor kako biste ga malo zagrijali.

Sjajno! Dva velika dijela senzora sada rade.

U sljedećem koraku komentirat ću konačni kod.

Korak 6: Sastavite to zajedno …

Sastavljajući to zajedno…
Sastavljajući to zajedno…

Opet neko dodatno ožičenje … ovo će omogućiti DeepSleep mogućim.

Upamtite, DeepSleep je nevjerojatna funkcija za IoT uređaje.

Međutim, ako je vaš senzor ožičen za DeepSleep, moglo bi biti teško ponovno programirati ESP pa ćemo uspostaviti još jednu kratkospojnu vezu između

GPIO16-RST.

Da, to MORA biti GPIO16, jer je to GPIO koji je ožičen za buđenje uređaja kada se sat u stvarnom vremenu isključi nakon DeepSleep -a!

Dok testirate, možete odlučiti napraviti 15 sekundi DeepSleep.

Kad sam otklanjao pogreške, premjestio bih skakač na GPIO0 kako bih mogao bljeskati svoj program.

Nakon dovršetka preuzimanja, premjestio bih kratkospojnik na GPIO16 kako bi DeepSleep radio.

Kôd za ESP naziva se TnHclient.c

Morate promijeniti SSID, lozinku i IP adresu poslužitelja.

Postoje dodatni retci koda koje možete koristiti za rješavanje problema ili testiranje postavki.

Korak 7: Poslužiteljska strana stvari

Poslužiteljska strana stvari
Poslužiteljska strana stvari
Poslužiteljska strana stvari
Poslužiteljska strana stvari

Uobičajen je nesporazum da je UDP nepouzdan, a TCP…

To je jednako glupo kao i reći da je čekić korisniji od odvijača. Oni su jednostavno različiti vrlo korisni alati i oboje imaju svoju primjenu.

Usput, bez UDP -a Internet ne bi funkcionirao … DNS se temelji na UDP -u.

Stoga sam odabrao UDP jer je vrlo lagan, jednostavan i brz.

Mislim da je moj WiFi vrlo pouzdan pa će klijent poslati najviše 3 UDP paketa ako je potvrda "OK!" se ne prima.

C-kôd za TnHserver nalazi se u datoteci TnHServer.c.

U kodu postoji nekoliko komentara koji to objašnjavaju.

Trebat će nam dodatni alati na poslužitelju: rrdtool, apache i možda tcpdump.

Da biste instalirali rrdtool na Raspbian, jednostavno instalirajte paket ovako: apt-get install rrdtool

Ako trebate otkloniti pogreške u mrežnom prometu, tcpdump će vam dobro doći apt-get install tcpdump

Trebao mi je web poslužitelj da bih mogao koristiti preglednik kako bih pregledao grafikone: apt-get install apache2

Koristio sam ovaj alat: https://rrdwizard.appspot.com/index.php da dobijem naredbu za stvaranje okrugle baze podataka. Ovo morate pokrenuti samo jednom (ako ispravite prvi put).

rrdtool izradi TnHdatabase.rrd --počni odmah-10s

--korak '1200'

'DS: Temperatura: MJERA: 1200: -20,5: 45,5'

'DS: Vlažnost: MJERA: 1200: 0: 100,0'

'RRA: PROSJEČNO: 0,5: 1: 720'

'RRA: PROSJEČNO: 0,5: 3: 960'

'RRA: PROSJEČNO: 0,5: 18: 1600'

Konačno, koristim crontab unos za ponovno pokretanje svog TnHservera svaki dan u ponoć. Pokrećem TnHserver kao normalan korisnik (tj. NIJE root) iz sigurnosnih razloga.

0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1

Radom možete provjeriti radi li TnHserver

$ ps -elf | grep TnHserver

a možete provjeriti da sluša pakete na portu 7777 tako da to učinite

$ netstat -anu

Aktivne internetske veze (poslužitelji i uspostavljeni)

Proto Recv-Q Send-Q Lokalna adresa Država strana adresa

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Na kraju CreateTnH_Graphs.sh.txt je primjer skripte za generiranje grafikona. (Generiram skripte kao root, možda to ne želite učiniti.)

Pomoću vrlo jednostavne web stranice možete gledati grafikone iz bilo kojeg preglednika na svojoj kućnoj mreži.

Preporučeni: