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, Novembar
Anonim
Senzor temperature kućne mreže
Senzor temperature kućne mreže

Šta 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 je dostupno nekoliko lijepih vodiča)

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

Ici u kupovinu
Ici u kupovinu

Šta će vam trebati da se ovo dogodi?

Za digitalni senzor temperature i vlažnosti:

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

- Žica

- dva skakača

- otpornik od 10 k Ohma

- ESP12F (i drugi modeli mogu raditi …)

- DHT22 (malo skuplji od DHT11, ali precizniji)

- 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žni dio:

- Bilo koji sistem zasnovan na Linuxu (uvijek uključen!)

Koristio sam Raspberry Pi (koji koristim i kao server za svoje vanjske IP kamere.)

- gcc kompajler za kompajliranje koda vašeg servera

- rrdtool paket za pohranu podataka i generiranje grafikona

- apache (ili neki drugi web server)

Vaš omiljeni računar ili laptop sa 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 sa DHT22 i šalje ga na server (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 otprilike 5 sekundi, modulu je potrebno oko 100mA, a zatim tokom 20 minuta duboki san samo 150uA.

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

Na serveru (Raspberry Pi sa Raspbian -om) napisao sam jednostavan UDP slušalac (server) koji čuva vrednosti u jednostavnom RRD -u. (Round Robin baza podataka pomoću RRDtool -a od Tobiasa Oetikera.)

Prednost RRDtool -a 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 kreiranje baze podataka i generiranje grafikona.

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

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

Nisam napravio konverziju na nivou (UNO: Visoko = 5V, ali ESP je u osnovi 3.3V uređaj … Na tržištu postoje lijepi FTDI -i gdje čak možete odabrati svoj visoki nivo na 5 ili 3.3V.

Moje kolo 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đe, ako u trenutku slabosti odlučim da ubacim alkalne baterije (3 X 1,5 V = 4,5 V), moj ESP se neće pržiti!

Razmišljao sam i o korištenju solarnih panela 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 projekat sam 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čunara preko USB -a na serijski) na ESP serijsko sučelje. Postoje zasebne instrukcije koje to objašnjavaju.

U svom završenom projektu ostavio sam žice za povezivanje sa serijskim brojem 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 sa stonim napajanjem, 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 b / h!).

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

uredu

AT+CWLAP

Ovo bi vam trebalo dati popis svih WiFi mreža u 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, pod Datoteka, Primjeri, ESP8266WiFi, učitajte NTPClient.

Da bi funkcionirao, potrebna su manja podešavanja; morate unijeti svoj SSID i lozinku svoje WiFi mreže.

Sada postavite kratkospojnik, spojite GPIO0 na GND.

Uključite ciklusom ESP i otpremite skicu u ESP.

Nakon kompilacije, prijenos na ESP bi trebao početi. Plava LED dioda na ESP -u će brzo treptati tokom 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 postavljanju.

Nakon što prijenos uspije, možete ponovo otvoriti serijski monitor kako biste vidjeli kako ESP efikasno dobiva vrijeme s Interneta.

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

Sljedeći korak ćemo testirati DHT22.

Korak 5: Testiranje senzora DHT22

Testiranje senzora DHT22
Testiranje senzora DHT22

Sada je potrebno dodatno ožičenje.

DHT pinovi… Spojite pin 1 (s lijeve strane) senzora na VCC (3,3 V)

Spojite pin 2 ESP GPIO5 (DHTPIN na skici)

Spojite pin 4 (desno) 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 kod/biblioteka je također pogodan za DHT11

Ponovo zatvorite serijski monitor, uključite ESP i uključite i kompajlirajte 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 lampu, možete zasvijetliti senzor da ga malo zagrije.

Odlično! 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, možda će biti teško reprogramirati 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 da napravite 15 sekundi DeepSleep.

Kada sam otklanjao greške, premjestio bih kratkospojnik na GPIO0 kako bih mogao bljeskati svoj program.

Po završetku preuzimanja, premjestio bih kratkospojnik na GPIO16 kako bi DeepSleep radio.

Kod za ESP se zove TnHclient.c

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

Postoje dodatne linije koda koje možete koristiti za rješavanje problema ili testiranje vašeg postavljanja.

Korak 7: Poslužiteljska strana stvari

Na strani servera stvari
Na strani servera stvari
Na strani servera stvari
Na strani servera 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 upotrebu.

Inače, bez UDP -a Internet ne bi funkcionirao … DNS je baziran 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!" nije primljen.

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

U kodu postoji nekoliko komentara koji to objašnjavaju.

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

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

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

Trebao mi je web server da bih mogao koristiti preglednik kako bih mogao pregledati 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 ste to uspjeli prvi put).

rrdtool kreira TnHdatabase.rrd --počni sada-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. NE root) iz sigurnosnih razloga.

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

Možete provjeriti radi li TnHserver na sljedeći način

$ ps -elf | grep TnHserver

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

$ netstat -anu

Aktivne internetske veze (serveri 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:*

Konačno, 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 vašoj kućnoj mreži.

Preporučuje se: