Përmbajtje:

Sensori i temperaturës së rrjetit në shtëpi: 7 hapa
Sensori i temperaturës së rrjetit në shtëpi: 7 hapa

Video: Sensori i temperaturës së rrjetit në shtëpi: 7 hapa

Video: Sensori i temperaturës së rrjetit në shtëpi: 7 hapa
Video: Nusja harron dhendrin para Butrintit, çfarë po ndodh? 😮#shorts #viral #butrintimeri #butrint #trend 2024, Nëntor
Anonim
Sensori i temperaturës së rrjetit në shtëpi
Sensori i temperaturës së rrjetit në shtëpi

Çfarë duhet të dini për të realizuar këtë projekt:

Duhet të dini për:- Disa aftësi elektronike (bashkim)

- Linux

- Arduino IDE

(do t'ju duhet të përditësoni bordet shtesë në IDE:

- azhurnimi/programimi i një bordi ESP përmes Arduino IDE.

(ka disa mësime të mira në dispozicion në internet)

Kjo mund të bëhet duke përdorur një Arduino Uno ose duke përdorur një FTDI (përshtatës usb në serial).

Kam përdorur Uno -in tim sepse nuk kisha asnjë port serik në kompjuterin tim dhe as nuk kisha një FTDI

Hapi 1: Shkoni në pazar

Shkoni në pazar
Shkoni në pazar

Çfarë do t'ju duhet për ta bërë këtë të ndodhë?

Për sensorin dixhital të temperaturës dhe lagështisë:

- Ose një dërrasë buke ose një alternativë si prototipi i PCB -së, saldimit, hekurit …

- Pak tela

- dy kërcyes

- një rezistencë 10k Ohm

- një ESP12F (modele të tjera mund të funksionojnë gjithashtu …)

- një DHT22 (pak më e shtrenjtë se DHT11 por më e saktë)

- 3 bateri AA të rimbushshme dhe një mbajtës baterie

- një kuti e vogël plastike për të futur projektin tuaj

- Në një fazë të mëvonshme kam në plan të shtoj një HT7333 me dy kondensatorë 10uF midis paketës së baterisë dhe ESP

për të stabilizuar tensionin hyrës (VCC) në 3.3V të rekomanduar, por edhe për të mbrojtur ESP nga mbitensioni.

Për pjesën e Rrjetit:

- Rrjeti juaj WiFi në shtëpi

Për pjesën e serverit:

- Çdo sistem i bazuar në Linux (gjithmonë i ndezur!)

Kam përdorur një Raspberry Pi (të cilën gjithashtu e përdor si server për kamerat e mia IP në natyrë.)

- përpiluesi gcc për të përpiluar kodin tuaj të serverit

- paketë rrdtool për të ruajtur të dhënat dhe për të gjeneruar grafikë

- apache (ose një server tjetër në internet)

Kompjuteri ose laptopi juaj i preferuar me Arduino IDE në të.

Hapi 2: Konfigurimi dhe Sfondi

Konfigurimi dhe Sfondi
Konfigurimi dhe Sfondi

Në këtë version të një WiFi të lidhur - për të mos thënë IOT - sensorin e temperaturës dhe lagështisë, kam përdorur një ESP12F, një DHT22 dhe një mbajtës baterie 3 AA me bateri të rimbushshme.

Çdo 20 minuta ESP merr një matje nga DHT22 dhe e dërgon atë në një server (një Raspberry Pi) përmes UDP në rrjetin tim WiFi në shtëpi. Pasi të jenë dërguar matjet, ESP shkon në gjumë të thellë. Kjo do të thotë që vetëm Ora e Kohës Reale e modulit mbetet e fuqizuar, duke rezultuar në një kursim të jashtëzakonshëm të energjisë. Për rreth 5 sekonda, moduli kërkon rreth 100mA, pastaj gjatë 20 minutave në gjumë të thellë vetëm 150uA.

Unë nuk doja të përdorja asnjë shërbim të bazuar në Internet sepse kam Raspberry Pi tim i cili është gjithnjë i ndezur gjithsesi dhe në këtë mënyrë pata kënaqësinë të shkruaj edhe pjesën e serverit.

Në server (një Raspberry Pi që drejton Raspbian) kam shkruar një dëgjues (server) të thjeshtë UDP i cili ruan vlerat në një RRD të thjeshtë. (Baza e të dhënave Robin Robin duke përdorur RRDtool nga Tobias Oetiker.)

Avantazhi i RRDtool është se ju krijoni bazën tuaj të të dhënave një herë dhe madhësia mbetet e njëjtë. Gjithashtu nuk keni nevojë të keni një server të bazës së të dhënave (si mySQLd) që funksionon në sfond. RRDtool ju jep mjetet për të krijuar bazën e të dhënave dhe për të gjeneruar grafikët.

Serveri im krijon grafikët në mënyrë periodike dhe shfaq gjithçka në një faqe shumë të thjeshtë http. Unë mund t'i konsultoj leximet e mia me një shfletues të thjeshtë duke u lidhur me serverin në internet Apache2 në Raspberry Pi!

Së fundi, unë nuk kisha një FTDI (USB në Serial) kështu që kam përdorur Arduino UNO tim. Ju duhet të lidhni TX dhe RX dhe GND të ESP dhe UNO. (E di, instinkti juaj mund t'ju thotë të kaloni RX dhe TX … e provova gjithashtu, nuk funksionon.)

Unë nuk bëra një konvertim të nivelit (UNO: High = 5V por ESP është në thelb një pajisje 3.3V … Ka disa FTDI të këndshëm në treg ku mund të zgjidhni edhe nivelin tuaj të lartë që të jetë 5 ose 3.3V.

Qarku im mundësohet nga 3 bateri AA të rimbushshme - pra në fakt 3 X 1.2V. Në një fazë të mëvonshme kam ndërmend të vendos një HT7333 midis paketës së baterisë dhe qarkut për siguri; bateritë e sapokarkuara mund të kenë më shumë se 1.2V dhe ESP duhet të mundësohet me min. 3V dhe max. 3.6V Gjithashtu nëse vendos - në një moment dobësie - të vendos bateri alkaline (3 X 1.5V = 4.5V) ESP -ja ime nuk do të skuqet!

Mendova gjithashtu të përdor një panel diellor 10 cm x 10 cm, por thjesht nuk ia vlente sherri. Duke bërë 3 matje në orë (në thelb 3x 5 sekonda @ 100mA max. Dhe pjesën tjetër të kohës @ 100uA), shpresoj që të furnizoj qarkun tim për 1 vit me të njëjtat bateri të rimbushshme.

Hapi 3: Pjesa Arduino - ESP12

Pjesa Arduino - ESP12
Pjesa Arduino - ESP12
Pjesa Arduino - ESP12
Pjesa Arduino - ESP12

Unë e bëra këtë projekt në hapa të ndryshëm.

Ka disa lidhje që ju ndihmojnë të importoni ESP12 (aka. ESP8266) në Arduino IDE. (Më është dashur të përdor versionin 2.3.0 në vend të atij të fundit për shkak të një defekti që mund të ishte zgjidhur ndërkohë …)

Fillova duke lidhur ESP, mbi Arduino UNO tim (përdoret vetëm si urë lidhëse midis kompjuterit tim përmes USB në Serial) në ndërfaqen serike ESP. Ka udhëzues të veçantë që e shpjegojnë këtë.

Në projektin tim të përfunduar i lashë telat për t'u lidhur me Serialin në rast se më duhet ndonjëherë të zgjidh problemin. RX

Pastaj ju duhet të lidhni ESP12 tuaj si më poshtë:

Kunjat ESP…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

Fillimisht u përpoqa të fuqizoja ESP -në time nga 3.3V në UNO, por shpejt kalova në fuqizimin e ESP -së time me një Furnizim me energji në stol, por ju gjithashtu mund të përdorni paketën tuaj të baterisë.

GPIO0 Unë e lidha këtë me një bluzë në GND për të mundësuar ndezjen (= programimin) e ESP.

Testi i parë: lërini bluzën të hapur dhe filloni një monitor serik në Arduino IDE (në 115200 baud!).

Cikli i energjisë ESP, duhet të shihni disa karaktere plehrash dhe më pas një mesazh si:

Ai-Thinker Technology Co Ltd gati

Në këtë mënyrë, ESP vepron pak si një modem i modës së vjetër. Ju duhet të përdorni komandat AT.

Provoni komandat e mëposhtme:

AT+RST

dhe dy komandat e mëposhtme

AT+CWMODE = 3

Ne rregull

AT+CWLAP

Kjo duhet t'ju japë një listë të të gjitha rrjeteve WiFi në zonë.

Nëse kjo po funksionon, ju jeni gati për hapin tjetër.

Hapi 4: Testimi i ESP Si klient i Protokollit të Kohes së Rrjetit (NTP)

Testimi i klientit të ESP Si një Protokoll Koha e Rrjetit (NTP)
Testimi i klientit të ESP Si një Protokoll Koha e Rrjetit (NTP)
Testimi i klientit të ESP Si një Protokoll Koha e Rrjetit (NTP)
Testimi i klientit të ESP Si një Protokoll Koha e Rrjetit (NTP)

Në Arduino IDE, nën File, Shembuj, ESP8266WiFi, ngarkoni NTPClient.

Ndryshime të vogla janë të nevojshme për ta bërë atë të funksionojë; duhet të vendosni SSID -in tuaj dhe fjalëkalimin e rrjetit tuaj WiFi.

Tani vendosni kërcyesin, duke shkurtuar GPIO0 në GND.

Cikli i energjisë ESP dhe ngarko skicën në ESP.

Pas përpilimit, ngarkimi në ESP duhet të fillojë. LED blu në ESP do të pulsojë me shpejtësi ndërsa kodi po shkarkohet.

Vura re që më duhej të luaja pak me rifillimin e IDE, duke rifilluar ESP para se të funksiononte ngarkimi.

Para se të filloni të përpiloni/ngarkoni skicën, sigurohuni që të mbyllni tastierën serike (= monitor serik) sepse kjo do t'ju pengojë të bëni ngarkimin.

Pasi ngarkimi të ketë sukses, mund të rihapni monitorin serik për të parë që ESP të marrë kohë në mënyrë efektive nga Interneti.

E shkëlqyeshme, ju keni programuar ESP tuaj, jeni lidhur me WiFi tuaj dhe keni marrë kohë nga Interneti.

Hapi tjetër ne do të testojmë DHT22.

Hapi 5: Testimi i sensorit DHT22

Testimi i sensorit DHT22
Testimi i sensorit DHT22

Tani kërkohen instalime elektrike shtesë.

Kunjat DHT… Lidhni pinin 1 (në të majtë) të sensorit në VCC (3.3V)

Lidhni pin 2 ESP GPIO5 (DHTPIN në skicë)

Lidhni kunjin 4 (në të djathtë) të sensorit në GROUND

Lidhni një rezistencë 10K nga kunja 2 (të dhëna) në kunjin 1 (fuqia) e sensorit.

Ngjashëm me testin NTP, shkoni gjeni skicën DHTtester dhe ndryshojeni atë në mënyrën e mëposhtme:

#define DHTPIN 5 // ne zgjodhëm GPIO5 për t'u lidhur me sensorin#përcakto DHTTYPE DHT22 // pasi ne po përdorim një DHT22 por ky kod/bibliotekë është i përshtatshëm edhe për DHT11

Përsëri, mbyllni monitorin serik, qarkulloni energjinë ESP dhe përpiloni dhe ndizni ESP.

Nëse gjithçka shkon mirë, duhet të shihni që matjet shfaqen në monitorin serik.

Mund të luani pak me sensorin. Nëse merrni frymë mbi të, do të shihni që lagështia të rritet.

Nëse keni një llambë tavoline (jo LED), mund të shkëlqeni në sensor për ta ngrohur pak.

Shkëlqyeshëm! Dy pjesë të mëdha të sensorit tani janë duke punuar.

Në hapin tjetër do të komentoj kodin përfundimtar.

Hapi 6: Vendoseni së bashku…

Duke e bashkuar…
Duke e bashkuar…

Përsëri disa instalime elektrike shtesë … kjo është për të bërë të mundur DeepSleep.

Mos harroni, DeepSleep është një funksion i jashtëzakonshëm për pajisjet IoT.

Sidoqoftë, nëse sensori juaj është i lidhur për DeepSleep, mund të jetë e vështirë të riprogramoni ESP kështu që ne do të bëjmë një lidhje tjetër kërcyese midis

GPIO16-RST.

Po, DUHET të jetë GPIO16, sepse ky është GPIO që është i lidhur me forcë për të zgjuar pajisjen kur Ora e Kohes Real fiket pas DeepSleep!

Ndërsa jeni duke testuar, mund të vendosni të bëni një DeepSleep 15 sekondash.

Kur po bëja korrigjimin e gabimeve, do ta transferoja kërcyesin në GPIO0 në mënyrë që të ndizja programin tim.

Pas shkarkimit të plotë, unë do ta transferoja kërcyesin në GPIO16 në mënyrë që DeepSleep të funksiononte.

Kodi për ESP quhet TnHclient.c

Ju duhet të ndryshoni SSID -in tuaj, Fjalëkalimin dhe adresën IP të serverit tuaj.

Ka linja shtesë të kodit që mund të përdorni për të zgjidhur probleme ose për të testuar konfigurimin tuaj.

Hapi 7: Ana e Gjërave në Server

Ana e Serverit të Gjërave
Ana e Serverit të Gjërave
Ana e Serverit të Gjërave
Ana e Serverit të Gjërave

Ashtë një keqkuptim i zakonshëm që UDP nuk është i besueshëm dhe TCP është…

Kjo është po aq budalla sa të thuash një çekiç është më i dobishëm se një kaçavidë. Ato janë thjesht mjete të ndryshme shumë të dobishme dhe të dyja kanë përdorimet e tyre.

Nga rruga, pa UDP Interneti nuk do të funksiononte … DNS bazohet në UDP.

Pra, zgjodha UDP sepse është shumë i lehtë, i lehtë dhe i shpejtë.

Unë prirem të mendoj se WiFi im është shumë i besueshëm kështu që klienti do të dërgojë më së shumti 3 pako UDP nëse konfirmimi "OK!" nuk merret.

Kodi C për TnHserver është në skedarin TnHServer.c.

Ka disa komente në kod që e shpjegojnë atë.

Do të na duhen disa mjete shtesë në server: rrdtool, apache dhe ndoshta tcpdump.

Për të instaluar rrdtool në Raspbian, thjesht mund ta instaloni paketën si kjo: apt-get install rrdtool

Nëse keni nevojë të korrigjoni trafikun e rrjetit, tcpdump vjen në ndihmë apt-get install tcpdump

Më duhej një server në internet që të mund të përdorja një shfletues për të konsultuar grafikët: apt-get install apache2

Kam përdorur këtë mjet: https://rrdwizard.appspot.com/index.php për të marrë komandën për të krijuar bazën e të dhënave Round Robin. Ju duhet vetëm ta ekzekutoni këtë një herë (nëse e merrni atë siç duhet herën e parë).

rrdtool krijoni TnHdatabase.rrd-filloni tani-10s

-hapi '1200'

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

'DS: Lagështia: GAUGE: 1200: 0: 100.0'

'RRA: MESATARE: 0.5: 1: 720'

'RRA: MESATARE: 0.5: 3: 960'

'RRA: MESATARE: 0.5: 18: 1600'

Më në fund, unë përdor një hyrje crontab për të rifilluar TnHserver tim çdo ditë në mesnatë. Unë e drejtoj TnHserver si një përdorues normal (dmth. NUK root) si një masë paraprake sigurie.

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

Ju mund të kontrolloni që TnHserver po funksionon duke bërë

$ ps -veta | grep TnHserver

dhe mund të verifikoni se po dëgjon paketat në portin 7777 duke bërë

$ netstat -anu

Lidhje aktive në internet (serverë dhe të vendosur)

Proto Recv-Q Send-Q Adresa Vendore Adresa e Jashtme Shteti

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Së fundi CreateTnH_Graphs.sh.txt është një skenar shembull për të gjeneruar grafikët. (Unë i krijoj skriptet si rrënjë, ju mund të mos dëshironi ta bëni këtë.)

Duke përdorur një faqe interneti shumë të thjeshtë ju mund të shikoni grafikët nga çdo shfletues në rrjetin tuaj shtëpiak.

Recommended: