Kazalo:

Senzor temperature domačega omrežja: 7 korakov
Senzor temperature domačega omrežja: 7 korakov

Video: Senzor temperature domačega omrežja: 7 korakov

Video: Senzor temperature domačega omrežja: 7 korakov
Video: Как проверить генератор. За 3 минуты, БЕЗ ПРИБОРОВ и умений. 2024, November
Anonim
Senzor temperature domačega omrežja
Senzor temperature domačega omrežja

Kaj morate vedeti za izdelavo tega projekta:

Morate vedeti o:- nekaterih elektronskih veščinah (spajkanje)

- Linux

- Arduino IDE

(v IDE -ju boste morali posodobiti dodatne plošče:

- posodabljanje/programiranje plošče ESP prek Arduino IDE.

(na spletu je na voljo nekaj lepih vaj)

To lahko storite z uporabo Arduino Uno ali z uporabo FTDI (adapter USB -serijski).

Uno sem uporabil, ker v računalniku nisem imel nobenih serijskih vrat niti FTDI

1. korak: Pojdite v nakupovanje

Iti po nakupih
Iti po nakupih

Kaj boste potrebovali, da se to zgodi?

Za digitalni senzor temperature in vlažnosti:

- Ohišje ali alternativa, kot je prototip tiskane plošče, spajkanje, spajkalnik …

- Nekaj žice

- dva skakalca

- 10k ohmski upor

- ESP12F (morda delujejo tudi drugi modeli …)

- DHT22 (nekoliko dražji od DHT11, vendar natančnejši)

- 3 baterije za polnjenje AA in držalo za baterije

- majhna plastična škatla, v katero lahko postavite svoj projekt

- V kasnejši fazi nameravam med baterijo in ESP dodati HT7333 z dvema 10uF kondenzatorjema

za stabilizacijo vhodne napetosti (VCC) na priporočenih 3,3 V, pa tudi za zaščito ESP pred prenapetostjo.

Za del omrežja:

- Vaše domače omrežje WiFi

Za del strežnika:

- Vsak sistem, ki temelji na Linuxu (vedno vklopljen!)

Uporabil sem Raspberry Pi (ki ga uporabljam tudi kot strežnik za svoje zunanje IP kamere.)

- prevajalnik gcc za sestavo kode strežnika

- paket rrdtool za shranjevanje podatkov in ustvarjanje grafov

- apache (ali drug spletni strežnik)

Vaš najljubši računalnik ali prenosni računalnik z Arduino IDE na njem.

2. korak: Nastavitev in ozadje

Nastavitev in ozadje
Nastavitev in ozadje

V tej različici povezanega WiFi - da ne rečem IOT - senzorja temperature in vlažnosti sem uporabil ESP12F, DHT22 in držalo za baterije 3 AA s polnilnimi baterijami.

ESP vsakih 20 minut izvede meritev z DHT22 in jo pošlje na strežnik (Raspberry Pi) prek UDP v mojem domačem omrežju WiFi. Ko so meritve poslane, ESP preide v globoki spanec. To pomeni, da ostane vklopljena samo ura v realnem času, kar pomeni neverjeten prihranek energije. Za približno 5 sekund modul potrebuje približno 100 mA, nato pa v 20 minutah globoko zaspi le 150uA.

Nisem hotel uporabljati nobene internetne storitve, ker imam svoj Raspberry Pi, ki je tako ali tako vedno vklopljen in na ta način sem z veseljem napisal tudi strežniški del.

Na strežniku (Raspberry Pi, ki izvaja Raspbian) sem napisal preprost poslušalnik UDP (strežnik), ki shranjuje vrednosti v preprost RRD. (Baza podatkov Round Robin z uporabo orodja RRDtool Tobiasa Oetikerja.)

Prednost RRDtool je, da svojo bazo podatkov ustvarite enkrat, velikost pa ostane enaka. V nasprotnem primeru vam ni treba imeti strežnika baz podatkov (na primer mySQLd), ki deluje v ozadju. RRDtool vam ponuja orodja za ustvarjanje baze podatkov in ustvarjanje grafov.

Moj strežnik občasno ustvarja grafe in prikaže vse na zelo preprosti strani http. S svojimi odčitki se lahko posvetujem s preprostim brskalnikom tako, da se povežem s spletnim strežnikom Apache2 na Raspberry Pi!

Nazadnje nisem imel FTDI (USB na serijski), zato sem uporabil svoj Arduino UNO. Povezati morate TX in RX ter GND ESP in UNO. (Vem, vaš instinkt bi vam lahko rekel, da prečkate RX -je in TX -e … tudi poskusil, ne deluje.)

Nisem naredil ravni pretvorbe (UNO: High = 5V, vendar je ESP v osnovi 3.3V naprava … Na trgu je nekaj lepih FTDI -jev, kjer lahko celo izberete svojo visoko stopnjo 5 ali 3.3V.

Moje vezje napajajo 3 baterije za ponovno polnjenje AA - torej dejansko 3 X 1,2V. V kasnejši fazi nameravam zaradi varnosti med baterijo in vezje postaviti HT7333; napolnjene baterije imajo lahko več kot 1,2 V, ESP pa je treba napajati z min. 3V in maks. 3.6V. Tudi če se odločim - v trenutku šibkosti - vstaviti alkalne baterije (3 X 1,5 V = 4,5 V), moj ESP ne bo ocvrt!

Razmišljal sem tudi o uporabi sončne plošče 10 cm x 10 cm, vendar to ni bilo vredno težav. S 3 meritvami na uro (v bistvu 3x 5 sekund pri največ 100 mA in preostanek časa pri 100 uA) upam, da bom svoje vezje napajal 1 leto na istih akumulatorskih baterijah.

3. korak: Arduino - del ESP12

Arduino - del ESP12
Arduino - del ESP12
Arduino - del ESP12
Arduino - del ESP12

Ta projekt sem naredil v različnih korakih.

Obstaja več povezav, ki vam pomagajo uvoziti ESP12 (aka. ESP8266) v Arduino IDE. (Namesto najnovejše sem moral uporabiti različico 2.3.0 zaradi hrošča, ki je bil medtem morda odpravljen …)

Začel sem tako, da sem priključil ESP prek svojega Arduino UNO (ki se uporablja samo kot most med računalnikom prek USB -ja do serijskega) do serijskega vmesnika ESP. To pojasnjujejo ločena navodila.

V svojem končanem projektu sem pustil žice za povezavo s serijsko enoto, če bom kdaj potreboval odpravljanje težav. RX

Nato morate svoj ESP12 priključiti na naslednji način:

Zatiči ESP…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

Sprva sem poskušal napajati svoj ESP iz 3.3V na UNO, vendar sem kmalu prešel na napajanje svojega ESP z namiznim napajalnikom, vendar lahko uporabite tudi baterijo.

GPIO0 To sem povezal z mostičkom na GND, da omogočim utripanje (= programiranje) ESP.

Prvi test: pustite odprt mostiček in zaženite serijski monitor v Arduino IDE (pri 115200 baud!).

Ko vklopite ESP, bi morali videti nekaj znakov smeti in nato sporočilo, kot je:

Ai-Thinker Technology Co. Ltd. pripravljeno

V tem načinu ESP deluje nekoliko kot staromoden modem. Uporabiti morate ukaze AT.

Poskusite naslednje ukaze:

AT+RST

in naslednja dva ukaza

AT+CWMODE = 3

v redu

AT+CWLAP

To bi vam moralo dati seznam vseh omrežij WiFi na tem območju.

Če to deluje, ste pripravljeni na naslednji korak.

4. korak: Preizkusite ESP kot odjemalca omrežnega časovnega protokola (NTP)

Testiranje ESP kot odjemalca omrežnega časovnega protokola (NTP)
Testiranje ESP kot odjemalca omrežnega časovnega protokola (NTP)
Testiranje ESP kot odjemalca omrežnega časovnega protokola (NTP)
Testiranje ESP kot odjemalca omrežnega časovnega protokola (NTP)

V Arduino IDE pod Datoteka, Primeri, ESP8266WiFi naložite NTPClient.

Za njegovo delovanje so potrebni manjši popravki; Vnesti morate svoj SSID in geslo za omrežje WiFi.

Sedaj postavite mostiček in priklopite GPIO0 na GND.

Vklopite ESP in naložite skico v ESP.

Po kompilaciji se mora začeti nalaganje v ESP. Med prenosom kode bo modra LED na ESP hitro utripala.

Opazil sem, da se moram malce poigrati z ponovnim zagonom IDE, ponovnim zagonom ESP, preden bo nalaganje delovalo.

Preden začnete sestavljati/nalagati skico, zaprite serijsko konzolo (= serijski monitor), ker vam to ne bo omogočilo nalaganja.

Ko je nalaganje uspešno, lahko znova odprete serijski monitor in si ogledate, kako ESP učinkovito pridobiva čas iz interneta.

Odlično, programirali ste svoj ESP, povezani z WiFi in dobili čas iz interneta.

Naslednji korak bomo preizkusili DHT22.

5. korak: Preizkusite senzor DHT22

Testiranje senzorja DHT22
Testiranje senzorja DHT22

Zdaj je potrebno dodatno ožičenje.

Zatiči DHT… Pin 1 (na levi) senzorja priključite na VCC (3,3 V)

Priključite pin 2 ESP GPIO5 (DHTPIN na skici)

Priključite nožico 4 (na desni) senzorja na GROUND

Priključite 10K upor iz zatiča 2 (podatki) na zatič 1 (moč) senzorja.

Podobno kot pri testu NTP poiščite skico DHTtester in jo spremenite na naslednji način:

#define DHTPIN 5 // za povezavo s senzorjem smo izbrali GPIO5#define DHTTYPE DHT22 // ker uporabljamo DHT22, vendar je ta koda/knjižnica primerna tudi za DHT11

Ponovno zaprite serijski monitor, vklopite ESP in sestavite in utripajte ESP.

Če je vse v redu, bi morali videti meritve na serijskem monitorju.

S senzorjem se lahko malo poigrate. Če dihate na njem, boste videli, da se vlaga dviga.

Če imate (ne LED) namizno svetilko, lahko senzor osvetlite, da se nekoliko segreje.

Super! Dva velika dela senzorja zdaj delujeta.

V naslednjem koraku bom komentiral končno kodo.

Korak 6: Sestavite skupaj …

Sestavljanje skupaj…
Sestavljanje skupaj…

Spet nekaj dodatnih napeljav … to bo omogočilo DeepSleep.

Ne pozabite, da je DeepSleep neverjetna funkcija za naprave IoT.

Če pa je vaš senzor ožičen za DeepSleep, bo morda težko ponovno programirati ESP, zato bomo vzpostavili še eno mostično povezavo med

GPIO16-RST.

Da, to mora biti GPIO16, ker je to GPIO, ki je ožičen, da prebudi napravo, ko ura po realnem času ugasne po DeepSleep!

Med testiranjem se lahko odločite za 15 -sekundni DeepSleep.

Ko sem odpravljal napake, sem skakalnik premaknil v GPIO0, da sem lahko utripal program.

Po končanem prenosu bi skakalec premaknil v GPIO16, da bi DeepSleep deloval.

Koda za ESP se imenuje TnHclient.c

Spremeniti morate SSID, geslo in naslov IP strežnika.

Obstajajo dodatne vrstice kode, ki jih lahko uporabite za odpravljanje težav ali preizkus nastavitev.

7. korak: Strežniška stran stvari

Strežniška stran stvari
Strežniška stran stvari
Strežniška stran stvari
Strežniška stran stvari

Pogost nesporazum je, da je UDP nezanesljiv, TCP pa …

To je prav tako neumno, kot če bi rekli, da je kladivo bolj uporabno kot izvijač. So preprosto različna zelo uporabna orodja in oba imata svojo uporabo.

Mimogrede, brez UDP internet ne bi deloval … DNS temelji na UDP.

Zato sem se odločil za UDP, ker je zelo lahek, enostaven in hiter.

Mislim, da je moj WiFi zelo zanesljiv, zato bo odjemalec poslal največ 3 pakete UDP, če bo potrditev "OK!" ni prejeto.

Koda C za strežnik TnHserver je v datoteki TnHServer.c.

V kodi je več pripomb, ki to pojasnjujejo.

Na strežniku bomo potrebovali nekaj dodatnih orodij: rrdtool, apache in morda tcpdump.

Če želite namestiti rrdtool na Raspbian, lahko preprosto namestite paket tako: apt-get install rrdtool

Če morate odpraviti napake v omrežnem prometu, je tcpdump priročen apt-get install tcpdump

Za ogled brskalnika sem potreboval spletni strežnik, da sem lahko brskal po grafih: apt-get install apache2

Uporabil sem to orodje: https://rrdwizard.appspot.com/index.php, da dobim ukaz za ustvarjanje zbirke podatkov okroglega kroga. To morate zagnati le enkrat (če vam uspe prvič).

rrdtool ustvari TnHdatabase.rrd-začni zdaj-10s

-korak '1200'

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

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

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

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

"RRA: POVPREČNO: 0,5: 18: 1600"

Nazadnje uporabljam vnos crontab za ponovni zagon strežnika TnHserver vsak dan ob polnoči. TnHserver izvajam kot običajen uporabnik (tj. NE root) kot varnostni ukrep.

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

Delovanje strežnika TnHserver lahko preverite tako, da

$ ps -elf | grep TnHserver

in tako lahko preverite, ali posluša pakete na vratih 7777

$ netstat -anu

Aktivne internetne povezave (strežniki in vzpostavljene)

Proto Recv-Q Send-Q Lokalni naslov Država tujega naslova

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Končno CreateTnH_Graphs.sh.txt je primer skripta za ustvarjanje grafov. (Skripte ustvarim kot root, tega morda ne želite storiti.)

Z zelo preprosto spletno stranjo si lahko ogledate grafikone iz katerega koli brskalnika v vašem domačem omrežju.

Priporočena: