Kazalo:
- 1. korak: Pojdite v nakupovanje
- 2. korak: Nastavitev in ozadje
- 3. korak: Arduino - del ESP12
- 4. korak: Preizkusite ESP kot odjemalca omrežnega časovnega protokola (NTP)
- 5. korak: Preizkusite senzor DHT22
- Korak 6: Sestavite skupaj …
- 7. korak: Strežniška stran stvari
Video: Senzor temperature domačega omrežja: 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
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
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
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
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)
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
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 …
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
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:
Napajanje izven omrežja: 5 korakov (s slikami)
Napajanje izven omrežja: Ta projekt je tiha, v zaprtih prostorih prijazna alternativa generatorju na plin. Če polnite naprave, uporabljate svetilke ali celo uporabljate električni motor za omejen čas, je to napajanje iz omrežja odličen spremljevalec za kampiranje ali nujno pomoč
DIY mrežni pretvornik (ne napaja omrežja) UPS Alternativa: 7 korakov (s slikami)
DIY Mrežni vezani pretvornik (ne napaja omrežja) UPS alternativa: To je nadaljevanje mojega drugega navodila za izdelavo mrežnega pretvornika, ki se ne napaja nazaj v omrežje, saj je to zdaj vedno mogoče na nekaterih območjih kot projekt DIY in nekatera mesta ne dovoljujejo hranjenja tja g
Natančna frekvenca 1 Hz iz omrežja AC: 9 korakov
Natančna frekvenca 1 Hz iz omrežja AC: Linijska frekvenca je, odvisno od države, 50Hz ali 60Hz. Ta frekvenca ima kratkoročno majhna nihanja, vendar jo elektrarna dnevno kompenzira, kar povzroči precej natančen frekvenčni vir za številne aplikacije za merjenje časa
Nastavitev skritega omrežja Wi-Fi: 6 korakov
Nastavitev skritega omrežja Wi-Fi: Skrito omrežje Wi-Fi je v pomoč iz nekaj razlogov. Prva je za podjetja. Skrito poslovno omrežje lahko dovoli, da se naprave podjetja povežejo z njim, nato pa z nastavitvijo vidnega gostujočega omrežja lahko nedvoumno zagotovite brezplačen W-Fi
Reciklirana mešalna enota Tesla CD-turbina Power-Boost izven omrežja: 8 korakov (s slikami)
Reciklirana mešalna enota Tesla CD Turbine Power-Boost izven omrežja: Spodnji film prikazuje uspešno uporabo te mešane enote Tesla CD Turbine doma. Recirkuliranje Tesline CD turbine z zračnim ojačevalnikom Če se ta videoposnetek ne predvaja, kliknite tukaj namesto tega Ta navodila vam bodo pokazala, kako narediti off-the-grid, T