Cuprins:

Stație meteo ESP32 Alimentată cu energie solară: 9 pași
Stație meteo ESP32 Alimentată cu energie solară: 9 pași

Video: Stație meteo ESP32 Alimentată cu energie solară: 9 pași

Video: Stație meteo ESP32 Alimentată cu energie solară: 9 pași
Video: Cum comunicăm în spațiu? | Cu Cristian Presură @presura 2024, Septembrie
Anonim
Image
Image
Stație meteo ESP32 alimentată cu energie solară
Stație meteo ESP32 alimentată cu energie solară
Stație meteo ESP32 alimentată cu energie solară
Stație meteo ESP32 alimentată cu energie solară

În acest tutorial vom construi un proiect de stație meteo activată WiFi.

Ținta este de a proiecta stația meteo cu aproape toate penele posibile:

  • Afișați condițiile actuale, timpul, temperatura, umiditatea, presiunea
  • Afișați prognoza pentru următoarele zile
  • Actualizare în aer
  • Construit în site-ul web pentru configurare și reprezentare a datelor
  • Încărcați date în cloud pentru statistici istorice
  • Integrat cu Aple Home Kit sau MQTT
  • Acumulator independent alimentat cu posibilă reîncărcare sau conectare la panoul solar

Nu pot adăuga mai multă și nu mai multă imaginație ce altceva trebuie sau poate fi

Pasul 1: părți care sunt necesare

Piese care sunt necesare
Piese care sunt necesare
Piese care sunt necesare
Piese care sunt necesare
Piese care sunt necesare
Piese care sunt necesare
  • ESP32 (am folosit modulul dev)
  • 2,8 "240x320 TFT LCD SPI ILI9341
  • Cutie de plastic
  • 3 x 18650 Accu
  • Senzor meteo BME280 pentru a măsura temperatura, umiditatea și presiunea
  • Modul încărcător litiu USB
  • Pasul DC-DC UP18650
  • suport baterie (3 buc)
  • HC-SR505 Detector de mișcare
  • Rezistor 220 Om
  • 2x rezistențe de 10 kOm
  • Tranzistorul TIP120 NPN (Darlington) poate fi folosit oricare alt compatibil
  • Butoane, comutator, tablă de lipit….

Pasul 2: Cablare și asamblare

Cablare și asamblare
Cablare și asamblare
Cablare și asamblare
Cablare și asamblare
Cablare și asamblare
Cablare și asamblare
Cablare și asamblare
Cablare și asamblare

Primul pas este asamblarea puterilor stației.

Am împărțit carcasa din plastic pe două părți, una dintre ele folosită pentru baterie, comutator, încărcător USB și DC-DC. Fiți conștienți că modulul de încărcare USB este destul de apăsat, de aceea am folosit o placă de aluminiu și am pus încărcătorul USB pe acesta folosind lipici Star 922.

Al doilea pas este asamblarea piesei controlerelor.

Vedeți schema de cabluri cum ar trebui conectată

Am folosit placa de pâine în acest scop cu următorii pași

  • Placă dev Solder ESP32
  • Scut de lipit pentru a păstra afișajul TFT
  • Lipiți alte componente electronice: BME280, rezistențe, butoane
  • Cablarea lipirii între componente conform schemei

Al treilea pas este pregătirea montării plăcii de pâine pe a doua parte a carcasei din plastic. Am imprimat pe imprimanta mea 3D două bare, le montez pe tablă prin șuruburi și fac tăiere dreptunghiulară pentru ecranul de afișare.

Am lipit bare de plastic pe corpul carcasei de plastic. Acum, când lipiciul este uscat, cabina plăcii pentru pâine trebuie demontată prin șuruburi.

Următorul pas este:

  • Cablare de lipit pentru sursa de alimentare
  • Cablare de lipit pentru starea tensiunii bateriei
  • Detector de mișcare de lipit și montat

Ultimul pas:

  • configurați convertorul DC-DC prin reglarea tensiunii de ieșire 5v
  • conectați două părți ale controlerului stației la alimentare: firele de alimentare și citirea tensiunii

Pentru detectorul de mișcare și butonul am făcut alte găuri pe față.

Pasul 3: Încărcarea firmware-ului pe ESP32

Pentru acest proiect am folosit software universal, dezvoltat de mine

Vă rugăm să consultați pagina Github ESPHomeController. Acesta conține instrucțiuni complete despre cum să compilați și să configurați.

! Dacă nu sunteți familiarizați cu compilarea și Arduino, aruncați un pas Încărcarea firmware-ului gata

De îndată ce încărcați firmware-ul pentru prima dată, ESP32 va porni în modul de configurare (modul Punct de acces)

Ar trebui să le configurați. În acest scop, deschideți în orice listă de dispozitive WiFi disponibile. Găsiți HomeController și conectați-vă la acesta. Portalul captiv ar trebui să înceapă automat. Dacă nu, introduceți în adresa URL a browserului: 192.168.4.1 și veți vedea ecranul de configurare

Urmați instrucțiunile și configurați datele de conectare WiFi la rețeaua dvs. WiFi.

ESP va reporni după aceea ca client WiFi și se va conecta la Wifi.

Pe măsură ce se întâmplă prima conexiune sson, acesta va monta automat sistemul de fișiere Spiffs și va descărca fișierele necesare pentru portalul web:

  • index.html
  • filebrowse.html
  • js / bundle.min.js.gz

Descărcarea are loc din folderul

Acum puteți vedea conținutul fișierului prin browserul web. pentru aceasta ar trebui să acum adresa IP a ESP32

O puteți găsi printr-unul dintre următoarele moduri:

  • Utilizarea monitorului portului serial pentru a vedea jurnalele ESP32
  • Utilizarea oricărui scaner tcp pentru scanarea dispozitivelor de rețea
  • Apăsați un buton pe stația meteo și veți vedea informații despre sistem

Puneți în răsfoire https://192.168.0. XX/browse și veți vedea o listă de fișiere a ESP-ului dvs.

(192.168.0. XX este adresa IP a dispozitivului dvs.

Pentru reglarea finală trebuie să pregătiți fișiere de configurare.

Pasul 4: Încărcarea firmware-ului Ready

Încărcarea firmware-ului Ready
Încărcarea firmware-ului Ready

Această secțiune este specială pentru persoanele auditive care nu vor produce singuri firmware. Trebuie doar să încărcați firmware-ul „gata”

1. Descărcați instrumentele de încărcare flash din această pagină

2. Descărcați fișierele atașate (extrase din arhive) HomeController.bin și bootloader_qio_80m.bin pe hard disk

3. Porniți instrumentul de descărcare ESP32 și introduceți valorile în conformitate cu captura de ecran

4. Apăsați Start

Pasul 5: Configurare

Înainte de a începe pregătirea configurației aveți nevoie de:

  1. Creați-vă canalul pe lucrurile de vorbire și cheia pentru canalul dvs. Pregătiți 4 câmpuri și denumiți-le corect Temperatura, Umiditatea, Presiunea, Tensiunea
  2. Înregistrați-vă pe Weather.com pentru a obține cheia API

Thingspeak este necesar pentru a vă încărca datele și a monitoriza tendințele și valorile

Vremea este necesară pentru a obține date prognozate.

Ok, în cele din urmă trebuie să creați fișierul services.json cu următorul conținut

[{"service": "TimeController", "name": "Time", "enabled": true, "interval": 1000, "timeoffs": 7200, "dayloffs": 3600, "server": "pool.ntp.org "," enableleep ": adevărat," sleeptype ": 1," sleepinterval ": 900000," restartinterval ": 18000000}, {" service ":" BME280Controller "," name ":" BME "," enabled ": true, "interval": 900000, "i2caddr": 118, "uselegacy": true, "temp_corr": - 3.0, "hum_corr": 10.0}, {"service": "WeatherClientController", "name": "WeatherForecast", "enabled": true, "interval": 500000, "uri": "https://api.weather.com/v3/wx/forecast/daily/5day?geocode=50.30, 30.70 & format = json & units = m & language = ro -US & apiKey = weatherapi "}, {" service ":" WeatherDisplayController "," name ":" WeatherDisplay "," enabled ": true," interval ": 500}, {" enabled ":" true "," interval ": 600000, "pin": 36, "service": "LDRController", "name": "LDR", "cvalmin": 0.0, "cvalmax": 7.2, "cfmt": "%. 2f V", "acctype": 10}, {"service": "ThingSpeakController", "name": "ThingSpeak", "enabled": true, "interval": 1200000, "value": [1, 1, 1, 1, 0, 0, 0, 0], "apiKey": "thingspea kapi "}, {" enabled ": true," interval ": 1," pin ":" "," service ":" ButtonController "," name ":" Button "," pins ": [27]}]

! Vă rugăm să înlocuiți

  • thingspeakapi cu tasta api Thingspeak
  • weatherapi cu tasta api meteo
  • geocodificați cu locația dvs. pentru care doriți să obțineți prognoză

Decât pregătiți al doilea fișier triggers.json

[{"type": "BMEToWeatherDisplay", "source": "BME", "destination": "WeatherDisplay"}, {"type": "TimeToWeatherDisplay", "source": "Time", "destination": "WeatherDisplay "}, {" type ":" WeatherForecastToWeatherDisplay "," source ":" WeatherForecast "," destination ":" WeatherDisplay "}, {" type ":" BMEToThingSpeak "," source ":" BME "," destination ": "ThingSpeak", "t_ch": 1, "h_ch": 2, "p_ch": 3}, {"type": "ButtonToWeatherDisplay", "source": "Button", "destination": "WeatherDisplay"}, { "type": "LDRToThingSpeak", "source": "LDR", "destination": "ThingSpeak", "ch": 4}]

Ambele fișiere trebuie să fie uploded la rădăcina esp.

Puteți face acest lucru prin browserul https://192.168.0. XX/browse, unde https://192.168.0. XX este adresa IP a dispozitivului dvs.

După încărcare, ESP trebuie repornit și totul a fost făcut corect. Esp va afișa ecranul corespunzător ca în fotografia și videoclipul de mai sus

Pasul 6: Tuning și consum de energie

Tuning și consum de energie
Tuning și consum de energie

Îmi folosesc dispozitivul cu conexiunea la panoul solar și să fiu sigur că poate funcționa „infinit”

consumul de energie este important și după mai multe experimente am folosit două trucuri majore

Reduceți consumul de LED-uri de bază ale ecranului TFT

În funcție de măsurare, mănâncă 15-20 mA (mult), prin urmare am folosit tactici cu detector de mișcare. Funcționează perfect Detectoare de mișcare capabile să recunoască orice detecție de până la 8-10 metri și să crească tensiunea pe cablul de semnal. Aceasta este deschiderea unui tranzistor și ledul backround primesc o putere. De obicei, detectorul menține această stare până la 10 secunde, ceea ce este mai mult decât suficient pentru a vedea monitorul, dar dacă continuați mișcările, semnalul este încă ridicat și LED-ul se aprinde.

O astfel de abordare îmi oferă o economie mare, fără efecte suplimentare, nu întâmpin nicio problemă pentru a-mi vedea ecranul când vreau

2. Reduceți consumul de energie cu ESP32

Când ESP este conectat la WiFi, consumă în mod constant 7-10 mA, vorbesc despre timp constant, nu pornire și prima conexiune. Acest lucru poate fi acceptat dacă ați văzut întotdeauna data și ora efective, accesați sistemul din kitul Apple home

Și pentru energia mea solară în timpul iernii, a trebuit să se potrivească cu lucrările fără surse de energie suplimentare, Prin urmare, am decis să pun periodic ESP32 în modul de repaus (mâncarea este mai mică de 1 mA). Acest lucru este ok pentru mine, de exemplu, ESP doarme 20 de minute, decât trezirea, reîmprospătarea ecranului (date reale și prognoză) trimite date către lucrurile de vârf și înapoi la modul de repaus din nou

Minusurile sunt:

  • Ecranul meteo afișează valori de timp învechite
  • Stația nu este accesibilă din browser și Apple Home Kit în timpul somnului

Depinde de dvs. să decideți ce este mai important, puteți reconfigura acest lucru simplu.

Vă rugăm să aruncați un fișier și o linie services.json

[{"service": "TimeController", "name": "Time", "enabled": true, "interval": 1000, "timeoffs": 7200, "dayloffs": 3600, "server": "pool.ntp.org "," enableleep ": adevărat," sleeptype ": 1," sleepinterval ": 900000," restartinterval ": 18000000}

„enableleep”: adevărat activează somnul, dacă este pus fals sau elimină parametrul (false este implicit) ESP nu va dormi niciodată

"sleepinterval": 900000, acesta este milis, sau 15 min, înseamnă că la fiecare 15 min ESP se va trezi și va face personal necesar

Deci, acum toată lumea poate juca ușor în funcție de necesitate

Pasul 7: Reglarea senzorilor

Pentru a minimiza impactul încălzirii interne asupra senzorului de temperatură BME280

În primul rând am făcut niște tuburi în jurul senzorului și găurilor. Hovewer în modul meu, atunci când LED-ul este normal oprit și ESP dormit nu este atât de important. În alte cazuri, senzorul BME280 ar trebui să se deplaseze undeva pentru a exclude influența încălzirii interne. Orice influență cât de mică am găsit, prin urmare, există doi parametri de compensat

"hum_corr": 10.0

ceea ce înseamnă că aceste valori vor fi adăugate după măsurare

Al doilea este calibrarea măsurării tensiunii bateriei, {"enabled": "true", "interval": 600000, "pin": 36, "service": "LDRController", "name": "LDR", "cvalmin": 0.0, "cvalmax": 7.2, " cfmt ":"%. 2f V "," acctype ": 10}, „cvalmin”: 0,0

„cvalmax”: 7.2

sunt în acest scop, deoarece tensiunea se măsoară după separatoare de rezistențe și comparată cu 3,3 V, jucând cu valoarea cvalmax puteți ajunge la reglarea exactă a tensiunii cu valoarea dvs. multimetr

Pasul 8: Adăugarea dispozitivului la trusa Apple Home

Adăugarea dispozitivului la trusa Apple Home
Adăugarea dispozitivului la trusa Apple Home

În cele din urmă, când dispozitivul dvs. funcționează corect, acesta poate fi adăugat la Apple Home Kit și veți putea vedea

valorile senzorilor de pe ecranul de pornire Apple.

Mai întâi trebuie să reporniți dispozitivul, de îndată ce dispozitivul a pornit, acesta nu va merge la culcare 20 de minute este mai mult decât suficient

Decât deschideți aplicația Home Kit pe dispozitivul dvs. iOS și selectați sau creați un nou Home1. Apăsați Adăugați (+)

2. Selectați Adăugare accesoriu.

3. Apăsați Nu am cod sau Nu pot scana (mai departe scanarea va fi adăugată)

4. dacă totul merge bine, ar trebui să vedeți noul dispozitiv esp într-o listă (a se vedea imaginea)

5. Selectați dispozitivul și confirmați adăugarea fără certificare oficială

6. Tastați parola 11111111

7. Atât! Ar trebui să vedeți dispozitivul asociat cu succes, altfel începeți din nou procesul de asociere..

Pe baza setării, veți vedea două dispozitive pe Apple

1. Senzor de temperatură și senzor de umor, mergând adânc, acesta va afișa valorile pe ecran complet

2. Senzor de lumină:) De fapt, Apple este capabil să arate ușor Ambianță, dar nu și Tensiune, de aceea tensiunea bateriei se afișează în Lux

Pasul 9: OTA: Actualizări Over the Air

Înainte de a începe orice actualizare, este mai bine să reporniți ESP32, așa cum s-a menționat înainte, nu va intra în repaus în primele 20 de minute

Există două posibilități de actualizare

  1. Configurare utilizând https://192.168.0. XX/browse puteți accesa sistemul de fișiere pe ESP și puteți modifica fișierele de configurare
  2. Puteți actualiza complet firmware-ul. în acest scop mai întâi trebuie să creați unul nou. Se poate face prin Arduino sau Visual Studio IDE. Apoi tastați în browserul https://192.168.0. XX/update, selectați firmware-ul și apăsați actualizare. Așteptați până când procesul este terminat și veți primi răspunsul OK, altfel repetați pasul din nou

Recomandat: