INHOUDSOPGAWE:

NaTaLia Weerstasie: Arduino -sonkrag -weerstasie op die regte manier: 8 stappe (met foto's)
NaTaLia Weerstasie: Arduino -sonkrag -weerstasie op die regte manier: 8 stappe (met foto's)

Video: NaTaLia Weerstasie: Arduino -sonkrag -weerstasie op die regte manier: 8 stappe (met foto's)

Video: NaTaLia Weerstasie: Arduino -sonkrag -weerstasie op die regte manier: 8 stappe (met foto's)
Video: Leslie Kean on David Grusch (UFO Whistleblower): Non-Human Intelligence, Recovered UFOs, UAP, & more 2024, Julie
Anonim
NaTaLia Weerstasie: Arduino -sonkrag -weerstasie op die regte manier gedoen
NaTaLia Weerstasie: Arduino -sonkrag -weerstasie op die regte manier gedoen
NaTaLia weerstasie: Arduino sonkrag aangedrewe weerstasie op die regte manier gedoen
NaTaLia weerstasie: Arduino sonkrag aangedrewe weerstasie op die regte manier gedoen

Na 'n jaar van suksesvolle werking op 2 verskillende plekke, deel ek my projekplanne met sonkrag -aangedrewe weerstasies en verduidelik hoe dit ontwikkel het tot 'n stelsel wat werklik oor lang tydperke van sonkrag kan oorleef. As u my instruksies volg en presies dieselfde materiaal gebruik as wat gelys word, kan u 'n weerstasie met sonkrag bou wat vir baie jare werk. Die enigste faktor wat beperk hoe lank dit gaan werk, is die lewensduur van die battery wat u gebruik.

Stap 1: werking van die weerstasie

1, sender: buitelug -gemonteerde boks met sonpaneel wat weer -telemetrie (temperatuur, humiditeit, hitte -indeks, sonsterkte) periodiek na die binnenshuise ontvanger -eenheid stuur.

2, Ontvanger: Binneneenheid gemaak van 'n Framboos PI 2 + Arduino Mega met 'n 433 Mhz RF -ontvanger wat vir data -ontvangs gekoppel is. In my opset het hierdie eenheid geen plaaslike funksies vir LCD -skerms nie. Dit verloop onverskillig. 'N Hoof C -program sorg vir die ontvangs van die inkomende data van die Arduino deur die reeks, om dan die data in 'n tekslêer aan te meld en die laas ontvangde data via telnet beskikbaar te stel vir ander toestelle om dit te ondersoek.

Die stasie beheer ligte in my huis deur die lees van die fotoresistor (wat bepaal of dit dag of nag buite is). Die ontvanger is in my geval koploos, maar u kan die projek maklik verander om 'n LCD -skerm by te voeg. Een van die ander toestelle wat die weerdata van die stasie gebruik, ontleed en vertoon, is my ander projek: Ironforge die NetBSD broodrooster.

Stap 2: Eerste weergawes

Eerste weergawes
Eerste weergawes
Eerste weergawes
Eerste weergawes
Eerste weergawes
Eerste weergawes
Eerste weergawes
Eerste weergawes

Daar is baie sonprojekte op die internet, maar baie van hulle begaan die algemene fout dat die stelsel mettertyd meer energie uit die battery haal wat die sonpaneel kan aanvul, veral gedurende die troebel, donker wintermaande.

As u 'n sonkragstelsel ontwerp, is dit net die kragverbruik op alle komponente: mcu, radiosender, spanningsreguleerder, ens.

Om 'n groot rekenaar soos 'n framboospi of 'n kraghonger wifi -toestel soos die ESP te gebruik om net 'n paar stukkies weerdata te versamel en te vervoer, is 'n oorwinning, maar soos ek dit in hierdie tutoriaal sal wys, is selfs 'n klein Arduino -bord.

Die beste is om die stroom tydens u bouproses altyd met 'n meter of met 'n omvang te meet (handig as u probeer om klein stygings tydens gebruik tydens 'n kort tydsduur (millisekonde) te meet.

Op die eerste foto kan u my eerste (Arduino Nano Based) stasie en die tweede Arduino Barebone Atmega 328P -bord sien.

Die eerste weergawe, hoewel dit perfek gewerk het (die omgewing monitor en data via die radio stuur), het 'n te hoë kragverbruik ~ 46mA en die battery was binne 'n paar weke leeg.

Al die weergawes gebruik die volgende battery:

18650 6000mAh beskermde Li-ion herlaaibare battery ingeboude beskermingskaart

OPDATEER hierdie ScamFire -batterye. Alhoewel dit 'n redelik ou instruksie is, was ek steeds verplig om dit reg te stel weens hierdie vals battery. Moet NIE die genoemde battery koop nie; doen u eie navorsing oor ander LION/LIPO -batterye; al die 3,7V -batterye werk saam met hierdie projek.

Uiteindelik het ek tyd gehad om die ScamFire -battery te ontrafel om te sien wat die werklike kapasiteit daarvan is. Daarom sal ons 2 berekeninge langs mekaar doen met die werklike en die 'geadverteerde' vermoëns.

In die eerste plek is dit een ding dat hierdie battery vals is, en niks wat hulle beweer dat dit waar is nie; die nuwe weergawes is nog erger: dit het die vals kopieer en die 2 sent -beskermingskring uitgelaat, sodat niks hulle sal keer om tot by nul te kom nie.

'N Klein artikel oor LION/LIPO-batterye:

TLDR:

Wat dit beteken, is dat die maksimum spanning van die sel 4.2v is en dat die "nominale" (gemiddelde) spanning 3.7V is.

Hier is byvoorbeeld 'n profiel van die spanning van 'n 'klassieke' 3.7V/4.2V battery. Die spanning begin by die maksimum van 4.2 en daal die grootste deel van die batterylewe vinnig tot ongeveer 3.7V. Sodra u 3,4V bereik het, is die battery leeg en by 3,0V skakel die stroombaan af.

My metings met 'n dummy -vrag:

Battery gelaai: 4.1V

Afsnypunt ingestel op: 3.4V

Laaisimulasie: 0.15A (my toestel het 'n bietjie probleem gehad om laer as dit te gaan.)

Gemete kapasiteit: 0.77Ah, gee dit 'n gratis 0.8 Ah, wat 800mAh is in plaas van die geadverteerde 6000mAh!

Aangesien hierdie battery nie eens die beskermingskring gehad het nie, kon ek vrylik laer gaan, maar na 10 minute val dit al 3,4V neer tot 3,0V.

Daarom bied die battery met eenvoudige berekeninge:

Teoreties

Batteryspanning = 3.7V

Krag = 3.7x6000 = 22000 mWh

Werklike

Batteryspanning = 3.7V Krag = 3.7x800 = 2960 mWh

Weergawe: 0.1 ARDUINO NANO BASED

Selfs met die LowPower -biblioteek verbruik 'n Arduino -nano ~ 16 mA (in slaapmodus) -> FAIL.

Teoreties

Pavg = VxIavg = 5Vx16mA = 80 mW

Batterylewe = 22000/80 = 275 uur = ongeveer 11 dae

RealPavg = VxIavg = 5Vx16mA = 80 mW

Batterylewe = 800/80 = 10 uur

Weergawe: 0.2 Atmega 328P Barebone

Die krag wat deur 'n ATmega328 verbruik word, hang baie af van wat u daarmee doen. Net in 'n standaardtoestand kan dit 16mA @ 5V gebruik terwyl dit op 16MHz werk.

As die ATmega328P in die aktiewe modus is, voer dit voortdurend etlike miljoene instruksies per sekonde uit. Verder het die ingeboude randapparatuur analoog na digitaal omskakelaar (ADC), seriële perifere koppelvlak (SPI), timer 0, 1, 2, tweedraad-koppelvlak (I2C), USART, waghond-timer (WDT) en Brown-out-opsporing (BOD) verbruik krag.

Om krag te bespaar, ondersteun die ATmega328P MCU 'n aantal slaapmodusse en kan ongebruikte randapparatuur uitgeskakel word. Die slaapmodusse verskil in watter dele aktief bly, deur die slaapduur en die tyd wat nodig is om wakker te word (wakker word). Die slaapmodus en aktiewe randapparatuur kan beheer word met die AVR-slaap- en kragbiblioteke of, meer bondig, met die uitstekende Low-Power-biblioteek.

Die Low-Power-biblioteek is eenvoudig om te gebruik, maar baie kragtig. Die stelling LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); plaas die MCU in SLEEP_MODE_PWR_DOWN vir 16 ms tot 8 s, afhangende van die eerste argument. Dit skakel die ADC en die BOD uit. Uitslaap beteken dat alle chipfunksies uitgeskakel is tot die volgende onderbreking. Verder word die eksterne ossillator gestop. Slegs vlakonderbrekings op INT1 en INT2, onderbrekings met penwisselings, TWI/I2C -adrespassing, of die WDT, indien geaktiveer, kan die MCU wakker maak. Dus, met die enkele stelling, verminder u die energieverbruik. Vir 'n 3.3 V Pro Mini sonder krag -LED en sonder reguleerder (sien hieronder) wat die verklaring bevat, is die energieverbruik 4,5 μA. Dit is baie naby aan wat genoem word in die ATmega328P-datablad vir uitslaap met WDT van 4,2 μA (datablad gekoppel aan bronne). Daarom is ek redelik vol vertroue dat die PowerDown -funksie alles wat redelik moontlik is, afskakel. Met die stelling LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, sal die WDT gedeaktiveer word en sal u nie wakker word totdat 'n onderbreking ontstaan het nie.

Met die barebone -opstelling kan ons die chip vir 5 minute in die slaapmodus sit, terwyl dit baie min energie verbruik (0,04 mA sonder randapparatuur). Dit is egter slegs die Atmega 328P -chip met die kristal ossillator en niks anders nie; die spanningsversterker wat in hierdie konfigurasie gebruik word om die batteryspanning van 3,7V te verhoog -> 5,0 V verbruik ook 0,01 mA.

Een afvoer van konstante spanning was die bykomende fotoweerstand wat die verbruik in die slaapmodus tot 1 mA verhoog (dit sluit alle komponente in).

Die formule vir die berekening van die presiese verbruik van die toestel in die slaap- en wakkermodus is:

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

Ion = 13mA

Dit kom meestal van die RF433 Mhz -sender:

Sender:

Werkspanning: 3V - 12V vir maks. kragverbruik 12V Werkstroom: maks Minder as 40mA maks, en min 9mA Resonansiemodus: (SAW) Modulasiemodus: ASK Werkfrekwensie: Eve 315MHz Of 433MHz Oordragvermoë: 25mW (315MHz by 12V) Frekwensiefout: +150kHz (maksimum) Snelheid: minder as 10Kbps

Slaap = 1mA

Sou aansienlik minder wees sonder die fotoresistor.

Trunontyd Ton = 250 mS = 0.25s

Slaaptyd 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

Teoreties

Batterylewe = ongeveer 22000 mWh/6 mW = 3666 uur = ongeveer 152 dae

Werklike

Batterylewe = ongeveer 800mWh/6mW = 133 uur = ongeveer 5,5 dae

Alhoewel dit nog steeds 'n beter UltraFire -reeks was wat ek aanvanklik gebruik het, kon u sien dat hierdie projek nie lank sou oorleef sonder die sonpaneel of die lae 1mA -verbruik nie.

Bou gerus die stasie en skryf u bevindinge en berekeninge neer op die kommentaar, en ek sal die artikel opdateer. Ek sal ook die resultate met verskillende MCU's en boost -omsetters waardeer.

Stap 3: Bou 'n suksesvolle weerstasie

Bou 'n suksesvolle weerstasie
Bou 'n suksesvolle weerstasie
Bou 'n suksesvolle weerstasie
Bou 'n suksesvolle weerstasie
Bou 'n suksesvolle weerstasie
Bou 'n suksesvolle weerstasie
Bou 'n suksesvolle weerstasie
Bou 'n suksesvolle weerstasie

Alhoewel dit die eerste suksesvolle weergawe is, bevat dit 'n bietjie mislukking op die foto's, en ek kan dit nie herskep nie, want die stasies is reeds ontplooi. Die twee spanningsversterkers wat op die foto getoon word, kan verkry word op die oomblik van skryf vir aero-modellering en ander toepassings. Toe ek my stasie herontwerp, het ek daaraan gedink om 'n kleiner en meer doeltreffende spanningstapbord te kry, maar kleiner in grootte beteken beslis nie dat dit meer doeltreffend is nie.

Die nuwe klein module op die foto wat nie eers 'n aanwyser het nie, het eintlik 3mA (*FAIL*) op sy eie gedreineer, en ek het dus by my ou bord gebly:

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

Op die oomblik van skryf is hierdie module nog steeds beskikbaar op Ebay vir 99 sent, maar as u besluit om 'n ander booster te gebruik, moet u altyd die bystandverbruik nagaan. Met 'n booster van goeie gehalte behoort dit nie meer as myne (0,01 mA) te wees nie, alhoewel die klein LED aan boord gedesoldeer moes word.

Stap 4: Hardeware lys

Hardeware lys
Hardeware lys
  • 18650 6000mAh beskermde Li-ion herlaaibare battery ingeboude beskermingskaart
  • Atmega 328P16M 5V met selflaaiprogram
  • Adafruit DC Boarduino (verenigbaar met Arduino) (met ATmega328) <dit sal 'n goeie belegging wees as u toekomstige barebone -projekte doen
  • Foto Ligte Sensitiewe Weerstand Fotoresistor Optoresistor 5mm GL5539
  • 1A 1000V-diode 1N4007 IN4007 DO-41 gelykrigterdiodes
  • PFM Control DC-DC USB 0.9V-5V tot 5V dc Boost Step-up Power Supply Module
  • 1.6W 5.5V 266mA Mini sonpaneelmodule stelsel Epoxy sellaaier DIY
  • TP405 5V Mini USB 1A Lithium Battery Charger Board Charger Module
  • 433Mhz RF -sender en ontvanger -skakelstel vir Arduino/ARM/MC afstandsbediening <Kit, bevat beide die sender en die reveiver
  • IP65 skakelaarbeskermer aansluitkas buite waterdigte omhulsel 150x110x70mm
  • Nuwe module vir temperatuur en relatiewe humiditeit van die DHT22 vir Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1xMini -skakelaar, 1x1N4007diode
  • Adafruit 16 MHz keramiekresonator / ossillator [ADA1873]
  • Arduino UNO/Mega ens vir ontvangerstasie + Framboos PI 1/2/3
  • Deursigtige plastiekboks van akriel (opsioneel)

U kan dit alles op Ebay vind, ek wil geen verkopers bevorder deur na hul bladsye te skakel nie, en die skakels sal in elk geval in die toekoms doodgaan.

Notas vir die hardeware lys:

As u die Atmega op die een of ander manier met die programmering bak, koop u meer daarvan, dieselfde geld vir die spanningsversterker en sonlaaibestuurder.

Die sonlaaier bevat 2 klein kleur LED's wat slegs aangeskakel word in die geval van sonoplaai en dit dui aan (rooi-> laai, blou-> volgelaaide toestande). Hierdie kan ook ongesoldeer word. Dit gee die battery 'n bietjie meer sap tydens die laai.

Soos u sien, is daar geen batteryhouers op my lys nie. Hoekom? Omdat hulle onbetroubaar is. Ek het talle kere gehad toe die battery uit die houer beweeg het en die verbinding verloor het. Veral as u opstelling op 'n hoë skottel, soos myne, gemonteer is, oop vir moeilike weerstoestande. Ek het selfs die battery met 2 ritsen in die houer gerits en dit het steeds daarin geslaag om uit te beweeg. Moenie dit doen nie, verwyder net die eksterne laag van die battery en soldeer die drade direk in die onderkant van die battery, met die beskerming teen die oorlading (moenie die beskerming omseil nie). 'N Batteryhouer kan slegs gebruik word om die battery in die toestel te hou.

TP405 5V Mini USB 1A litiumbattery -laaibord: ongelukkig bevat hierdie bord geen beskerming teen omgekeerde stroom na die sonpaneel nie, hiervoor benodig u nog 1 diode tussen die een been van die sonpaneel en die laaikring om die stroom te probeer stop om snags terug in die sonpaneel te vloei.

Stap 5: Montering

Vergadering
Vergadering
Vergadering
Vergadering
Vergadering
Vergadering

Hierdie bord bevat relatief min komponente en die merkers op die bord is redelik eenvoudig.

Maak seker dat u NIE die Atmega328P NIE op die verkeerde manier plaas nie (wat kan verhit en die skyfie kan bak, dit kan ook die spanningsversterker vernietig).

In hierdie opset wys die chip na onder (klein U -gatmerk PIN1). Al die ander komponente moet duidelik wees.

Gebruik 'n afskermkabel (bv.: Audio -kabel van CDrom sal goed wees) vir die LDR. In sommige gevalle (gedurende baie weke van die toets) het dit geblyk dat dit die radiosending oordra. Dit was een van die foute wat moeilik is om op te los, dus as u nie probleme wil hê nie, gebruik dan slegs 'n afskermde kabel, einde van die verhaal.

LED: Die LED aan die onderkant van die boks is oorspronklik bygevoeg om te flikker as daar 'n uitgaande radio -oordrag is, maar ek het dit later as 'n vermorsing van krag beskou en dit knipper slegs 3 keer tydens die opstartproses.

TP: is 'n toetspunt om die stroom vir die algehele stroombaan te meet.

DHT22: Moenie die goedkoop DHT11 koop nie, spandeer 50 sent meer om die wit DHT22 te kry wat ook negatiewe temperature kan meet.

Stap 6: Gevalontwerp

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

Alhoewel dit 'n bietjie te veel is, is 'n 3D -gedrukte kubus (weather_cube) gemaak om die DHT22 -temperatuursensor op sy plek te hou. Die kubus is aan die onderkant van die IP -boks vasgeplak, met slegs 1 gaatjie sodat die lug die sensor kan bereik. Ek het 'n net by die gat bygevoeg teen bye, wespe en ander klein vlieë.

'N Eksterne boks kan opsioneel gebruik word om die stasie meer waterdig te maak as u dit op 'n skottelpen aan die buitekant monteer.

Idee vir 1 nuttige kenmerk: die toevoeging van 'n groot metaaldakplaat van 1-2 cm bo-op die boks wat gedurende die somer skaduwee van die son bied, hoewel dit ook ons bruikbare sonlig van die paneel kan wegneem. U kan 'n ontwerp kry wat die paneel en die boks skei (die paneel op die son laat, die boks in die skaduwee).

Op die foto's: een van die stasies wat na 1 jaar uit die werksomgewing verwyder is, is die batteryspanning op 'n skitterende 3,9V steeds, daar is geen waterskade aan die deel van die boks nie, alhoewel die net wat ek aan die onderkant van die kubus vasgeplak het, uitmekaar was. Die rede waarom die stasie skoongemaak moes word, is die aansluitingsfout op die LDR -aansluiting, alhoewel die aansluitkabel nog steeds op sy plek was, is die verbinding verbreek, daarom het die pen soms gedryf, wat 'n slegte analoge LDR -uitlees bied. Voorstel: as u standaard rekenaarkabels gebruik, moet u dit almal gom nadat die stasie perfek gewerk het om dit te vermy.

Stap 7: sagteware

Sagteware
Sagteware

Die sagtewarekode benodig 3 eksterne biblioteke (LowPower, DHT, VirtualWire). Ek het die afgelope tyd probleme ondervind om sommige van hulle maklik aanlyn te vind, sodat ek dit in 'n aparte zip -lêer kon heg. Ongeag watter bedryfstelsel u Linux/Windows gebruik, soek net die biblioteekmap van u Arduino IDE en haal dit daar uit.

Net 'n opmerking, ongeag dat ek al afraai om die DHT11 te koop, as u die verkeerde tipe DHT -sensor gebruik, hang die program aan die begin vir ewig by die inisialiseringsafdeling (u sal nie eers die opstart -LED drie keer sien knip nie).

Die hoofluskode is baie eenvoudig; dit lees eers die omgewingswaardes (temperatuur, hitte -indeks, humiditeit, sonkrag), stuur dit deur die radio, dan gebruik dit die lae -kragbiblioteek om die Arduino vir 5 minute aan die slaap te sit.

Ek het gevind dat die verlaging van die baudrate die stabiliteit van die radiosendings verhoog. Die stasie stuur 'n baie klein hoeveelheid data, 300 bps is meer as genoeg. Vergeet ook nie dat die sender slegs vanaf ongeveer 4.8V, in die toekomstige 3.3V -weergawe kan dit lei tot nog erger transmissiekwaliteit (stuur data deur mure en ander hindernisse). Ek het 'n probleem ondervind met die gebruik van 'n Arduino Mega gekoppel aan 'n Framboos PI 2 wat die Mega van die PI aandryf, dat ek geen oordrag ontvang het nie. Die oplossing was om die Mega van 'n aparte 12V -voeding te voorsien.

Stap 8: Weergawe 2 (gebaseer op ESP32)

Weergawe 2 (gebaseer op ESP32)
Weergawe 2 (gebaseer op ESP32)
Weergawe 2 (gebaseer op ESP32)
Weergawe 2 (gebaseer op ESP32)
Weergawe 2 (gebaseer op ESP32)
Weergawe 2 (gebaseer op ESP32)

Alles wat kan breek, sal breek om die goeie ou Murphy aan te haal, en uiteindelik het die stasies na jare op geheimsinnige maniere misluk. Die een het begin om sonbranddata te stuur wat tot tienduisende gestyg het, wat onmoontlik is as gevolg van: Die Arduino-bord bevat 'n 6-kanaal (8 kanale op die Mini en Nano, 16 op die Mega), 10-bis analoog na digitaal omskakelaar. Dit beteken dat dit ingangsspannings tussen 0 en 5 volt in die heelgetalwaardes tussen 0 en 1023 sal karteer. Na die vervanging van die radio, LDR en herprogrammering van die Atmega 328P het ek dus opgegee en besluit dat dit tyd is vir innovasie. Kom ons gaan ESP32.

Die bord wat ek gebruik het was 'n: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

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

Mikrokontroleerder ESP-32

Bedryfspanning 3.3V Digitale I/O -penne 19 Analoog ingangspelde 6 Kloksnelheid (maks.) 240Mhz Flits 4M grepe Lengte 5mm Breedte 2.54mm Gewig 4g

Wat anders as op die foto nie die LOLIN -logo het nie (vervalsing uit China). My eerste aangename verrassing was dat die pinout wat op die bord gedruk is, pas by die Arduino pinout! Na die hantering van soveel noname borde waar ek die hele dag lank moedeloos moes soek, moeg gemaak, foute uiteindelik 'n bord waar die pinout reguit vorentoe is WoW!

Hier is egter die donker kant van die verhaal:

Aanvanklik het ek die LDR gekoppel aan A15, wat pen 12 is, omdat dit makliker was om die penne saam te smelt. Dan het ek 4095 afleesings (dit is die maksimum wat u kan kry met AnlogRead op die ESP32), wat my gek gemaak het, want die hele rede waarom ek die stasie herbou het, was die gebreekte LDR -uitlees van die ou (die DHT werk nog steeds goed)). Dit blyk dus dat:

Die esp 32 integreer twee 12-bis ACD-registers. ADC1 met 8 kanale verbonde aan GPIO's 32-39 en ADC2 met 10 kanale in 'n ander pen. Die ding is dat die ESP32 die ADC2 gebruik om wifi -funksies te bestuur, dus as u Wifi gebruik, kan u nie die register gebruik nie. Die ADC -bestuurder -API ondersteun ADC1 (8 kanale, gekoppel aan GPIO's 32 - 39) en ADC2 (10 kanale, gekoppel aan GPIO's 0, 2, 4, 12 - 15 en 25 - 27). Die gebruik van ADC2 het egter 'n paar beperkings vir die toepassing:

ADC2 word deur die Wi-Fi-bestuurder gebruik. Daarom kan die toepassing slegs ADC2 gebruik as die Wi-Fi-bestuurder nie begin het nie. Sommige van die ADC2 -penne word as bandpenne (GPIO 0, 2, 15) gebruik, en kan dus nie vrylik gebruik word nie. Dit is die geval in die volgende amptelike ontwikkelingsstelle:

Die verbinding van die LDR van pen 12 met A0, wat die VP is, het alles opgelos, maar ek begryp dit nie, waarom noem hulle selfs ADC2 -penne as beskikbaar vir makers? Hoeveel ander stokperdjies het tonne tyd gemors totdat hulle dit agtergekom het? Merk ten minste die onbruikbare penne met rooi of iets, of noem dit glad nie in die handleiding nie, sodat ander vervaardigers dit slegs kan uitvind as hulle dit regtig nodig het. Die hele doel van die ESP32 is om dit met WIFI te gebruik; almal gebruik dit met WIFI.

'N Goeie begin met die opstel van die Arduino IDE vir hierdie bord:

Alhoewel ek dit hier in die kode geplaas het, gaan dit weer:

Hierdie kode is moontlik nie saamgestel vir ander ESP32 -modelle as die Weemos LOLIN 32!

Bou instellings: -Gebruik oplaai/reeks: 115200 -Gebruik CPU/ram: 240Mhz (Wifi | BT) -Gebruik flitsfrekwensie: 80 Mhz

Daar is tonne ESP32 -gebaseerde weerstasies op die internet; dit is baie meer algemeen as my weergawe 1 met die barebone -chip, omdat dit makliker is om op te stel; u hoef nie 'n programmeerder te hê nie, maar koppel die toestel aan op usb en programmeer dit en hul Diepe slaapmodus is uitstekend vir 'n lang tyd wat vanaf die battery loop. Dit was dadelik die heel eerste ding wat ek getoets het nog voordat ek in die uitbreekpunte gesoldeer het, want soos ek op verskeie plekke in hierdie projek opgemerk het, is die belangrikste verbruik die kragverbruik en met die huidige (valse) battery en klein sonpaneel die bystand krag kan nie regtig meer as 1-2 mA wees nie, anders kan die projek homself nie op lang termyn onderhou nie.

Dit was weer 'n aangename verrassing dat die diep slaapmodus werk soos geadverteer. Tydens die diep slaap was die stroom so laag dat my goedkoop multimeter dit nie eers kon meet nie (werk vir my).

Tydens die stuur van data was die stroom ongeveer 80mA (wat ongeveer 5 keer meer is as toe die Atmega 328P besig was om wakker te word en te stuur), maar moenie vergeet dat daar met die V1 'n gemiddelde 1mA kragafvoer op die LDR in die slaapmodus was nie (wat ook afhang van die ligvlakke en gegaan het van 0.5mA - 1mA) wat nou weg is.

Noudat die UltraFire -battery ontketen word as u dieselfde battery gebruik, kan u verwag:

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

Teoreties

Batterylewe = ongeveer 22000 mWh/2,5 mW = 8800 uur = ongeveer 366 dae

Werklike

Batterylewe = ongeveer 800mWh/2,5mW = 320 uur = ongeveer 13 dae

Ek het nie 'n ruimte gehad om presies die draai betyds te meet nie, maar met my aanpassings begin dit ongeveer 2 sekondes.

Ek wou nie die middag spandeer om alles op maat te kodeer nie, so ek het na ander weerstasies op Instructables gesoek op grond van ESP32 om te sien wat hulle doen vir die stoor van data. Het ongelukkig opgemerk dat hulle onbuigsame en beperkte webwerwe soos weathercloud gebruik. Aangesien ek nie 'n fan van die 'wolk' is nie en hul kode lankal gebreek het omdat die webwerf sedertdien die API verander het, het ek my tien minute geneem om 'n pasgemaakte oplossing te maak, want dit is nie so moeilik as wat u dink nie. Laat ons begin!

In die eerste plek is daar geen printplaat -foto afsonderlik vir hierdie projek nie, omdat dit presies dieselfde komponente gebruik (jammer vir die gesoldeerde prentjie in die lelike broodbord) as die V1, met die verskil dat alles 3.3V loop. Die DHT het met 'n pullup aan VCC gekoppel, die LDR het met 'n 10k afgetrek. Die probleem wat 'n mens met die 18650 batterye soos my Chinese fake (6500 mAh ultra sonbrand lol: D) kan sien, is dat hulle die ontladingskurwe begin vanaf ongeveer 4,1 V nuwe ouderdom en gaan totdat hul afsnybane inskakel om selskade te stop (diegene wat gelukkig is om dit te hê). Dit is nêrens goed vir ons as 3.3V -inset nie. Alhoewel hierdie LOLIN -bord 'n litiumbattery -aansluiting en laaikring in hierdie projek het, wou ek die meeste herstel van die ou stasie, so met die ou 18650 kan u hierdie ingeboude laaier NIE gebruik nie. Die oplossing was eenvoudig: ek het 'n mikro -USB -kabel wat in die 5V gesoldeer is, afgesny uit die ou spanningsversterker en die voila -probleem is opgelos, aangesien die bord op die microUSB 'n reguleerder het.

Dus die verskil tussen die ou en nuwe weergawe wat in die ou battery 3,7V bied -> verhoog tot 5V -> ardu werk op 5V -> alle komponente werk op 5V.

In die nuwe een: die battery bied 3,7V -> verhoog tot 5V -> gereguleer via die ingebouwde reg op ESP32 -> alle komponente werk op 3,3V.

Sagtewaregewys sal ons ook nog 'n DHT -biblioteek nodig hê; die Arduino's DHT is nie versoenbaar met die ESP's nie. Wat ons nodig het, word DHT ESP genoem.

Ek het my kode begin baseer op die DHT -voorbeeld wat hierdie kode verskaf het. Die werking van die kode is:

1, kry die omgewingsdata van die DHT + sondata van die fotosel

2, maak verbinding met wifi met 'n statiese IP

3, plaas die data in 'n php -script

4, gaan slaap vir 10 minute

Soos u sal sien, het ek die kode vir doeltreffendheid aangepas om die wakker tyd absoluut te verminder, aangesien dit 5 keer meer krag gebruik as wat die ou projek gedoen het toe dit aangeskakel is. Hoe het ek dit gedoen? In die eerste plek, as daar 'n soort fout is, sal die getTemperature () -funksie terugkeer met false (wat beteken dat 10 minute weer slaap). Dit kan wees asof die DHT -sensor nie begin kan word nie of dat die wifi -verbinding nie beskikbaar is nie. Soos u agterkom dat die gewone () lus om die wifi -assosiasie vir ewig te probeer probeer, ook verwyder is, maar daar moet 'n vertraging van 1 sekonde daar gelaat word, anders sal dit nie altyd aansluit nie, en dit hang ook af van die tipe AP, laai, ens. sal gebeur, met 0,5 sekondes het ek 'n inkonsekwente gedrag (soms kon ek nie koppel nie). As iemand 'n beter manier weet om dit te doen, laat dit asseblief in die kommentaar. Eers as die DHT -data gelees EN die wifi -verbinding op is, sal dit probeer om die data na die script op die webbediener te plaas. Alle soorte tydverspillende funksies, soos Serial.println (), word ook in die normale modus afgeskakel. As bediener gebruik ek ook IP om onnodige DNS -opsporing te vermy; in my kode is beide die standaard gateway en die DNS -bediener ingestel op 0.0.0.0.

Ek verstaan nie waarom dit so moeilik is om u eie API te skep as alles wat nodig is:

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

int httpResponseCode = http. POST (reaksie);

U sit hierdie klein php -kode by enige framboospi en u kan dadelik stelsel () take doen op grond van die telemetrie, soos om waaiers aan te skakel of die ligte aan te skakel as dit donker genoeg word.

Enkele aantekeninge oor die kode:

WiFi.config (staticIP, gateway, subnet, dns); // MOET dit eers nadat Wifi begin is hoe dom …

WiFi.mode (WIFI_STA); // MOET dit andersins ook 'n ongewenste AP skep

Ja, nou weet jy. Die volgorde van die IP -konfigurasies kan ook deur platforms verander; ek het eers ander voorbeelde probeer waar die gateway- en subnetwaardes verander is. Waarom 'n statiese IP instel? Dit is duidelik dat as u 'n spesiale boks op u netwerk het, soos 'n Linux -bediener wat isc dhcpd gebruik, u nie honderd miljoen loginskrywings wil hê van wanneer die ESP wakker word en die IP van die DHCP kry nie. Routers teken gewoonlik nie assosiasies aan nie, so dit word nie gesien nie. Dit is die prys om krag te bespaar.

As gevolg van die battery van 'n slegte kwaliteit, kon V2 nooit selfstandig bly nie, en ek het dit eenvoudig op 'n adapter geplaas, dus as u nie die V1 of V2 wil bou nie, moet u nie self die batterye ondersoek nie (enige 18650 meer as 2000 mAh geadverteerde kapasiteit op eBay is 'n bedrogspul met 'n hoë waarskynlikheid).

Aanbeveel: