Cuprins:

Registrator de temperatură WiFi (cu ESP8266): 11 pași (cu imagini)
Registrator de temperatură WiFi (cu ESP8266): 11 pași (cu imagini)

Video: Registrator de temperatură WiFi (cu ESP8266): 11 pași (cu imagini)

Video: Registrator de temperatură WiFi (cu ESP8266): 11 pași (cu imagini)
Video: Домашняя погодная (метео) станция без программирования - WiFi IoT - Температура, Влажность, Давление 2024, Iulie
Anonim
Image
Image
Materiale
Materiale

Bună, mă bucur să te văd aici. Sper că în acest instructable veți găsi câteva informații utile. Nu ezitați să-mi trimiteți sugestii, întrebări, … Iată câteva date de bază și o prezentare rapidă a proiectului. Pentru utilizatorii de telefonie mobilă: Video. Spuneți-mi ce părere aveți despre proiect în secțiunea de comentarii, mulțumesc. Am cumpărat recent o placă NodeMcu (bazată pe esp8266) doar pentru a încerca, deci acesta nu este un proiect cu adevărat avansat. Dar funcționează și este ceea ce am nevoie, deci este ok. Funcția principală a acestui data logger este de a colecta temperatura și de a o salva pe un server. Aceasta permite utilizatorilor să verifice datele și să facă grafic online chiar și atunci când nu se află în aceeași locație a jurnalului (de exemplu pentru o stație meteo). O altă caracteristică utilă este actualizarea OTA inclusă în cod care permite utilizatorului să actualizeze și să personalizeze cu ușurință software-ul. Voi analiza doi senzori și metoda lor de achiziție aferentă pentru a face un echilibru între toate argumentele pro și contra.

Spoiler: după un pic de testare, am constatat că un senzor digital precum DS18B20 este cea mai bună soluție, deoarece oferă stabilitate și precizie mai mare. Este deja rezistent la apă și cu cablul.

Pasul 1: Materiale

Materiale
Materiale
Materiale
Materiale
Materiale
Materiale

Acesta este un proiect minim, cu doar câteva componente externe, pentru aceasta lista BOM va fi foarte scurtă. Cu toate acestea, să vedem ce material este solicitat:

  • NodeMcu V3 (sau orice procesor ESP8266 μ compatibil);
  • LED RGB (anod comun);
  • Rezistoare pentru led (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (termometru Maxim Integrat);
  • LM35 (termometru Texas Instrument);
  • Baterie externă (opțional);
  • Cablu;
  • Conector (pentru a-l face mai „avansat”);
  • Casetă (opțional, din nou pentru a o face mai „avansată”);
  • Suport led (opțional);

Notă: După cum am spus, trebuie să alegeți una dintre cele două metode. Dacă alegeți termometrul LM35, veți avea nevoie de câteva alte componente:

  • Attiny45 / 85;
  • Programator AVR (sau Arduino ca ISP);
  • Rezistor (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • Conector de bandă de 2,54 mm (opțional)
  • Diodă (2x1N914)
  • Perfboard sau PCB;

Pasul 2: Alegerea senzorului

Alegerea senzorului
Alegerea senzorului

Alegerea senzorului poate fi un pas dificil: astăzi există o mulțime de traductoare (TI oferă 144 de elemente diferite), atât analogice, cât și digitale, cu o gamă de temperatură, precizie și carcasă diferite.

  • Înregistratorul de date poate fi schimbat cu ușurință de la temperatura la o altă cantitate (tensiune, curent, …);
  • Poate fi puțin mai ieftin;
  • Ușor de utilizat, deoarece nu necesită nicio bibliotecă specială;

Contra:

  • Solicitați ADC (care poate influența precizia măsurării) și alte componente externe. Deoarece esp8266 are un singur ADC (și nu este foarte precis) aș sugera să folosiți unul extern.
  • Necesită un cablu dedicat cu respingere a zgomotului, deoarece orice tensiune introdusă poate schimba rezultatul.

După un pic de gândire, am decis să folosesc LM35, un senzor liniar cu factor de scală de + 10mV / ° C cu o precizie de 0,5 ° C și un curent foarte mic (aproximativ 60uA) cu o tensiune de funcționare de la 4V la 30V. Pentru mai multe detalii vă sugerez să vedeți fișa tehnică: LM35.

Senzori digitali (foarte recomandat)

Aproape orice componentă externă este necesară;

ADC integrat

Contra:

Solicitați bibliotecă sau software pentru decodarea semnalului digital (I2C, SPI, Serial, One Wire, …);

Mai scump;

Am ales DS18B20 pentru că am găsit un set de 5 senzori impermeabili pe Amazon și pentru că este documentat pe internet. Caracteristica principală este măsurarea de 9-12 biți, magistrală cu 1 fir, tensiune de alimentare de la 3,0 până la 5,5, precizie de 0,5 ° C. Din nou, pentru mai multe detalii aici este fișa tehnică: DS18B20.

Pasul 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Să analizăm modul în care am implementat ADC extern și alte caracteristici pentru termometrul LM35. Am găsit un cablu cu trei fire, unul cu ecranare și două fără. Am decis să adaug un condensator de decuplare pentru a stabiliza tensiunea de alimentare în apropierea senzorului. Pentru a converti temperatura analogică în digitală, am folosit microprocesorul Attiny85 într-un pachet dip8 (din nou pentru mai multe informații, consultați fișa tehnică: attiny85). Cel mai important lucru pentru noi este ADC pe 10 biți (nu chiar cel mai bun, dar suficient de precis pentru mine). Pentru a comunica cu Esp8266, am decis să folosesc comunicarea serială, ținând cont de faptul că esp8266 funcționează cu 3.3V și attiny85 la 5V (deoarece trebuie să alimenteze senzorul). Pentru a realiza acest lucru, am folosit un simplu divizor de tensiune (vezi schema). Pentru a citi temperatura negativă, trebuie să adăugăm câteva componente externe (rezistor 2x1N914 și 1x18k), deoarece nu vreau să folosesc sursa de alimentare negativă. Iată codul: depozitul TinyADC. attiny to ide (introduceți această opțiune în https://drazzy.com/package_drazzy.com_index.json), dacă nu știți cum să o faceți, trebuie doar să căutați pe Google. Sau încărcați direct fișierul.hex.

Pasul 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Am cumpărat acei senzori de la Amazon (5 costă aproximativ 10 €). A sosit cu un capac din oțel inoxidabil și un cablu de 1m lungime. Acest senzor poate returna date de temperatură de la 9 la 12 biți. O mulțime de senzori pot fi conectați la același pin, deoarece toți au un ID unic. Pentru a conecta DS18B20 la esp8266, puteți urmări schema (a doua fotografie). Din moment ce am decis că jurnalistul meu ar fi avut trei sonde, a trebuit să disting care este care. Așa că m-am gândit să le dau o culoare asociată prin intermediul software-ului la adresa lor. Am folosit un tub termocontractabil (a treia fotografie).

Pasul 5: Codul ESP8266

Codul ESP8266
Codul ESP8266
Codul ESP8266
Codul ESP8266

Deoarece sunt nou în lumea asta, am decis să folosesc o mulțime de biblioteci. După cum sa spus în introducere, principalele caracteristici sunt:

  • Actualizare OTA: nu este nevoie să conectați esp8266 la computer de fiecare dată când trebuie să încărcați codul (trebuie să o faceți doar prima dată);
  • Manager wireless, dacă se schimbă rețeaua wireless, nu este nevoie să reîncărcați schița. Puteți configura din nou parametrii de rețea conectați la punctul de acces esp8266;
  • Transmiterea datelor Thingspeak;
  • Atât LM35, cât și DS18B20 acceptate;
  • Interfață de utilizator simplă (ledul RGB indică câteva informații utile);

Vă rog să mă scuzați, deoarece software-ul meu nu este cel mai bun și nu este chiar bine ordonat. Înainte de a încărca pe dispozitiv, trebuie să modificați câțiva parametri pentru a încadra codul în setarea dvs. Aici puteți descărca software-ul. Configurare comună LM35 și DS18B20 Trebuie să modificați definiția pinului, simbolul, numărul canalului, utilizatorul și parola pentru actualizarea OTA. Linie de la 15 la 23.

#define red YOURPINHERE #define green YOURPINHERE

#define blue YOURPINHERE const char * host = "select host host"; // nu este cu adevărat necesar, puteți lăsa esp8266-webupdate const char * update_path = "/ firmware"; // pentru a schimba adresa pentru actualizare ex: 192.168.1.5/firmware const char * update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" WRITEAPIHERE ";

Pasul 6: Cod ESP8266: Utilizator LM35

Trebuie să conectați placa de conectare la esp8266, pentru a alimenta unitatea ADC utilizați pinul VU și pinul G. Trebuie să alegeți pinul pe care doriți să îl utilizați pentru comunicarea în serie (pentru a menține hardware-ul gratuit în scopul depanării). Pinul Tx trebuie selectat, dar nu este utilizat cu adevărat. (Linia 27). SoftwareSerial mySerial (RXPIN, TXPIN); În partea de sus trebuie să adăugați: #define LM35USER

Pasul 7: Cod ESP8266: Utilizator DS18B20

Ca prima operație, trebuie să identificați adresa dispozitivului pentru fiecare senzor. Compilați și programați acest cod în sp și căutați în serie rezultatele. Codul poate fi găsit aici (căutați acest titlu în pagina: «Citiți adresele individuale DS18B20»). Conectați un singur senzor pentru a obține adresa, rezultatele ar trebui să fie de genul acesta (număr aleatoriu aici! Ca exemplu): 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 Apoi trebuie să modificați codul meu în secțiunea „ Configurare pentru DS18B20 "(linia 31 la 36)":

#define ONE_WIRE_BUS ONEWIREPINHERE #define TEMPERATURE_PRECISION TEMPBITPRECISION // (de la 9 la 12) #define delayDallas READINTERVAL // (În milisecunde, minimum este 15s sau 15000mS) DeviceAddress blueSensor = {0x11, 0x22, 0x 0, 0x22, 0x 0x12}; // SCHIMBĂ CU ADRESA Dvs. DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // SCHIMBĂ CU ADRESA Dvs. DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // SCHIMBAȚI CU ADRESA Dvs. În partea de sus trebuie să adăugați: #define DSUSER

Pasul 8: ESP8266 Little Trick

ESP8266 Micul truc
ESP8266 Micul truc

După un pic de testare am constatat că, dacă conectați esp8266 fără programare, acesta nu va rula codul până când nu apăsați reset o dată. Pentru a rezolva această problemă, după un pic de cercetare, am descoperit că trebuie să adăugați un rezistor pull-up de la 3,3V la D3. Acest lucru îi va spune procesorului să încarce codul din memoria flash. Cu această metodă, D3 poate fi utilizat direct pentru introducerea datelor pentru senzorii DS18B20.

Pasul 9: Prima operare

Prima operațiune
Prima operațiune
Prima operațiune
Prima operațiune

Dacă ați încărcat corect codul, dar nu utilizați niciodată biblioteca managerului Wifi, este timpul să vă configurați conexiunea wifi. Așteptați până când vedeți ledul RGB intermitent mai repede decât înainte, apoi căutați cu telefonul mobil sau PC rețeaua wifi numită „AutoConnectAp” și conectați-vă. După conectare, deschideți un browser web și introduceți 192.168.4.1, veți găsi interfața GUI a managerului wifi (vezi fotografiile) și apăsați „Configurare Wifi”. Așteptați ca esp8266 să caute rețele wifi și selectați-o pe cea dorită. Introduceți parola și apăsați „salvați”. Esp8266 va reporni (nu vă pasă de RGB condus de această dată, deoarece va afișa câteva informații aleatorii) și se va conecta la rețea.

Pasul 10: Concluzie

Concluzie
Concluzie
Concluzie
Concluzie
Concluzie
Concluzie
Concluzie
Concluzie

În cele din urmă, iată un grafic preluat de la data logger în acțiune în timp ce înregistrați temperatura congelatorului meu. În portocaliu este DS18B20 și în albastru LM35 și circuitul său. Puteți vedea cea mai mare diferență de precizie de la senzorul digital la senzorul analogic (cu „circuitul ADC” sărac al meu) care oferă câteva date non-fizice. Rezumând, dacă doriți să construiți acest logger, vă sugerez să utilizați senzorul de temperatură digital DS18B20, deoarece este mai ușor de citit și aproape „plug and play”, este mai stabil și mai precis, rulează la 3,3V și necesită un singur pin pentru mulți senzori. Mulțumesc pentru atenție, sper că acest proiect este bun pentru dvs. am găsit câteva informații utile. Și pentru cine vrea să-și dea seama, îmi doresc să fi dat toate informațiile necesare. Dacă nu este liber să întreb totul, voi fi bucuros să răspund la toate întrebările. Întrucât nu vorbesc limba engleză, dacă ceva nu este în regulă sau nu este de înțeles, anunțați-mă. Dacă v-a plăcut acest proiect, vă rugăm să îl votați pentru concursuri și / sau să lăsați un comentariu ☺ Mă va încuraja să continui să actualizez și să public conținut nou. Mulțumesc.

Recomandat: