Cuprins:

Stația meteo NaTaLia: Stația meteo cu energie solară Arduino a fost realizată în mod corect: 8 pași (cu imagini)
Stația meteo NaTaLia: Stația meteo cu energie solară Arduino a fost realizată în mod corect: 8 pași (cu imagini)

Video: Stația meteo NaTaLia: Stația meteo cu energie solară Arduino a fost realizată în mod corect: 8 pași (cu imagini)

Video: Stația meteo NaTaLia: Stația meteo cu energie solară Arduino a fost realizată în mod corect: 8 pași (cu imagini)
Video: Vantmetru! pentru cei cu eoliene! stație meteo pentru curte! 2024, Iulie
Anonim
Stația meteo NaTaLia: Stația meteo cu energie solară Arduino a fost realizată în modul corect
Stația meteo NaTaLia: Stația meteo cu energie solară Arduino a fost realizată în modul corect
Stația meteo NaTaLia: Stația meteo cu energie solară Arduino a fost realizată în modul corect
Stația meteo NaTaLia: Stația meteo cu energie solară Arduino a fost realizată în modul corect

După 1 an de funcționare reușită în 2 locații diferite, împărtășesc planurile proiectului stației meteo cu energie solară și explic cum a evoluat într-un sistem care poate supraviețui cu adevărat pe perioade lungi de timp de la energia solară. Dacă urmați instrucțiunile mele și utilizați exact aceleași materiale ca cele enumerate, puteți construi o stație meteo cu energie solară care va funcționa mulți ani. De fapt, singurul factor care limitează durata de funcționare este durata de viață a bateriei pe care o folosiți.

Pasul 1: Funcționarea stației meteo

1, Transmițător: cutie montată în exterior cu panou solar care trimite telemetrie meteorologică (temperatură, umiditate, indice de căldură, forță solară) periodic către unitatea de recepție interioară.

2, receptor: unitate interioară realizată dintr-un Raspberry PI 2 + Arduino Mega având un receptor RF de 433 MHz conectat pentru recepția datelor. În configurarea mea, această unitate nu are funcționalitate de afișare LCD locală. Se execută fără griji. Un program C principal are grijă să primească datele primite de la Arduino prin serial, apoi să înregistreze datele într-un fișier text și să pună la dispoziție ultimele date primite prin telnet pentru ca alte dispozitive să le interogheze.

Stația controlează luminile din casa mea prin citirea fotorezistorului (care determină dacă este zi sau noapte afară). Receptorul este fără cap în cazul meu, dar puteți modifica cu ușurință proiectul pentru a adăuga un ecran LCD. Unul dintre dispozitivele care utilizează, analizează și afișează datele meteo de la stație este celălalt proiect al meu: Ironforge The NetBSD Toaster.

Pasul 2: primele versiuni

Primele versiuni
Primele versiuni
Primele versiuni
Primele versiuni
Primele versiuni
Primele versiuni
Primele versiuni
Primele versiuni

Există o mulțime de proiecte solare pe net, dar multe dintre ele comit greșeala obișnuită că sistemul scoate mai multă energie din baterie în timp, ceea ce panoul solar ar putea umple, mai ales în lunile înnorate și întunecate de iarnă.

Când proiectați un sistem alimentat cu energie solară, singurul lucru contează este CONSUMUL DE PUTERE, pe toate componentele: mcu, emițător radio, regulator de tensiune etc.

Folosirea unui computer mare, cum ar fi un raspberry pi sau un dispozitiv wifi înfometat, cum ar fi ESP, doar pentru a colecta și transporta câțiva biți de date meteo ar fi o exagerare, dar așa cum o voi arăta în acest tutorial, chiar și o mică placă Arduino este.

Cel mai bun este întotdeauna măsurarea curentului în timpul procesului de construcție cu un contor sau cu un scop (util atunci când încercați să măsurați vârfuri mici în timpul operației în perioade de timp foarte scurte (milisecunde)).

Pe prima imagine puteți vedea prima mea stație (Arduino Nano Based) și a doua placă Arduino Barebone Atmega 328P.

Prima versiune, deși a funcționat perfect (monitorizarea mediului și trimiterea datelor prin radio) a avut un consum prea mare de energie ~ 46mA și a descărcat bateria în câteva săptămâni.

Toate versiunile foloseau următoarea baterie:

18650 Placă de protecție încorporată cu baterie reîncărcabilă Li-ion 6000mAh

ACTUALIZAȚI pe aceste baterii ScamFire. Deși acesta este un Instructable destul de vechi, încă m-am simțit obligat să îl corectez datorită acestei baterii false. NU cumpărați bateria menționată, faceți propriile cercetări despre alte baterii LION / LIPO, toate bateriile de 3,7 V vor funcționa cu acest proiect.

În cele din urmă, am avut timp să dezmembrez bateria ScamFire pentru a vedea care este capacitatea sa reală. Prin urmare, vom executa 2 calcule cot la cot cu capacitățile reale și „publicitate”.

În primul rând, este un lucru că această baterie este falsă și nimic din ceea ce susțin despre ea nu este adevărat, noile versiuni sunt chiar mai rele, au copiat falsul lăsând în afara circuitul de protecție de 2 cenți, astfel încât nimic nu le va opri descărcarea la zero.

Un mic articol despre bateriile LION / LIPO:

TLDR:

Ceea ce înseamnă acest lucru este că tensiunea maximă a celulei este de 4.2v și că tensiunea „nominală” (medie) este de 3.7V.

De exemplu, iată un profil al tensiunii pentru o baterie „clasică” de 3,7 V / 4,2 V. Tensiunea începe la maximum 4,2 și scade rapid la aproximativ 3,7 V pentru cea mai mare parte a duratei de viață a bateriei. Odată ce ați lovit 3.4V bateria este descărcată și la 3.0V circuitul de întrerupere deconectează bateria.

Măsurătorile mele folosind o sarcină falsă:

Baterie încărcată: 4.1V

Cutoff setat la: 3.4V

Simulare de încărcare: 0,15 A (dispozitivul meu a avut o problemă puțin mai mică cu asta.)

Capacitate măsurată: 0,77 Ah oferă-i gratuit 0,8 Ah, care este de 800 mAh în loc de 6000 mAh anunțat!

Deoarece această baterie nu avea nici măcar circuitul de protecție, am putut coborî în mod liber, dar la 3,4V după 10 minute deja se prăbușește la 3,0V.

Prin urmare, cu calcule simple, bateria oferă:

Teoretic

Tensiunea bateriei = 3,7V

Putere = 3,7x6000 = 22000 mWh

Real

Tensiunea bateriei = 3,7 V Putere = 3,7x800 = 2960 mWh

Versiune: 0.1 ARDUINO NANO BASED

Chiar și cu biblioteca LowPower, un nano Arduino consumă ~ 16 mA (în modul de repaus) -> FAIL.

Teoretic

Pavg = VxIavg = 5Vx16mA = 80 mW

Durata de viață a bateriei = 22000/80 = 275 ore = 11 zile aproximativ

RealPavg = VxIavg = 5Vx16mA = 80 mW

Durata de viață a bateriei = 800/80 = 10 ore

Versiune: 0.2 Atmega 328P Barebone

Puterea consumată de un ATmega328 depinde foarte mult de ceea ce faceți cu el. Doar așezat acolo într-o stare implicită, poate folosi 16mA @ 5V în timp ce rulează la 16MHz.

Când ATmega328P este în modul activ, va executa în mod continuu câteva milioane de instrucțiuni pe secundă. Mai mult, perifericele de la bord convertor analogic la digital (ADC), interfață serială periferică (SPI), temporizator 0, 1, 2, interfață cu două fire (I2C), USART, cronometru de supraveghere (WDT) și detecție Brown-out (BOD) consumă energie.

Pentru a economisi energie, ATMega328P MCU acceptă o serie de moduri de repaus și perifericele neutilizate pot fi oprite. Modurile de somn diferă în ce părți rămân active, în funcție de durata somnului și de timpul necesar trezirii (perioada de trezire). Modul de repaus și perifericele active pot fi controlate cu bibliotecile de somn și putere AVR sau, mai concis, cu excelenta bibliotecă Low-Power.

Biblioteca Low-Power este ușor de utilizat, dar foarte puternică. Declarația LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); pune MCU-ul în SLEEP_MODE_PWR_DOWN timp de 16 ms până la 8 s, în funcție de primul argument. Dezactivează ADC și BOD. Oprirea prin oprire înseamnă că toate funcțiile cipului sunt dezactivate până la următoarea întrerupere. Mai mult, oscilatorul extern este oprit. Numai întreruperile de nivel de pe INT1 și INT2, întreruperile de modificare a pinului, potrivirea adresei TWI / I2C sau WDT, dacă este activat, pot activa MCU. Deci, cu declarația unică, veți reduce la minimum consumul de energie. Pentru un Pro Mini de 3,3 V fără LED de alimentare și fără regulator (vezi mai jos) care rulează declarația, consumul de energie este de 4,5 μA. Acest lucru este foarte aproape de ceea ce este menționat în foaia de date ATmega328P pentru oprirea somnului cu WDT activat de 4,2 μA (foaie de date legată în surse). Prin urmare, sunt destul de încrezător că funcția powerDown închide tot ceea ce este posibil în mod rezonabil. Cu declarația LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF); WDT va fi dezactivat și nu te-ai trezi până nu se declanșează o întrerupere.

Deci, cu configurarea barebone putem pune cipul în modul de repaus timp de 5 minute, în timp ce consumă o cantitate foarte mică de energie (0,04 mA fără periferice). Cu toate acestea, acesta este doar cipul Atmega 328P cu oscilatorul de cristal și nimic altceva, amplificatorul de tensiune utilizat în această configurație pentru a crește tensiunea bateriei de la 3,7 V -> 5,0 V consumă, de asemenea, 0,01 mA.

O scurgere de tensiune constantă a fost rezistența foto adăugată care crește consumul în modul de repaus la un total de 1 mA (aceasta include toate componentele).

Formula pentru calcularea consumului precis pentru dispozitiv atât în modul repaus, cât și în modul trezire este:

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Ion = 13mA

Acest lucru provine în principal de la transmițătorul RF433 Mhz:

Transmițător:

Tensiune de lucru: 3V - 12V pentru max. consum de energie 12V Curent de lucru: max Mai puțin de 40mA max și minim 9mAR Mod de rezonanță: (SAW) Mod de modulare: ASK Frecvența de lucru: Eve 315MHz Sau 433MHz Putere de transmisie: 25mW (315MHz la 12V) Eroare de frecvență: + 150kHz (max) Viteza: mai mică de 10Kbps

Isleep = 1mA

Ar fi semnificativ mai puțin fără fotorezistor.

Timp trunon Ton = 250 mS = 0,25s

Timp de somn Tsleep = 5 min = 300s

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Iavg = (0.25s * 13mA + 300s * 1mA) / (0.25s + 300s)

Iavg = 1,26mA

Pavg = VxIavg = 5Vx1.26mA = 6 mW

Teoretic

Durata de viață a bateriei = 22000mWh / 6mW = 3666 ore = 152 zile aproximativ

Real

Durata de viață a bateriei = 800mWh / 6mW = 133 ore = 5,5 zile aproximativ

Deși acestea erau încă o serie UltraFire mai bună, ceea ce am folosit inițial, ați putut vedea că, fără panoul solar sau consumul redus de 1mA, acest proiect nu ar supraviețui mult.

Simțiți-vă liber să construiți stația și să vă notați concluziile și calculele în comentarii și voi actualiza articolul. Aș aprecia, de asemenea, rezultatele cu diferite MCU-uri și convertoarele boost.

Pasul 3: Construirea unei stații meteo de succes

Construirea unei stații meteo de succes
Construirea unei stații meteo de succes
Construirea unei stații meteo de succes
Construirea unei stații meteo de succes
Construirea unei stații meteo de succes
Construirea unei stații meteo de succes
Construirea unei stații meteo de succes
Construirea unei stații meteo de succes

Deși este prima versiune de succes, conține un pic de eșec pe imagini și nu le pot reface, deoarece stațiile sunt deja implementate. Cele două amplificatoare de tensiune afișate pe imagine pot fi obținute în momentul scrierii pentru aero-modelare și alte aplicații. Când mi-am reproiectat stația, mă gândeam să obțin o placă de creștere a tensiunii mai mică și mai eficientă, oricât de mică ar fi cu siguranță nu înseamnă că este mai eficientă.

Noul modul mic de pe imagine, care nu are nici măcar un indicator cu LED-uri, de fapt a scurs 3mA (* FAIL *) de la sine, așa că am rămas cu vechea mea placă:

PFM Control DC-DC USB 0.9V-5V to 5V dc Boost Step-up Power Supply Module

În momentul scrierii, acest modul este încă disponibil pe Ebay cu 99 de centi, dar dacă decideți să utilizați un alt rapel, verificați întotdeauna consumul de energie în regim de așteptare. Cu un rapel de bună calitate, nu ar trebui să fie mai mult decât al meu (0,01 mA), deși LED-ul mic de la bord a trebuit să fie dezlipit.

Pasul 4: Lista hardware

Lista hardware
Lista hardware
  • 18650 Placă de protecție încorporată cu baterie reîncărcabilă Li-ion 6000mAh
  • Atmega 328P16M 5V cu bootloader
  • Kit Adafruit DC Boarduino (compatibil Arduino) (cu ATmega328) <aceasta va fi o investiție bună dacă faceți viitoare proiecte barebone
  • Rezistor foto sensibil la lumină Fotorezistor Optorezistor 5mm GL5539
  • 1A 1000V Diode 1N4007 IN4007 DO-41 Diode redresoare
  • PFM Control DC-DC USB 0.9V-5V to 5V dc Boost Step-up Power Supply Module
  • Încărcător de celule epoxidice 1.6W 5.5V 266mA Mini modul modul panou solar
  • TP405 5V Mini USB 1A Modul încărcător baterie litiu baterie litiu
  • Kitul de transmisie și receptor RF 433Mhz pentru telecomandă Arduino / ARM / MC <Kit, conține atât emițătorul, cât și receptorul
  • Cutie de joncțiune pentru protecția comutatorului IP65 Carcasă impermeabilă în aer liber 150x110x70mm
  • Noul modul senzor de temperatură și umiditate relativă DHT22 pentru Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007diode
  • Rezonator / oscilator ceramic Adafruit 16 MHz [ADA1873]
  • Arduino UNO / Mega etc pentru stația receptor + Raspberry PI 1/2/3
  • Cutie din plastic acrilic transparent (opțional)

Toate acestea le puteți găsi pe Ebay, nu vreau să promovez niciun vânzător prin conectarea la paginile lor, iar linkurile vor deveni oricum moarte în viitor.

Note pentru lista hardware:

Doar în cazul în care cumpărați cumva Atmega cu programarea cumpărați mai multe dintre ele, același lucru este valabil și pentru amplificatorul de tensiune și controlerul de încărcare solară.

Încărcătorul solar conține 2 LED-uri de culoare mici, care sunt pornite numai în caz de încărcare solară și indică (roșu-> încărcare, albastru-> stări complet încărcate). Acestea pot fi și nesoldate. Mai degrabă oferă un pic mai mult suc bateriei în timpul încărcării.

După cum vedeți, nu există suporturi pentru baterii pe lista mea. De ce? Pentru că nu sunt de încredere. Am avut nenumărate ocazii când bateria a ieșit din suport și a pierdut conexiunea. Mai ales dacă configurația dvs. este montată pe un stâlp înalt de vase ca al meu, deschis pentru orice condiții meteorologice dure. Am închis chiar bateria în suport cu 2 fermoare și a reușit totuși să se miște. Nu o faceți, scoateți învelișul extern din baterie și lipiți firele direct în partea de jos a bateriei, conținând circuitul de protecție la suprasarcină (nu ocoliți protecția). Un suport pentru baterie poate fi utilizat doar pentru menținerea bateriei în poziție în dispozitiv.

TP405 5V Mini USB 1A Placă de încărcare a bateriei cu litiu: din păcate, această placă nu include protecție împotriva curentului invers la panoul solar, pentru aceasta veți avea nevoie de încă 1 diodă pentru a fi plasată între un picior al panoului solar și circuitul de încărcare pentru a opri curentul să curgă înapoi în panoul solar noaptea.

Pasul 5: Asamblare

Asamblare
Asamblare
Asamblare
Asamblare
Asamblare
Asamblare

Această placă conține relativ puține componente, iar marcajele de pe placă sunt destul de simple.

Asigurați-vă că NU introduceți Atmega328P într-un mod greșit (care poate încălzi și cărămida cipul, ar putea distruge și amplificatorul de tensiune).

În această configurație, cipul este orientat în jos (marcajul PIN1 al orificiului U). Toate celelalte componente ar trebui să fie evidente.

Utilizați un cablu ecranat (de exemplu: cablul audio de la CDrom va merge bine) pentru LDR. În unele cazuri (peste multe săptămâni de testare) sa dovedit că interferează cu transmisia semnalului radio. Acesta a fost unul dintre acele bug-uri dificil de depanat, așa că, dacă nu doriți probleme, folosiți doar un cablu ecranat, sfârșitul istoriei.

LED: LED-ul din partea de jos a cutiei a fost inițial adăugat pentru a clipi atunci când există o transmisie radio de ieșire, dar ulterior l-am considerat o pierdere de energie și clipește doar de 3 ori la procesul de pornire.

TP: este punctul de testare pentru măsurarea curentului pentru circuitul general.

DHT22: Nu cumpărați DHT11 ieftin, cheltuiți cu 50 de cenți mai mult pentru a obține DHT22 alb, care poate măsura și temperaturi negative.

Pasul 6: Proiectarea carcasei

Proiectarea carcasei
Proiectarea carcasei
Proiectarea carcasei
Proiectarea carcasei
Proiectarea carcasei
Proiectarea carcasei

Deși este un pic excesiv, a fost creat un cub imprimat 3D (weather_cube) pentru a menține senzorul de temperatură DHT22 în poziție. Cubul este lipit de partea inferioară a casetei IP, având doar o gaură pentru ca aerul să ajungă la senzor. Am adăugat o plasă la gaura împotriva albinelor, viespilor și a altor muște mici.

O cutie externă poate fi utilizată opțional pentru a face stația mai impermeabilă în cazul în care o montați pe un stâlp de vase la deschidere.

Ideea pentru 1 caracteristică utilă: adăugarea unei plăci metalice mari de acoperiș de 1-2 cm pe partea de sus a cutiei, oferind umbră de soare în timpul verii, deși acest lucru ar putea, de asemenea, să ne îndepărteze lumina solară utilă de pe panou. Puteți veni cu un design care separă panoul și cutia (lăsând panoul la soare, cutia în umbră).

Pe imagini: una dintre stațiile scoase din mediul de lucru după 1 an, tensiunea bateriei este în continuare uimitoare de 3,9 V, fără deteriorarea apei în nicio parte a cutiei, deși plasa pe care am lipit-o în partea de jos a cubului a fost sfâșiată. Motivul pentru care stația trebuie să fie întreținută este defecțiunea conexiunii la conectorul LDR, deși cablul jumper părea să fie încă în poziție, conexiunea a fost ruptă, prin urmare pinul plutea uneori, oferind citiri analogice LDR defecte. Sugestie: dacă utilizați jumper-uri standard pentru PC, lipiți-le pe toate după ce stația funcționează perfect pentru a evita acest lucru.

Pasul 7: Software

Software
Software

Codul software va necesita 3 biblioteci externe (LowPower, DHT, VirtualWire). În ultima perioadă am avut probleme cu găsirea ușor a unora dintre ele, așa că le atașez într-un fișier ZIP separat. Indiferent ce sistem de operare folosiți Linux / Windows, trebuie doar să găsiți folderul bibliotecii Arduino IDE și să le extrageți acolo.

Doar o notă, indiferent că deja vă sfătuiesc să nu cumpărați DHT11, dacă utilizați un tip greșit de senzor DHT, programul va atârna pentru totdeauna la început, la secțiunea de inițializare (nici măcar nu veți vedea clipirea ledului de pornire de 3 ori).

Codul de buclă principal este foarte simplu, mai întâi citește valorile mediului (temperatura, indicele de căldură, umiditate, solar), le trimite prin radio, apoi folosește biblioteca de putere redusă pentru a pune Arduino în repaus timp de 5 minute.

Am constatat că scăderea vitezei de transmisie va crește stabilitatea transmisiilor radio. Stația trimite o cantitate foarte mică de date, 300 bps este mai mult decât suficient. De asemenea, nu uitați că transmițătorul funcționează numai de la cca. 4.8V, în viitoarea versiune de 3.3V, acest lucru ar putea duce la o calitate și mai slabă a transmisiei (trimiterea de date prin pereți și alte obstacole). Am întâmpinat o problemă cu utilizarea unui Arduino Mega atașat la un Raspberry PI 2 care alimentează Mega de la PI, că nu am primit nicio transmisie. Soluția a fost alimentarea Mega de la o sursă externă separată de 12V.

Pasul 8: Versiunea 2 (bazat pe ESP32)

Versiunea 2 (bazat pe ESP32)
Versiunea 2 (bazat pe ESP32)
Versiunea 2 (bazat pe ESP32)
Versiunea 2 (bazat pe ESP32)
Versiunea 2 (bazat pe ESP32)
Versiunea 2 (bazat pe ESP32)

Tot ce se poate sparge se va rupe pentru a-l cita pe bătrânul bun Murphy și, în cele din urmă, după ani, posturile au eșuat pe căi misterioase. Unul a început să trimită date solare gibberish care au crescut până la zeci de mii, ceea ce este imposibil din cauza: placa Arduino conține un convertor de 6 biți (8 canale pe Mini și Nano, 16 pe Mega), analogic pe 10 biți. Aceasta înseamnă că va mapa tensiunile de intrare între 0 și 5 volți în valori între 0 și 1023. Așadar, după înlocuirea radioului, LDR și reprogramarea Atmega 328P de mai multe ori am renunțat și am decis că este timpul pentru inovație. Să mergem ESP32.

Placa pe care am folosit-o a fost: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi și Bluetooth Card Rev1 MicroPython 4MB FLASH

wiki.wemos.cc/products:lolin32:lolin32_lit…

Microcontroler ESP-32

Tensiune de funcționare 3.3V Pin I / O digitale 19 Pinuri de intrare analogică 6 Viteză ceas (maxim) 240Mhz Bliț 4M octeți Lungime 5mm Lățime 2,54mm Greutate 4g

Care spre deosebire de cel din imagine nu are sigla LOLIN (contrafăcută din China). Prima mea surpriză plăcută a fost că pinout-ul imprimat pe tablă se potrivea cu pinout-ul Arduino! După ce am avut de-a face cu atâtea plăci noname, unde a trebuit să caut pinout-uri toată ziua moarte obosită făcând greșeli în cele din urmă o placă în care pinout-ul este direct WoW!

Totuși, iată partea întunecată a poveștii:

Inițial am conectat LDR la A15, care este pinul 12, deoarece a fost mai ușor să lipiți pinii împreună. Apoi am 4095 de citiri (care este maximul pe care îl poți obține cu AnlogRead pe ESP32), ceea ce m-a înnebunit, deoarece întregul motiv pentru care am reconstruit stația a fost citirile LDR rupte din cea veche (DHT funcționa încă bine). Deci, se pare că:

Esp 32 integrează două registre ACD de 12 biți. ADC1 cu 8 canale atașate la GPIO-urile 32-39 și ADC2 cu 10 canale în alte pini. Problema este că ESP32 folosește ADC2 pentru a gestiona funcțiile wifi, deci dacă utilizați Wifi, nu puteți utiliza acel registru. API-ul driverului ADC acceptă ADC1 (8 canale, atașate la GPIO-urile 32 - 39) și ADC2 (10 canale, atașate la GPIO-urile 0, 2, 4, 12 - 15 și 25 - 27). Cu toate acestea, utilizarea ADC2 are anumite restricții pentru aplicație:

ADC2 este utilizat de driverul Wi-Fi. Prin urmare, aplicația poate utiliza ADC2 numai atunci când driverul Wi-Fi nu a pornit. Unele dintre pinii ADC2 sunt folosiți ca pinii de legare (GPIO 0, 2, 15), prin urmare nu pot fi folosiți liber. Așa este cazul în următoarele kituri oficiale de dezvoltare:

Deci, conectarea LDR de la pinul 12 la A0, care este VP, a rezolvat totul, dar nu înțeleg de ce listează chiar pinii ADC2 ca fiind disponibili pentru producători. Câți alți hobbisti au pierdut o grămadă de timp până au descoperit acest lucru? Marcați cel puțin pinii inutilizabili cu roșu sau ceva sau nu menționați-l deloc în manual, astfel încât alți producători să poată afla despre ei doar dacă au într-adevăr nevoie de ei. Întregul scop al ESP32 este să-l folosească cu WIFI, toată lumea îl folosește cu WIFI.

Un bun început cum să configurați Arduino IDE pentru această placă:

Deși l-am pus în cod aici merge din nou:

Este posibil ca acest cod să nu se compileze pentru alte modele ESP32 decât Weemos LOLIN 32!

Setări de construcție: -Utilizați încărcare / serie: 115200 -Utilizați CPU / RAM: 240Mhz (Wifi | BT) -Utilizați frecvența flash: 80 Mhz

Există o mulțime de stații meteo bazate pe ESP32 pe net, acestea sunt mult mai comune decât versiunea mea 1, cu cip barebone, deoarece sunt mai ușor de configurat, nu aveți nevoie de programator, doar conectați dispozitivul pe USB și programați-l și modul de somn profund este excelent pentru o perioadă lungă de timp care funcționează de la baterie. Chiar de pe bat, acesta a fost primul lucru pe care l-am testat chiar înainte de lipirea pinilor de rupere, deoarece, așa cum am remarcat mai multe locuri în acest proiect, cel mai important lucru este consumul de energie și cu bateria actuală (falsă) și panoul solar mic standby-ul puterea nu poate depăși cu adevărat 1-2mA, altfel proiectul nu se va putea susține pe termen lung.

A fost din nou o surpriză plăcută că modul de somn profund funcționează așa cum este publicat. În timpul somnului profund, curentul era atât de scăzut încât multi-metrul meu ieftin nici măcar nu-l putea măsura (funcționează pentru mine).

În timpul trimiterii de date, curentul a fost de aproximativ 80mA (ceea ce este de aproximativ 5 ori mai mare decât atunci când Atmega 328P se trezea și transmite), totuși, nu uitați că cu V1 a existat o scurgere medie de energie de 1mA pe LDR în modul de repaus (care depindea și de nivelurile de lumină și trecea de la 0,5mA - 1mA) care acum a dispărut.

Acum, când bateria UltraFire este dezactivată dacă utilizați aceeași baterie, iată la ce vă puteți aștepta:

Iavg = (Ton * Ion + Tsleep * Isleep) / (Ton + Tsleep)

Iavg = (2s * 80mA + 300s * 0,01mA) / (2s + 300s) Iavg = 0,5mA

Pavg = VxIavg = 5Vx0,5mA = 2,5 mW

Teoretic

Durata de viață a bateriei = 22000mWh / 2,5mW = 8800 ore = 366 zile aproximativ

Real

Durata de viață a bateriei = 800mWh / 2,5mW = 320 ore = 13 zile aproximativ

Nu aveam un scop de măsurare precisă a timpului de pornire, dar cu modificările mele se completează în jur de 2 secunde.

Nu am vrut să petrec după-amiaza cu codificarea personalizată a tuturor, așa că am căutat alte stații meteo pe Instructables bazate pe ESP32 pentru a vedea ce fac pentru stocarea datelor. Din păcate, am observat că utilizează site-uri inflexibile și limitate, cum ar fi weathercloud. Deoarece nu sunt un fan al „cloud-ului” și codul lor s-a stricat de mult deoarece site-ul și-a schimbat API-ul de atunci, mi-am luat cele 10 minute pentru a face o soluție personalizată, deoarece nu este atât de greu pe cât s-ar putea crede. Să începem!

Mai întâi de toate, nu există nicio imagine a plăcii de circuit separat pentru acest proiect, deoarece folosește exact aceleași componente (îmi pare rău pentru cele lipite în imaginea urâtă a panoului) ca V1, cu diferența că totul se scurge de 3,3V. DHT s-a conectat cu un pullup la VCC, LDR a tras în jos cu un 10k. Problema pe care o puteți vedea cu bateriile 18650, cum ar fi falsul meu chinezesc (6500 mAh ultra sun fire lol: D), este că pornesc curba de descărcare de la aproximativ 4,1V new age și merg până când circuitele lor de întrerupere vor începe pentru a opri deteriorarea celulei (cei care au norocul să o aibă). Acest lucru nu este nicăieri bun pentru noi ca intrare de 3,3V. Deși această placă LOLIN are un conector de baterie litiu și un circuit de încărcare în acest proiect, am vrut să renovez cel mai mult ce am putut de la vechea stație, astfel încât cu vechiul 18650 NU POȚI folosi acest încărcător încorporat. Soluția a fost complet simplă: am întrerupt un cablu micro USB lipit în 5V din vechiul amplificator de tensiune și problema voilă a fost rezolvată, deoarece placa de pe microUSB are regulator.

Deci, diferența dintre versiunea veche și cea nouă, care în vechea baterie oferă 3.7V -> amplificat la 5V -> ardu rulează pe 5V -> toate componentele rulează pe 5V.

În cea nouă: bateria furnizează 3,7 V -> amplificată la 5 V -> reglată prin regul de bord pe ESP32 -> toate componentele rulează pe 3,3 V.

Din punct de vedere software, vom avea nevoie și de o altă bibliotecă DHT, DHT-ul Arduino nu este compatibil cu ESP-urile. Ceea ce avem nevoie se numește DHT ESP.

Am început să-mi bazez codul în jurul exemplului DHT furnizat de acest cod. Funcționarea codului este:

1, Obțineți datele de mediu din datele DHT + Solar din fotocelula

2, conectați-vă la wifi cu IP static

3, POST datele pe un script PHP

4, Du-te la culcare timp de 10 minute

După cum veți observa, am reglat codul pentru eficiență pentru a minimiza timpul de trezire, deoarece consumă de 5 ori mai multă energie decât a făcut vechiul proiect atunci când este pornit. Cum am făcut asta? În primul rând, dacă există ORICE fel de eroare, funcția getTemperature () va reveni cu false (ceea ce înseamnă că 10 minute dorm din nou). Acest lucru poate fi ca și cum senzorul DHT nu poate fi inițiat sau conexiunea wifi nu este disponibilă. După cum observați, bucla obișnuită while () pentru a încerca în permanență asocierea wifi a fost de asemenea eliminată, dar o întârziere de 1 sec trebuia lăsată acolo, altfel nu se va conecta întotdeauna și depinde și de tipul AP, de încărcare etc. se va întâmpla, cu 0,5s am avut un comportament inconsistent (uneori nu s-a putut conecta). Dacă cineva cunoaște o modalitate mai bună de a face acest lucru, vă rugăm să o lăsați în comentarii. Numai când datele DHT sunt citite ȘI conexiunea wifi este activă, va încerca să posteze datele pe script pe serverul web. Toate funcțiile de pierdere a timpului precum Serial.println () sunt dezactivate și în modul operațional normal. Ca server folosesc și IP pentru a evita o căutare DNS inutilă, în codul meu atât gateway-ul implicit, cât și serverul DNS setat la 0.0.0.0.

Nu înțeleg de ce este atât de greu să îți creezi propriul API atunci când este nevoie doar de:

sprintf (răspuns, "temp =% d & hum =% d & hi =% d & sol =% d", temp, hum, hi, sol);

int httpResponseCode = http. POST (răspuns);

Puneți acest mic cod php la orice raspberry pi și puteți efectua imediat sarcini de sistem () pe baza telemetriei, cum ar fi pornirea ventilatoarelor sau aprinderea luminilor dacă se întunecă suficient.

Câteva note despre cod:

WiFi.config (staticIP, gateway, subrețea, dns); // TREBUIE să fie după ce Wifi începe cât de prost …

WiFi.mode (WIFI_STA); // TREBUIE altfel va crea și un AP nedorit

Da, bine, acum știi. De asemenea, ordinea configurărilor IP se poate schimba prin platforme, am încercat mai întâi alte exemple în care au fost comutate valorile gateway-ului și ale subrețele. De ce să setați IP static? Ei bine, este destul de evident, dacă aveți o cutie dedicată în rețeaua dvs., cum ar fi un server Linux care rulează isc dhcpd, nu doriți o sută de milioane de intrări de jurnal de când ESP se trezește și obține IP-ul de la DHCP. Routerele nu înregistrează în mod normal asocieri, astfel încât acestea să rămână nevăzute. Acesta este prețul economisirii energiei.

V2 nu a reușit niciodată să se susțină din cauza bateriei de calitate proastă și l-am pus pur și simplu pe un adaptor, așa că, dacă doriți să construiți fie V1, fie V2, nu cumpărați bateria menționată, faceți propriile cercetări despre baterii (orice 18650 capacitatea de peste 2000mAh publicată pe Ebay este o înșelătorie cu o probabilitate mare).

Recomandat: