Indholdsfortegnelse:

NaTaLia Weather Station: Arduino Solar Powered Weather Station Gjorde den rigtige vej: 8 trin (med billeder)
NaTaLia Weather Station: Arduino Solar Powered Weather Station Gjorde den rigtige vej: 8 trin (med billeder)

Video: NaTaLia Weather Station: Arduino Solar Powered Weather Station Gjorde den rigtige vej: 8 trin (med billeder)

Video: NaTaLia Weather Station: Arduino Solar Powered Weather Station Gjorde den rigtige vej: 8 trin (med billeder)
Video: EXPERIENCE: Solar Powering of Arduino ESP32 LoRa Board and BME280 Sensor (EP23) 2024, September
Anonim
NaTaLia vejrstation: Arduino solcelledrevet vejrstation udført på den rigtige måde
NaTaLia vejrstation: Arduino solcelledrevet vejrstation udført på den rigtige måde
NaTaLia vejrstation: Arduino solcelledrevet vejrstation udført på den rigtige måde
NaTaLia vejrstation: Arduino solcelledrevet vejrstation udført på den rigtige måde

Efter 1 års vellykket drift på 2 forskellige steder deler jeg mine solcelledrevne vejrstationsprojektplaner og forklarer, hvordan det udviklede sig til et system, der virkelig kan overleve i lange tidsperioder fra solenergi. Hvis du følger mine instruktioner og bruger nøjagtig de samme materialer som angivet, kan du bygge en solcelledrevet vejrstation, der vil køre i mange år. Faktisk er den eneste faktor, der begrænser, hvor lang tid det vil køre, batteriets levetid, hvad du bruger.

Trin 1: Vejrstationens drift

1, sender: Udendørs monteret boks med solpanel, der periodisk sender vejrtelemetri (temperatur, luftfugtighed, varmeindeks, solstyrke) til den indendørs modtagerenhed.

2, modtager: Indendørs enhed lavet af en Raspberry PI 2 + Arduino Mega med en 433 Mhz RF -modtager tilsluttet til datamodtagelse. I mit setup har denne enhed ikke nogen lokal LCD -displayfunktion. Det kører hensynsløst. Et hoved C -program tager sig af at modtage de indgående data fra Arduino gennem serienummeret og derefter logge dataene i en tekstfil og gøre de sidst modtagne data tilgængelige via telnet for andre enheder til at forespørge om det.

Stationen styrer lys i mit hjem ved læsning af fotoresistor (som bestemmer om det er dag eller nat udenfor). Modtageren er hovedløs i mit tilfælde, men du kan nemt ændre projektet for at tilføje et LCD -display. En af de enheder, der bruger, analyserer og viser vejrdata fra stationen, er mit andet projekt: Ironforge NetBSD Toaster.

Trin 2: Første versioner

Første versioner
Første versioner
Første versioner
Første versioner
Første versioner
Første versioner
Første versioner
Første versioner

Der er mange solprojekter på nettet, men mange af dem begår den almindelige fejl, at systemet over tid tager mere energi ud af batteriet, hvad solpanelet kunne genopbygge, især i de uklare, mørke vintermåneder.

Når du designer et soldrevet system, er det eneste, der er vigtigt, STRØMFORBRUG på alle komponenter: mcu, radiosender, spændingsregulator osv.

Det ville være en overkill at bruge en stor computer som en hindbær pi eller strøm sulten wifi -enhed som ESP bare for at indsamle og transportere et par bits vejrdata, men som jeg vil vise det i denne vejledning, er selv et lille Arduino -bord.

Det bedste er altid at måle strøm under din byggeproces med en meter eller med et omfang (nyttigt, når du forsøger at måle små pigge i brug under operationen i meget korte tidsrum (millisekunder)).

På det første billede kan du se min første (Arduino Nano Based) station og det andet Arduino Barebone Atmega 328P -kort.

Den første version, selvom den fungerede perfekt (overvågning af miljø og afsendelse af data via radio) havde for højt strømforbrug ~ 46mA og afladede batteriet på få uger.

Alle versioner brugte følgende batteri:

18650 6000mAh beskyttet Li-ion genopladeligt batteri Indbygget beskyttelseskort

OPDATER på disse ScamFire -batterier. Selvom dette er en ret gammel instruerbar følte jeg mig stadig tvunget til at rette det på grund af dette falske batteri. Køb IKKE det nævnte batteri, foretag din egen research om andre LION/LIPO batterier, alle 3,7V batterier fungerer sammen med dette projekt.

Endelig havde jeg tid til at debunk ScamFire -batteriet for at se, hvad det er reel kapacitet. Derfor vil vi køre 2 beregninger side om side med den reelle og den "annoncerede" kapacitet.

Først og fremmest er det en ting, at dette batteri er falsk og intet, hvad de påstår om det er sandt, de nye versioner er endnu værre, de kopierede falsen med at udelade 2 cent beskyttelseskredsløbet, så intet forhindrer dem i at aflade til nul.

En lille artikel om LION/LIPO batterier:

TLDR:

Hvad dette betyder er, at cellens maksimale spænding er 4,2v, og at den "nominelle" (gennemsnitlige) spænding er 3,7V.

For eksempel er her en profil af spændingen for et 'klassisk' 3,7V/4,2V batteri. Spændingen starter ved 4,2 maksimum og falder hurtigt ned til omkring 3,7V i størstedelen af batteriets levetid. Når du har ramt 3,4V, er batteriet dødt, og ved 3,0V afbryder afbryderkredsløbet batteriet.

Mine målinger ved hjælp af en dummy -belastning:

Batteri opladet: 4,1V

Cutoff indstillet til: 3.4V

Indlæsningssimulering: 0,15A (min enhed havde lidt problemer med at gå lavere end dette.)

Målt kapacitet: 0,77 Ah giv det en gratis 0,8 Ah, hvilket er 800mAh i stedet for den annoncerede 6000mAh!

Da dette batteri ikke engang havde beskyttelseskredsløbet, kunne jeg frit gå lavere, men ved 3,4V efter 10 minutter går det allerede ned til 3,0V.

Derfor giver batteriet med enkle beregninger:

Teoretisk

Batterispænding = 3,7V

Effekt = 3,7x6000 = 22000 mWh

Ægte

Batterispænding = 3,7V Strøm = 3,7x800 = 2960 mWh

Version: 0.1 ARDUINO NANO BASED

Selv med LowPower -biblioteket bruger en Arduino nano ~ 16 mA (i dvaletilstand) -> FAIL.

Teoretisk

Pavg = VxIavg = 5Vx16mA = 80 mW

Batterilevetid = 22000/80 = 275 timer = cirka 11 dage

RealPavg = VxIavg = 5Vx16mA = 80 mW

Batterilevetid = 800/80 = 10 timer

Version: 0.2 Atmega 328P Barebone

Den strøm, der forbruges af en ATmega328, afhænger meget af, hvad du gør med den. Bare sidder der i en standardtilstand, kan den bruge 16mA @ 5V, mens den kører ved 16MHz.

Når ATmega328P er i aktiv tilstand, vil den løbende udføre flere millioner instruktioner i sekundet. Yderligere indbyggede eksterne enheder Analog til Digital Converter (ADC), Serial Peripheral Interface (SPI), Timer 0, 1, 2, Two Wire Interface (I2C), USART, Watchdog Timer (WDT) og Brown-out Detection (BOD) forbruge strøm.

For at spare strøm understøtter ATmega328P MCU en række dvaletilstande, og ubrugte eksterne enheder kan slukkes. Dvaletilstande er forskellige i, hvilke dele der forbliver aktive, afhængig af søvnvarigheden og den tid, der er nødvendig til at vågne op (vågneperiode). Dvaletilstand og aktive eksterne enheder kan styres med AVR-søvn- og strømbibliotekerne eller mere præcist med det fremragende Low-Power-bibliotek.

Low-Power biblioteket er enkelt at bruge, men meget kraftfuldt. Erklæringen LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); sætter MCU'en i SLEEP_MODE_PWR_DOWN i 16 ms til 8 s, afhængigt af det første argument. Det deaktiverer ADC og BOD. Nedlukningssøvn betyder, at alle chipfunktioner er deaktiveret indtil næste afbrydelse. Yderligere stoppes den eksterne oscillator. Kun niveauafbrydelser på INT1 og INT2, afbrydelser af pinændringer, matchning af TWI/I2C -adresse eller WDT, hvis den er aktiveret, kan vække MCU'en. Så med den eneste erklæring minimerer du energiforbruget. For en 3,3 V Pro Mini uden strøm -LED og uden regulator (se nedenfor), der kører erklæringen, er energiforbruget 4,5 μA. Det er meget tæt på det, der er nævnt i ATmega328P-databladet for nedlukningssøvn med WDT aktiveret på 4,2 μA (datablad knyttet til kilder). Derfor er jeg ganske sikker på, at powerDown -funktionen lukker alt ned, der er rimeligt muligt. Med udsagnet LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, vil WDT blive deaktiveret, og du ville ikke vågne, før en afbrydelse er udløst.

Så med barebone -opsætningen kan vi sætte chippen i dvaletilstand i 5 minutter, mens den bruger meget lidt energi (0,04 mA uden periferiudstyr). Dette er dog kun Atmega 328P -chippen med krystaloscillatoren og intet andet, spændingsforstærkeren, der bruges i denne konfiguration til at øge batterispændingen fra 3,7V -> 5,0 V, bruger også 0,01 mA.

Et konstant spændingsafløb var den tilføjede fotomodstand, der øgede forbruget i dvaletilstand til en samlet 1 mA (dette inkluderer alle komponenterne).

Formlen til beregning af det præcise forbrug for enheden i både dvaletilstand og vågningstilstand er:

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

Ion = 13mA

Dette kommer for det meste fra RF433 Mhz -senderen:

Sender:

Arbejdsspænding: 3V - 12V for maks. strømforbrug 12V Arbejdsstrøm: max Mindre end 40mA max, og min 9mA Resonanstilstand: (SAW) Modulationstilstand: ASK Arbejdsfrekvens: Eve 315MHz Eller 433MHz Transmissionseffekt: 25mW (315MHz ved 12V) Frekvensfejl: +150kHz (max) Hastighed: mindre end 10Kbps

Sove = 1mA

Ville være betydeligt mindre uden fotoresistoren.

Trunontid Ton = 250 mS = 0,25s

Sovetid 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

Teoretisk

Batterilevetid = 22000mWh/6mW = 3666 timer = 152 dage cirka

Ægte

Batterilevetid = 800mWh/6mW = 133 timer = 5,5 dage cirka

Selvom disse stadig var en bedre UltraFire -serie, hvad jeg oprindeligt brugte, kunne du se, at uden solpanelet eller det lave 1mA -forbrug ville dette projekt ikke overleve længe.

Byg gerne stationen og skriv dine fund og beregninger ned til kommentarerne, så opdaterer jeg artiklen. Jeg vil også sætte pris på resultater med forskellige MCU'er og boost -omformere.

Trin 3: Opbygning af en vellykket vejrstation

Bygger en vellykket vejrstation
Bygger en vellykket vejrstation
Bygger en vellykket vejrstation
Bygger en vellykket vejrstation
Bygger en vellykket vejrstation
Bygger en vellykket vejrstation
Bygger en vellykket vejrstation
Bygger en vellykket vejrstation

Selvom det er den første succesrige version, indeholder den en lille smule fejl på billederne, og jeg kan ikke lave dem om, fordi stationerne allerede er indsat. De to spændingsforstærkere vist på billedet kan fås i skrivende stund til flymodellering og andre applikationer. Da jeg redesignede min station, tænkte jeg på at få et mindre og mere effektivt spændingskort, men mindre i størrelse betyder bestemt ikke, at det er mere effektivt.

Det nye lille modul på billedet, der ikke engang har en indikator -LED, dræner faktisk 3mA (*FAIL*) i sig selv, så jeg blev hos mit gamle bord:

PFM Control DC-DC USB 0.9V-5V til 5V dc Boost Step-up strømforsyningsmodul

I skrivende stund er dette modul stadig tilgængeligt på Ebay for 99 cent, men hvis du beslutter dig for at bruge en anden booster, skal du altid kontrollere strømforbruget i standby. Med en booster af god kvalitet bør den ikke være mere end min (0,01 mA), selvom den lille LED om bord skulle afloddes.

Trin 4: Hardwareliste

Hardware liste
Hardware liste
  • 18650 6000mAh beskyttet Li-ion genopladeligt batteri Indbygget beskyttelseskort
  • Atmega 328P16M 5V med bootloader
  • Adafruit DC Boarduino (Arduino -kompatibelt) Kit (m/ATmega328) <dette bliver en god investering, hvis du laver fremtidige barebone -projekter
  • Foto Lysfølsom Modstand Fotoresistor Optoresistor 5mm GL5539
  • 1A 1000V Diode 1N4007 IN4007 DO-41 ensretterdioder
  • PFM Control DC-DC USB 0.9V-5V til 5V dc Boost Step-up strømforsyningsmodul
  • 1.6W 5.5V 266mA Mini Solar Panel Modul System Epoxy Cell Charger DIY
  • TP405 5V Mini USB 1A Lithium Battery Charging Board Charger Module
  • 433Mhz RF sender og modtager link kit til Arduino/ARM/MC fjernbetjening <Kit, indeholder både sender og reveiver
  • IP65 Switch Protector Junction Box Udendørs vandtæt kabinet 150x110x70mm
  • Nyt DHT22 temperatur- og relativ fugtighedssensormodul til Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini Switch, 1x1N4007diode
  • Adafruit 16 MHz keramisk resonator / oscillator [ADA1873]
  • Arduino UNO/Mega etc til modtagerstation + Raspberry PI 1/2/3
  • Klar akryl plastkasse (valgfri)

Du kan finde alle disse på Ebay, jeg vil ikke promovere nogen sælgere ved at linke til deres sider, og linkene bliver alligevel døde i fremtiden.

Noter til hardwarelisten:

Bare hvis du murer Atmega på en eller anden måde med programmering køber flere af dem, gælder det samme for spændingsforstærkeren og solopladningsregulatoren.

Solopladeren indeholder 2 små farve-LED'er, der kun tændes i tilfælde af solopladning og angiver (rød-> opladning, blå-> fuldt opladet tilstand). Disse kan også være usolderede. Det giver snarere lidt mere ekstra juice til batteriet under opladning.

Som du ser, er der ingen batteriholdere på min liste. Hvorfor? Fordi de er upålidelige. Jeg havde utallige lejligheder, da batteriet flyttede ud af holderen og mistede forbindelsen. Især hvis din opsætning er monteret på en høj fadstang som min, åben for hårde vejrforhold. Jeg lynede selv batteriet ind i holderen med 2 lynlåse, og det lykkedes stadig at flytte ud. Gør det ikke, fjern bare den ydre belægning fra batteriet og lod ledningerne direkte ind i bunden af batteriet, der indeholder overladningsbeskyttelseskredsløbet (omgå ikke beskyttelsen). En batteriholder kan kun bruges til at holde batteriet på plads i enheden.

TP405 5V Mini USB 1A Lithium Battery Charging Board: desværre inkluderer dette kort ikke omvendt strømbeskyttelse til solpanelet, for dette skal du placere 1 mere diode mellem det ene ben af solpanelet og opladningskredsløbet for at stoppe det nuværende forsøg at strømme tilbage i solpanelet om natten.

Trin 5: Montering

montage
montage
montage
montage
montage
montage

Dette kort indeholder relativt få komponenter, og markørerne på tavlen er ret enkle.

Sørg for, at du IKKE indsætter Atmega328P på den forkerte måde (der kan varme op og tegne chippen, kan også ødelægge spændingsforstærkeren).

I denne opsætning vender chippen nedad (lille U -hul markering PIN1). Alle de andre komponenter skal være indlysende.

Brug afskærmet kabel (f.eks.: Lydkabel fra CDrom klarer sig fint) til LDR. I nogle tilfælde (over mange ugers test) viste det sig, at det forstyrrer radiosignaloverførslen. Dette var en af de fejl, der er svære at fejlfinde, så hvis du ikke vil have problemer, skal du bare bruge et afskærmet kabel, slutningen på historien.

LED: LED'en i bunden af boksen blev oprindeligt tilføjet til at blinke, når der er udgående radiotransmission, men senere har jeg betragtet det som spild af strøm, og det blinker kun 3 gange ved opstartsprocessen.

TP: er testpunkt for måling af strømmen for det samlede kredsløb.

DHT22: Køb ikke den billige DHT11, brug 50 cent mere for at få den hvide DHT22, der også kan måle negative temperaturer.

Trin 6: Case Design

Case Design
Case Design
Case Design
Case Design
Case Design
Case Design

Selvom det er lidt af en overkill, blev der lavet en 3D -printet terning (weather_cube) for at holde DHT22 temperatursensoren på plads. Terningen er limet til bunden af IP -boksen og indeholder kun 1 hul, så luften kan nå sensoren. Jeg har tilføjet et net ved hullet mod bier, hvepse og andre små fluer.

En ekstern kasse kan valgfrit bruges til at gøre stationen mere vandtæt, hvis du monterer den på en tallerkenpæl i det fri.

Idé til 1 nyttig funktion: tilføjelse af en stor metal tagplade 1-2 cm på toppen af kassen, der giver skygge fra solen i løbet af sommeren, selvom dette også kan fjerne vores nyttige sollys fra panelet. Du kan komme med et design, der adskiller panelet og kassen (efterlader panelet på solen, boksen i skygge).

På billederne: en af stationerne fjernet fra arbejdsmiljøet efter 1 år, batterispændingen er stadig fantastisk 3,9V, ingen vandskade på nogen del af kassen, selvom nettet jeg limede i bunden af terningen blev revet fra hinanden. Grunden til, at stationen skulle serviceres, er forbindelsesfejl på LDR -stikket, selvom jumperkablet tilsyneladende stadig var på plads, var forbindelsen brudt, hvorfor stiften undertiden flydede, hvilket gav dårlige LDR -analoge aflæsninger. Forslag: Hvis du bruger standard pc -jumperkabler, skal du lime dem alle sammen, efter at stationen fungerer perfekt for at undgå dette.

Trin 7: Software

Software
Software

Softwarekoden kræver 3 eksterne biblioteker (LowPower, DHT, VirtualWire). Jeg havde problemer med at finde nogle af dem let online på det seneste, så jeg vedhæftede dem i en separat ZIP -fil. Uanset hvilket operativsystem du bruger Linux/Windows, skal du bare finde din Arduino IDEs biblioteksmappe og udpakke dem der.

Bare en bemærkning, uanset at jeg allerede fraråder at købe DHT11, hvis du bruger den forkerte type DHT -sensor, hænger programmet bare for evigt i begyndelsen ved initialiseringsafsnittet (du vil ikke engang se start -LED'en blinke 3 gange).

Hovedsløjfe -koden er meget enkel, først læser den miljøværdierne (temperatur, varmeindeks, luftfugtighed, sol), sender dem via radio, derefter bruger den lowpower -biblioteket til at sætte Arduino i dvale i 5 minutter.

Jeg har fundet ud af, at sænkning af baudrate vil øge stabiliteten af radiotransmissionerne. Stationen sender en meget lille mængde data, 300 bps er mere end nok. Glem heller ikke, at senderen kun fungerer fra ca. 4.8V, i fremtiden 3.3V -version kan dette føre til endnu dårligere transmissionskvalitet (afsendelse af data gennem vægge og andre forhindringer). Jeg støder på et problem med at bruge en Arduino Mega, der er knyttet til en Raspberry PI 2, der driver Mega'en fra PI'en, at jeg ikke modtog nogen transmission. Løsningen var at drive Mega'en fra en separat ekstern 12V -forsyning.

Trin 8: Version 2 (ESP32 -baseret)

Version 2 (ESP32 baseret)
Version 2 (ESP32 baseret)
Version 2 (ESP32 baseret)
Version 2 (ESP32 baseret)
Version 2 (ESP32 baseret)
Version 2 (ESP32 baseret)

Alt, hvad der kan gå i stykker, går i stykker for at citere den gode gamle Murphy, og efterhånden efter år mislykkedes stationerne på mystiske måder. Man begyndte at sende gibberish soldata, der gik op i titusinder, hvilket er umuligt på grund af: Arduino-kortet indeholder en 6-kanals (8 kanaler på Mini og Nano, 16 på Mega), 10-bit analog til digital konverter. Dette betyder, at det vil kortlægge indgangsspændinger mellem 0 og 5 volt i heltalsværdier mellem 0 og 1023. Så efter at have udskiftet radioen, LDR og omprogrammeret Atmega 328P flere gange, gav jeg op og besluttede, at det var tid til innovation. Lad os gå ESP32.

Kortet, jeg brugte, var et: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

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

Mikrocontroller ESP-32

Driftsspænding 3.3V Digitale I/O -ben 19 analoge indgangsstifter 6 Urhastighed (maks.) 240Mhz Flash 4M byte Længde 5mm Bredde 2.54mm Vægt 4g

Som i modsætning til billedet ikke har LOLIN -logoet (forfalskning fra Kina). Min første behagelige overraskelse var, at pinout trykt på tavlen matchede Arduino pinout! Efter at have beskæftiget mig med så mange noname boards, hvor jeg var nødt til at kigge efter pinouts hele dagen lang træt og lave fejl endelig et bord, hvor pinout er lige frem WoW!

Men her er den mørke side af historien:

I første omgang har jeg tilsluttet LDR til A15, som er pin 12, fordi det var lettere at varme stifterne sammen. Så har jeg fået 4095 aflæsninger (hvilket er det maksimale, du kan få med AnlogRead på ESP32), hvilket gjorde mig til vanvid, fordi hele grunden til, at jeg genopbyggede stationen, var de ødelagte LDR -aflæsninger fra den gamle (DHT fungerede stadig fint). Så det viser sig, at:

Esp 32 integrerer to 12-bit ACD-registre. ADC1 med 8 kanaler knyttet til GPIO'er 32-39 og ADC2 med 10 kanaler i en anden stift. Sagen er, at ESP32 bruger ADC2 til at styre wifi -funktioner, så hvis du bruger Wifi, kan du ikke bruge det register. ADC -driver -API'en understøtter ADC1 (8 kanaler, knyttet til GPIO'er 32 - 39) og ADC2 (10 kanaler, knyttet til GPIO'er 0, 2, 4, 12 - 15 og 25 - 27). Brugen af ADC2 har dog nogle begrænsninger for applikationen:

ADC2 bruges af Wi-Fi-driveren. Derfor kan applikationen kun bruge ADC2, når Wi-Fi-driveren ikke er startet. Nogle af ADC2 benene bruges som omsnøringsnåle (GPIO 0, 2, 15) og kan derfor ikke bruges frit. Sådan er det i følgende officielle udviklingssæt:

Så at tilslutte LDR fra pin 12 til A0, som er VP, løste alt, men jeg forstår det ikke, hvorfor angiver de endda ADC2 -pins som tilgængelige for producenter. Hvor mange andre hobbister spildte masser af tid, før de fandt ud af dette? Marker i det mindste de ubrugelige stifter med rød eller noget, eller nævn det slet ikke i manualen, så andre producenter kun kan finde ud af dem, hvis de virkelig har brug for dem. Hele formålet med ESP32 er at bruge det med WIFI, alle bruger det med WIFI.

En god start på hvordan du konfigurerer Arduino IDE til dette kort:

Selvom jeg satte det i koden her, går det igen:

Denne kode kompileres muligvis ikke for andre ESP32 -modeller end Weemos LOLIN 32!

Byg indstillinger: -Brug upload/seriel: 115200 -Brug CPU/ram: 240Mhz (Wifi | BT) -Brug flashfrekvens: 80 Mhz

Der er masser af ESP32 -baserede vejrstationer på nettet, de er langt mere almindelige end min version 1 var med barebone -chippen, fordi de er lettere at konfigurere, du behøver ikke programmerer, bare plugin enheden på usb og programmer den og deres dyb dvaletilstand er fremragende til lang tid med batteri. Lige uden for flagermus var dette den allerførste ting, jeg testede, selv før jeg lodde i breakout -benene, for som jeg bemærkede flere steder i dette projekt, er det VIGTIGST strømforbruget og med det nuværende (falske) batteri og lille solpanel standby strøm kan ikke rigtig gå over 1-2mAs ellers vil projektet ikke være i stand til at opretholde sig selv på lang sigt.

Det var igen en behagelig overraskelse, at tilstanden til dyb søvn fungerer som annonceret. Under den dybe søvn var strømmen så lav, at min billige multimeter ikke engang kunne måle den (virker for mig).

Under afsendelse af data var strømmen omkring 80mA (hvilket er cirka 5 gange mere end da Atmega 328P vågnede og sendte), men glem ikke, at med V1 var der et gennemsnitligt 1mA strømafløb på LDR i dvaletilstand (som også var afhængig af lysniveauerne og gik fra 0,5mA - 1mA), der nu er væk.

Nu hvor UltraFire -batteriet debunkes, hvis du bruger det samme batteri, kan du forvente dette:

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

Teoretisk

Batterilevetid = 22000mWh/2,5mW = 8800 timer = 366 dage ca.

Ægte

Batterilevetid = 800mWh/2,5mW = 320 timer = ca. 13 dage

Jeg havde ikke et omfang til at måle præcist drejningen til tiden, men med mine tweaks topper den omkring 2 sekunder.

Jeg ville ikke bruge eftermiddagen på tilpasset kodning af alt, så jeg ledte efter nogle andre vejrstationer på Instructables baseret på ESP32 for at se, hvad de gør til datalagring. Desværre bemærket, at de bruger ufleksible og begrænsede websteder såsom weathercloud. Da jeg ikke er fan af "skyen" og deres kode længe gik i stykker, fordi webstedet har ændret dets API siden da, har jeg taget mine 10 minutter til at lave en brugerdefineret løsning, fordi det ikke er så svært som man måske tror. Lad os komme igang!

Først og fremmest er der ikke noget printkort -billede separat til dette projekt, fordi det bruger nøjagtig de samme komponenter (undskyld det loddet i grimt brødbrætbillede) som V1 med den forskel, at alt kører af 3,3V. DHT tilsluttede en pullup til VCC, LDR trak ned med en 10k. Det problem, man kan se med 18650 batterier som min kinesiske fake (6500 mAh ultra sun fire lol: D) er, at de starter afladningskurven fra omkring 4,1 V ny alder og går, indtil deres afbryderkredsløb sparker ind for at stoppe celleskader (dem, der er så heldige at have det). Dette er ingen steder godt for os som 3,3V input. Selvom dette LOLIN -kort har et litiumbatteristik og opladningskredsløb i dette projekt, ville jeg renovere det meste, jeg kunne fra den gamle station, så med den gamle 18650 kan du IKKE bruge denne indbyggede oplader. Løsningen var død enkel: Jeg afbrød et mikro -USB -kabel loddet i 5V ud af den gamle spændingsforstærker, og voila -problemet blev løst, da kortet på microUSB har en regulator.

Så forskellen mellem den gamle og nye version, der i det gamle batteri giver 3,7V -> boostet til 5V -> ardu kører på 5V -> alle komponenter kører på 5V.

I den nye: batteri giver 3,7V -> boostet til 5V -> reguleret via indbygget reg på ESP32 -> alle komponenter kører på 3,3V.

Softwaremæssigt har vi også brug for et andet DHT -bibliotek, Arduino's DHT er ikke kompatibel med ESP'erne. Det, vi har brug for, kaldes DHT ESP.

Jeg begyndte at basere min kode omkring DHT -eksemplet, som denne kode gav. Kodens funktion er:

1, Få miljødataene fra DHT + soldataene fra fotocellen

2, Opret forbindelse til wifi med statisk IP

3, POST dataene til et php -script

4, gå i dvale i 10 minutter

Som du vil bemærke, indstillede jeg koden for effektivitet for absolut at minimere vågningstiden, da den dræner 5 gange strømmen, end det gamle projekt gjorde, da det blev tændt. Hvordan gjorde jeg dette? Først og fremmest, hvis der er nogen form for fejl, kommer funktionen getTemperature () tilbage med falsk (hvilket betyder 10 minutters søvn igen). Dette kan være som om DHT -sensoren ikke kan startes, eller at wifi -forbindelsen ikke er tilgængelig. Som du bemærker, blev den sædvanlige while () loop for at prøve at prøve wifi -foreningen for altid også fjernet, men en forsinkelse på 1 sekund skulle være derinde, ellers vil den ikke altid oprette forbindelse, og det afhænger også af AP -typen, indlæsning osv., Hvor hurtigt den er vil ske, med 0,5 sekunder fik jeg inkonsekvent adfærd (nogle gange kunne den ikke oprette forbindelse). Hvis nogen ved en bedre måde at gøre dette på, kan du lade det stå i kommentarerne. Først når DHT -dataene læses OG wifi -forbindelsen er oppe, vil den forsøge at sende dataene til scriptet på webserveren. Alle slags tidsforbrugsfunktioner som Serial.println () er også deaktiveret i normal driftstilstand. Som server bruger jeg også IP for at undgå unødvendigt DNS -opslag, i min kode er både standardgateway og dns -server indstillet til 0.0.0.0.

Jeg forstår ikke, hvorfor er det så svært at oprette din egen API, når alt det kræver er:

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

int httpResponseCode = http. POST (svar);

Du sætter denne lille php -kode til enhver hindbær pi, og du kan udføre system () opgaver med det samme baseret på telemetrien som at tænde ventilatorer eller tænde lyset, hvis det bliver mørkt nok.

Nogle noter om koden:

WiFi.config (staticIP, gateway, subnet, dns); // SKAL være efter Wifi begynder hvor dumt …

WiFi.mode (WIFI_STA); // SKAL ellers også oprette en uønsket AP

Ja, nu ved du det. Også rækkefølgen af IP -konfigurationerne kan ændre sig via platforme, jeg prøvede først andre eksempler, hvor gateway- og subnetværdierne blev skiftet. Hvorfor indstille statisk IP? Det er ganske indlysende, hvis du har en dedikeret boks på dit netværk som en linux -server, der kører isc dhcpd, vil du ikke have hundrede millioner logposter fra, når ESP vågner og får IP'en fra DHCP. Routere logger normalt ikke associationer, så det bliver uset. Dette er prisen for at spare strøm.

V2 har aldrig været i stand til at opretholde sig selv på grund af batteriet af dårlig kvalitet, og jeg har simpelthen sat det på en adapter, så hvis du vil bygge enten V1 eller V2, må du IKKE købe det nævnte batteri, skal du selv undersøge batterier (enhver 18650 over 2000mAh annonceret kapacitet på Ebay er en fidus med stor sandsynlighed).

Anbefalede: