Sisukord:

NaTaLia ilmajaam: Arduino päikeseenergial töötav ilmajaam on õigesti tehtud: 8 sammu (piltidega)
NaTaLia ilmajaam: Arduino päikeseenergial töötav ilmajaam on õigesti tehtud: 8 sammu (piltidega)

Video: NaTaLia ilmajaam: Arduino päikeseenergial töötav ilmajaam on õigesti tehtud: 8 sammu (piltidega)

Video: NaTaLia ilmajaam: Arduino päikeseenergial töötav ilmajaam on õigesti tehtud: 8 sammu (piltidega)
Video: Nastya and all the animals in her house 2024, Juuni
Anonim
NaTaLia ilmajaam: Arduino päikeseenergial töötav ilmajaam on tehtud õigesti
NaTaLia ilmajaam: Arduino päikeseenergial töötav ilmajaam on tehtud õigesti
NaTaLia ilmajaam: Arduino päikeseenergial töötav ilmajaam on tehtud õigesti
NaTaLia ilmajaam: Arduino päikeseenergial töötav ilmajaam on tehtud õigesti

Pärast 1 -aastast edukat tegutsemist kahes erinevas kohas jagan oma päikeseenergiaga töötavate ilmajaamade projektiplaane ja selgitan, kuidas sellest kujunes süsteem, mis suudab päikeseenergiast pika aja jooksul tõesti ellu jääda. Kui järgite minu juhiseid ja kasutate täpselt samu materjale, mis on loetletud, saate ehitada päikeseenergial töötava ilmajaama, mis töötab aastaid. Tegelikult on ainus tegur, mis piirab selle tööaega, see aku kasutusiga, mida kasutate.

1. samm: ilmajaama töö

1, saatja: väljas paigaldatav päikesepaneeliga kast, mis saadab ilmatelemetriat (temperatuur, niiskus, soojusindeks, päikesetugevus) perioodiliselt siseruumide vastuvõtjaseadmesse.

2, vastuvõtja: siseseade, mis on valmistatud Raspberry PI 2 + Arduino Megast ja millel on andmete vastuvõtmiseks ühendatud 433 MHz RF -vastuvõtja. Minu seadistuses ei ole sellel seadmel kohalikke LCD -ekraanifunktsioone. See jookseb hoolimatult. Põhiprogramm hoolitseb Arduino sissetulevate andmete vastuvõtmise eest jada kaudu, seejärel logib andmed tekstifaili ja teeb viimased vastuvõetud andmed telneti kaudu teistele seadmetele kättesaadavaks.

Jaam juhib minu kodus tulesid fototakisti lugemise järgi (mis määrab, kas väljas on päev või öö). Vastuvõtja on minu puhul peata, kuid LCD -ekraani lisamiseks saate projekti hõlpsalt muuta. Üks jaama ilmaandmeid kasutavatest, parsivatest ja kuvavatest seadmetest on minu teine projekt: Ironforge NetBSD röster.

Samm: esimesed versioonid

Esimesed versioonid
Esimesed versioonid
Esimesed versioonid
Esimesed versioonid
Esimesed versioonid
Esimesed versioonid
Esimesed versioonid
Esimesed versioonid

Võrgus on palju päikeseenergia projekte, kuid paljud neist panevad toime tavalise vea, mille kohaselt võtab süsteem akult aja jooksul rohkem energiat, mida päikesepaneel saaks täiendada, eriti pilves ja pimedal talvekuul.

Kui projekteerite päikeseenergial töötavat süsteemi, on oluline ainult toite tarbimine kõigil komponentidel: mcu, raadiosaatja, pingeregulaator jne.

Suure arvuti, näiteks vaarika pi või sellise näljaste WiFi -seadmete, nagu ESP, kasutamine lihtsalt paari biti ilmaandmete kogumiseks ja transportimiseks oleks üleliigne, kuid nagu ma seda selles õpetuses näitan, on isegi väike Arduino plaat.

Parim on alati voolu mõõtmine ehitamisprotsessi ajal meetriga või skaalaga (kasulik, kui proovite mõõta väikeseid naelu kasutamise ajal väga lühikese aja jooksul (millisekundites)).

Esimesel pildil näete minu esimest (Arduino Nano Based) jaama ja teist Arduino Barebone Atmega 328P plaati.

Esimene versioon, kuigi see töötas ideaalselt (keskkonna jälgimine ja andmete saatmine raadio kaudu), tarbis liiga palju energiat ~ 46 mA ja tühjendas aku mõne nädalaga.

Kõik versioonid kasutasid järgmist akut:

18650 6000mAh kaitstud liitiumioonakuga sisseehitatud kaitseplaat

UUENDA neid ScamFire akusid. Kuigi see on üsna vana Instructable, tundsin selle võltsitud aku tõttu siiski sunnitud seda parandama. ÄRGE ostke mainitud akut, uurige ise teiste LION/LIPO akude kohta, kõik 3,7 V akud töötavad selle projektiga.

Lõpuks oli mul aega ScamFire'i aku lahti teha, et näha, milline on selle tegelik maht. Seetõttu teeme reaalse ja "reklaamitud" võimsusega kõrvuti 2 arvutust.

Esiteks on see üks asi, et see aku on võlts ja miski, mida nad selle kohta väidavad, pole tõsi, uued versioonid on veelgi hullemad, kuna nad kopeerisid võltsingu, jättes välja 2 -sendise kaitselülituse, nii et miski ei takista nende tühjenemist nulli.

Väike artikkel LION/LIPO akude kohta:

TLDR:

See tähendab, et elemendi maksimaalne pinge on 4,2 V ja "nominaalne" (keskmine) pinge on 3,7 V.

Näiteks siin on „klassikalise” 3,7 V/4,2 V aku pinge profiil. Pinge algab maksimaalselt 4,2 ja langeb kiiresti enamiku aku kasutusaega umbes 3,7 V -ni. Kui jõuate 3,4 V -ni, on aku tühi ja 3,0 V juures katkestab vooluahel aku.

Minu mõõtmised näivkoormuse abil:

Aku laetud: 4.1V

Katkestus seati: 3.4V

Koormuse simulatsioon: 0,15A (minu seadmel oli sellest madalamal minnes natuke probleeme.)

Mõõdetud võimsus: 0,77 Ah, andke sellele tasuta 0,8 Ah, mis on reklaamitud 6000 mAh asemel 800 mAh!

Kuna sellel akul polnud isegi kaitselülitust, võisin vabalt madalamale minna, kuid 10 minuti pärast 3,4 V juures kukub see juba alla 3,0 V.

Seetõttu pakub aku lihtsate arvutuste abil järgmist:

Teoreetiline

Aku pinge = 3,7V

Võimsus = 3,7x6000 = 22000 mWh

Päris

Aku pinge = 3,7 V Võimsus = 3,7x800 = 2960 mWh

Versioon: 0,1 ARDUINO NANO PÕHINE

Isegi LowPoweri raamatukogu puhul tarbib Arduino nano ~ 16 mA (unerežiimis) -> FAIL.

Teoreetiline

Pavg = VxIavg = 5Vx16mA = 80 mW

Aku kestvus = 22000/80 = 275 tundi = ligikaudu 11 päeva

RealPavg = VxIavg = 5Vx16mA = 80 mW

Aku kestvus = 800/80 = 10 tundi

Versioon: 0,2 Atmega 328P Barebone

ATmega328 tarbitav võimsus sõltub palju sellest, mida te sellega teete. Lihtsalt vaikimisi istudes saab see 16MHz sagedusel töötades kasutada 16mA @ 5V.

Kui ATmega328P on aktiivrežiimis, täidab see pidevalt mitu miljonit juhist sekundis. Lisaks on pardal olevad välisseadmed analoog-digitaalmuunduriks (ADC), jadaperifeerne liides (SPI), taimer 0, 1, 2, kahe juhtmega liides (I2C), USART, valvekoer (WDT) ja väljalülitusdiagnostika (BOD) tarbivad energiat.

Energia säästmiseks toetab ATmega328P MCU mitmeid unerežiime ja kasutamata välisseadmed saab välja lülitada. Unerežiimid erinevad selle poolest, millised osad jäävad aktiivseks, une kestuse ja ärkamiseks vajaliku aja järgi (ärkamisperiood). Unerežiimi ja aktiivseid välisseadmeid saab juhtida AVR-i puhke- ja toiteekidega või lühidalt öeldes suurepärase väikese energiatarbega teegiga.

Madala energiatarbega raamatukogu on lihtne kasutada, kuid väga võimas. Väide LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); paneb MCU olekusse SLEEP_MODE_PWR_DOWN 16 ms kuni 8 s, olenevalt esimesest argumendist. See keelab ADC ja BOD. Väljalülitamine tähendab, et kõik kiibi funktsioonid on järgmise katkestuseni keelatud. Lisaks peatatakse väline ostsillaator. Ainult taseme katkestused INT1 ja INT2, pin -vahetuse katkestused, TWI/I2C aadressivaste või WDT, kui see on lubatud, võivad MCU üles äratada. Nii et ühe avaldusega minimeerite energiatarbimist. Avaldust kasutava 3,3 V Pro Mini ilma toite LED -i ja regulaatorita (vt allpool) on energiatarve 4,5 μA. See on väga lähedal sellele, mida on mainitud ATmega328P andmelehel väljalülitatud une jaoks, kui WDT on lubatud 4,2 μA (andmeleht on allikatega ühendatud). Seetõttu olen üsna kindel, et powerDowni funktsioon lülitab välja kõik mõistlikult võimalikud. Väitega LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF); WDT keelatakse ja te ei ärka enne, kui katkestus on käivitatud.

Seega saame palja luu seadistusega panna kiibi 5 minutiks unerežiimi, samal ajal kui see tarbib väga vähe energiat (0,04 mA ilma välisseadmeteta). Kuid see on ainult kristallostsillaatoriga Atmega 328P kiip ja mitte midagi muud, selles konfiguratsioonis kasutatav pingevõimendi, mis suurendab aku pinget 3,7 V -> 5,0 V, tarbib ka 0,01 mA.

Üks konstantse pinge äravool oli lisatud fototakisti, mis tõstis unerežiimis tarbimise kokku 1 mA -ni (see sisaldab kõiki komponente).

Seadme täpse tarbimise arvutamise valem nii une- kui ka ärkamisrežiimis on järgmine:

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

Ioon = 13 mA

See pärineb enamasti RF433 Mhz saatjalt:

Saatja:

Tööpinge: 3V - 12V max voolutarve 12V Töövool: max Vähem kui 40mA max ja min 9mAR Resonantsrežiim: (SAW) Modulatsioonirežiim: ASK Töösagedus: Eve 315MHz või 433MHz Ülekandevõimsus: 25mW (315MHz 12V juures) Sagedusviga: +150kHz (max) Kiirus: alla 10Kbps

Magas = 1mA

Ilma fototakistita oleks seda oluliselt vähem.

Trunoni aeg Ton = 250 mS = 0,25 s

Uneaeg Tsleep = 5 min = 300 s

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

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

Iavg = 1,26 mA

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

Teoreetiline

Aku eluiga = 22000mWh/6mW = 3666 tundi = ligikaudu 152 päeva

Päris

Aku eluiga = 800mWh/6mW = 133 tundi = ligikaudu 5,5 päeva

Kuigi need olid ikkagi paremad UltraFire seeriad, mida ma algselt kasutasin, nägite, et ilma päikesepaneelita või väikese 1mA tarbimiseta see projekt kaua vastu ei peaks.

Ehita julgelt jaam ja kirjuta kommentaaridesse oma leiud ja arvutused ning ma uuendan artiklit. Samuti hindaksin tulemusi erinevate MCU -de ja võimendusmuunduritega.

3. samm: eduka ilmajaama ehitamine

Eduka ilmajaama ehitamine
Eduka ilmajaama ehitamine
Eduka ilmajaama ehitamine
Eduka ilmajaama ehitamine
Eduka ilmajaama ehitamine
Eduka ilmajaama ehitamine
Eduka ilmajaama ehitamine
Eduka ilmajaama ehitamine

Kuigi see on esimene edukas versioon, sisaldab see piltidel pisut ebaõnnestumist ja ma ei saa neid uuesti teha, kuna jaamad on juba kasutusele võetud. Pildil näidatud kaks pingevõimendit on lennuki modelleerimise ja muude rakenduste jaoks kirjutamise ajal saadaval. Kui ma oma jaama ümber kujundasin, mõtlesin väiksema ja tõhusama pingelaua tahvli hankimisele, kuid väiksem suurus ei tähenda kindlasti, et see oleks tõhusam.

Pildil olev uus väike moodul, millel pole isegi indikaatorit, tühjendas tegelikult 3mA (*FAIL*), nii et jäin oma vana plaadi juurde:

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

Selle kirjutamise ajal on see moodul Ebayst veel saadaval 99 sendi eest, kuid kui otsustate kasutada mõnda muud võimendit, kontrollige alati ooterežiimi energiatarbimist. Kvaliteetse võimendiga ei tohiks see olla rohkem kui minu oma (0,01 mA), kuigi pardal olnud väike LED tuli joodet eemaldada.

Samm: riistvara loend

Riistvara loend
Riistvara loend
  • 18650 6000mAh kaitstud liitiumioonakuga sisseehitatud kaitseplaat
  • Atmega 328P16M 5V koos alglaaduriga
  • Adafruit DC Boarduino (Arduinoga ühilduv) komplekt (koos ATmega328) <see on hea investeering, kui teete tulevasi paljaste projekte
  • Foto valgustundlik takisti Fotoresistor Optoresistor 5mm GL5539
  • 1A 1000V diood 1N4007 IN4007 DO-41 alaldi dioodid
  • PFM juhtimine DC-DC USB 0.9V-5V to 5V dc Boost Step-up Power Supply Module
  • 1.6W 5.5V 266mA mini päikesepaneelide moodulisüsteemi epoksüelementide laadija DIY
  • TP405 5V mini USB 1A liitiumaku laadimisplaadi laadija moodul
  • 433 MHz RF -saatja ja vastuvõtja linkide komplekt Arduino/ARM/MC kaugjuhtimispuldi jaoks <Komplekt, sisaldab nii saatjat kui ka vastuvõtjat
  • IP65 lüliti kaitseklemmikarp Välistingimustes veekindel korpus 150x110x70mm
  • Uus DHT22 temperatuuri ja suhtelise niiskuse anduri moodul Arduino jaoks
  • 1x220 oomi, 2x10KOhm, 1xLED, 1x minilüliti, 1x1N4007diood
  • Adafruit 16 MHz keraamiline resonaator / ostsillaator [ADA1873]
  • Arduino UNO/Mega jne vastuvõtjaama jaoks + Vaarika PI 1/2/3
  • Läbipaistev akrüülist plastkarp (valikuline)

Kõik need leiate Ebayst, ma ei taha nende lehtedele linkides ühtegi müüjat reklaamida ja lingid muutuvad tulevikus niikuinii surnuks.

Märkused riistvara loendi kohta:

Igaks juhuks, kui tellite Atmega kuidagi programmeerimisega, ostke neid rohkem, sama kehtib ka pingevõimendi ja päikeseenergia laadimise kontrolleri kohta.

Päikeseenergia laadija sisaldab 2 väikest värvilist LED-i, mis lülituvad sisse ainult päikeseenergia laadimise korral ja näitavad (punane-> laadimine, sinine-> täielikult laetud). Neid saab ka jootmata jätta. Pigem annab see laadimise ajal akule veidi rohkem mahla.

Nagu näete, pole minu nimekirjas akuhoidjaid. Miks? Sest nad on ebausaldusväärsed. Mul oli lugematuid juhtumeid, kui aku hoidikust välja kolis ja ühendus katkes. Eriti kui teie seade on paigaldatud kõrgele nõudepesale nagu mina, mis on avatud karmide ilmastikutingimuste korral. Tõmbasin aku isegi 2 tõmblukuga hoidikusse ja see suutis ikkagi välja kolida. Ärge tehke seda, vaid eemaldage akult väline kate ja jootke juhtmed otse aku põhja, mis sisaldab ülelaadimise kaitselülitust (ärge minge kaitsest mööda). Akuhoidikut saab kasutada ainult aku hoidmiseks seadmes.

TP405 5V Mini USB 1A liitiumaku laadimisplaat: kahjuks ei sisalda see plaat päikesepaneelile tagasivoolu kaitset, selleks peate voolu katkestamiseks veel 1 dioodi asetama päikesepaneeli ühe jala ja laadimisahela vahele öösel tagasi päikesepaneelisse voolama.

Samm: kokkupanek

Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek
Kokkupanek

See plaat sisaldab suhteliselt vähe komponente ja tahvlil olevad markerid on üsna lihtsad.

Veenduge, et te EI sisestaks Atmega328P valel viisil (see võib kiipi kuumutada ja telliskivideks muuta, võib ka pingevõimendi hävitada).

Selles seadistuses on kiip suunatud allapoole (väike U -ava märgistus PIN1). Kõik muud komponendid peaksid olema ilmsed.

LDR -i jaoks kasutage varjestatud kaablit (nt: CDromi helikaabel sobib hästi). Mõnel juhul (mitme nädala jooksul) selgus, et see häirib raadiosignaali edastamist. See oli üks neist vigadest, mille tõrkeotsing oli keeruline, nii et kui te ei soovi probleeme, kasutage lihtsalt varjestatud kaablit.

LED: karbi põhjas olev LED lisati algselt vilkuma, kui toimub raadioside, kuid hiljem olen seda pidanud energia raiskamiseks ja see vilgub käivitamisel ainult 3 korda.

TP: on katsepunkt vooluahela voolu mõõtmiseks.

DHT22: Ärge ostke odavat DHT11, kulutage 50 senti rohkem, et saada valge DHT22, mis võib mõõta ka negatiivseid temperatuure.

6. samm: korpuse kujundamine

Korpuse disain
Korpuse disain
Korpuse disain
Korpuse disain
Korpuse disain
Korpuse disain

Kuigi see on natuke üleliigne, tehti DHT22 temperatuurianduri paigal hoidmiseks 3D -trükitud kuup (weather_cube). Kuubik on liimitud IP -kasti põhja, millel on ainult 1 auk, et õhk saaks andurini jõuda. Olen auku võrku lisanud mesilaste, herilaste ja muude väikeste kärbeste vastu.

Jaama saab veekindlamaks muuta ka valikuliselt, kui paigaldate selle lahtisele nõudepangale.

Idee ühele kasulikule funktsioonile: suure metallist katusepleki lisamine 1-2 cm pikkusele kasti ülaosale, pakkudes suvel päikese eest varju, kuigi see võib ka paneelilt ära võtta meie kasuliku päikesevalguse. Võite välja mõelda kujunduse, mis eraldab paneeli ja kasti (jättes paneeli päikese kätte, kasti varju).

Piltidel: üks jaamad eemaldati töökeskkonnast 1 aasta pärast, aku pinge on endiselt uimastatav 3,9 V, veekahjustusi ei ole karbi üheski osas, kuigi kuubiku põhjas liimitud võrk oli rebenenud. Põhjus, miks jaama oli vaja hooldada, on LDR -pistiku ühendusviga, kuigi hüppajakaabel tundus olevat endiselt paigas, oli ühendus katki, mistõttu tihvt hõljus mõnikord, andes halvad LDR -i analoognäidud. Soovitus: kui kasutate standardseid arvuti hüppakaableid, liimige need kõik pärast jaama perfektset toimimist, et seda vältida.

Samm 7: Tarkvara

Tarkvara
Tarkvara

Tarkvarakood nõuab kolme välist raamatukogu (LowPower, DHT, VirtualWire). Mul oli hiljuti probleeme mõne neist hõlpsasti veebist leidmisega, nii et lisasin need eraldi ZIP -faili. Sõltumata sellest, millist operatsioonisüsteemi te Linuxit/Windowsi kasutate, leidke lihtsalt oma Arduino IDE raamatukogu kaust ja ekstraheerige need sealt.

Lihtsalt märkus, olenemata sellest, et ma juba soovitan DHT11 ostmata jätta, kui kasutate vale tüüpi DHT -andurit, jääb programm algseadistamise sektsiooni alguses igaveseks rippuma (te ei näe isegi käivitusdioodi 3 korda vilkuvat).

Põhiahela kood on väga lihtne, esmalt loeb see keskkonna väärtused (temperatuur, soojusindeks, niiskus, päike), saadab need raadio kaudu ja seejärel kasutab vähese energiatarbega raamatukogu, et Arduino 5 minutiks magama panna.

Olen avastanud, et andmeedastuskiiruse vähendamine suurendab raadiosaatjate stabiilsust. Jaam saadab väga vähe andmeid, 300 bps on enam kui piisav. Ärge unustage ka seda, et saatja töötab ainult u. 4,8 V, tulevases 3,3 V versioonis võib see veelgi halvendada edastuskvaliteeti (andmete saatmine läbi seinte ja muud takistused). Mul tekkis probleem Raspberry PI 2 külge ühendatud Arduino Mega kasutamisel, mis toidab Mega PI -lt, kuid ma ei saanud edastust. Lahenduseks oli Mega toide eraldi välisest 12 V toiteallikast.

8. toiming: versioon 2 (ESP32 -põhine)

Versioon 2 (põhineb ESP32 -l)
Versioon 2 (põhineb ESP32 -l)
Versioon 2 (põhineb ESP32 -l)
Versioon 2 (põhineb ESP32 -l)
Versioon 2 (põhineb ESP32 -l)
Versioon 2 (põhineb ESP32 -l)

Kõik, mis võib puruneda, puruneb, et tsiteerida vana head Murphy ja lõpuks aastate pärast ebaõnnestusid jaamad salapärasel viisil. Üks hakkas saatma hämaraid päikeseenergia andmeid, mis ulatusid kümnetesse tuhandetesse, mis on võimatu: Arduino plaat sisaldab 6 kanalit (8 kanalit Mini ja Nano, 16 Mega), 10-bitist analoog-digitaalmuundurit. See tähendab, et see kaardistab sisendpinged vahemikus 0 kuni 5 volti täisarvudeks vahemikus 0 kuni 1023. Nii et pärast raadio, LDR -i vahetamist ja Atmega 328P mitu korda ümberprogrammeerimist loobusin ja otsustasin, et on aeg uuendusteks. Lähme ESP32.

Tahvel, mida ma kasutasin, oli: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi ja Bluetooth -kaart Rev1 MicroPython 4MB FLASH

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

Mikrokontroller ESP-32

Tööpinge 3,3 V digitaalsed sisend- ja väljundpoldid 19 analoogsisendit 6 ketta kiirust (maksimaalne) 240 MHz välklamp 4M baiti Pikkus 5 mm Laius 2,54 mm Kaal 4 g

Mis erinevalt pildil olevast ei oma LOLINi logo (võltsitud Hiinast). Minu esimene meeldiv üllatus oli see, et tahvlile trükitud pinout sobis Arduino pinoutiga! Pärast nii paljude noname laudadega tegelemist, kus ma pidin terve päeva otsima pinoute surnult väsinud vigu tehes lõpuks laud, kus pinout on otse edasi WoW!

Siin on aga loo varjukülg:

Algselt ühendasin LDR -i A15 -ga, mis on tihvt 12, kuna tihvtide kuumliimimine oli lihtsam. Siis on mul 4095 näitu (mis on maksimum, mille saate AnlogReadiga ESP32 -l), mis ajas mind hulluks, sest kogu põhjus, miks ma jaama uuesti üles ehitasin, olid vana katkised LDR -näidud (DHT töötas endiselt hästi)). Nii selgub, et:

Esp 32 ühendab kaks 12-bitist ACD-registrit. ADC1 kaheksa kanaliga, mis on ühendatud GPIO-dega 32-39, ja ADC2 kuni 10 kanaliga mõnes teises kontaktis. Asi on selles, et ESP32 kasutab WiFi -funktsioonide haldamiseks ADC2 -d, nii et kui kasutate WiFi -ühendust, ei saa te seda registrit kasutada. ADC draiveri API toetab ADC1 (8 kanalit, ühendatud GPIO -dega 32–39) ja ADC2 (10 kanalit, mis on ühendatud GPIO -dega 0, 2, 4, 12–15 ja 25–27). Siiski on ADC2 kasutamisel rakendusele mõned piirangud:

ADC2-d kasutab WiFi-draiver. Seetõttu saab rakendus kasutada ADC2-d ainult siis, kui WiFi-draiver pole käivitunud. Mõnda ADC2 tihvti kasutatakse rihmatõkkena (GPIO 0, 2, 15), seega ei saa seda vabalt kasutada. Nii on see järgmistes ametlikes arenduskomplektides:

Nii et LDR -i ühendamine tihvtist 12 A0 -ni, mis on VP, lahendas kõik, kuid ma ei saa sellest aru, miks nad isegi loetlevad ADC2 tihvtid tootjatele kättesaadavaks. Kui paljud teised harrastajad raiskasid palju aega, kuni selle välja mõtlesin? Vähemalt märkige kasutamiskõlbmatud tihvtid punase või millegi muuga või ärge seda käsiraamatus üldse mainige, et teised tegijad saaksid nende kohta teada ainult siis, kui nad neid tõesti vajavad. ESP32 kogu eesmärk on kasutada seda WIFI -ga, kõik kasutavad seda WIFI -ga.

Hea algus selle plaadi jaoks Arduino IDE seadistamiseks:

Kuigi ma panen selle koodi siia, läheb see uuesti:

See kood ei pruugi olla koostatud teiste ESP32 mudelite jaoks peale Weemos LOLIN 32!

Ehituse seaded: -Kasutage üleslaadimist/jada: 115200 -Kasutage protsessorit/mälu: 240 MHz (Wifi | BT) -Kasutage välklambi sagedust: 80 Mhz

Netis on palju ESP32 -põhiseid ilmajaamu, need on palju tavalisemad kui minu versioon 1 oli paljaste kiipidega, kuna neid on lihtsam seadistada, te ei vaja programmeerijat, lihtsalt ühendage seade USB -ga ja programmeerige see ja nende sügav unerežiim sobib suurepäraselt pikaks ajaks akuga töötamiseks. See oli esimene asi, mida katsetasin juba enne purunõelte jootmist, sest nagu ma märkasin selles projektis mitut kohta, on KÕIGE olulisem asi energiatarve ning praeguse (võltsitud) aku ja väikese päikesepaneeliga ooterežiim võimsus ei saa tõepoolest ületada 1–2 mA, sest vastasel juhul ei suuda projekt ennast pikaajaliselt säilitada.

See oli taas meeldiv üllatus, et sügava une režiim töötab nii, nagu reklaamitud. Sügava une ajal oli vool nii madal, et mu odav multimeeter ei suutnud seda isegi mõõta (töötab minu jaoks).

Andmete saatmise ajal oli vool umbes 80 mA (mis on umbes 5 korda rohkem kui Atmega 328P ärgates ja edastades), kuid ärge unustage, et V1 -ga oli unerežiimis LDR -il keskmiselt 1 mA voolutugevus (mis sõltus ka valguse tasemest ja läks vahemikku 0,5 mA - 1 mA), mis on nüüd kadunud.

Nüüd, kui UltraFire aku tühjendatakse, kui kasutate sama akut, võite siin oodata:

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

Teoreetiline

Aku eluiga = 22000mWh/2,5mW = 8800 tundi = ligikaudu 366 päeva

Päris

Aku eluiga = 800 mWh/2,5 mW = 320 tundi = ligikaudu 13 päeva

Mul ei olnud võimalust sisselülitusaega täpselt mõõta, kuid minu näpistustega läheb see umbes 2 sekundiks.

Ma ei tahtnud pärastlõunat kulutada kõike kohandatud kodeerimisele, nii et otsisin ESP32 -l põhinevaid Instructables'i muid ilmajaamu, et näha, mida nad andmete salvestamiseks teevad. Kahjuks märkasin, et nad kasutavad paindumatuid ja piiratud saite, nagu weathercloud. Kuna ma ei ole "pilve" fänn ja nende kood purunes juba ammu, kuna sait on sellest ajast alates muutnud oma API -d, olen võtnud oma 10 minuti, et teha kohandatud lahendus, sest see pole nii raske, kui võiks arvata. Alustame!

Esiteks pole selle projekti jaoks eraldi trükkplaadi pilti, sest see kasutab täpselt samu komponente (vabandust, et joodetud on kole leivaplaadi pilt) nagu V1 selle erinevusega, et kõik jookseb 3.3V maha. DHT haakis tõmbega VCC -sse, LDR tõmbas alla 10k -ga. Probleem, mida võib näha 18650 patareiga, nagu minu Hiina võlts (6500 mAh ultra päikese tulekahju lol: D), on see, et nad alustavad tühjenemiskõverat umbes 4,1 V uuel ajastul ja lähevad seni, kuni nende katkestusskeem käivitub, et peatada rakkude kahjustamine (kellel on õnne seda saada). See pole meile 3.3V sisendina kusagil hea. Kuigi sellel LOLIN -plaadil on selles projektis liitiumakupistik ja laadimisahel, tahtsin vanast jaamast enamiku võimalustest renoveerida, nii et vana 18650 -ga ei saa te seda sisseehitatud laadijat kasutada. Lahendus oli surm lihtne: katkestasin vanast pingevõimendist 5V sisse joodetud mikro -USB -kaabli ja voila probleem lahendati, kuna microUSB -plaadil on regulaator.

Niisiis, erinevus vana ja uue versiooni vahel, mis pakub vanas akus 3,7 V -> võimendatud 5 V -> ardu töötab 5 V -> kõik komponendid töötavad 5 V toitel.

Uues: aku pakub 3,7 V -> võimendatud 5 V -> reguleeritud ESP32 pardal oleva regulaatori kaudu -> kõik komponendid töötavad 3,3 V pingel.

Tarkvara osas vajame ka teist DHT -raamatukogu, Arduino DHT ei ühildu ESP -dega. Mida me vajame, nimetatakse DHT ESP -ks.

Hakkasin oma koodi lähtuma selle koodi DHT -näitest. Koodi töö on järgmine:

1, hankige fotoandurilt keskkonnaandmed DHT + päikeseandmetest

2, ühendage staatilise IP -ga wifi

3, POSTITA andmed php -skripti

4, mine magama 10 minutiks

Nagu märkate, häälestasin koodi tõhususe huvides, et minimeerida ärkamisaeg, kuna see kulutab energiat 5 korda rohkem kui vana projekt sisselülitamisel. Kuidas ma seda tegin? Esiteks, kui ilmneb IGAGI viga, naaseb funktsioon getTemperature () väärtusega false (mis tähendab uuesti 10 -minutilist und). See võib olla nii, et DHT -andurit ei saa käivitada või WiFi -ühendus pole saadaval. Nagu märkate, eemaldati ka tavaline while () silmus, et jätkata wifi -ühenduse proovimist, kuid 1 -sekundiline viivitus tuli sinna jätta, vastasel juhul ei ühenda see alati ja see sõltub ka AP -i tüübist, koormusest jne. juhtub, 0,5 sekundiga sain ebajärjekindla käitumise (mõnikord ei saanud see ühendust luua). Kui keegi teab, kuidas seda paremini teha, jätke see kommentaaridesse. Alles siis, kui DHT -andmeid loetakse ja wifi -ühendus on loodud, proovib see andmed veebiserveri skripti postitada. Igasugused aja raiskamise funktsioonid, nagu Serial.println (), on ka tavarežiimis keelatud. Serverina kasutan ka IP -d, et vältida tarbetut DNS -i otsingut, minu koodis on nii vaikelüüs kui ka DNS -server seatud väärtusele 0.0.0.0.

Ma ei saa aru, miks on oma API loomine nii raske, kui selleks on vaja ainult järgmist:

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

int httpResponseCode = http. POST (vastus);

Paned selle väikese php -koodi ükskõik millisele vaarika pi -le ja saad telemeetria põhjal kohe teha süsteemi () ülesandeid, näiteks lülitada sisse ventilaatorid või lülitada sisse tuled, kui läheb piisavalt pimedaks.

Mõned märkused koodi kohta:

WiFi.config (staticIP, lüüs, alamvõrk, dns); // PEAB pärast Wifi alustama, kui rumal …

WiFi -režiim (WIFI_STA); // PEAB muidu looma ka soovimatu AP

Jah, nüüd teate. Ka IP seadistuste järjekord võib platvormide kaudu muutuda, proovisin kõigepealt teisi näiteid, kus lüüsi ja alamvõrgu väärtused vahetati. Miks määrata staatiline IP? Noh, see on üsna ilmne, kui teie võrgus on spetsiaalne kast, näiteks Linuxi server, mis töötab isc dhcpd, ei soovi te sadat miljonit logikirjet, kui ESP ärkab ja IP -d DHCP -st saab. Tavaliselt ei logi ruuterid seoseid, nii et need jäävad nähtamatuks. See on energia säästmise hind.

V2 ei suutnud halva kvaliteediga aku tõttu end kunagi ülal pidada ja ma olen selle lihtsalt adapterile pannud, nii et kui soovite ehitada kas V1 või V2, siis ärge ostke mainitud akut, uurige patareisid (ükskõik milline 18650 üle 2000mAh reklaamitud maht Ebays on suure tõenäosusega pettus).

Soovitan: