Orodha ya maudhui:

Sensorer ya Joto la Mtandao wa Nyumbani: Hatua 7
Sensorer ya Joto la Mtandao wa Nyumbani: Hatua 7

Video: Sensorer ya Joto la Mtandao wa Nyumbani: Hatua 7

Video: Sensorer ya Joto la Mtandao wa Nyumbani: Hatua 7
Video: VIDEO;MREMBO AKIFANYA NA CHUPA YA FANTA 2024, Novemba
Anonim
Sensorer ya Joto la Mtandao wa Nyumba
Sensorer ya Joto la Mtandao wa Nyumba

Je! Unahitaji kujua nini ili kufanya mradi huu:

Unahitaji kujua kuhusu: - Baadhi ya ujuzi wa umeme (soldering)

- Linux

- IDU ya Arduino

(utahitaji kusasisha bodi za ziada kwenye IDE:

- kusasisha / kupanga bodi ya ESP kupitia Arduino IDE.

(kuna mafunzo kadhaa mazuri kwenye wavuti)

Hii inaweza kufanywa kwa kutumia Arduino Uno au kutumia FTDI (usb kwa adapta ya serial).

Nilitumia Uno yangu kwa sababu sikuwa na bandari yoyote ya serial kwenye PC yangu wala sikuwa na FTDI

Hatua ya 1: Nenda Ununuzi

Nenda Ununuzi
Nenda Ununuzi

Je! Utahitaji nini kufanya hii kutokea?

Kwa Joto la Dijiti na Sura ya Unyevu:

- Ama ubao wa mkate au mbadala kama mfano pcb, solder, chuma cha kutengeneza …

- Baadhi ya waya

- wanarukaji wawili

- kipinzani cha 10k Ohm

- ESP12F (aina zingine zinaweza kufanya kazi pia…)

- DHT22 (ghali zaidi kuliko DHT11 lakini sahihi zaidi)

- 3 AA betri inayoweza kuchajiwa na mmiliki wa betri

- sanduku la plastiki kuweka mradi wako

- Katika hatua ya baadaye nina mpango wa kuongeza HT7333 na capacitors mbili za 10uF kati ya kifurushi cha betri na ESP

kutuliza voltage ya uingizaji (VCC) kwa 3.3V iliyopendekezwa lakini pia kulinda ESP kutokana na ushuru mwingi.

Kwa sehemu ya Mtandao:

- Mtandao wako wa WiFi nyumbani

Kwa sehemu ya Seva:

- Mfumo wowote wa Linux (kila wakati!)

Nilitumia Raspberry Pi (ambayo mimi pia hutumia kama seva kwa kamera zangu za IP za nje.)

- mkusanyaji wa gcc kukusanya nambari yako ya seva

- kifurushi cha rrdtool kuhifadhi data na kutoa grafu

- apache (au seva nyingine ya wavuti)

PC yako ya kupenda au kompyuta ndogo na Arduino IDE juu yake.

Hatua ya 2: Usanidi na usuli

Usanidi na Usuli
Usanidi na Usuli

Katika toleo hili la WiFi iliyounganishwa - bila kusema IOT - hali ya joto na unyevu nilitumia ESP12F, DHT22 na mmiliki wa betri 3 AA na betri zinazoweza kuchajiwa.

Kila dakika 20 ESP inachukua kipimo kutoka kwa DHT22 na kuipeleka kwa seva (Raspberry Pi) juu ya UDP kwenye mtandao wangu wa nyumbani wa WiFi. Baada ya vipimo kupelekwa, ESP huenda kwenye usingizi mzito. Hii inamaanisha kuwa ni Saa Saa Halisi tu ya moduli inayobaki na nguvu, na kusababisha kuokoa nguvu kwa nguvu. Kwa sekunde 5, moduli inahitaji karibu 100mA, halafu wakati wa dakika 20 lala tu 150uA.

Sikutaka kutumia huduma yoyote ya mtandao kwa sababu nina Raspberry yangu Pi ambayo huwa iko kila wakati na kwa njia hii nilikuwa na raha ya kuandika sehemu ya seva pia.

Kwenye seva (Raspberry Pi inayoendesha Raspbian) nimeandika msikilizaji rahisi wa UDP (seva) ambayo huhifadhi maadili katika RRD rahisi. (Hifadhidata ya Robin Round kutumia RRDtool na Tobias Oetiker.)

Faida ya RRDtool ni kwamba unaunda hifadhidata yako mara moja na saizi inabaki ile ile. Wengine hauitaji kuwa na seva ya hifadhidata (kama mySQLd) inayoendesha nyuma. RRDtool inakupa zana za kuunda Hifadhidata na kutengeneza grafu.

Seva yangu inaunda grafu mara kwa mara na huonyesha kila kitu katika ukurasa rahisi sana wa http. Ninaweza kusoma usomaji wangu na kivinjari rahisi kwa kuunganisha kwenye seva ya wavuti ya Apache2 kwenye Raspberry Pi!

Mwishowe, sikuwa na FTDI (USB hadi Serial) kwa hivyo nilitumia Arduino UNO yangu. Unahitaji kuunganisha TX na RX's na GND ya ESP na UNO. (Najua, silika yako inaweza kukuambia uvuke RX's na TX's … ulijaribu pia, haifanyi kazi.)

Sikufanya ubadilishaji wa kiwango (UNO: High = 5V lakini ESP kimsingi ni kifaa cha 3.3V… Kuna FTDI nzuri kwenye soko ambapo unaweza hata kuchagua kiwango chako cha juu kuwa 5 au 3.3V.

Mzunguko wangu unatumiwa na betri 3 za recharge za AA - kwa hivyo kwa kweli 3 X 1.2V. Katika awamu ya baadaye ninakusudia kuweka HT7333 kati ya kifurushi cha betri na mzunguko wa usalama; betri mpya zilizochajiwa zinaweza kuwa na zaidi ya 1.2V na ESP inapaswa kuwezeshwa na min. 3V na juu. 3.6V. Pia ikiwa nitaamua - kwa wakati wa udhaifu - kuweka betri za Alkali (3 X 1.5V = 4.5V) ESP yangu haitakaangwa!

Nilifikiria pia kutumia jopo la jua la 10cm x 10cm, lakini haikustahili shida. Kwa kufanya vipimo 3 kwa saa (kimsingi sekunde 3x 5 @ 100mA max. Na wakati wote @ 100uA), ninatumahi kuwezesha mzunguko wangu kwa mwaka 1 kwenye betri zile zile zinazoweza kuchajiwa tena.

Hatua ya 3: Sehemu ya Arduino - ESP12

Sehemu ya Arduino - ESP12
Sehemu ya Arduino - ESP12
Sehemu ya Arduino - ESP12
Sehemu ya Arduino - ESP12

Nilifanya mradi huu kwa hatua tofauti.

Kuna viungo kadhaa ambavyo vinakusaidia kuagiza ESP12 (aka. ESP8266) kwenye IDE ya Arduino. (Ilinibidi nitumie toleo 2.3.0 badala ya la hivi karibuni kwa sababu ya mdudu ambaye angeweza kutatuliwa wakati huo huo…)

Nilianza kwa kushika ESP, juu ya Arduino UNO yangu (tu kutumika kama daraja kati ya PC yangu kupitia USB hadi Serial) kwa kiunga cha serial cha ESP. Kuna Maagizo tofauti yanayoelezea hii.

Katika mradi wangu uliomalizika niliacha waya kuungana na Serial ikiwa nitahitaji kusuluhisha. RX

Kisha unahitaji waya ESP12 yako kama ifuatavyo:

Pini za ESP…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

Hapo awali nilijaribu kuwezesha ESP yangu kutoka 3.3V kwenye UNO lakini haraka nilihamia kuwezesha ESP yangu na Ugavi wa Nguvu ya benchi lakini unaweza kutumia kifurushi chako cha betri pia.

GPIO0 niliunganisha hii na kuruka kwa GND kuwezesha kuangaza (= programu) ya ESP.

Jaribio la kwanza: acha jumper iwe wazi na uanze kufuatilia serial katika Arduino IDE (saa 115200 baud!).

Mzunguko wa nguvu ESP, unapaswa kuona wahusika wa takataka na kisha ujumbe kama:

Ai-Thinker Technology Co Ltd iko tayari

Katika hali hii, ESP hufanya kidogo kama modem ya zamani. Unahitaji kutumia amri za AT.

Jaribu amri zifuatazo:

KWA + RST

na amri mbili zifuatazo

+ CWMODE = 3

sawa

KWA + CWLAP

Hii inapaswa kukupa orodha ya mitandao yote ya WiFi katika eneo hilo.

Ikiwa hii inafanya kazi uko tayari kwa hatua inayofuata.

Hatua ya 4: Kupima ESP kama Mteja wa Itifaki ya Wakati wa Mtandao (NTP)

Kujaribu ESP kama Mteja wa Itifaki ya Wakati wa Mtandao (NTP)
Kujaribu ESP kama Mteja wa Itifaki ya Wakati wa Mtandao (NTP)
Kujaribu ESP kama Mteja wa Itifaki ya Wakati wa Mtandao (NTP)
Kujaribu ESP kama Mteja wa Itifaki ya Wakati wa Mtandao (NTP)

Katika Arduino IDE, chini ya Faili, Mifano, ESP8266WiFi, shehena NTPClient.

Vidogo vidogo vinahitajika ili kuifanya kazi; unahitaji kuweka SSID yako na nywila ya mtandao wako wa WiFi.

Sasa weka jumper, fupisha GPIO0 kwa GND.

Mzunguko wa nguvu ESP na pakia mchoro kwa ESP.

Baada ya mkusanyiko, upakiaji kwenye ESP unapaswa kuanza. LED ya samawati kwenye ESP itakuwa ikiangaza kwa kasi nambari hiyo inapopakuliwa.

Niligundua kuwa ilibidi nicheze kidogo na kuanzisha tena IDE, kuanzisha tena ESP kabla ya kupakia kufanya kazi.

Kabla ya kuanza kukusanya / kupakia mchoro, hakikisha umefunga serial console (= serial serial) kwa sababu hii itakuzuia kufanya upakiaji.

Mara tu upakiaji ukifanikiwa, unaweza kufungua tena mfuatiliaji wa serial ili kuona ESP ipata wakati kutoka kwa mtandao.

Kubwa, umepanga ESP yako, iliyounganishwa na WiFi yako na kupata wakati kutoka kwa mtandao.

Hatua inayofuata tutajaribu DHT22.

Hatua ya 5: Kupima sensorer ya DHT22

Kujaribu Sensorer ya DHT22
Kujaribu Sensorer ya DHT22

Sasa wiring ya ziada inahitajika.

Pini za DHT… Unganisha pini 1 (kushoto) ya sensa kwa VCC (3.3V)

Unganisha pin 2 ESP GPIO5 (DHTPIN kwenye mchoro)

Unganisha pini 4 (upande wa kulia) wa kihisi kwa GROUND

Unganisha kontena la 10K kutoka kwa pini 2 (data) ili kubandika 1 (nguvu) ya sensa.

Sawa na jaribio la NTP, nenda utafute mchoro wa DHTtester, na uibadilishe kwa njia ifuatayo:

#fafanua DHTPIN 5 // tulichagua GPIO5 kuungana na kihisi # fafanua DHTTYPE DHT22 // kwa kuwa tunatumia DHT22 lakini nambari / maktaba hii pia inafaa kwa DHT11

Tena, funga mfuatiliaji wa serial, mzunguko wa nguvu wa ESP na ujumuishe na uangaze ESP.

Ikiwa yote yanaenda vizuri unapaswa kuona vipimo vikionekana kwenye mfuatiliaji wa serial.

Unaweza kucheza karibu kidogo na sensor. Ikiwa unapumua juu yake, utaona unyevu unapanda.

Ikiwa una taa ya dawati (isiyo ya LED), unaweza kuangaza kwenye sensorer ili kuipasha moto kidogo.

Kubwa! Sehemu mbili kubwa za sensa sasa zinafanya kazi.

Katika hatua inayofuata nitatoa maoni yangu juu ya nambari ya mwisho.

Hatua ya 6: Kuiweka Pamoja…

Kuiweka Pamoja…
Kuiweka Pamoja…

Tena wiring zingine za ziada… hii ni kufanya DeepSleep iwezekane.

Kumbuka, Usingizi mzito ni kazi nzuri kwa vifaa vya IoT.

Walakini ikiwa sensorer yako imefunikwa kwa kina kwa Usingizi, inaweza kuwa ngumu kupanga tena ESP kwa hivyo tutafanya uunganisho mwingine wa kuruka kati

GPIO16-RST.

Ndio LAZIMA iwe GPIO16, kwa sababu hiyo ni GPIO ambayo ni ngumu kuamsha kifaa wakati Saa Saa Halisi itaenda baada ya Kulala Kulala!

Wakati unapojaribu, unaweza kuamua kufanya sekunde 15 DeepSleep.

Wakati nilikuwa nikitatua, ningemsogeza kuruka kwenda GPIO0 ili nipate kuangaza programu yangu.

Baada ya kupakuliwa kukamilika, ningehamisha jumper kwenda GPIO16 ili DeepSleep ifanye kazi.

Nambari ya ESP inaitwa TnHclient.c

Lazima ubadilishe SSID yako, Nenosiri na anwani ya IP ya seva yako.

Kuna mistari ya ziada ya nambari ambayo unaweza kutumia kusuluhisha au kujaribu usanidi wako.

Hatua ya 7: Upande wa Vitu vya Seva

Upande wa Mambo ya Seva
Upande wa Mambo ya Seva
Upande wa Mambo ya Seva
Upande wa Mambo ya Seva

Ni kutokuelewana kwa kawaida kuwa UDP haiaminiki na TCP ni…

Hiyo ni ujinga kama kusema nyundo ni muhimu kuliko bisibisi. Ni zana tofauti tu muhimu na wote wana matumizi yao.

Kwa njia, bila UDP mtandao haungefanya kazi … DNS inategemea UDP.

Kwa hivyo, nilichagua UDP kwa sababu ni nyepesi sana, rahisi na haraka.

Huwa ninafikiria kuwa WiFi yangu ni ya kuaminika sana kwa hivyo mteja atatuma pakiti zaidi ya 3 za UDP ikiwa kukiri "Sawa!" haipokelewi.

Nambari C ya TnHserver iko kwenye faili ya TnHServer.c.

Kuna maoni kadhaa kwenye nambari inayoielezea.

Tutahitaji zana zingine kwenye seva: rrdtool, apache na labda tcpdump.

Ili kusanikisha rrdtool kwenye Raspbian unaweza kusanikisha kifurushi kama hiki: pata-pata rrdtool

Ikiwa unahitaji kurekebisha trafiki ya mtandao, tcpdump inakuja kwa urahisi kupata kufunga tcpdump

Nilihitaji webserver kuweza kutumia kivinjari ili kushauriana na grafu: apt-get install apache2

Nilitumia zana hii: https://rrdwizard.appspot.com/index.php kupata amri ya kuunda Hifadhidata ya Round Robin. Unahitaji tu kukimbia hii mara moja (ikiwa unaipata mara ya kwanza).

rrdtool kuunda TnHdatabase.rrd - anza sasa-10s

- hatua ya '1200'

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

'DS: Unyevu: GAUGE: 1200: 0: 100.0'

'RRA: Wastani: 0.5: 1: 720'

'RRA: Wastani: 0.5: 3: 960'

'RRA: Wastani: 0.5: 18: 1600'

Mwishowe, ninatumia kiingilio cha crontab kuanzisha tena TnHserver yangu kila siku usiku wa manane. Ninaendesha TnHserver kama mtumiaji wa kawaida (yaani. SI mzizi) kama tahadhari ya usalama.

0 0 * * * / usr / bin / pkill TnHserver; / nyumbani / mtumiaji / bin / TnHserver> / dev / null 2> & 1

Unaweza kuangalia kwamba TnHserver inaendesha kwa kufanya

$ ps-mwenyewe | grep TnHserver

na unaweza kuthibitisha inasikiliza pakiti kwenye bandari ya 7777 kwa kufanya

$ netstat -anu

Muunganisho wa Mtandao unaotumika (seva na imewekwa)

Proto Recv-Q Send-Q Anwani ya Karibu Jimbo Anwani ya Kigeni

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Mwishowe CreateTnH_Graphs.sh.txt ni mfano wa hati ya kuunda grafu. (Ninazalisha maandishi kama mizizi, huenda hautaki kufanya hivyo.)

Kutumia ukurasa wa wavuti rahisi sana unaweza kutazama grafu kutoka kwa kivinjari chochote kwenye mtandao wako wa nyumbani.

Ilipendekeza: