Talaan ng mga Nilalaman:

Home Network Temperature Sensor: 7 Mga Hakbang
Home Network Temperature Sensor: 7 Mga Hakbang

Video: Home Network Temperature Sensor: 7 Mga Hakbang

Video: Home Network Temperature Sensor: 7 Mga Hakbang
Video: How to monitor your network devices ( PC , Server , Router , Printer , ... ) | NETVN 2024, Nobyembre
Anonim
Sensor ng Temperatura ng Home Network
Sensor ng Temperatura ng Home Network

Ano ang kailangan mong malaman upang magawa ang proyektong ito:

Kailangan mong malaman tungkol sa: - Ang ilang mga kasanayan sa electronics (paghihinang)

- Linux

- Arduino IDE

(kakailanganin mong i-update ang karagdagang mga board sa IDE:

- Pag-update / pag-program ng isang board ng ESP sa pamamagitan ng Arduino IDE.

(Mayroong ilang mga magagandang tutorial na magagamit sa web)

Maaari itong magawa gamit ang isang Arduino Uno o paggamit ng isang FTDI (usb sa serial adapter).

Ginamit ko ang aking Uno dahil wala akong anumang serial port sa aking PC at wala rin akong FTDI

Hakbang 1: Pumunta sa Pamimili

Pumunta sa Pamimili
Pumunta sa Pamimili

Ano ang kakailanganin mo upang maganap ito?

Para sa Digital Temperature at Humidity Sensor:

- Alinman sa isang breadboard o isang kahalili tulad ng prototype pcb, solder, soldering iron…

- Ilang kawad

- dalawang jumper

- isang 10k Ohm risistor

- isang ESP12F (iba pang mga modelo ay maaaring gumana din …)

- isang DHT22 (medyo mas mahal kaysa sa DHT11 ngunit mas tumpak)

- 3 mga bateryang rechargable na AA at may hawak ng baterya

- isang maliit na kahon ng plastik upang ilagay ang iyong proyekto

- Sa isang susunod na yugto binabalak ko na magdagdag ng isang HT7333 na may dalawang 10uF capacitor sa pagitan ng baterya pack at ng ESP

upang patatagin ang input boltahe (VCC) sa inirekumendang 3.3V ngunit din upang maprotektahan ang ESP mula sa sobrang lakas.

Para sa bahagi ng Network:

- Ang iyong home WiFi Network

Para sa bahagi ng Server:

- Anumang Linux based system (laging nasa!)

Gumamit ako ng isang Raspberry Pi (na ginagamit ko rin bilang server para sa aking mga panlabas na IP camera.)

- Gcc tagatala upang ipunin ang iyong server code

- Rrdtool package upang maiimbak ang data at makabuo ng mga graph

- Apache (o ibang webserver)

Ang iyong paboritong PC o laptop na may Arduino IDE dito.

Hakbang 2: Pag-setup at Background

Pag-setup at Background
Pag-setup at Background

Sa bersyon na ito ng isang konektadong WiFi - hindi sabihin ang IOT - sensor ng temperatura at halumigmig na ginamit ko ang isang ESP12F, isang DHT22 at isang 3 AA na may hawak ng baterya na may mga rechargable na baterya.

Tuwing 20 minuto ang ESP ay kumukuha ng isang pagsukat mula sa DHT22 at ipinapadala ito sa isang server (isang Raspberry Pi) sa paglipas ng UDP sa aking home WiFi network. Matapos maipadala ang mga sukat, napapailalim ang ESP. Nangangahulugan ito na ang Real Time Clock lamang ng module ang mananatiling pinalakas, na nagreresulta sa isang hindi makakapag-save ng kuryente. Para sa mga 5 segundo, ang module ay nangangailangan ng tungkol sa 100mA, pagkatapos sa loob ng 20 minuto deeps Sleep 150uA lamang.

Hindi ko nais na gumamit ng anumang serbisyong nakabatay sa Internet dahil mayroon akong aking Raspberry Pi na palaging nasa anumang paraan at sa ganitong paraan nagkaroon ako ng kasiyahan na isulat din ang bahagi ng server.

Sa server (isang Raspberry Pi na tumatakbo sa Raspbian) nagsulat ako ng isang simpleng tagapakinig (server) ng UDP na nag-iimbak ng mga halaga sa isang simpleng RRD. (Round Robin Database gamit ang RRDtool ni Tobias Oetiker.)

Ang bentahe ng RRDtool ay lumikha ka ng isang beses sa iyong database at ang laki ay nananatiling pareho. Kahit na hindi mo kailangang magkaroon ng isang database server (tulad ng mySQLd) na tumatakbo sa background. Binibigyan ka ng RRDtool ng mga tool upang likhain ang Database at mabuo ang mga graphic.

Lumilikha ang aking server ng mga graph sa isang pana-panahong batayan at ipinapakita ang lahat sa isang napaka-simpleng pahina ng http. Maaari kong konsulta ang aking mga pagbabasa sa isang simpleng browser sa pamamagitan ng pagkonekta sa Apache2 webserver sa Raspberry Pi!

Sa wakas, wala akong FTDI (USB sa Serial) kaya ginamit ko ang aking Arduino UNO. Kailangan mong ikonekta ang TX at ang RX's at ang GND ng ESP at ang UNO. (Alam ko, ang iyong likas na ugali ay maaaring sabihin sa iyo na tumawid sa RX at TX… sinubukan din ito, hindi gagana.)

Hindi ako gumawa ng isang antas ng conversion (UNO: Mataas = 5V ngunit ang ESP ay karaniwang isang 3.3V aparato … Mayroong ilang mga magagandang FTDI's sa merkado kung saan maaari mo ring piliin ang iyong Mataas na antas na maging 5 o 3.3V.

Ang aking circuit ay pinalakas ng 3 AA rechargeable baterya - kaya sa katunayan 3 X 1.2V. Sa isang susunod na yugto nilalayon kong maglagay ng HT7333 sa pagitan ng baterya pack at ng circuit para sa kaligtasan; ang mga bagong singil na baterya ay maaaring magkaroon ng higit sa 1.2V at ang ESP ay dapat na pinalakas ng min. 3V at max. 3.6V. Gayundin kung magpapasya ako - sa isang sandali ng kahinaan - upang ilagay sa Alkaline baterya (3 X 1.5V = 4.5V) ang aking ESP ay hindi pinirito!

Isinasaalang-alang ko rin ang paggamit ng isang 10cm x 10cm Solar panel, ngunit ito ay hindi nagkakahalaga ng abala. Sa pamamagitan ng paggawa ng 3 mga sukat bawat oras (karaniwang 3x 5 segundo @ 100mA max. At ang natitirang oras @ 100uA), inaasahan kong mapalakas ang aking circuit sa loob ng 1 taon sa parehong mga rechargeable na baterya.

Hakbang 3: Ang Arduino - Bahagi ng ESP12

Ang Arduino - Bahagi ng ESP12
Ang Arduino - Bahagi ng ESP12
Ang Arduino - Bahagi ng ESP12
Ang Arduino - Bahagi ng ESP12

Ginawa ko ang proyektong ito sa iba't ibang mga hakbang.

Mayroong maraming mga link na makakatulong sa iyo upang mai-import ang ESP12 (aka. ESP8266) sa Arduino IDE. (Kinailangan kong gamitin ang bersyon 2.3.0 sa halip na ang pinakabagong dahil sa isang bug na maaaring malutas samantala …)

Nagsimula ako sa pamamagitan ng pag-hook up ng ESP, sa aking Arduino UNO (ginamit lamang bilang isang tulay sa pagitan ng aking PC sa pamamagitan ng USB sa Serial) sa serial interface ng ESP. Mayroong magkakahiwalay na Mga Tagubilin na nagpapaliwanag nito.

Sa natapos kong proyekto ay iniwan ko ang mga wire upang kumonekta sa Serial sakaling kailanganin kong mag-troubleshoot. RX

Pagkatapos ay kailangan mong i-wire ang iyong ESP12 tulad ng sumusunod:

Mga pin ng ESP…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

Sa una ay sinubukan kong palakasin ang aking ESP mula sa 3.3V sa UNO ngunit mabilis akong lumipat sa pagpapatakbo ng aking ESP gamit ang isang bench Power Supply ngunit maaari mo ring gamitin ang iyong baterya pack.

Ang GPIO0 ay ikinonekta ko ang isang ito gamit ang isang lumulukso sa GND upang paganahin ang flashing (= programa) ng ESP.

Unang pagsubok: iwanan ang jumper na bukas at magsimula ng isang serial monitor sa Arduino IDE (sa 115200 baud!).

Pag-ikot ng kuryente sa ESP, dapat mong makita ang ilang mga character ng basura at pagkatapos ang isang mensahe tulad ng:

Handa na ang Ai-Thinker Technology Co. Ltd

Sa mode na ito, ang ESP ay kumikilos nang kaunti tulad ng isang luma na modem. Kailangan mong gumamit ng AT utos.

Subukan ang mga sumusunod na utos:

SA + RST

at ang sumusunod na dalawang utos

SA + CWMODE = 3

OK lang

SA + CWLAP

Ito ay dapat magbigay sa iyo ng isang listahan ng lahat ng mga WiFi network sa lugar.

Kung gumagana ito handa ka na para sa susunod na hakbang.

Hakbang 4: Pagsubok sa ESP Bilang isang Network Time Protocol (NTP) Client

Pagsubok sa ESP Bilang isang Network Time Protocol (NTP) Client
Pagsubok sa ESP Bilang isang Network Time Protocol (NTP) Client
Pagsubok sa ESP Bilang isang Network Time Protocol (NTP) Client
Pagsubok sa ESP Bilang isang Network Time Protocol (NTP) Client

Sa Arduino IDE, sa ilalim ng File, Mga Halimbawa, ESP8266WiFi, i-load ang NTPClient.

Kailangan ng mga menor de edad na pag-aayos upang gumana ito; kailangan mong ilagay sa iyong SSID at password ng iyong WiFi network.

Ngayon ilagay ang jumper, pagpapaikli ng GPIO0 sa GND.

Pag-ikot ng kuryente sa ESP at i-upload ang sketch sa ESP.

Pagkatapos ng pagtitipon, dapat magsimula ang pag-upload sa ESP. Ang asul na LED sa ESP ay mabilis na kumikislap habang ang code ay nai-download.

Napansin kong kailangan kong maglaro nang kaunti sa pag-restart ng IDE, pag-restart ng ESP bago gumana ang pag-upload.

Bago mo simulang i-compile / i-upload ang sketch, tiyaking isara ang serial console (= serial monitor) sapagkat pipigilan ka nitong gawin ang pag-upload.

Kapag nagtagumpay ang pag-upload, maaari mong muling buksan ang serial monitor upang makita ang ESP na mabisang nakakakuha ng oras mula sa Internet.

Mahusay, na-program mo ang iyong ESP, nakakonekta sa iyong WiFi at nakakuha ng oras mula sa Internet.

Susunod na hakbang susubukan namin ang DHT22.

Hakbang 5: Pagsubok sa DHT22 Sensor

Pagsubok sa DHT22 Sensor
Pagsubok sa DHT22 Sensor

Ngayon ang ilang dagdag na mga kable ay kinakailangan.

Mga pin ng DHT … Ikonekta ang pin 1 (sa kaliwa) ng sensor sa VCC (3.3V)

Ikonekta ang pin 2 ESP GPIO5 (DHTPIN sa sketch)

Ikonekta ang pin 4 (sa kanan) ng sensor sa GROUND

Ikonekta ang isang risistor na 10K mula sa pin 2 (data) hanggang sa pin 1 (lakas) ng sensor.

Katulad ng pagsubok na NTP, hanapin ang sketch ng DHTtester, at i-tweak ito sa sumusunod na paraan:

#define DHTPIN 5 // pinili namin ang GPIO5 upang kumonekta sa sensor # tukuyin ang DHTTYPE DHT22 // dahil gumagamit kami ng isang DHT22 ngunit ang code / library na ito ay angkop din para sa DHT11

Muli, isara ang serial monitor, ikot ng kuryente ang ESP at i-compile at i-flash ang ESP.

Kung maayos ang lahat dapat mong makita ang mga sukat na lilitaw sa serial monitor.

Maaari kang maglaro nang kaunti gamit ang sensor. Kung huminga ka rito, makikita mo ang pagtaas ng halumigmig.

Kung mayroon kang isang (hindi LED) desk lamp, maaari kang lumiwanag sa sensor upang mapainit ito nang kaunti.

Malaki! Gumagana ngayon ang dalawang malalaking bahagi ng sensor.

Sa susunod na hakbang ay magkomento ako sa huling code.

Hakbang 6: Pagsasama-sama nito…

Pagsasama-sama nito…
Pagsasama-sama nito…

Muli ang ilang dagdag na mga kable … ito ay upang gawing posible ang DeepS Sleep.

Tandaan, ang DeepSleep ay isang hindi kapani-paniwala na pag-andar para sa mga IoT device.

Gayunpaman kung ang iyong sensor ay hardwired para sa DeepS Sleep, maaaring maging mahirap na muling pag-programang muli ang ESP kaya gagawa kami ng isa pang koneksyon sa jumper sa pagitan ng

GPIO16-RST.

Oo DAPAT na maging GPIO16, dahil iyon ang GPIO na hardwired upang gisingin ang aparato kapag ang Real Time Clock ay namatay pagkatapos ng DeepS Sleep!

Habang sinusubukan mo, maaari kang magpasya na gumawa ng isang 15 segundo na DeepS Sleep.

Kapag nagde-debug ako, ililipat ko ang jumper sa GPIO0 upang ma-flash ko ang aking programa.

Sa pagkumpleto ng pag-download, ililipat ko ang jumper sa GPIO16 upang gumana ang DeepS Sleep.

Ang code para sa ESP ay tinatawag na TnHclient.c

Kailangan mong baguhin ang iyong SSID, Password at ang IP address ng iyong server.

Mayroong mga karagdagang linya ng code na maaari mong gamitin upang i-troubleshoot o subukan ang iyong pag-set up.

Hakbang 7: Ang Bahagi ng Server ng Mga Bagay

Ang Side ng Mga Bagay ng Server
Ang Side ng Mga Bagay ng Server
Ang Server Side ng Mga Bagay
Ang Server Side ng Mga Bagay

Ito ay isang pangkaraniwang hindi pagkakaunawaan na ang UDP ay hindi maaasahan at ang TCP ay…

Iyon ay tulad ng ulok sa pagsasabi ng martilyo ay mas kapaki-pakinabang kaysa sa isang distornilyador. Ang mga ito ay simpleng magkakaibang mga kapaki-pakinabang na tool at pareho silang may mga gamit.

Sa pamamagitan ng paraan, nang walang UDP ang Internet ay hindi gagana … Ang DNS ay batay sa UDP.

Kaya, pinili ko ang UDP sapagkat ito ay magaan, madali at mabilis.

May posibilidad akong isipin na ang aking WiFi ay lubos na maaasahan kaya magpapadala ang kliyente ng halos 3 mga packet ng UDP kung ang pagkilala na "OK!" ay hindi natanggap.

Ang C-code para sa TnHserver ay nasa TnHServer.c file.

Mayroong maraming mga puna sa code na nagpapaliwanag nito.

Kakailanganin namin ang ilang mga karagdagang tool sa server: rrdtool, apache at marahil tcpdump.

Upang mai-install ang rrdtool sa Raspbian maaari mo lamang mai-install ang package na tulad nito: apt-get install rrdtool

Kung kailangan mong i-debug ang trapiko sa network, ang tcpdump ay madaling gamiting apt-get install tcpdump

Kailangan ko ng isang webserver upang magamit ang isang browser upang kumonsulta sa mga graph: apt-get install apache2

Ginamit ko ang tool na ito: https://rrdwizard.appspot.com/index.php upang makuha ang utos na likhain ang Round Robin Database. Minsan mo lang itong patakbuhin (kung nakakuha ka ng tama sa unang pagkakataon).

rrdtool lumikha ng TnHdatabase.rrd --start now-10s

--step '1200'

'DS: Temperatura: GAUGE: 1200: -20.5: 45.5'

'DS: Humidity: GAUGE: 1200: 0: 100.0'

'RRA: AVERAGE: 0.5: 1: 720'

'RRA: AVERAGE: 0.5: 3: 960'

'RRA: AVERAGE: 0.5: 18: 1600'

Sa wakas, gumagamit ako ng isang crontab entry upang muling simulan ang aking TnHserver araw-araw sa hatinggabi. Pinatakbo ko ang TnHserver bilang isang normal na gumagamit (ibig sabihin HINDI root) bilang isang pag-iingat sa seguridad.

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

Maaari mong suriin na ang TnHserver ay tumatakbo sa pamamagitan ng paggawa

$ ps -elf | grep TnHserver

at maaari mong i-verify na nakikinig ito para sa mga packet sa port 7777 sa pamamagitan ng paggawa

$ netstat -anu

Mga aktibong koneksyon sa Internet (mga server at itinatag)

Proto Recv-Q Send-Q Lokal na Address Pang-dayuhang Address ng Estado

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Sa wakas ang CreateTnH_Graphs.sh.txt ay isang halimbawa ng script upang makabuo ng mga graphic. (Binubuo ko ang mga script bilang ugat, baka ayaw mong gawin ito.)

Gamit ang isang napaka-simpleng webpage maaari mong panoorin ang mga grap mula sa anumang browser sa iyong home network.

Inirerekumendang: