Cuprins:
- Pasul 1: Mergeți la cumpărături
- Pasul 2: Configurare și fundal
- Pasul 3: Arduino - ESP12 Partea
- Pasul 4: Testarea ESP-ului ca client Network Time Protocol (NTP)
- Pasul 5: Testarea senzorului DHT22
- Pasul 6: Pune-l împreună …
- Pasul 7: partea serverului
Video: Senzor de temperatură pentru rețeaua de domiciliu: 7 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:43
Ce trebuie să știți pentru a face acest proiect:
Trebuie să știți despre: - Unele abilități electronice (lipire)
- Linux
- ID Arduino
(va trebui să actualizați placi suplimentare în IDE:
- actualizarea / programarea unei plăci ESP prin Arduino IDE.
(există câteva tutoriale frumoase disponibile pe web)
Acest lucru se poate face folosind un Arduino Uno sau folosind un FTDI (USB către adaptor serial).
Mi-am folosit Uno pentru că nu aveam niciun port serial pe computerul meu și nici nu aveam FTDI
Pasul 1: Mergeți la cumpărături
De ce vei avea nevoie pentru ca acest lucru să se întâmple?
Pentru senzorul digital de temperatură și umiditate:
- Fie o placă de rețea, fie o alternativă, cum ar fi un prototip de PCB, lipit, lipit …
- Un fir
- doi săritori
- un rezistor de 10k Ohm
- un ESP12F (s-ar putea să funcționeze și alte modele …)
- un DHT22 (puțin mai scump decât DHT11, dar mai precis)
- 3 baterii reîncărcabile AA și un suport pentru baterii
- o cutie de plastic pentru a vă pune proiectul
- Într-o etapă ulterioară intenționez să adaug un HT7333 cu doi condensatori de 10 uF între acumulator și ESP
pentru a stabiliza tensiunea de intrare (VCC) la 3.3V recomandat dar și pentru a proteja ESP de supratensiune.
Pentru partea de rețea:
- Rețeaua WiFi de acasă
Pentru partea Server:
- Orice sistem bazat pe Linux (întotdeauna activ!)
Am folosit un Raspberry Pi (pe care îl folosesc și ca server pentru camerele mele IP în aer liber.)
- compilator gcc pentru a compila codul serverului
- pachetul rrdtool pentru a stoca datele și a genera grafice
- apache (sau alt server web)
PC-ul sau laptopul tău preferat cu Arduino IDE pe el.
Pasul 2: Configurare și fundal
În această versiune a unui WiFi conectat - ca să nu spun IOT - senzor de temperatură și umiditate am folosit un ESP12F, un DHT22 și un suport de baterii de 3 AA cu baterii reîncărcabile.
La fiecare 20 de minute ESP ia o măsurare de la DHT22 și o trimite la un server (un Raspberry Pi) prin UDP pe rețeaua mea WiFi de acasă. După trimiterea măsurătorilor, ESP intră în adâncuri. Aceasta înseamnă că doar ceasul în timp real al modulului rămâne alimentat, rezultând o economie incredibilă de energie. Timp de aproximativ 5 secunde, modulul necesită aproximativ 100mA, apoi în timpul somnului de 20 de minute doar 150uA.
Nu am vrut să folosesc niciun serviciu bazat pe Internet, deoarece am Raspberry Pi care este întotdeauna activat și în acest fel am avut plăcerea să scriu și partea serverului.
Pe server (un Raspberry Pi care rulează Raspbian) am scris un simplu ascultător UDP (server) care stochează valorile într-un RRD simplu. (Baza de date Round Robin folosind RRDtool de Tobias Oetiker.)
Avantajul RRDtool este că vă creați baza de date o dată și dimensiunea rămâne aceeași. Altfel nu este nevoie să aveți un server de baze de date (cum ar fi mySQLd) care rulează în fundal. RRDtool vă oferă instrumentele pentru a crea baza de date și a genera grafice.
Serverul meu creează graficele periodic și afișează totul într-o pagină http foarte simplă. Îmi pot consulta lecturile cu un browser simplu conectându-mă la serverul web Apache2 de pe Raspberry Pi!
În cele din urmă, nu aveam un FTDI (USB to Serial), așa că am folosit Arduino UNO. Trebuie să conectați TX-urile și RX-urile și GND-ul ESP și UNO. (Știu, instinctul tău ar putea să-ți spună să traversezi RX-urile și TX-urile … încercat și el, nu funcționează.)
Nu am făcut o conversie de nivel (UNO: High = 5V, dar ESP este practic un dispozitiv de 3,3V … Există câteva FTDI frumoase pe piață, unde puteți chiar să selectați nivelul dvs. înalt pentru a fi 5 sau 3,3V.
Circuitul meu este alimentat de 3 baterii reîncărcabile AA - deci de fapt 3 X 1,2V. Într-o fază ulterioară intenționez să pun un HT7333 între baterie și circuit pentru siguranță; bateriile nou încărcate ar putea avea mai mult de 1,2 V, iar ESP-ul ar trebui să fie alimentat cu o tensiune de minim. 3V și max. 3,6V. De asemenea, dacă decid - într-un moment de slăbiciune - să introduc baterii alcaline (3 X 1,5V = 4,5V) ESP-ul meu nu va fi prăjit!
De asemenea, am luat în considerare utilizarea unui panou solar de 10cm x 10cm, dar pur și simplu nu a meritat bătaia de cap. Făcând 3 măsurători pe oră (practic 3x 5 secunde @ 100mA max. Și restul timpului @ 100uA), sper să-mi alimentez circuitul timp de 1 an pe aceleași baterii reîncărcabile.
Pasul 3: Arduino - ESP12 Partea
Am făcut acest proiect în pași diferiți.
Există mai multe linkuri care vă ajută să importați ESP12 (aka. ESP8266) în IDE Arduino. (A trebuit să folosesc versiunea 2.3.0 în locul celei mai recente din cauza unui bug care ar fi putut fi rezolvat între timp …)
Am început prin conectarea ESP-ului, peste Arduino UNO (folosit doar ca o punte între PC-ul meu prin USB către Serial) la interfața serială ESP. Există instructabile separate care explică acest lucru.
În proiectul meu finalizat, am lăsat firele pentru a mă conecta la Serial, în cazul în care ar trebui să depanez vreodată. RX
Apoi, trebuie să vă conectați ESP12 după cum urmează:
PIN-uri ESP …
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
Inițial am încercat să-mi alimentez ESP-ul de la 3,3V pe UNO, dar m-am mutat rapid la alimentarea ESP-ului meu cu o sursă de alimentare de pe bancă, dar poți folosi și bateria.
GPIO0 L-am conectat pe acesta cu un jumper la GND pentru a permite intermitentul (= programarea) ESP-ului.
Primul test: lăsați jumperul deschis și porniți un monitor serial în Arduino IDE (la 115200 baud!).
Porniți ciclul ESP, ar trebui să vedeți câteva caractere de gunoi și apoi un mesaj de genul:
Ai-Thinker Technology Co. Ltd. gata
În acest mod, ESP acționează un pic ca un modem de modă veche. Trebuie să utilizați comenzile AT.
Încercați următoarele comenzi:
AT + RST
și următoarele două comenzi
AT + CWMODE = 3
Bine
AT + CWLAP
Acest lucru ar trebui să vă ofere o listă a tuturor rețelelor WiFi din zonă.
Dacă acest lucru funcționează, sunteți gata pentru următorul pas.
Pasul 4: Testarea ESP-ului ca client Network Time Protocol (NTP)
În IDE-ul Arduino, sub Fișier, Exemple, ESP8266WiFi, încărcați NTPClient.
Sunt necesare modificări minore pentru ca acesta să funcționeze; trebuie să introduceți SSID-ul și parola rețelei WiFi.
Acum plasați jumperul, scurtcircuitând GPIO0 la GND.
Porniți ciclul ESP și încărcați schița în ESP.
După compilare, ar trebui să înceapă încărcarea în ESP. LED-ul albastru de pe ESP va clipi rapid pe măsură ce codul este descărcat.
Am observat că a trebuit să mă joc puțin cu repornirea IDE, repornirea ESP înainte ca încărcarea să funcționeze.
Înainte de a începe să compilați / încărcați schița, asigurați-vă că închideți consola serială (= monitorul serial), deoarece acest lucru vă va împiedica să faceți încărcarea.
Odată ce încărcarea a reușit, puteți redeschide monitorul serial pentru a vedea ESP-ul obținând efectiv timpul de pe Internet.
Minunat, ți-ai programat ESP-ul, te-ai conectat la WiFi și ai primit timpul de pe Internet.
Pasul următor vom testa DHT22.
Pasul 5: Testarea senzorului DHT22
Acum este necesar un cablaj suplimentar.
Pinii DHT … Conectați pinul 1 (din stânga) al senzorului la VCC (3,3V)
Conectați pinul 2 ESP GPIO5 (DHTPIN în schiță)
Conectați pinul 4 (din dreapta) al senzorului la Pământ
Conectați un rezistor de 10K de la pinul 2 (date) la pinul 1 (putere) al senzorului.
Similar testului NTP, găsiți schița DHTtester și modificați-o în felul următor:
#define DHTPIN 5 // am selectat GPIO5 pentru a ne conecta la senzor # define DHTTYPE DHT22 // deoarece folosim un DHT22 dar acest cod / bibliotecă este potrivit și pentru DHT11
Din nou, închideți monitorul serial, alimentați ciclu ESP și compilați și blocați ESP.
Dacă totul merge bine, ar trebui să vedeți măsurătorile apar pe monitorul serial.
Puteți juca puțin cu senzorul. Dacă respirați pe el, veți vedea umiditatea crescând.
Dacă aveți o lampă de birou (fără LED), puteți străluci pe senzor pentru a o încălzi puțin.
Grozav! Două părți mari ale senzorului funcționează acum.
În pasul următor voi comenta codul final.
Pasul 6: Pune-l împreună …
Din nou, unele cabluri suplimentare … aceasta este pentru a face DeepSleep posibil.
Amintiți-vă, DeepSleep este o funcție incredibilă pentru dispozitivele IoT.
Cu toate acestea, dacă senzorul dvs. este conectat la DeepSleep, ar putea fi dificil să reprogramați ESP, așa că vom face o altă conexiune jumper între
GPIO16-RST.
Da, TREBUIE să fie GPIO16, deoarece acesta este GPIO-ul care este conectat la cablu pentru a trezi dispozitivul când ceasul în timp real se stinge după DeepSleep!
În timp ce testați, puteți decide să faceți un DeepSleep de 15 secunde.
Când depanam, mutam jumperul pe GPIO0, astfel încât să-mi pot arăta programul.
La finalizarea descărcării, aș muta jumperul la GPIO16, astfel încât DeepSleep să funcționeze.
Codul pentru ESP se numește TnHclient.c
Trebuie să vă schimbați SSID-ul, parola și adresa IP a serverului.
Există linii suplimentare de cod pe care le puteți utiliza pentru depanarea sau testarea configurării.
Pasul 7: partea serverului
Este o neînțelegere obișnuită că UDP nu este fiabil și TCP este …
Este la fel de prostesc ca a spune că un ciocan este mai util decât o șurubelniță. Ele sunt pur și simplu diferite instrumente foarte utile și ambele își folosesc.
Apropo, fără UDP Internetul nu ar funcționa … DNS se bazează pe UDP.
Așadar, am ales UDP pentru că este foarte ușor, ușor și rapid.
Tind să cred că WiFi-ul meu este foarte fiabil, astfel încât clientul va trimite cel mult 3 pachete UDP dacă confirmarea „OK!” nu este primit.
Codul C pentru TnHserver se află în fișierul TnHServer.c.
Există mai multe comentarii în cod care explică acest lucru.
Vom avea nevoie de câteva instrumente suplimentare pe server: rrdtool, apache și poate tcpdump.
Pentru a instala rrdtool pe Raspbian, puteți instala pur și simplu pachetul astfel: apt-get install rrdtool
Dacă trebuie să depanați traficul de rețea, tcpdump vine la îndemână apt-get install tcpdump
Aveam nevoie de un server web pentru a putea folosi un browser pentru a consulta graficele: apt-get install apache2
Am folosit acest instrument: https://rrdwizard.appspot.com/index.php pentru a obține comanda pentru a crea baza de date Round Robin. Trebuie să rulați acest lucru o singură dată (dacă îl faceți bine prima dată).
rrdtool create TnHdatabase.rrd --start now-10s
- pasul '1200'
'DS: Temperatură: CALIBRU: 1200: -20,5: 45,5'
„DS: Umiditate: CALIBRU: 1200: 0: 100.0”
„RRA: MEDIE: 0,5: 1: 720”
„RRA: MEDIE: 0,5: 3: 960”
„RRA: MEDIE: 0,5: 18: 1600”
În cele din urmă, folosesc o intrare crontab pentru a reporni TnHserver în fiecare zi la miezul nopții. Execut TnHserver ca utilizator normal (adică NU root) ca măsură de siguranță.
0 0 * * * / usr / bin / pkill TnHserver; / home / user / bin / TnHserver> / dev / null 2> & 1
Puteți verifica dacă TnHserver rulează efectiv
$ ps -elf | grep TnHserver
și puteți verifica dacă ascultă pachete pe portul 7777 procedând astfel
$ netstat -anu
Conexiuni active la internet (servere și stabilite)
Proto Recv-Q Trimite-Q Adresă locală Stare adresă străină
udp 0 0 0.0.0.0:7777 0.0.0.0:*
În cele din urmă CreateTnH_Graphs.sh.txt este un exemplu de script pentru a genera graficele. (Generez scripturile ca root, este posibil să nu doriți să faceți acest lucru.)
Folosind o pagină web foarte simplă puteți urmări graficele din orice browser din rețeaua dvs. de acasă.
Recomandat:
Cum să vă creați propriul gateway WIFI pentru a vă conecta Arduino la rețeaua IP?: 11 pași (cu imagini)
Cum să vă creați propriul gateway WIFI pentru a vă conecta Arduino la rețeaua IP? Lucrez la un robot care trebuie să fie conectat permanent cu un server care rulează ar
Senzor de temperatură pentru Arduino Aplicat pentru COVID 19: 12 pași (cu imagini)
Senzor de temperatură pentru Arduino Aplicat pentru COVID 19: Senzorul de temperatură pentru Arduino este un element fundamental atunci când vrem să măsurăm temperatura unui procesor al corpului uman. Senzorul de temperatură cu Arduino trebuie să fie în contact sau aproape pentru a primi și măsura nivelul de căldură. Așa e
Montare pe perete pentru iPad ca panou de control de automatizare la domiciliu, folosind un magnet controlat servo pentru a activa ecranul: 4 pași (cu imagini)
Montare pe perete pentru iPad Ca panou de control pentru automatizarea casei, folosind un magnet controlat servo pentru a activa ecranul: în ultimul timp am petrecut destul de mult timp automatizând lucrurile în și în jurul casei mele. Folosesc Domoticz ca aplicație de automatizare a casei, consultați www.domoticz.com pentru detalii. În căutarea unei aplicații de tablou de bord care afișează toate informațiile Domoticz
Punct de acces (AP) NodeMCU ESP8266 pentru server web cu senzor de temperatură DT11 și temperatură și umiditate de imprimare în browser: 5 pași
Punct de acces (AP) ESP8266 NodeMCU pentru server web cu senzor de temperatură DT11 și temperatură și umiditate de imprimare în browser: Bună băieți în majoritatea proiectelor folosim ESP8266 și în majoritatea proiectelor folosim ESP8266 ca server web, astfel încât datele să poată fi accesate pe orice dispozitiv prin Wi-Fi accesând Webserver-ul găzduit de ESP8266, dar singura problemă este că avem nevoie de un router funcțional pentru
Senzor de ușă alimentat de baterie cu integrare automată la domiciliu, WiFi și ESP-ACUM: 5 pași (cu imagini)
Senzor de ușă alimentat de baterie cu integrare de automatizare la domiciliu, WiFi și ESP-ACUM: În acest instructiv vă arăt cum am realizat un senzor de ușă alimentat de baterie cu integrare de automatizare la domiciliu. Am văzut și alți senzori și sisteme de alarmă drăguțe, dar am vrut să fac unul singur. Obiectivele mele: un senzor care detectează și raportează o doo