Sadržaj:
- Korak 1: Idite u kupovinu
- Korak 2: Postavljanje i pozadina
- Korak 3: Arduino - dio ESP12
- Korak 4: Testiranje ESP -a kao klijenta mrežnog vremenskog protokola (NTP)
- Korak 5: Testiranje osjetnika DHT22
- Korak 6: Sastavite to zajedno …
- Korak 7: Poslužiteljska strana stvari
Video: Senzor temperature kućne mreže: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:34
Š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
Š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
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
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)
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
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 …
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
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:
Najučinkovitiji solarni pretvarač izvan mreže: 3 koraka (sa slikama)
Najefikasniji solarni pretvarač izvan mreže: Solarna energija je budućnost. Ploče mogu trajati mnogo desetljeća. Recimo da imate solarni sustav izvan mreže. Imate hladnjak/zamrzivač i hrpu drugih stvari za pokretanje u vašoj prekrasnoj udaljenoj kabini. Ne možete si priuštiti bacanje energije
ALAT ZA MREŽNE LED MREŽE: 22 koraka
ALAT ZA LED MESH TAG:- koristi move MESH tag- philips HUE svjetla- Drveno kućište (laserski izrezano)
Kako prenijeti snimke zaslona GTA 5 (PS3) na društvene mreže: 5 koraka
Kako prenijeti snimke zaslona GTA 5 (PS3) na društvene mreže: Kao što znam da PS3 ne podržava snimke zaslona na GTA V. Ali pronašao sam način da napravim snimke zaslona i preuzmem ih na svoj telefon i objavim na Instagramu
Arduino senzor temperature i vlažnosti na solarni pogon kao 433mhz Oregonski senzor: 6 koraka
Arduino senzor temperature i vlažnosti na solarni pogon kao 433mhz Oregonski senzor: Ovo je konstrukcija senzora temperature i vlažnosti na solarnu energiju. Senzor emulira 433mhz Oregonski senzor i vidljiv je na Telldus Net gatewayu. Što vam je potrebno: 1x " 10-LED Senzor pokreta solarne energije " s Ebaya. Provjerite piše li baterija od 3,7 V
Senzor vrata na baterije s integracijom kućne automatizacije, WiFi i ESP-SADA: 5 koraka (sa slikama)
Senzor vrata na baterijski pogon s integracijom kućne automatizacije, WiFi i ESP-SADA: U ovom uputstvu pokazat ću vam kako sam napravio senzor vrata na baterije s integracijom kućne automatizacije. Vidio sam neke druge lijepe senzore i alarmne sustave, ali sam ih želio sam napraviti. Moji ciljevi: Senzor koji otkriva i prijavljuje doo