Sisukord:

Koduvõrgu temperatuuriandur: 7 sammu
Koduvõrgu temperatuuriandur: 7 sammu

Video: Koduvõrgu temperatuuriandur: 7 sammu

Video: Koduvõrgu temperatuuriandur: 7 sammu
Video: ПРОВЕРЬТЕ свою ПРОКЛАДКУ ГБЦ (быстро), иначе проблем не избежать... 2024, November
Anonim
Koduvõrgu temperatuuriandur
Koduvõrgu temperatuuriandur

Mida peate selle projekti tegemiseks teadma:

Peate teadma järgmist:- Mõned elektroonikaoskused (jootmine)

- Linux

- Arduino IDE

(peate IDE -s täiendavaid tahvleid värskendama:

- ESP -plaadi värskendamine/programmeerimine Arduino IDE kaudu.

(veebis on saadaval mõnusaid õpetusi)

Seda saab teha Arduino Uno või FTDI (USB -jadaadapter) abil.

Kasutasin oma Unot, kuna mul ei olnud arvutis jadaporti ega FTDI -d

1. samm: minge ostlema

Minge ostlema
Minge ostlema

Mida vajate, et see teoks saaks?

Digitaalse temperatuuri ja niiskuse anduri jaoks:

- Kas leivaplaat või alternatiiv, näiteks PCB prototüüp, jootetool, jootekolb…

- Mingi traat

- kaks hüppajat

- 10 kΩ takisti

- ESP12F (teised mudelid võivad ka töötada …)

- DHT22 (natuke kallim kui DHT11, kuid täpsem)

- 3 AA laetavat patareid ja patareipesa

- väike plastkarp, kuhu oma projekt panna

- Hilisemal etapil kavatsen lisada aku ja ESP vahele HT7333 koos kahe 10uF kondensaatoriga

sisendpinge (VCC) stabiliseerimiseks soovitatud 3,3 V -ni, aga ka ESP kaitsmiseks ülepinge eest.

Võrgu osa jaoks:

- teie kodu WiFi -võrk

Serveri osas:

- Mis tahes Linuxil põhinev süsteem (alati sisse lülitatud!)

Kasutasin Raspberry Pi (mida kasutan ka oma välistingimustes kasutatavate IP -kaamerate serverina.)

- gcc kompilaator teie serveri koodi kompileerimiseks

- rrdtooli pakett andmete salvestamiseks ja graafikute loomiseks

- apache (või mõni muu veebiserver)

Teie lemmikarvuti või sülearvuti, millel on Arduino IDE.

Samm: seadistamine ja taust

Seadistamine ja taust
Seadistamine ja taust

Selles ühendatud WiFi versioonis - et mitte öelda IOT - temperatuuri- ja niiskusandurit kasutasin ESP12F, DHT22 ja 3 AA patareipesa koos laetavate akudega.

Iga 20 minuti järel võtab ESP mõõtmise DHT22 -st ja saadab selle minu koduse WiFi -võrgu UDP kaudu serverisse (Raspberry Pi). Pärast mõõtmiste saatmist läheb ESP sügavasse unne. See tähendab, et ainult mooduli reaalajas kell jääb toiteks, mille tulemuseks on uskumatu energiasääst. Umbes 5 sekundit vajab moodul umbes 100 mA, seejärel 20 minuti jooksul ainult 150 uA.

Ma ei tahtnud kasutada ühtegi Interneti -põhist teenust, sest mul on oma Raspberry Pi, mis on alati sisse lülitatud, ja sel viisil oli mul rõõm kirjutada ka serveriosa.

Serverisse (Raspberry Pi, mis töötab Raspbianiga) olen kirjutanud lihtsa UDP kuulaja (serveri), mis salvestab väärtused lihtsasse RRD -sse. (Round Robini andmebaas, kasutades RRDtooli, autor Tobias Oetiker.)

RRDtooli eeliseks on see, et loote oma andmebaasi üks kord ja selle suurus jääb samaks. Muidu ei pea taustal töötama andmebaasiserver (nagu mySQLd). RRDtool annab teile tööriistad andmebaasi loomiseks ja graafikute loomiseks.

Minu server loob graafikud perioodiliselt ja kuvab kõik väga lihtsal http -lehel. Ma saan oma näitu vaadata lihtsa brauseriga, kui ühendan Raspberry Pi Apache2 veebiserveriga!

Lõpuks ei olnud mul FTDI -d (USB to Serial), nii et ma kasutasin oma Arduino UNO -d. Peate ühendama TX -id ja RX -id ning ESP ja UNO GND. (Ma tean, et teie sisetunne võib teile öelda, et peate RX -i ja TX -i ületama… proovinud ka, ei tööta.)

Ma ei teinud taseme muundamist (UNO: kõrge = 5 V, kuid ESP on põhimõtteliselt 3,3 V seade … Turul on mõningaid toredaid FTDI -sid, kus saate isegi valida oma kõrge taseme 5 või 3,3 V.

Minu vooluahelat toidavad 3 AA laetavat patareid - seega tegelikult 3 X 1,2 V. Hilisemas etapis kavatsen ohutuse tagamiseks panna aku ja vooluahela vahele HT7333; äsja laetud akudel võib olla rohkem kui 1,2 V ja ESP toiteallikaks peab olema min. 3V ja max. 3.6V. Samuti, kui ma nõrkusehetkel otsustan leelispatareid (3 X 1,5 V = 4,5 V) sisse panna, ei hakka mu ESP praadima!

Kaalusin ka 10cm x 10cm päikesepaneeli kasutamist, kuid see ei olnud lihtsalt vaeva väärt. Tehes 3 mõõtmist tunnis (põhimõtteliselt 3x 5 sekundit @ 100mA max ja ülejäänud aja @ 100uA), loodan ma oma vooluringi 1 aastaks toita samadel laetavatel patareidel.

Samm: Arduino - ESP12 osa

Arduino - ESP12 osa
Arduino - ESP12 osa
Arduino - ESP12 osa
Arduino - ESP12 osa

Tegin seda projekti erinevates etappides.

On mitmeid linke, mis aitavad teil importida ESP12 (teise nimega ESP8266) Arduino IDE -sse. (Pidin kasutama versiooni 2.3.0 viimase asemel, kuna viga oli vahepeal lahendatud …)

Alustasin ESP ühendamisega oma Arduino UNO kaudu (kasutatakse ainult sillana arvuti vahel USB kaudu jadaliidese kaudu) ESP jadaliidesesse. Seda selgitavad eraldi juhendid.

Lõpetasin oma valmis projektis juhtmed, et ühendada Serialiga juhuks, kui peaksin kunagi tõrkeotsingut tegema. RX

Seejärel peate oma ESP12 ühendama järgmiselt:

ESP tihvtid…

GND UNO GND

RX UNO RX

TX UNO TX

ET VCC

GPIO15 GND

Esialgu proovisin oma ESP -d toita UNO 3,3 V toiteallikast, kuid hakkasin kiiresti ESP -d toiteallikaga varustama, kuid saate ka oma akut kasutada.

GPIO0 Ühendasin selle hüppajaga GND -ga, et võimaldada ESP vilkumist (= programmeerimist).

Esimene test: jätke hüppaja lahti ja käivitage Arduino IDE -s jadamonitor (115200 baud!).

Kui lülitate ESP -i sisse, peaksite nägema mõnda prügi ja seejärel sõnumit:

Ai-Thinker Technology Co. Ltd. valmis

Selles režiimis toimib ESP natuke nagu vanamoodne modem. Peate kasutama AT -käske.

Proovige järgmisi käske:

AT+RST

ja kaks järgmist käsku

AT+CWMODE = 3

Okei

AT+CWLAP

See peaks andma teile kõigi piirkonna WiFi -võrkude loendi.

Kui see töötab, olete järgmise sammu jaoks valmis.

4. samm: ESP kui võrguajaprotokolli (NTP) kliendi testimine

ESP kui võrguajaprotokolli (NTP) kliendi testimine
ESP kui võrguajaprotokolli (NTP) kliendi testimine
ESP kui võrguajaprotokolli (NTP) kliendi testimine
ESP kui võrguajaprotokolli (NTP) kliendi testimine

Laadige Arduino IDE jaotises Fail, näited, ESP8266WiFi alla NTPClient.

Selle toimimiseks on vaja teha väikeseid muudatusi; peate sisestama oma WiFi -võrgu SSID ja parooli.

Nüüd asetage hüppaja, lühistades GPIO0 GND -ga.

Lülitage ESP sisse ja lülitage eskiis ESP -sse üles.

Pärast koostamist peaks alustama üleslaadimist ESP -sse. Koodi allalaadimisel hakkab ESP sinine LED vilkuma kiiresti.

Märkasin, et pidin natuke mängima IDE taaskäivitamisega, ESP taaskäivitamine enne üleslaadimise toimimist.

Enne visandi koostamise/üleslaadimise alustamist sulgege kindlasti jadakonsool (= jadamonitor), kuna see takistab teil üleslaadimist.

Kui üleslaadimine on õnnestunud, saate seeriamonitori uuesti avada, et näha, kas ESP saab Internetist aega.

Suurepärane, olete programmeerinud oma ESP, ühendanud oma WiFi -ga ja saanud internetist aega.

Järgmisena testime DHT22.

Samm 5: DHT22 anduri testimine

DHT22 anduri testimine
DHT22 anduri testimine

Nüüd on vaja täiendavaid juhtmeid.

DHT -tihvtid … Ühendage anduri tihvt 1 (vasakul) VCC -ga (3,3 V)

Ühendage tihvt 2 ESP GPIO5 (visandis DHTPIN)

Ühendage anduri tihvt 4 (paremal) maandusega

Ühendage 10K takisti kontaktist 2 (andmed) anduri kontakti 1 (toide).

Sarnaselt NTP -testile otsige üles DHTtesteri visand ja kohandage seda järgmisel viisil:

#define DHTPIN 5 // valisime anduriga ühendamiseks GPIO5#defineerime DHTTYPE DHT22 // kuna kasutame DHT22, kuid see kood/teek sobib ka DHT11 jaoks

Jällegi sulgege jadamonitor, lülitage ESP sisse ja lülitage ESP kokku ja vilgutage.

Kui kõik läheb hästi, peaksite mõõtmisi näitama jadamonitoril.

Anduriga saab natuke mängida. Kui te sellele sisse hingate, näete, et niiskus tõuseb.

Kui teil on (mitte -LED) laualamp, võite anduril särada, et seda veidi soojendada.

Suurepärane! Kaks suurt anduri osa töötavad nüüd.

Järgmises etapis kommenteerin lõplikku koodi.

6. samm: selle kokkupanek…

Selle kokku panemine…
Selle kokku panemine…

Jällegi täiendavad juhtmed … see teeb DeepSleepi võimalikuks.

Pidage meeles, et DeepSleep on IoT -seadmete jaoks uskumatu funktsioon.

Kui aga teie andur on DeepSleepi jaoks juhtmega ühendatud, võib ESP -i ümberprogrammeerimine olla keeruline, nii et teeme uue hüppajaühenduse

GPIO16-RST.

Jah, see PEAB olema GPIO16, sest see on GPIO, mis on ühendatud seadme äratamiseks, kui reaalajas kell kustub pärast DeepSleepi!

Testimise ajal võite otsustada teha 15 -sekundilise DeepSleepi.

Silumise ajal nihutasin hüppaja GPIO0 -le, et saaksin oma programmi välgutada.

Kui allalaadimine on lõpule viidud, liigutaksin hüppaja GPIO16 -le, et DeepSleep töötaks.

ESP koodi nimetatakse TnHclient.c

Peate muutma oma SSID -d, parooli ja serveri IP -aadressi.

Seal on täiendavaid koodiridu, mida saate kasutada seadistuste tõrkeotsinguks või testimiseks.

Samm: asjade serveripool

Asjade serveripool
Asjade serveripool
Asjade serveripool
Asjade serveripool

On levinud arusaamatus, et UDP on ebausaldusväärne ja TCP on…

See on sama rumal kui öelda, et haamer on kasulikum kui kruvikeeraja. Need on lihtsalt erinevad väga kasulikud tööriistad ja mõlemal on oma kasutusotstarve.

Muide, ilma UDP -ta Internet ei töötaks … DNS põhineb UDP -l.

Niisiis, valisin UDP, kuna see on väga kerge, lihtne ja kiire.

Kaldun arvama, et minu WiFi on väga usaldusväärne, nii et klient saadab maksimaalselt 3 UDP -paketti, kui kinnitus "OK!" pole vastu võetud.

TnHserveri C-kood on failis TnHServer.c.

Koodis on mitmeid selgitusi.

Vajame serveris lisatööriistu: rrdtool, apache ja võib -olla tcpdump.

Rrdtooli installimiseks Raspbiani saate selle paketi lihtsalt installida järgmiselt: apt-get install rrdtool

Kui teil on vaja võrguliiklust siluda, on tcpdump abiks apt-get install tcpdump

Vajasin veebiserverit, et saaksin graafikutega tutvumiseks brauserit kasutada: apt-get install apache2

Round Robini andmebaasi loomise käsu saamiseks kasutasin seda tööriista: https://rrdwizard.appspot.com/index.php. Peate selle käivitama ainult üks kord (kui saate esimest korda õigesti aru).

rrdtool loo TnHdatabase.rrd-alusta kohe-10s

-samm "1200"

"DS: temperatuur: GAUGE: 1200: -20,5: 45,5"

"DS: niiskus: GAUGE: 1200: 0: 100.0"

"RRA: KESKMINE: 0,5: 1: 720"

"RRA: KESKMINE: 0,5: 3: 960"

"RRA: KESKMINE: 0,5: 18: 1600"

Lõpuks kasutan iga päev keskööl TnHserveri taaskäivitamiseks crontab -kirjet. Käitan TnHserverit tavakasutajana (st. EI ole juur) turvameetmena.

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

Seda tehes saate kontrollida, kas TnHserver töötab

$ ps -ise | grep TnHserver

ja te saate kontrollida, kas see kuulab portide 7777 pakette

$ netstat -anu

Aktiivsed Interneti -ühendused (serverid ja loodud)

Proto Recv-Q Send-Q Kohalik aadress Välis-aadressriik

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Lõpuks CreateTnH_Graphs.sh.txt on diagrammide genereerimise näidisskript. (Ma genereerin skripte juurjuurina, te ei pruugi seda teha.)

Väga lihtsa veebilehe abil saate vaadata graafikuid oma koduvõrgu mis tahes brauserist.

Soovitan: