Turinys:

„NaTaLia“orų stotis: „Arduino“saulės energija varoma oro stotis padaryta teisingai: 8 žingsniai (su nuotraukomis)
„NaTaLia“orų stotis: „Arduino“saulės energija varoma oro stotis padaryta teisingai: 8 žingsniai (su nuotraukomis)

Video: „NaTaLia“orų stotis: „Arduino“saulės energija varoma oro stotis padaryta teisingai: 8 žingsniai (su nuotraukomis)

Video: „NaTaLia“orų stotis: „Arduino“saulės energija varoma oro stotis padaryta teisingai: 8 žingsniai (su nuotraukomis)
Video: 🤩АМЕРИКАНСЬКІ ГІРКИ // АТРАКЦІОНИ// НЕЗАБУДНІ ВРАЖЕННЯ| ROLLER COASTER 2024, Birželis
Anonim
„NaTaLia“orų stotis: „Arduino“saulės energija varoma oro stotis padaryta teisingai
„NaTaLia“orų stotis: „Arduino“saulės energija varoma oro stotis padaryta teisingai
„NaTaLia“orų stotis: „Arduino“saulės energija varoma oro stotis padaryta teisingai
„NaTaLia“orų stotis: „Arduino“saulės energija varoma oro stotis padaryta teisingai

Po vienerių metų sėkmingo veikimo 2 skirtingose vietose dalinuosi saulės kolektorių projektų planais ir paaiškinu, kaip ji išsivystė į sistemą, kuri tikrai gali išgyventi ilgą laiką nuo saulės energijos. Jei laikysitės mano nurodymų ir naudosite tas pačias medžiagas, kurios išvardytos, galite pastatyti saulės energija varomą oro stotį, kuri veiks daugelį metų. Tiesą sakant, vienintelis veiksnys, ribojantis jo veikimo laiką, yra jūsų naudojamos baterijos tarnavimo laikas.

1 žingsnis: orų stoties veikimas

1, siųstuvas: lauke sumontuota dėžutė su saulės skydeliu, kuri periodiškai siunčia oro telemetriją (temperatūra, drėgmė, šilumos indeksas, saulės stiprumas) į vidaus imtuvą.

2, Imtuvas: Vidinis įrenginys, pagamintas iš „Raspberry PI 2 + Arduino Mega“, turintis 433 Mhz RF imtuvą, prijungtą duomenų priėmimui. Mano sąrankoje šis įrenginys neturi vietinio LCD ekrano funkcijų. Jis važiuoja nekreipdamas dėmesio. Pagrindinė C programa rūpinasi gaunamų duomenų priėmimu iš „Arduino“per seriją, tada įrašo duomenis į teksto failą ir pateikia paskutinius gautus duomenis per „telnet“, kad kiti įrenginiai galėtų jų užklausti.

Stotis valdo šviesas mano namuose, skaitydama fotorezistorių (kuris nustato, ar lauke yra diena, ar naktis). Imtuvas mano atveju yra be galvos, bet jūs galite lengvai modifikuoti projektą ir pridėti LCD ekraną. Vienas iš įrenginių, naudojančių, analizuojančius ir rodančius orų duomenis iš stoties, yra kitas mano projektas: „Ironforge the NetBSD Toaster“.

2 žingsnis: pirmosios versijos

Pirmosios versijos
Pirmosios versijos
Pirmosios versijos
Pirmosios versijos
Pirmosios versijos
Pirmosios versijos
Pirmosios versijos
Pirmosios versijos

Tinkle yra daug saulės projektų, tačiau daugelis jų daro įprastą klaidą, kad laikui bėgant sistema iš baterijos atima daugiau energijos, kurią saulės baterijos gali papildyti, ypač debesuotu, tamsiu žiemos mėnesiu.

Kai kuriate saulės energiją naudojančią sistemą, vienintelis dalykas yra MAITINIMAS, visų komponentų: MCU, radijo siųstuvo, įtampos reguliatoriaus ir kt.

Naudoti didelį kompiuterį, pvz., „Raspberry pi“, arba alkaną belaidį „Wi -Fi“įrenginį, pvz., ESP, tik norint surinkti ir perkelti porą bitų orų duomenų, būtų per daug, bet kaip parodysiu šioje pamokoje, netgi maža „Arduino“plokštė yra tokia.

Geriausia visada matuoti srovę statybos metu naudojant matuoklį arba naudojant apimtį (naudinga, kai bandote išmatuoti mažus naudojimo šuolius operacijos metu per labai trumpą laiką (milisekundes)).

Pirmoje nuotraukoje matote mano pirmąją („Arduino Nano Based“) stotį ir antrąją „Arduino Barebone Atmega 328P“plokštę.

Pirmoji versija, nors ir puikiai veikė (aplinkos stebėjimas ir duomenų siuntimas per radiją), per daug suvartojo ~ 46 mA energijos ir per kelias savaites išsikrovė baterija.

Visos versijos naudojo šią bateriją:

18650 6000mAh apsaugota ličio jonų įkraunama baterija, įmontuota apsaugos plokštė

ATNAUJINTI šias „ScamFire“baterijas. Nors tai gana senas „Instructable“, vis tiek jaučiausi priverstas jį ištaisyti dėl šios netikros baterijos. Nepirkite minėtos baterijos, atlikite savo tyrimus apie kitas LION/LIPO baterijas, visos 3,7 V baterijos veiks su šiuo projektu.

Galiausiai turėjau laiko išardyti „ScamFire“akumuliatorių, kad pamatyčiau, kokia yra jo tikroji talpa. Todėl atliksime 2 skaičiavimus greta realių ir „reklamuojamų“pajėgumų.

Visų pirma tai yra vienas dalykas, kad ši baterija yra padirbta ir nieko, ką jie teigia apie tai, yra tiesa, naujosios versijos yra dar blogesnės, nes jos nukopijavo palikdamos 2 centų apsaugos grandinę, todėl niekas netrukdys jų išsikrauti iki nulio.

Mažas straipsnis apie LION/LIPO baterijas:

TLDR:

Tai reiškia, kad maksimali elemento įtampa yra 4,2 V, o „vardinė“(vidutinė) įtampa yra 3,7 V.

Pavyzdžiui, čia yra „klasikinės“3,7 V/4,2 V baterijos įtampos profilis. Įtampa prasideda nuo maksimalios 4,2 ir beveik visą akumuliatoriaus veikimo laiką greitai nukrenta iki maždaug 3,7 V. Kai paspausite 3,4 V, akumuliatorius išsikrovė, o esant 3,0 V, išjungimo grandinė atjungia akumuliatorių.

Mano matavimai naudojant manekeno apkrovą:

Baterija įkrauta: 4,1 V.

Atjungimas nustatytas į: 3.4V

Įkrovos modeliavimas: 0,15A (mano įrenginyje buvo šiek tiek problemų, kai jis nukrito žemiau.)

Išmatuota talpa: 0,77 Ah, atleiskite neatlygintinai 0,8 Ah, tai yra 800 mAh vietoj reklamuojamo 6000 mAh!

Kadangi ši baterija net neturėjo apsaugos grandinės, galėjau laisvai nusileisti žemyn, tačiau esant 3,4 V įtampai po 10 minučių ji jau sudužo iki 3,0 V.

Taigi, atlikus paprastus skaičiavimus, akumuliatorius pateikia:

Teorinis

Akumuliatoriaus įtampa = 3,7V

Galia = 3,7x6000 = 22000 mWh

Tikras

Akumuliatoriaus įtampa = 3.7V Galia = 3.7x800 = 2960 mWh

Versija: 0.1 ARDUINO NANO PAGRINDAS

Net naudojant „LowPower“biblioteką, „Arduino nano“sunaudoja ~ 16 mA (miego režimu) -> FAIL.

Teorinis

Pavg = VxIavg = 5Vx16mA = 80 mW

Baterijos veikimo laikas = 22000/80 = 275 valandos = maždaug 11 dienų

RealPavg = VxIavg = 5Vx16mA = 80 mW

Baterijos veikimo laikas = 800/80 = 10 valandų

Versija: 0.2 Atmega 328P Barebone

„ATmega328“sunaudojama galia labai priklauso nuo to, ką su juo darote. Tiesiog sėdėdamas ten pagal numatytąją būseną, jis gali naudoti 16 mA @ 5 V, veikdamas 16 MHz dažniu.

Kai ATmega328P yra aktyviame režime, jis nuolat vykdys kelis milijonus nurodymų per sekundę. Be to, vidiniai išoriniai įrenginiai iš analoginio į skaitmeninį keitiklį (ADC), serijinė periferinė sąsaja (SPI), laikmatis 0, 1, 2, dviejų laidų sąsaja (I2C), USART, sargybos laikmatis (WDT) ir „Brown-out“aptikimas (BOD) sunaudoja energiją.

Norėdami taupyti energiją, „ATmega328P MCU“palaiko daugybę miego režimų, o nenaudojamus išorinius įrenginius galima išjungti. Miego režimai skiriasi pagal tai, kurios dalys išlieka aktyvios, pagal miego trukmę ir laiką, reikalingą pabusti (pabudimo laikotarpis). Miego režimą ir aktyvius išorinius įrenginius galima valdyti naudojant AVR miego ir maitinimo bibliotekas arba, trumpai tariant, su puikia mažos galios biblioteka.

Mažos galios biblioteka yra paprasta naudoti, bet labai galinga. Teiginys LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); nustato MCU į SLEEP_MODE_PWR_DOWN nuo 16 ms iki 8 s, priklausomai nuo pirmojo argumento. Tai išjungia ADC ir BOD. Išjungimo miego režimas reiškia, kad visos lusto funkcijos yra išjungtos iki kito pertraukimo. Be to, išorinis generatorius sustabdomas. Tik INT1 ir INT2 lygio pertraukimai, kaiščio keitimo pertraukos, TWI/I2C adreso atitiktis arba WDT, jei įjungta, gali pažadinti MCU. Taigi vienu teiginiu sumažinsite energijos suvartojimą. 3,3 V „Pro Mini“be maitinimo šviesos diodo ir be reguliatoriaus (žr. Toliau), kuriame veikia teiginys, energijos suvartojimas yra 4,5 μA. Tai labai artima tai, kas paminėta ATmega328P duomenų lape, skirtame išjungti miegą, kai WDT įgalinta 4,2 μA (duomenų lapas susietas su šaltiniais). Todėl esu visiškai įsitikinęs, kad „powerDown“funkcija išjungia viską, kas yra pagrįstai įmanoma. Naudojant teiginį LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);

Taigi, atlikę „barebone“sąranką, mes galime įjungti lustą 5 minutėms į miego režimą, o jis sunaudoja labai mažai energijos (0,04 mA be išorinių įrenginių). Tačiau tai tik „Atmega 328P“mikroschema su kristalų osciliatoriumi ir nieko daugiau, šioje konfigūracijoje naudojamas įtampos stiprintuvas, skirtas akumuliatoriaus įtampai padidinti nuo 3,7 V -> 5,0 V, taip pat sunaudoja 0,01 mA.

Vienas nuolatinės įtampos nutekėjimas buvo pridėtas foto rezistorius, kuris padidino energijos suvartojimą miego režimu iki 1 mA (tai apima visus komponentus).

Tikslaus prietaiso suvartojimo miego ir pažadinimo režimu apskaičiavimo formulė yra tokia:

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

Jonas = 13 mA

Tai daugiausia gaunama iš RF433 Mhz siųstuvo:

Siųstuvas:

Darbinė įtampa: 3V - 12V maks. energijos suvartojimas 12V Darbo srovė: maks. Mažiau nei 40mA maks. ir min. 9mAR Rezonansinis režimas: (SAW) Moduliacijos režimas: ASK

Miegas = 1mA

Be fotorezistoriaus būtų žymiai mažiau.

Trunono laikas Ton = 250 mS = 0,25 s

Miego laikas 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

Teorinis

Baterijos veikimo laikas = 22000mWh/6mW = 3666 valandos = maždaug 152 dienos

Tikras

Baterijos veikimo laikas = 800mWh/6mW = 133 valandos = maždaug 5,5 dienos

Nors tai vis dar buvo geresnė „UltraFire“serija, kurią iš pradžių naudojau, matėte, kad be saulės kolektoriaus ar mažo 1 mA sunaudojimo šis projektas ilgai neišsilaikys.

Nesivaržykite statyti stoties ir surašykite savo išvadas bei skaičiavimus į komentarus ir aš atnaujinsiu straipsnį. Taip pat būčiau dėkingas už rezultatus, gautus naudojant skirtingus MCU ir padidinimo keitiklius.

3 žingsnis: Sukurkite sėkmingą orų stotį

Sėkmingos oro stoties kūrimas
Sėkmingos oro stoties kūrimas
Sėkmingos oro stoties kūrimas
Sėkmingos oro stoties kūrimas
Sėkmingos oro stoties kūrimas
Sėkmingos oro stoties kūrimas
Sėkmingos oro stoties kūrimas
Sėkmingos oro stoties kūrimas

Nors tai pirmoji sėkminga versija, joje yra šiek tiek nesėkmių nuotraukose, ir aš negaliu jų perdarinėti, nes stotys jau yra dislokuotos. Rašymo metu galima įsigyti du paveikslėlyje parodytus įtampos stiprintuvus, skirtus aviacijos modeliavimui ir kitoms programoms. Kai pertvarkiau savo stotį, galvojau apie mažesnės ir efektyvesnės įtampos pakopos plokštės įsigijimą, tačiau mažesnis dydis tikrai nereiškia, kad ji yra efektyvesnė.

Naujas mažas modulis paveikslėlyje, kuriame net nėra indikatoriaus, iš tikrųjų išleido 3mA (*FAIL*), todėl aš likau prie savo senosios plokštės:

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

Rašant šį modulį vis dar galima įsigyti „Ebay“už 99 centus, bet jei nuspręsite naudoti kitą stiprintuvą, visada patikrinkite energijos suvartojimą budėjimo režimu. Naudojant geros kokybės stiprintuvą, jis neturėtų būti didesnis nei mano (0,01 mA), nors nedidelis šviesos diodas, esantis laive, turėjo būti lituotas.

4 žingsnis: Aparatūros sąrašas

Aparatūros sąrašas
Aparatūros sąrašas
  • 18650 6000mAh apsaugota ličio jonų įkraunama baterija, įmontuota apsaugos plokštė
  • Atmega 328P16M 5V su įkrovos įkrovikliu
  • „Adafruit DC Boarduino“(suderinamas su „Arduino“) rinkinys (su ATmega328) <tai bus gera investicija, jei vykdysite būsimus „barebone“projektus
  • Foto šviesai jautrus rezistorius Fotorezistorius Optoresistorius 5mm GL5539
  • 1A 1000V diodas 1N4007 IN4007 DO-41 lygintuvo diodai
  • PFM valdymas DC-DC USB 0.9V-5V to 5V dc Boost Step-up Power Supply Module
  • 1.6W 5.5V 266mA mini saulės skydelio modulio sistemos epoksidinis elementų įkroviklis pasidaryk pats
  • TP405 5V mini USB 1A ličio baterijos įkrovimo plokštės įkroviklio modulis
  • 433 MHz RF siųstuvo ir imtuvo jungčių rinkinys, skirtas „Arduino“/ARM/MC nuotolinio valdymo pultui.
  • IP65 jungiklio apsaugos jungties dėžutė vandeniui nepralaidus gaubtas 150x110x70mm
  • Naujas DHT22 temperatūros ir santykinės drėgmės jutiklio modulis, skirtas „Arduino“
  • 1x220 omų, 2x10KOhm, 1xLED, 1x mini jungiklis, 1x1N4007diodas
  • Adafruit 16 MHz keraminis rezonatorius / osciliatorius [ADA1873]
  • Arduino UNO/Mega ir tt imtuvo stotyje + Aviečių PI 1/2/3
  • Skaidri akrilo plastikinė dėžutė (neprivaloma)

Visa tai galite rasti „Ebay“, nenoriu reklamuoti jokių pardavėjų, nurodydamas jų puslapius, ir nuorodos ateityje vis tiek taps negyvos.

Pastabos dėl aparatūros sąrašo:

Tik tuo atveju, jei „Atmega“kažkaip plytų su programavimu, nusipirkite jų daugiau, tas pats pasakytina apie įtampos stiprintuvą ir saulės įkrovos valdiklį.

Saulės įkroviklyje yra 2 maži spalvoti šviesos diodai, kurie įjungiami tik įkraunant saulės energiją ir rodo (raudona-> įkrovimo, mėlyna-> visiškai įkrauta būsena). Jie taip pat gali būti neišpilami. Tai greičiau suteikia šiek tiek daugiau sulčių akumuliatoriui įkrovimo metu.

Kaip matote, mano sąraše nėra baterijų laikiklių. Kodėl? Nes jie yra nepatikimi. Turėjau daugybę kartų, kai akumuliatorius išsikėlė iš laikiklio ir nutrūko ryšys. Ypač jei jūsų įrenginys sumontuotas ant aukšto indo stulpo, kaip mano, atidarytas bet kokiomis atšiauriomis oro sąlygomis. Aš net užtraukiau bateriją į laikiklį su 2 užtrauktukais ir vis tiek sugebėjo išsikraustyti. Nedarykite to, tiesiog nuimkite išorinę dangą nuo akumuliatoriaus ir lituokite laidus tiesiai į akumuliatoriaus dugną, kuriame yra apsaugos nuo perkaitimo grandinė (neaplenkite apsaugos). Akumuliatoriaus laikiklį galima naudoti tik akumuliatoriaus laikymui įrenginyje.

TP405 5V mini USB 1A ličio akumuliatoriaus įkrovimo plokštė: deja, šioje plokštėje nėra saulės kolektoriaus apsaugos nuo atvirkštinės srovės, todėl norint sustabdyti srovę, jums reikės dar 1 diodo, esančio tarp vienos saulės kolektoriaus kojos ir įkrovimo grandinės naktį tekėti atgal į saulės kolektorių.

5 žingsnis: Surinkimas

Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas
Surinkimas

Šioje plokštėje yra palyginti nedaug komponentų, o žymekliai ant plokštės yra gana paprasti.

Įsitikinkite, kad NEGALIMA įkišti „Atmega328P“netinkamu būdu (tai gali įkaitinti ir sudeginti lustą, taip pat gali sugadinti įtampos stiprintuvą).

Šioje sąrankoje lustas nukreiptas žemyn (maža U skylės žymė PIN1). Visi kiti komponentai turėtų būti akivaizdūs.

LDR naudokite ekranuotą kabelį (pvz.: garso kabelis iš CDrom tiks). Kai kuriais atvejais (per daugelį bandymų savaičių) paaiškėjo, kad tai trukdo radijo signalo perdavimui. Tai buvo viena iš tų klaidų, kurias sunku pašalinti, taigi, jei nenorite problemų, tiesiog naudokite ekranuotą kabelį, istorijos pabaiga.

Šviesos diodas: šviesos diodas dėžutės apačioje iš pradžių buvo pridėtas mirksėti, kai siunčiamas radijas, tačiau vėliau aš jį laikiau energijos švaistymu ir jis mirksi tik 3 kartus įkrovos metu.

TP: yra bandymo taškas visos grandinės srovės matavimui.

DHT22: nepirkite pigių DHT11, išleiskite 50 centų daugiau, kad gautumėte baltą DHT22, kuris taip pat gali išmatuoti neigiamą temperatūrą.

6 žingsnis: korpuso dizainas

Korpuso dizainas
Korpuso dizainas
Korpuso dizainas
Korpuso dizainas
Korpuso dizainas
Korpuso dizainas

Nors tai šiek tiek per daug, buvo sukurtas 3D spausdintas kubas (weather_cube), skirtas laikyti DHT22 temperatūros jutiklį. Kubas yra priklijuotas prie IP dėžutės apačios, jame yra tik 1 skylė orui pasiekti jutiklį. Prie skylės pridėjau tinklelį nuo bičių, vapsvų ir kitų mažų muselių.

Pasirinktinai galima naudoti išorinę dėžę, kad stotis būtų labiau atspari vandeniui tuo atveju, jei ją montuojate ant indo stulpo atvirame lauke.

1 naudingos savybės idėja: ant dėžutės viršaus pridėjus didelę metalinę 1-2 cm stogo plokštę, kuri vasarą suteikia šešėlį nuo saulės, nors tai taip pat gali atimti naudingą saulės šviesą nuo skydelio. Galite sugalvoti dizainą, atskiriantį skydelį ir dėžutę (skydelį paliekant saulėje, dėžutę šešėlyje).

Nuotraukose: viena iš stočių pašalinta iš darbo aplinkos po 1 metų, akumuliatoriaus įtampa vis dar stulbinanti 3,9 V, jokia dėžutės dalis nepažeista vandens, nors tinklas, kurį priklijavau kubo apačioje, buvo suplėšytas. Priežastis, dėl kurios stotį reikėjo aptarnauti, yra ryšio sutrikimas LDR jungtyje, nors jungiamasis kabelis vis dar yra, jungtis buvo nutrūkusi, todėl kaištis kartais plūduriavo ir blogai rodė LDR analoginius rodmenis. Siūlymas: jei naudojate standartinius asmeninius trumpiklius, karšto klijavimo juos visus, kai stotis puikiai veikia, kad to išvengtumėte.

7 žingsnis: programinė įranga

Programinė įranga
Programinė įranga

Programinės įrangos kodui reikės 3 išorinių bibliotekų (LowPower, DHT, VirtualWire). Pastaruoju metu turėjau problemų lengvai rasti kai kuriuos iš jų internete, todėl prisegiau juos atskirame ZIP faile. Nepriklausomai nuo to, kokią OS naudojate „Linux“/„Windows“, tiesiog raskite „Arduino IDE“bibliotekos aplanką ir ištraukite juos ten.

Tik pastaba, nepaisant to, kad jau nerekomenduoju pirkti DHT11, jei naudosite netinkamo tipo DHT jutiklį, programa tiesiog amžinai pakabins pradžioje inicializacijos skyriuje (net nepamatysite, kaip paleisties lemputė mirksi 3 kartus).

Pagrindinis ciklo kodas yra labai paprastas, pirmiausia jis skaito aplinkos vertes (temperatūra, šilumos indeksas, drėgmė, saulė), siunčia jas per radiją, tada naudoja mažos galios biblioteką, kad užmigdytų „Arduino“5 minutėms.

Radau, kad sumažinus duomenų perdavimo spartą padidės radijo transliacijų stabilumas. Stotis siunčia labai mažą duomenų kiekį, 300 bps yra daugiau nei pakankamai. Taip pat nepamirškite, kad siųstuvas veikia tik nuo maždaug. 4,8 V, būsimoje 3,3 V versijoje tai gali lemti dar prastesnę perdavimo kokybę (duomenų siuntimas per sienas ir kitos kliūtys). Aš susidūriau su problema naudojant „Arduino Mega“, prijungtą prie „Raspberry PI 2“, kuris maitina „Mega“iš PI, todėl negavau jokio perdavimo. Sprendimas buvo maitinti „Mega“iš atskiro išorinio 12 V maitinimo šaltinio.

8 veiksmas: 2 versija (pagrįsta ESP32)

2 versija (pagrįsta ESP32)
2 versija (pagrįsta ESP32)
2 versija (pagrįsta ESP32)
2 versija (pagrįsta ESP32)
2 versija (pagrįsta ESP32)
2 versija (pagrįsta ESP32)

Viskas, kas gali sulūžti, sulaužys cituojant seną gerą Murphy ir galiausiai po metų stotys žlugo paslaptingais būdais. Vienas pradėjo siųsti beprasmiškus saulės duomenis, kurie išaugo iki dešimčių tūkstančių, o tai neįmanoma dėl: „Arduino“plokštėje yra 6 kanalai (8 kanalai „Mini“ir „Nano“, 16 „Mega“), 10 bitų analoginis-skaitmeninis keitiklis. Tai reiškia, kad įvesties įtampa nuo 0 iki 5 voltų bus susieta su sveikųjų skaičių reikšmėmis nuo 0 iki 1023. Taigi, kelis kartus pakeitęs radiją, LDR ir perprogramavęs „Atmega 328P“, pasidaviau ir nusprendžiau, kad atėjo laikas naujovėms. Eikime pagal ESP32.

Lenta, kurią naudojau, buvo: ESP32 WEMOS LOLIN32 Lite V1.0.0 „Wi -Fi“ir „Bluetooth“kortelė Rev1 „MicroPython 4MB FLASH“

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

Mikrovaldiklis ESP-32

Veikimo įtampa 3.3V skaitmeniniai įvesties/išvesties kaiščiai 19 analoginių įvesties kaiščių 6 Laikrodžio greitis (maks.) 240Mhz Blykstė 4M baitai Ilgis 5mm Plotis 2,54 mm Svoris 4g

Kuris, skirtingai nei pavaizduotas, neturi LOLIN logotipo (padirbtas iš Kinijos). Mano pirmoji maloni staigmena buvo ta, kad ant lentos atspausdintas kištukas atitiko „Arduino“kištuką! Susidūręs su daugybe noname lentų, kur visą dieną turėjau ieškoti pinoutų, miręs pavargęs darau klaidas, pagaliau lenta, kurioje pinout yra tiesiai į priekį WoW!

Tačiau čia yra tamsioji istorijos pusė:

Iš pradžių aš prijungiau LDR prie A15, kuris yra 12 kaištis, nes buvo lengviau kaiščius suklijuoti kartu. Tada aš turiu 4095 rodmenis (tai yra maksimali suma, kurią galite gauti naudodami „AnlogRead“ESP32), kuri mane privertė proto, nes visa priežastis, kodėl aš atstatiau stotį, buvo sugedę senosios LDR rodmenys (DHT vis dar veikė gerai). Taigi paaiškėja, kad:

Esp 32 integruoja du 12 bitų ACD registrus. ADC1 su 8 kanalais, prijungtais prie GPIO 32-39, ir ADC2 su 10 kanalų kituose smeigtukuose. Reikalas tas, kad ESP32 naudoja „ADC2“„Wi -Fi“funkcijoms valdyti, taigi, jei naudojate „Wifi“, negalite naudoti šio registro. ADC tvarkyklės API palaiko ADC1 (8 kanalai, prijungti prie 32–39 GPIO) ir ADC2 (10 kanalų, prijungtų prie GPIO 0, 2, 4, 12–15 ir 25–27). Tačiau ADC2 naudojimas turi tam tikrų programos apribojimų:

ADC2 naudoja „Wi-Fi“tvarkyklė. Todėl programa gali naudoti ADC2 tik tada, kai „Wi-Fi“tvarkyklė nėra paleista. Kai kurie ADC2 kaiščiai naudojami kaip tvirtinimo kaiščiai (GPIO 0, 2, 15), todėl jų negalima laisvai naudoti. Taip yra šiuose oficialiuose kūrimo rinkiniuose:

Taigi prijungus LDR nuo 12 kaiščio prie A0, kuris yra VP, viskas išsisprendė, bet aš nesuprantu, kodėl jie netgi išvardija ADC2 kaiščius, kuriuos galima įsigyti gamintojams. Kiek kitų mėgėjų iššvaistė daugybę laiko, kol tai išsiaiškino? Bent jau nenaudojamus smeigtukus pažymėkite raudona spalva ar pan. Visas ESP32 tikslas yra naudoti jį su WIFI, visi jį naudoja su WIFI.

Gera pradžia, kaip nustatyti „Arduino IDE“šiai lentai:

Nors įvedu jį į kodą, tai dar kartą:

Šis kodas gali būti nesudėtingas kitiems ESP32 modeliams, išskyrus „Weemos LOLIN 32“!

Sukurti nustatymus: -Naudoti įkėlimą/serijinį: 115200 -Naudoti procesorių/RAM: 240Mhz (Wifi | BT) -Naudoti blykstės dažnį: 80Mhz

Internete yra daugybė ESP32 pagrindu veikiančių meteorologinių stočių, jos yra daug bendresnės nei mano 1 versija buvo su „barebone“mikroschema, nes jas lengviau nustatyti, jums nereikia programuotojo, tiesiog prijunkite įrenginį prie USB ir užprogramuokite gilus miego režimas puikiai tinka ilgą laiką veikti iš akumuliatoriaus. Tiesiai nuo šikšnosparnio tai buvo pirmas dalykas, kurį išbandžiau dar prieš litavimą kaiščių kaiščiuose, nes, kaip pastebėjau kelias šio projekto vietas, PAGRINDINIS dalykas yra energijos suvartojimas, o esant dabartinei (netikrai) baterijai ir mažam saulės skydeliui, budėjimo režimas galia tikrai negali viršyti 1–2 mA, nes kitaip projektas negalės išsilaikyti ilgą laiką.

Vėl buvo maloni staigmena, kad gilaus miego režimas veikia taip, kaip reklamuojama. Gilaus miego metu srovė buvo tokia maža, kad mano pigus daugiamatis matuoklis net negalėjo jo išmatuoti (man tinka).

Siunčiant duomenis, srovė buvo apie 80 mA (tai yra maždaug 5 kartus daugiau nei tada, kai „Atmega 328P“atsibunda ir perduoda duomenis), tačiau nepamirškite, kad naudojant V1, vidutiniškai 1 mA energijos nutekėjimas LDR veikė miego režimu (kuris taip pat priklausė nuo apšvietimo lygio ir buvo nuo 0,5 mA iki 1 mA), kurio dabar nebėra.

Dabar, kai „UltraFire“akumuliatorius yra išardytas, jei naudojate tą pačią bateriją, galite tikėtis:

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

Teorinis

Baterijos veikimo laikas = 22000 mWh/2,5 mW = 8800 valandos = maždaug 366 dienos

Tikras

Baterijos veikimo laikas = 800 mWh/2,5 mW = 320 valandų = maždaug 13 dienų

Neturėjau galimybių tiksliai išmatuoti įjungimo laiko, tačiau su savo pakeitimais jis viršija maždaug 2 sekundes.

Nenorėjau praleisti popietės, kad viską koduotų pagal užsakymą, todėl ieškojau kitų „Instructables“orų stočių, pagrįstų ESP32, norėdamas pamatyti, ką jos daro duomenų saugojimui. Deja, pastebėjau, kad jie naudoja nelanksčias ir ribotas svetaines, tokias kaip „weathercloud“. Kadangi nesu „debesies“gerbėjas ir jų kodas seniai sugedo, nes nuo to laiko svetainė pakeitė savo API, užtrukau 10 minučių, kad galėčiau sukurti pasirinktinį sprendimą, nes tai nėra taip sunku, kaip būtų galima manyti. Pradėkime!

Visų pirma, šiam projektui nėra atskiros plokštės paveikslėlio, nes jame naudojami tie patys komponentai (atsiprašau už tai, kad lituojama bjaurioje duonos lentos nuotraukoje), kaip ir V1, tuo skirtumu, kad viskas išeina 3,3 V. DHT prijungtas prie prisitraukimo prie VCC, LDR nusileido 10 k. Problema, kurią galima pastebėti naudojant 18650 baterijas, tokias kaip mano kinų klastotė (6500 mAh ultra saulės ugnis: D), yra ta, kad jos pradeda iškrovos kreivę nuo maždaug 4,1 V naujojo amžiaus ir tęsiasi tol, kol įsijungia jų išjungimo grandinė, kad sustabdytų ląstelių pažeidimus (tiems, kuriems pasisekė tai turėti). Tai mums niekur netinka kaip 3.3V įėjimas. Nors šiame projekte ši LOLIN plokštė turi ličio baterijos jungtį ir įkrovimo grandinę, aš norėjau iš senosios stoties atnaujinti tai, ką galėjau, todėl su senu 18650 jūs negalite naudoti šio įmontuoto įkroviklio. Sprendimas buvo paprastas: iš senojo įtampos stiprintuvo nutraukiau „micro USB“kabelį, lituotą į 5 V, ir voila problema išspręsta, nes „microUSB“plokštė turi reguliatorių.

Taigi skirtumas tarp senos ir naujos versijos, kuri senoje baterijoje suteikia 3,7V -> padidinta iki 5V -> ardu veikia 5V -> visi komponentai veikia 5V.

Naujojoje: akumuliatorius tiekia 3,7 V -> padidintas iki 5 V -> reguliuojamas per ESP32 reguliuojamą bortą -> visi komponentai veikia 3,3 V.

Programinės įrangos atžvilgiu mums taip pat reikės kitos DHT bibliotekos, „Arduino“DHT nesuderinamas su ESP. Tai, ko mums reikia, vadinama DHT ESP.

Savo kodą pradėjau pagrįsti šio kodo pateiktu DHT pavyzdžiu. Kodo veikimas yra toks:

1, gaukite aplinkos duomenis iš DHT + saulės duomenų iš fotoelemento

2, prisijunkite prie „Wi -Fi“su statiniu IP

3, PASKELBITE duomenis į php scenarijų

4, Eik miegoti 10 minučių

Kaip pastebėsite, aš sureguliavau efektyvumo kodą, kad visiškai sumažintų pabudimo laiką, nes jis išeikvoja 5 kartus daugiau energijos nei senas projektas, kai jis buvo įjungtas. Kaip aš tai padariau? Visų pirma, jei yra bet kokia klaida, funkcija getTemperature () grįš su klaidinga (tai reiškia, kad vėl 10 minučių miegas). Tai gali būti taip, kad DHT jutiklio negalima paleisti arba nėra „Wi -Fi“ryšio. Kaip pastebėjote, įprasta „(“) kilpa, skirta visam laikui bandyti „Wi -Fi“susiejimą, taip pat buvo pašalinta, tačiau reikėjo palikti 1 sekundės vėlavimą, kitaip jis ne visada prisijungs, taip pat priklauso nuo AP tipo, apkrovos ir tt, kaip greitai įvyks, su 0,5s gavau nenuoseklų elgesį (kartais nepavyko prisijungti). Jei kas nors žino geresnį būdą tai padaryti, palikite tai komentaruose. Tik tada, kai bus perskaityti DHT duomenys IR bus prijungtas „Wi -Fi“ryšys, jis bandys paskelbti duomenis žiniatinklio serverio scenarijuje. Visos laiko švaistymo funkcijos, pvz., „Serial.println ()“, yra išjungtos ir įprastu darbo režimu. Kaip serveris aš taip pat naudoju IP, kad išvengčiau nereikalingos DNS paieškos, mano kode ir numatytasis šliuzas, ir dns serveris nustatytas į 0.0.0.0.

Nesuprantu, kodėl taip sunku sukurti savo API, kai reikia tik:

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

int httpResponseCode = http. POST (atsakymas);

Įdėkite šį mažą php kodą į bet kurį „Raspberry pi“ir galite atlikti sistemos () užduotis iš karto, remdamiesi telemetrija, pvz., Įjungti ventiliatorius arba įjungti šviesas, jei pakankamai sutemsta.

Keletas pastabų apie kodą:

WiFi.config (staticIP, šliuzas, potinklis, dns); // TURI būti po to, kai „Wi -Fi“prasideda kaip kvaila …

„WiFi.mode“(WIFI_STA); // PRIVALO, kitaip jis taip pat sukurs nepageidaujamą AP

Taip, dabar žinai. Taip pat IP konfigūracijų tvarka gali keistis per platformas, pirmiausia išbandžiau kitus pavyzdžius, kai buvo pakeistos šliuzo ir potinklio vertės. Kodėl reikia nustatyti statinį IP? Na, tai visiškai akivaizdu, jei jūsų tinkle yra tam skirta dėžutė, pvz., „Linux“serveris, kuriame veikia „isc dhcpd“, nenorite, kad šimtas milijonų žurnalo įrašų būtų iš ESP pabudus ir gavus IP iš DHCP. Maršrutizatoriai paprastai neregistruoja asociacijų, todėl jie bus nematomi. Tai yra energijos taupymo kaina.

V2 niekada negalėjo išsilaikyti dėl prastos kokybės akumuliatoriaus, o aš tiesiog įdėjau jį į adapterį, taigi, jei norite sukurti V1 arba V2, nepirkite minėtos baterijos, atlikite savo baterijų tyrimą (bet kuris 18650 daugiau nei 2000 mAh reklamuojami „Ebay“pajėgumai yra sukčiavimas su didele tikimybe).

Rekomenduojamas: