Taula de continguts:

Estació meteorològica NaTaLia: l'estació meteorològica amb energia solar Arduino s'ha fet correctament: 8 passos (amb imatges)
Estació meteorològica NaTaLia: l'estació meteorològica amb energia solar Arduino s'ha fet correctament: 8 passos (amb imatges)

Vídeo: Estació meteorològica NaTaLia: l'estació meteorològica amb energia solar Arduino s'ha fet correctament: 8 passos (amb imatges)

Vídeo: Estació meteorològica NaTaLia: l'estació meteorològica amb energia solar Arduino s'ha fet correctament: 8 passos (amb imatges)
Vídeo: ESTACIÓ METEOROLÒGICA RENOVABLE HÍBRIDA - Miguel Muñoz 2024, Juliol
Anonim
Estació meteorològica NaTaLia: l'estació meteorològica solar Arduino s'ha fet correctament
Estació meteorològica NaTaLia: l'estació meteorològica solar Arduino s'ha fet correctament
Estació meteorològica NaTaLia: l'estació meteorològica solar Arduino s'ha fet correctament
Estació meteorològica NaTaLia: l'estació meteorològica solar Arduino s'ha fet correctament

Després d’un any d’exitació en 2 llocs diferents, comparteixo els plans del projecte de les estacions meteorològiques amb energia solar i explico com va evolucionar cap a un sistema que realment pot sobreviure durant llargs períodes a partir de l’energia solar. Si seguiu les meves instruccions i utilitzeu exactament els mateixos materials que es detallen, podeu construir una estació meteorològica amb energia solar que funcionarà durant molts anys. De fet, l’únic factor que limita el temps que funcionarà és la vida útil de la bateria que feu servir.

Pas 1: Funcionament de l'estació meteorològica

1, transmissor: caixa muntada a l’exterior amb panell solar que envia periòdicament telemetries meteorològiques (temperatura, humitat, índex de calor, força solar) a la unitat receptora interior.

2, receptor: unitat interior fabricada amb un Raspberry PI 2 + Arduino Mega que té un receptor RF de 433 MHz connectat per a la recepció de dades. A la meva configuració, aquesta unitat no té cap funcionalitat de pantalla LCD local. Funciona sense atenció. Un programa C principal s’encarrega de rebre les dades entrants de l’Arduino a través de la sèrie, per després registrar-les en un fitxer de text i fer que les darreres dades rebudes estiguin disponibles a través de telnet perquè altres dispositius les consultin.

L’estació controla els llums de casa meva mitjançant la lectura del fotoresistor (que determina si és de dia o de nit fora). El receptor és sense cap en el meu cas, però podeu modificar fàcilment el projecte per afegir una pantalla LCD. Un dels dispositius que utilitza, analitza i mostra les dades meteorològiques de l’estació és el meu altre projecte: Ironforge the NetBSD Toaster.

Pas 2: primeres versions

Primeres versions
Primeres versions
Primeres versions
Primeres versions
Primeres versions
Primeres versions
Primeres versions
Primeres versions

Hi ha molts projectes solars a la xarxa, però molts d’ells cometen l’error comú que el sistema treu més energia de la bateria amb el pas del temps que el panell solar podria reposar, especialment durant els mesos foscos i nuvolosos.

Quan dissenyeu un sistema alimentat per energia solar, l'únic que importa és el CONSUM D'ENERGIA, en tots els components: mcu, transmissor de ràdio, regulador de voltatge, etc.

Utilitzar un ordinador gran com un raspberry pi o un dispositiu wifi amb gana d’alimentació com l’ESP només per recollir i transportar dades meteorològiques d’un parell de bits seria excessiu, però com ho mostraré en aquest tutorial, fins i tot hi ha una petita placa Arduino.

El millor sempre és mesurar el corrent durant el procés de construcció amb un comptador o amb un abast (útil quan intenteu mesurar pics petits en ús durant l'operació en períodes de temps molt curts (mil·lisegons)).

A la primera imatge podeu veure la meva primera estació (basada en Arduino Nano) i la segona placa Arduino Barebone Atmega 328P.

La primera versió, tot i que funcionava perfectament (supervisar l'entorn i enviar dades per ràdio) tenia un consum d'energia massa elevat ~ 46 mA i es va esgotar la bateria en poques setmanes.

Totes les versions utilitzaven la bateria següent:

18650 Tauler de protecció integrat amb bateria recarregable de ions de Li de 6000 mAh

ACTUALITZACIÓ d’aquestes bateries ScamFire. Tot i que es tracta d’un instructable bastant antic, em vaig sentir obligat a corregir-lo a causa d’aquesta falsa bateria. NO compreu la bateria esmentada, feu la vostra pròpia investigació sobre altres bateries LION / LIPO, totes les bateries de 3,7 V funcionaran amb aquest projecte.

Finalment vaig tenir temps de desacreditar la bateria ScamFire per veure quina és la seva capacitat real. Per tant, executarem 2 càlculs al costat de la capacitat real i la "anunciada".

Primer de tot, és una cosa que aquesta bateria és falsa i que res del que afirmen sobre ella és cert, les noves versions són encara pitjors, ja que van copiar la falsificació deixant de banda el circuit de protecció de 2 cèntims, de manera que res no els impedirà descarregar fins a zero.

Un petit article sobre les bateries LION / LIPO:

TLDR:

Això significa que la tensió màxima de la cel·la és de 4,2 v i que la tensió "nominal" (mitjana) és de 3,7 V.

Per exemple, aquí teniu un perfil del voltatge per a una bateria "clàssica" de 3,7 V / 4,2 V. El voltatge comença a 4,2 màxim i baixa ràpidament fins a uns 3,7 V durant la major part de la vida de la bateria. Un cop toqueu 3,4 V, la bateria està esgotada i a 3,0 V el circuit de tall desconnecta la bateria.

Les meves mesures amb una càrrega fictícia:

Bateria carregada: 4,1V

Límit establert a: 3,4 V.

Simulació de càrrega: 0,15 A (el meu dispositiu tenia una mica de problema en baixar).

Capacitat mesurada: 0,77 Ah donant-li un 0,8 Ah gratuït, que és de 800 mAh en lloc dels 6000 mAh anunciats.

Com que aquesta bateria ni tan sols tenia el circuit de protecció, podia baixar lliurement, però a 3,4 V després de 10 minuts ja cau fins a 3,0 V.

Per tant, amb càlculs senzills la bateria proporciona:

Teòrica

Tensió de la bateria = 3,7V

Potència = 3,7x6000 = 22000 mWh

Real

Tensió de la bateria = 3,7 V Potència = 3,7x800 = 2960 mWh

Versió: 0.1 ARDUINO NANO BASED

Fins i tot amb la biblioteca LowPower, un nano Arduino consumeix ~ 16 mA (en mode de repòs) -> FALLA.

Teòrica

Pavg = VxIavg = 5Vx16mA = 80 mW

Durada de la bateria = 22000/80 = 275 hores = 11 dies aproximadament

RealPavg = VxIavg = 5Vx16mA = 80 mW

Durada de la bateria = 800/80 = 10 hores

Versió: 0,2 Atmega 328P Barebone

La potència consumida per un ATmega328 depèn molt del que feu. Simplement assegut allà en un estat per defecte, pot utilitzar 16 mA @ 5 V mentre s’executa a 16 MHz.

Quan l'ATmega328P estigui en mode actiu, executarà contínuament diversos milions d'instruccions per segon. A més, el convertidor analògic a digital de perifèrics integrats (ADC), la interfície perifèrica sèrie (SPI), el temporitzador 0, 1, 2, interfície de dos cables (I2C), USART, el temporitzador de vigilància (WDT) i la detecció de marró (DBO) consumeixen energia.

Per estalviar energia, la MCU ATmega328P admet diversos modes de repòs i es poden apagar els perifèrics no utilitzats. Els modes de son difereixen en quines parts es mantenen actives, per la durada del son i el temps necessari per despertar-se (període de despertar). El mode de repòs i els perifèrics actius es poden controlar amb les biblioteques de son i alimentació AVR o, de manera més concisa, amb l’excel·lent biblioteca de baix consum.

La biblioteca de baix consum és senzilla d’utilitzar però molt potent. La declaració LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); posa la MCU en SLEEP_MODE_PWR_DOWN durant 16 ms a 8 s, depenent del primer argument. Desactiva l'ADC i el BOD. La suspensió per apagada significa que totes les funcions del xip estan desactivades fins a la següent interrupció. A més, l'oscil·lador extern està aturat. Només les interrupcions de nivell a INT1 i INT2, les interrupcions de canvi de pin, la coincidència d’adreça TWI / I2C o el WDT, si està habilitat, poden activar l’MCU. Així, amb l’enunciat únic, minimitzareu el consum d’energia. Per a un Pro Mini de 3,3 V sense LED d’alimentació i sense regulador (vegeu més avall) que executa la sentència, el consum d’energia és de 4,5 μA. Això s’acosta molt al que s’esmenta a la fitxa tècnica ATmega328P per a la desconnexió en apagada amb WDT activat de 4,2 μA (full de dades enllaçat a les fonts). Per tant, estic segur que la funció powerDown apaga tot el que sigui raonablement possible. Amb la sentència LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF); el WDT es desactivarà i no us despertareu fins que no s'activi una interrupció.

Així doncs, amb la configuració de barebone podem posar el xip en mode de repòs durant 5 minuts, mentre que consumeix molt poca energia (0,04 mA sense perifèrics). No obstant això, només es tracta del xip Atmega 328P amb l'oscil·lador de cristall i res més, el reforç de tensió utilitzat en aquesta configuració per augmentar la tensió de la bateria de 3,7 V a> 5,0 V també consumeix 0,01 mA.

Un drenatge de voltatge constant va ser la resistència fotogràfica afegida que va augmentar el consum en mode de repòs a 1 mA total (això inclou tots els components).

La fórmula per calcular el consum precís del dispositiu tant en mode de repòs com de despert és:

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

Ió = 13mA

La majoria prové del transmissor RF433 Mhz:

Emissor:

Voltatge de treball: 3V - 12V per màx. consum d’energia 12V Corrent de treball: màxim Menys de 40mA màxim i mínim de 9mAR Mode de ressonància: (SAW) Mode de modulació: ASK Freqüència de treball: Eve 315MHz o 433MHz Potència de transmissió: 25mW (315MHz a 12V) Error de freqüència: + 150kHz (màx) Velocitat: inferior a 10Kbps

Isleep = 1mA

Seria significativament menor sense el fotoresistor.

Temps de trun Ton = 250 mS = 0,25 s

Temps de son Tsleep = 5 min = 300 s

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

Iavg = (0,25 s * 13 mA + 300 s * 1 mA) / (0,25 s + 300 s)

Iavg = 1,26 mA

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

Teòrica

Durada de la bateria = 22000 mWh / 6 mW = 3666 hores = 152 dies aproximadament

Real

Durada de la bateria = 800 mWh / 6 mW = 133 hores = 5,5 dies aproximadament

Tot i que encara eren una millor sèrie UltraFire, el que feia servir inicialment es va poder veure que sense el panell solar ni el baix consum d’1 mA aquest projecte no sobreviuria molt.

No dubteu a construir l'estació i anoteu els vostres resultats i càlculs als comentaris i actualitzaré l'article. També agrairia els resultats amb diferents MCU i convertidors boost.

Pas 3: construir una estació meteorològica amb èxit

Construir una estació meteorològica amb èxit
Construir una estació meteorològica amb èxit
Construir una estació meteorològica amb èxit
Construir una estació meteorològica amb èxit
Construir una estació meteorològica amb èxit
Construir una estació meteorològica amb èxit
Construir una estació meteorològica amb èxit
Construir una estació meteorològica amb èxit

Tot i que és la primera versió amb èxit, conté una mica de fallada a les imatges i no puc refer-les perquè les estacions ja estan desplegades. Els dos amplificadors de tensió que es mostren a la imatge es poden obtenir en el moment d’escriure per a aeromodelització i altres aplicacions. Quan vaig redissenyar la meva estació, pensava en aconseguir una placa de tensió més petita i més eficient, tot i que sigui més petita, no vol dir que sigui més eficient.

El nou petit mòdul de la imatge que ni tan sols té un led indicador realment esgotava 3 mA (* FAIL *) per si mateix, així que em vaig quedar amb la meva antiga placa:

Control PFM DC-DC USB 0,9 V-5 V a 5 V CC Mòdul de subministrament d’alimentació incremental

En el moment d’escriure, aquest mòdul encara està disponible a Ebay per 99 centaus, però si decidiu utilitzar un altre reforç, comproveu sempre el consum d’energia en espera. Amb un reforç de bona qualitat no hauria de ser més que el meu (0,01 mA), tot i que s’havia de desoldar el petit LED del tauler.

Pas 4: llista de maquinari

Llista de maquinari
Llista de maquinari
  • 18650 Tauler de protecció integrat amb bateria recarregable de ions de Li de 6000 mAh
  • Atmega 328P16M 5V amb carregador d’arrencada
  • Kit Adafruit DC Boarduino (compatible amb Arduino) (amb ATmega328) <serà una bona inversió si feu futurs projectes barebone
  • Foto-resistent sensible a la llum Fotoresistor Optoresistor 5mm GL5539
  • 1A 1000V Diode 1N4007 IN4007 DO-41 Rectifier Diodes
  • Control PFM DC-DC USB 0,9 V-5 V a 5 V CC Mòdul de subministrament d’alimentació incremental
  • Carregador de cèl·lules epoxi de 1.6W 5.5V 266mA Mini mòdul de sistema solar
  • TP405 5V Mini USB 1A Mòdul de carregador de bateria de liti
  • Kit d'enllaç de transmissor i receptor de RF de 433 MHz per al comandament a distància Arduino / ARM / MC <Kit, conté tant el transmissor com el receptor
  • Protector de commutació IP65 Caixa de connexions Protecció exterior impermeable 150x110x70mm
  • Nou mòdul de sensor de temperatura i humitat relativa DHT22 per Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007diode
  • Resonador / oscil·lador ceràmic Adafruit de 16 MHz [ADA1873]
  • Arduino UNO / Mega etc per a estació receptora + Raspberry PI 1/2/3
  • Caixa de plàstic acrílic transparent (opcional)

Podeu trobar tot això a Ebay, no vull promocionar cap venedor enllaçant a les seves pàgines i, de totes maneres, els enllaços quedaran morts.

Notes per a la llista de maquinari:

Per si de cas, l’Atmega, amb programació, en compra més, també passa amb el controlador de càrrega solar i l’amplificador de tensió.

El carregador solar conté 2 petits LEDs de color que només s’encenen en cas de càrrega solar i que indiquen (vermell-> càrrega, blau-> estats completament carregats). També es poden vendre sense soldar. Més aviat aporta una mica més de suc a la bateria durant la càrrega.

Com veieu, no hi ha cap suport de bateria a la meva llista. Per què? Perquè no són fiables. Vaig tenir innombrables ocasions en què la bateria va sortir del suport i va perdre la connexió. Especialment si la vostra instal·lació està muntada sobre un pal alt com el meu, obert per a qualsevol condició meteorològica severa. Fins i tot vaig incloure la bateria al suport amb 2 cremalleres i, tot i així, va aconseguir sortir. No ho feu, només heu de treure el recobriment extern de la bateria i soldar els cables directament a la part inferior de la bateria, que conté el circuit de protecció contra sobrecàrregues (no ometeu la protecció). El suport de la bateria només es pot utilitzar per mantenir la bateria al seu lloc al dispositiu.

TP405 5V Mini USB 1A Taula de càrrega de bateria de liti: malauradament, aquesta placa no inclou protecció contra corrent invers al panell solar, per a això necessitareu 1 díode més per col·locar-lo entre una pota del panell solar i el circuit de càrrega per aturar el corrent per tornar a fluir cap al panell solar a la nit.

Pas 5: Muntatge

muntatge
muntatge
muntatge
muntatge
muntatge
muntatge

Aquest tauler conté relativament pocs components i els marcadors del tauler són bastant senzills.

Assegureu-vos que NO introduïu l'Atmega328P de la manera equivocada (que pot escalfar i tapar el xip, també pot destruir el reforç de tensió).

En aquesta configuració, el xip està cap avall (petit forat en U que marca PIN1). Tots els altres components haurien de ser evidents.

Utilitzeu un cable blindat (per exemple: el cable d'àudio de CDrom anirà bé) per a l'LDR. En alguns casos (durant moltes setmanes de proves) va resultar que interfereix en la transmissió del senyal de ràdio. Aquest va ser un d’aquests errors difícils de solucionar, de manera que si no voleu problemes, feu servir un cable blindat, final de la història.

LED: el LED de la part inferior de la caixa es va afegir originalment per parpellejar quan hi ha transmissió de ràdio sortint, però més endavant ho he considerat com una pèrdua d'energia i només parpelleja 3 vegades durant el procés d'arrencada.

TP: és el punt de prova per mesurar el corrent del circuit general.

DHT22: no compreu el DHT11 barat, gasteu 50 cèntims més per obtenir el DHT22 blanc, que també pot mesurar temperatures negatives.

Pas 6: disseny de casos

Disseny de casos
Disseny de casos
Disseny de casos
Disseny de casos
Disseny de casos
Disseny de casos

Tot i que és una mica excessiu, s’ha creat un cub imprès en 3D (weather_cube) per mantenir el sensor de temperatura DHT22 al seu lloc. El cub està enganxat a la part inferior de la caixa IP, amb només 1 forat perquè l’aire arribi al sensor. He afegit una xarxa al forat contra les abelles, les vespes i altres mosques petites.

Opcionalment, es pot utilitzar una caixa externa per fer l’estació més impermeable en cas de muntar-la en un pal de plats obert.

Idea per a una característica útil: afegir una gran placa de sostre metàl·lica de 1-2 cm a la part superior de la caixa que proporciona ombra del sol durant l’estiu, tot i que això també podria treure la llum solar útil del panell. Podeu arribar a un disseny que separi el tauler i la caixa (deixant el tauler al sol, la caixa a l’ombra).

A les imatges: una de les estacions retirades de l’entorn de treball al cap d’un any, la tensió de la bateria encara està impressionant de 3,9 V, no hi ha danys causats per l’aigua en cap part de la caixa, tot i que la xarxa que he enganxat a la part inferior del cub s’ha trencat. El motiu pel qual s’havia de donar servei a l’estació és que es produeix un error de connexió al connector LDR, tot i que el cable de pont semblava estar encara al seu lloc, la connexió es va trencar, per tant, el pin de vegades flotava proporcionant lectures analògiques LDR defectuoses. Suggeriment: si utilitzeu jumper de PC estàndard, incloeu-los tots després que l’estació funcioni perfectament per evitar-ho.

Pas 7: programari

Programari
Programari

El codi de programari requerirà 3 biblioteques externes (LowPower, DHT, VirtualWire). Darrerament, he tingut problemes per trobar-ne alguns fàcilment en línia, de manera que els adjunto en un fitxer ZIP separat. Independentment del sistema operatiu que utilitzeu Linux / Windows, només cal que trobeu la carpeta de la biblioteca del vostre Arduino IDE i extracteu-la allà.

Només una nota, independentment que ja desaconsello comprar el DHT11, si utilitzeu un tipus de sensor DHT incorrecte, el programa només quedarà penjat al principi a la secció d’inicialització (ni tan sols veureu que el led d’inici parpelleja 3 vegades).

El codi principal del bucle és molt senzill, primer llegeix els valors de l’entorn (temperatura, índex de calor, humitat, solar), els envia a través de la ràdio i després utilitza la biblioteca de baixa potència per fer dormir l’Arduino durant 5 minuts.

He comprovat que la reducció de la velocitat de transmissió augmentarà l'estabilitat de les transmissions de ràdio. L'estació envia una quantitat molt petita de dades, 300 bps és més que suficient. Tampoc oblideu que el transmissor només funciona a partir d’aprox. 4,8 V, en la futura versió de 3,3 V això pot conduir a una qualitat de transmissió encara pitjor (enviament de dades a través de murs i altres obstacles). Tinc un problema amb l’ús d’un Arduino Mega connectat a un Raspberry PI 2 que alimenta el Mega des del PI, que no he rebut cap transmissió. La solució era alimentar el Mega des d’un subministrament extern extern de 12V.

Pas 8: versió 2 (basada en ESP32)

Versió 2 (basada en ESP32)
Versió 2 (basada en ESP32)
Versió 2 (basada en ESP32)
Versió 2 (basada en ESP32)
Versió 2 (basada en ESP32)
Versió 2 (basada en ESP32)

Tot el que es pot trencar es trencarà per citar el bon vell Murphy i, finalment, després d’anys les estacions fracassaren per camins misteriosos. Un va començar a enviar dades solars ximples que van pujar a desenes de milers, cosa que és impossible a causa de: La placa Arduino conté un convertidor analògic a digital de 10 bits (8 canals al Mini i Nano, 16 al Mega). Això vol dir que maparà les tensions d’entrada entre 0 i 5 volts en valors enters entre 0 i 1023. Per tant, després de substituir la ràdio, LDR i reprogramar diverses vegades l'Atmega 328P, vaig abandonar i vaig decidir que era hora d'innovar. Anem a ESP32.

El tauler que he utilitzat és un: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi i targeta Bluetooth Rev1 MicroPython 4MB FLASH

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

Microcontrolador ESP-32

Voltatge de funcionament 3,3V pins d'E / S digitals 19 pins d'entrada analògica 6 velocitat de rellotge (màxima) 240Mhz Flash 4M bytes Longitud 5mm Amplada 2,54mm Pes 4g

Que a diferència de la imatge no té el logotip LOLIN (falsificat de la Xina). La meva primera sorpresa agradable va ser que el pinout imprès a la pissarra coincidís amb el pinout Arduino. Després d’haver tractat amb tantes taules que no havien estat obligades a buscar pinouts durant tot el dia, cansat de cometre errors, finalment, un tauler on el pinout és directe WoW!

Tanmateix, aquí teniu el costat fosc de la història:

Inicialment he connectat el LDR a A15 que és el pin 12 perquè era més fàcil engreixar els pins. Llavors tinc 4095 lectures (que és el màxim que podeu obtenir amb AnlogRead a l’ESP32), cosa que em va deixar enrere perquè tota la raó per la qual vaig reconstruir l’estació eren les lectures LDR trencades de l’antiga (el DHT encara funcionava bé). Per tant, resulta que:

L'esp 32 integra dos registres ACD de 12 bits. ADC1 amb 8 canals connectats a GPIO 32-39 i ADC2 amb 10 canals en altres pins. El cas és que l’ESP32 utilitza l’ADC2 per gestionar les funcions wifi, de manera que si utilitzeu Wifi, no podreu utilitzar aquest registre. L'API del controlador ADC admet ADC1 (8 canals, connectats als GPIO 32 - 39) i ADC2 (10 canals, connectats als GPIO 0, 2, 4, 12 - 15 i 25 - 27). No obstant això, l'ús d'ADC2 té algunes restriccions per a l'aplicació:

ADC2 l’utilitza el controlador de Wi-Fi. Per tant, l'aplicació només pot utilitzar ADC2 quan el controlador de Wi-Fi no s'ha iniciat. Alguns dels pins ADC2 s’utilitzen com a pins de fleix (GPIO 0, 2, 15), per tant no es poden utilitzar lliurement. Tal és el cas dels següents kits de desenvolupament oficials:

Per tant, connectar el LDR des del pin 12 a A0, que és el vicepresident, ho va resoldre tot, però no entenc per què fins i tot enumeren pins ADC2 com a disponibles per als fabricants. Quants altres aficionats van perdre tones de temps fins a esbrinar-ho? Com a mínim, marqueu els passadors inutilitzables amb vermell o alguna cosa així o no ho mencioneu gens al manual perquè altres fabricants només puguin esbrinar-los si realment els necessiten. Tot el propòsit de l’ESP32 és utilitzar-lo amb WIFI, tothom l’utilitza amb WIFI.

Un bon començament per configurar l'IDE Arduino per a aquesta placa:

Tot i que el poso aquí al codi, torna a ser:

És possible que aquest codi no es compili per a altres models ESP32 diferents del Weemos LOLIN 32.

Configuració de la compilació: -Utilització de càrrega / sèrie: 115200 -Utilització de CPU / RAM: 240Mhz (Wifi | BT) -Utilització de freq flash: 80 Mhz

Hi ha un munt d’estacions meteorològiques basades en ESP32 a la xarxa, són molt més comuns que la meva versió 1 amb el xip barebone perquè són més fàcils de configurar, no cal que el programador només connecti el dispositiu al USB i programi-lo i el seu el mode de son profund és excel·lent durant molt de temps funcionant des de la bateria. Just al cap, això va ser el primer que vaig provar fins i tot abans de soldar els passadors perquè, com vaig assenyalar diversos llocs d’aquest projecte, el MÉS important és el consum d’energia i, amb la bateria actual (falsa) i el petit panell solar, l’espera el poder realment no pot superar els 1-2 mA, en cas contrari, el projecte no es podrà mantenir a llarg termini.

Va ser una sorpresa agradable que el mode de son profund funcioni tal com s’anunciava. Durant el son profund el corrent era tan baix que el meu multímetre barat ni tan sols el podia mesurar (funciona per a mi).

Durant l’enviament de dades, el corrent rondava els 80 mA (aproximadament 5 vegades més que quan l’Amega 328P es despertava i transmetia), però no oblideu que amb el V1 hi havia un desviament d’alimentació de 1 mA al LDR en mode de repòs (que també depenia dels nivells de llum i passava de 0,5 mA a 1 mA) que ara ha desaparegut.

Ara que es descarta la bateria UltraFire si utilitzeu la mateixa bateria, això és el que podeu esperar:

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

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

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

Teòrica

Durada de la bateria = 22000 mWh / 2,5 mW = 8800 hores = 366 dies aproximadament

Real

Durada de la bateria = 800 mWh / 2,5 mW = 320 hores = 13 dies aproximadament

No tenia cap abast per mesurar amb precisió el temps d’activació, però amb els meus ajustaments supera uns 2 segons.

No volia passar la tarda a codificar tot, així que vaig buscar altres estacions meteorològiques a Instructables basades en ESP32 per veure què fan per emmagatzemar dades. Lamentablement, es va adonar que utilitzen llocs inflexibles i limitats com Weathercloud. Com que no sóc fan del "núvol" i el seu codi es va trencar durant molt de temps perquè el lloc ha canviat la seva API des de llavors, he trigat 10 minuts a fer una solució personalitzada perquè no és tan difícil com es podria pensar. Comencem!

Primer de tot, no hi ha cap imatge de placa de circuit per separat per a aquest projecte, perquè utilitza exactament els mateixos components (perdó per la soldada en una imatge lletja) que el V1 amb la diferència que tot s’esgota de 3,3V. El DHT es va connectar amb un pullup a VCC, el LDR va tirar cap avall amb un 10k. El problema que es pot veure amb les bateries 18650 com la meva falsa xinesa (6500 mAh ultra sun fire lol: D) és que comencen la corba de descàrrega des de la nova era de prop de 4,1 V i van fins que s’inicia el seu circuit de tall per aturar el dany de la cèl·lula (els que tenen la sort de tenir-lo). Això no és gens bo com a entrada de 3,3 V. Tot i que aquesta placa LOLIN té un connector de bateria de liti i un circuit de càrrega en aquest projecte, volia reformar la major part del que podia des de l’antiga estació, de manera que amb el vell 18650 NO PODEU utilitzar aquest carregador integrat. La solució va ser senzilla: vaig tallar un cable micro USB soldat a 5 V del reforçador de tensió antic i es va solucionar el problema de voilà, ja que la placa del microUSB té regulador.

Per tant, la diferència entre la versió antiga i la nova que a la vella bateria proporciona 3.7V -> augmentat a 5V -> ardu funciona a 5V -> tots els components funcionen a 5V.

En el nou: la bateria proporciona 3,7 V -> augmentat a 5 V -> regulat mitjançant reg integrat a ESP32 -> tots els components funcionen a 3,3 V.

Pel que fa al programari, també necessitarem una altra biblioteca DHT, el DHT d’Arduino no és compatible amb els ESP. El que necessitem es diu DHT ESP.

Vaig començar a basar el meu codi al voltant de l'exemple DHT que proporciona aquest codi. El funcionament del codi és:

1, Obteniu les dades ambientals de les dades DHT + Solar de la fotocèl·lula

2, connecteu-vos a wifi amb IP estàtica

3, POST les dades a un script PHP

4, Vés a dormir 10 minuts

Com notareu, heu ajustat el codi per tal d’eficiar-lo per minimitzar absolutament el temps de despertat, ja que consumeix 5 vegades la potència de la que feia l’antic projecte quan s’encenia. Com ho he fet? Primer de tot, si hi ha QUALSEVOL tipus d’error, la funció getTemperature () tornarà amb false (el que significa que torna a dormir 10 minuts). Pot ser que el sensor DHT no es pugui iniciar o que la connexió wifi no estigui disponible. Com es nota el bucle habitual while () per continuar provant l'associació wifi per sempre, també es va eliminar, però cal deixar un retard d'1 segon, sinó no sempre es connectarà i també depèn del tipus d'AP, de la càrrega, etc. passarà, amb 0,5 segons vaig tenir un comportament inconsistent (de vegades no es podia connectar). Si algú coneix una millor manera de fer-ho, deixeu-ho als comentaris. Només quan es llegeixin les dades DHT I la connexió wifi estigui activada, intentarà publicar les dades al script al servidor web. Totes les funcions de pèrdua de temps com Serial.println () també estan desactivades en mode operatiu normal. Com a servidor, també faig servir IP per evitar una cerca DNS innecessària, al meu codi, tant la passarel·la predeterminada com el servidor dns establerts a 0.0.0.0.

No entenc per què és tan difícil crear la vostra pròpia API quan només cal:

sprintf (resposta, "temp =% d & hum =% d & hi =% d & sol =% d", temp, hum, hi, sol);

int httpResponseCode = http. POST (resposta);

Col·loqueu aquest petit codi php a qualsevol raspberry pi i podeu fer tasques system () immediatament en funció de la telemetria, com encendre els ventiladors o encendre els llums si es fa prou fosc.

Algunes notes sobre el codi:

WiFi.config (staticIP, passarel·la, subxarxa, dns); // DEU estar després que Wifi comenci la tonteria …

WiFi.mode (WIFI_STA); // D’altra banda, també es crearà un AP no desitjat

Sí, bé, ja ho saps. També l’ordre de les configuracions d’IP pot canviar a través de les plataformes; primer he provat altres exemples on es van canviar els valors de la passarel·la i la subxarxa. Per què establir una IP estàtica? Doncs és bastant obvi, si teniu una caixa dedicada a la xarxa com un servidor Linux que executa isc dhcpd, no voleu cent milions d’entrades de registre des que l’ESP es desperti i obtingui la IP del DHCP. Els routers normalment no registren associacions, de manera que no es veuran. Aquest és el preu d’estalviar energia.

V2 mai no va poder mantenir-se a si mateix a causa de la bateria de mala qualitat i simplement l’he posat en un adaptador, de manera que si voleu construir el V1 o el V2 NO compreu la bateria esmentada, feu la vostra pròpia investigació sobre les bateries (qualsevol 18650 més de 2.000 mAh anunciats a Ebay és una estafa amb una alta probabilitat).

Recomanat: