Satura rādītājs:

Mājas tīkla temperatūras sensors: 7 soļi
Mājas tīkla temperatūras sensors: 7 soļi

Video: Mājas tīkla temperatūras sensors: 7 soļi

Video: Mājas tīkla temperatūras sensors: 7 soļi
Video: Микроволновый zigbee датчик присутствия YXZBRB58 - обзор и тестирование 2024, Novembris
Anonim
Mājas tīkla temperatūras sensors
Mājas tīkla temperatūras sensors

Kas jums jāzina, lai izveidotu šo projektu:

Jums jāzina par:- dažām elektronikas prasmēm (lodēšana)

- Linux

- Arduino IDE

(jums būs jāatjaunina papildu dēļi IDE:

- ESP plates atjaunināšana/programmēšana, izmantojot Arduino IDE.

(tīmeklī ir pieejamas dažas jaukas apmācības)

To var izdarīt, izmantojot Arduino Uno vai izmantojot FTDI (USB uz seriālo adapteri).

Es izmantoju savu Uno, jo manā datorā nebija seriālā porta, kā arī man nebija FTDI

1. darbība: dodieties iepirkties

Iet iepirkties
Iet iepirkties

Kas jums būs nepieciešams, lai tas notiktu?

Digitālajam temperatūras un mitruma sensoram:

- Vai nu maizes dēlis, vai alternatīva, piemēram, PCB prototips, lodmetāls, lodāmurs…

- Kāds vads

- divi džemperi

- 10k omu rezistors

- ESP12F (var darboties arī citi modeļi …)

- DHT22 (nedaudz dārgāks nekā DHT11, bet precīzāks)

- 3 AA uzlādējamas baterijas un bateriju turētājs

- maza plastmasas kastīte, kurā ievietot savu projektu

- Vēlāk plānoju starp akumulatoru un ESP pievienot HT7333 ar diviem 10uF kondensatoriem

lai stabilizētu ieejas spriegumu (VCC) līdz ieteicamajam 3.3V, bet arī lai aizsargātu ESP no pārsprieguma.

Tīkla daļai:

- Jūsu mājas WiFi tīkls

Servera daļai:

- Jebkura Linux balstīta sistēma (vienmēr ieslēgta!)

Es izmantoju Raspberry Pi (ko izmantoju arī kā serveri savām āra IP kamerām).

- gcc kompilators, lai apkopotu jūsu servera kodu

- rrdtool pakotne, lai saglabātu datus un ģenerētu grafikus

- apache (vai cits tīmekļa serveris)

Jūsu iecienītākais dators vai klēpjdators ar Arduino IDE.

2. darbība: iestatīšana un fons

Iestatīšana un fons
Iestatīšana un fons

Šajā WiFi versijā pievienotajam - lai neteiktu IOT - temperatūras un mitruma sensoram es izmantoju ESP12F, DHT22 un 3 AA bateriju turētāju ar uzlādējamām baterijām.

Ik pēc 20 minūtēm ESP veic mērījumus no DHT22 un nosūta to uz serveri (Raspberry Pi), izmantojot UDP manā mājas WiFi tīklā. Pēc mērījumu nosūtīšanas ESP nonāk dziļā miegā. Tas nozīmē, ka tikai moduļa reāllaika pulkstenis paliek ieslēgts, tādējādi iegūstot neticamu enerģijas taupīšanu. Apmēram 5 sekundes modulim ir nepieciešami aptuveni 100 mA, tad 20 minūšu dziļā miegā tikai 150uA.

Es negribēju izmantot nevienu interneta pakalpojumu, jo man ir mans Raspberry Pi, kas vienmēr ir ieslēgts, un šādā veidā man bija prieks uzrakstīt arī servera daļu.

Serverī (Raspberry Pi, kurā darbojas Raspbian) esmu uzrakstījis vienkāršu UDP klausītāju (serveri), kas saglabā vērtības vienkāršā RRD. (Round Robin datu bāze, izmantojot Tobias Oetiker RRDtool.)

RRDtool priekšrocība ir tāda, ka jūs izveidojat savu datu bāzi vienreiz, un izmērs paliek nemainīgs. Turklāt fonā nav jādarbojas datu bāzes serverim (piemēram, mySQLd). RRDtool sniedz rīkus datu bāzes izveidei un diagrammu ģenerēšanai.

Mans serveris periodiski izveido grafikus un parāda visu ļoti vienkāršā http lapā. Es varu iepazīties ar saviem lasījumiem, izmantojot vienkāršu pārlūkprogrammu, pieslēdzoties Raspaberry Pi tīmekļa serverim Apache2!

Visbeidzot, man nebija FTDI (USB uz seriālu), tāpēc es izmantoju savu Arduino UNO. Jums ir jāpievieno TX un RX un ESP un UNO GND. (Es zinu, jūsu instinkts var likt jums šķērsot RX un TX's … arī mēģinājis, nedarbojas.)

Es neveicu līmeņa pārveidošanu (UNO: augsts = 5 V, bet ESP būtībā ir 3.3 V ierīce … Tirgū ir dažas jaukas FTDI, kur jūs pat varat izvēlēties savu augsto līmeni 5 vai 3,3 V.

Manu ķēdi darbina 3 AA uzlādējamas baterijas - tātad faktiski 3 X 1.2V. Vēlākā posmā es plānoju drošības nolūkos ievietot HT7333 starp akumulatoru un ķēdi; tikko uzlādētiem akumulatoriem varētu būt vairāk nekā 1,2 V, un ESP vajadzētu darbināt ar min. 3V un maks. 3.6V. Arī tad, ja es izlemšu - vājuma brīdī - ievietot sārma baterijas (3 X 1,5 V = 4,5 V), mans ESP netiks cepts!

Es arī apsvēru iespēju izmantot 10 x 10 cm saules paneli, taču tas vienkārši nebija problēmu vērts. Veicot 3 mērījumus stundā (būtībā 3x 5 sekundes @ 100mA max.

3. darbība: Arduino - ESP12 daļa

Arduino - ESP12 daļa
Arduino - ESP12 daļa
Arduino - ESP12 daļa
Arduino - ESP12 daļa

Es īstenoju šo projektu dažādos posmos.

Ir vairākas saites, kas palīdz importēt ESP12 (pazīstams arī kā ESP8266) Arduino IDE. (Man bija jāizmanto versija 2.3.0, nevis jaunākā, jo radās kļūda, kas, iespējams, tikmēr bija atrisināta …)

Es sāku, pievienojot ESP, izmantojot savu Arduino UNO (izmanto tikai kā tiltu starp datoru, izmantojot USB, lai sērijveida), līdz ESP seriālajam interfeisam. Ir atsevišķi norādījumi, kas to izskaidro.

Pabeigtajā projektā es atstāju vadus, lai izveidotu savienojumu ar seriālu, ja man kādreiz būs nepieciešams novērst problēmas

Pēc tam ESP12 jāpievieno šādi:

ESP tapas…

GND UNO GND

RX UNO RX

TX UNO TX

LV VCC

GPIO15 GND

Sākumā es mēģināju barot savu ESP no 3.3 V uz UNO, bet es ātri pārgāju pie ESP barošanas ar stenda barošanas avotu, bet jūs varat izmantot arī savu akumulatoru.

GPIO0 Šo savienoju ar džemperi GND, lai iespējotu ESP mirgošanu (= programmēšanu).

Pirmais tests: atstājiet džemperi atvērtu un palaidiet sērijveida monitoru Arduino IDE (ar 115200 bodu!).

Ieslēdzot ESP barošanas ciklu, jums vajadzētu redzēt dažas atkritumu rakstzīmes un pēc tam šādu ziņojumu:

Ai-Thinker Technology Co. Ltd. gatavs

Šajā režīmā ESP darbojas kā vecmodīgs modems. Jums jāizmanto AT komandas.

Izmēģiniet šādas komandas:

AT+RST

un sekojošās divas komandas

AT+CWMODE = 3

labi

AT+CWLAP

Tam vajadzētu parādīt visu šajā apgabalā esošo WiFi tīklu sarakstu.

Ja tas darbojas, jūs esat gatavs nākamajam solim.

4. darbība. ESP kā tīkla laika protokola (NTP) klienta pārbaude

ESP kā tīkla laika protokola (NTP) klienta pārbaude
ESP kā tīkla laika protokola (NTP) klienta pārbaude
ESP kā tīkla laika protokola (NTP) klienta pārbaude
ESP kā tīkla laika protokola (NTP) klienta pārbaude

Arduino IDE sadaļā Fails, piemēri, ESP8266WiFi, ielādējiet NTPClient.

Lai tas darbotos, ir nepieciešami nelieli pielāgojumi; jums ir jāievada sava WiFi tīkla SSID un parole.

Tagad novietojiet džemperi, saīsinot GPIO0 uz GND.

Ieslēdziet ESP barošanas ciklu un augšupielādējiet skici ESP.

Pēc apkopošanas jāsāk augšupielāde ESP. Kad kods tiek lejupielādēts, ESP zilā gaismas diode ātri mirgos.

Es pamanīju, ka man bija nedaudz jāspēlē, restartējot IDE, restartējot ESP, pirms augšupielāde darbosies.

Pirms sākat apkopot/augšupielādēt skici, noteikti aizveriet seriālo konsoli (= sērijas monitoru), jo tas neļaus augšupielādēt.

Kad augšupielāde ir izdevusies, varat atkārtoti atvērt seriālo monitoru, lai redzētu, kā ESP efektīvi iegūst laiku no interneta.

Lieliski, esat ieprogrammējis savu ESP, izveidojis savienojumu ar WiFi un ieguvis laiku no interneta.

Nākamais solis mēs pārbaudīsim DHT22.

5. darbība. DHT22 sensora pārbaude

DHT22 sensora pārbaude
DHT22 sensora pārbaude

Tagad ir nepieciešama papildu elektroinstalācija.

DHT tapas… Savienojiet sensora 1. tapu (kreisajā pusē) ar VCC (3.3V)

Pievienojiet 2. tapu ESP GPIO5 (skicē DHTPIN)

Pievienojiet sensora 4. tapu (labajā pusē) pie ZEMES

Pievienojiet 10K rezistoru no kontakta 2 (dati) līdz sensora 1. tapai (jauda).

Līdzīgi kā NTP testā, atrodiet DHTtester skici un izlabojiet to šādā veidā:

#define DHTPIN 5 // mēs izvēlējāmies GPIO5, lai izveidotu savienojumu ar sensoru#define DHTTYPE DHT22 //, jo mēs izmantojam DHT22, taču šis kods/bibliotēka ir piemērota arī DHT11

Atkal aizveriet seriālo monitoru, ieslēdziet ESP barošanas ciklu un apkopojiet un zibspuldzējiet ESP.

Ja viss ir kārtībā, mērījumi tiek parādīti sērijas monitorā.

Ar sensoru var mazliet paspēlēties. Ja jūs uz to elpojat, jūs redzēsit paaugstinātu mitrumu.

Ja jums ir galda lampa (ne LED), varat spīdēt uz sensora, lai to nedaudz uzsildītu.

Lieliski! Divas lielas sensora daļas tagad darbojas.

Nākamajā solī es komentēšu galīgo kodu.

6. darbība: salieciet to kopā…

Saliekot to kopā…
Saliekot to kopā…

Atkal daži papildu vadi … tas ir nepieciešams, lai padarītu DeepSleep iespējamu.

Atcerieties, ka DeepSleep ir neticama funkcija IoT ierīcēm.

Tomēr, ja jūsu sensors ir savienots ar DeepSleep, ESP var būt grūti pārprogrammēt, tāpēc mēs izveidosim vēl vienu savienojuma savienojumu starp

GPIO16-RST.

Jā, tam ir jābūt GPIO16, jo tas ir GPIO, kas ir pieslēgts, lai modinātu ierīci, kad reālā laika pulkstenis izslēdzas pēc DeepSleep!

Testēšanas laikā varat izlemt veikt 15 sekunžu dziļo miegu.

Kad es veicu atkļūdošanu, es pārvietotu džemperi uz GPIO0, lai es varētu zibināt savu programmu.

Kad lejupielāde ir pabeigta, es pārvietotu džemperi uz GPIO16, lai DeepSleep darbotos.

ESP kodu sauc par TnHclient.c

Jums ir jāmaina sava SSID, parole un servera IP adrese.

Ir papildu koda rindas, kuras varat izmantot, lai novērstu traucējumus vai pārbaudītu iestatījumus.

7. darbība: lietu servera puse

Lietas servera pusē
Lietas servera pusē
Lietas servera pusē
Lietas servera pusē

Tas ir izplatīts pārpratums, ka UDP nav uzticams un TCP ir…

Tas ir tikpat muļķīgi kā teikt, ka āmurs ir noderīgāks par skrūvgriezi. Tie ir vienkārši ļoti noderīgi rīki, un tiem abiem ir savs pielietojums.

Starp citu, bez UDP internets nedarbotos … DNS pamatā ir UDP.

Tātad, es izvēlējos UDP, jo tas ir ļoti viegls, vienkāršs un ātrs.

Man ir tendence domāt, ka mans WiFi ir ļoti uzticams, tāpēc klients nosūtīs ne vairāk kā 3 UDP paketes, ja apstiprinājums "Labi!" nav saņemts.

TnHserver C kods ir failā TnHServer.c.

Kodeksā ir vairāki komentāri, kas to izskaidro.

Mums būs nepieciešami daži papildu rīki serverī: rrdtool, apache un varbūt tcpdump.

Lai instalētu rrdtool Raspbian, jūs varat vienkārši instalēt paketi šādi: apt-get install rrdtool

Ja jums ir nepieciešams atkļūdot tīkla trafiku, tcpdump ir noderīgs apt-get install tcpdump

Lai apskatītu grafikus, man bija nepieciešams tīmekļa serveris, lai varētu izmantot pārlūkprogrammu: apt-get install apache2

Es izmantoju šo rīku: https://rrdwizard.appspot.com/index.php, lai iegūtu komandu izveidot Round Robin datu bāzi. Jums tas jāpalaiž tikai vienu reizi (ja pirmo reizi viss ir kārtībā).

rrdtool izveidojiet TnHdatabase.rrd-sāciet tagad-10s

-solis "1200"

"DS: Temperatūra: GAUGE: 1200: -20,5: 45,5"

"DS: Mitrums: GAUGE: 1200: 0: 100.0"

"RRA: VIDĒJĀ: 0,5: 1: 720"

"RRA: VIDĒJĀ: 0,5: 3: 960"

"RRA: VIDĒJĀ: 0.5: 18: 1600"

Visbeidzot, es izmantoju crontab ierakstu, lai restartētu savu TnHserver katru dienu pusnaktī. Es izmantoju TnHserver kā parasts lietotājs (ti, NAV root) kā drošības līdzeklis.

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

To var pārbaudīt, vai TnHserver darbojas

$ ps -pats | grep TnHserver

un jūs varat pārbaudīt, vai tā klausās paketes portā 7777, darot to

$ netstat -anu

Aktīvi interneta savienojumi (serveri un izveidoti)

Proto Recv-Q Send-Q Vietējā adrese Ārvalstu adreses valsts

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Visbeidzot CreateTnH_Graphs.sh.txt ir skripta paraugs, lai ģenerētu grafikus. (Es ģenerēju skriptus kā root, iespējams, nevēlaties to darīt.)

Izmantojot ļoti vienkāršu tīmekļa lapu, varat skatīties grafikus no jebkuras mājas tīkla pārlūkprogrammas.

Ieteicams: