Satura rādītājs:

Meteoroloģiskā stacija NaTaLia: ar saules enerģiju darbināma meteoroloģiskā stacija, kas veikta pareizi: 8 soļi (ar attēliem)
Meteoroloģiskā stacija NaTaLia: ar saules enerģiju darbināma meteoroloģiskā stacija, kas veikta pareizi: 8 soļi (ar attēliem)
Anonim
Meteoroloģiskā stacija NaTaLia: Arduino ar saules enerģiju darbināma meteoroloģiskā stacija darīta pareizi
Meteoroloģiskā stacija NaTaLia: Arduino ar saules enerģiju darbināma meteoroloģiskā stacija darīta pareizi
Meteoroloģiskā stacija NaTaLia: Arduino ar saules enerģiju darbināma meteoroloģiskā stacija darīta pareizi
Meteoroloģiskā stacija NaTaLia: Arduino ar saules enerģiju darbināma meteoroloģiskā stacija darīta pareizi

Pēc viena gada veiksmīgas darbības divās dažādās vietās es dalos savos ar saules enerģiju darbināmos laika staciju projektu plānos un paskaidroju, kā tā kļuva par sistēmu, kas patiešām var izdzīvot ilgu laiku no saules enerģijas. Ja sekojat maniem norādījumiem un izmantojat tos pašus materiālus, kas uzskaitīti, jūs varat izveidot ar saules enerģiju darbināmu laika staciju, kas darbosies daudzus gadus. Faktiski vienīgais faktors, kas ierobežo tā darbības laiku, ir izmantotā akumulatora kalpošanas laiks.

1. darbība. Laika stacijas darbība

1, raidītājs: Ārā uzstādīta kaste ar saules paneli, kas periodiski nosūta laika telemetriju (temperatūra, mitrums, siltuma indekss, saules stiprums) uz iekštelpu uztvērēja bloku.

2, uztvērējs: iekštelpu iekārta, kas izgatavota no Raspberry PI 2 + Arduino Mega un kurai ir pievienots 433 Mhz RF uztvērējs datu uztveršanai. Manā iestatījumā šai ierīcei nav vietējās LCD displeja funkcionalitātes. Tas darbojas bezrūpīgi. Galvenā C programma rūpējas par ienākošo datu saņemšanu no Arduino, izmantojot sēriju, pēc tam datu reģistrēšanu teksta failā un pēdējo saņemto datu pieejamību, izmantojot telnet, citām ierīcēm, lai tos vaicātu.

Stacija kontrolē gaismas manās mājās, nolasot fotorezistoru (kas nosaka, vai ārā ir diena vai nakts). Uztvērējs manā gadījumā ir bez galvas, bet jūs varat viegli modificēt projektu, lai pievienotu LCD displeju. Viena no ierīcēm, kas izmanto, parsē un parāda stacijas laika apstākļu datus, ir mans otrs projekts: Ironforge NetBSD tosteris.

2. darbība. Pirmās versijas

Pirmās versijas
Pirmās versijas
Pirmās versijas
Pirmās versijas
Pirmās versijas
Pirmās versijas
Pirmās versijas
Pirmās versijas

Tīklā ir daudz saules projektu, taču daudzi no tiem pieļauj izplatītu kļūdu, ka sistēma laika gaitā no akumulatora izņem vairāk enerģijas, ko saules panelis varētu papildināt, īpaši mākoņainajos, tumšajos ziemas mēnešos.

Izstrādājot ar saules enerģiju darbināmu sistēmu, vienīgais, kas ir svarīgs, ir JAUDAS PATĒRIŅŠ, visām sastāvdaļām: MCU, radio raidītājam, sprieguma regulatoram utt.

Liela datora, piemēram, aveņu pi vai jaudas izsalkušas Wi -Fi ierīces, piemēram, ESP, izmantošana, lai savāktu un pārvadātu pāris bitu laika datus, būtu pārmērīgs darbs, bet, kā es to parādīšu šajā apmācībā, pat neliela Arduino tāfele ir.

Vislabāk vienmēr ir mērīt strāvu būvniecības laikā ar skaitītāju vai ar mērinstrumentu (noderīgi, ja darbības laikā mēģināt izmērīt nelielus lietošanas pieaugumus ļoti īsā laikā (milisekundēs)).

Pirmajā attēlā var redzēt manu pirmo (Arduino Nano Based) staciju un otro Arduino Barebone Atmega 328P plati.

Pirmajai versijai, lai gan tā strādāja perfekti (vides uzraudzībai un datu nosūtīšanai, izmantojot radio), bija pārāk liels enerģijas patēriņš ~ 46mA, un akumulators izlādējās dažu nedēļu laikā.

Visas versijas izmantoja šādu akumulatoru:

18650 6000mAh aizsargāta litija jonu uzlādējama akumulatora iebūvēta aizsardzības plāksne

ATJAUNINĀT šīs ScamFire baterijas. Lai gan tas ir diezgan vecs Instructable, es joprojām jutos spiests to labot šī viltus akumulatora dēļ. Nepērciet minēto akumulatoru, veiciet savus pētījumus par citām LION/LIPO baterijām, visas 3,7 V baterijas darbosies ar šo projektu.

Beidzot man bija laiks demontēt ScamFire akumulatoru, lai redzētu, kāda ir tā reālā jauda. Tāpēc mēs veiksim 2 aprēķinus blakus reālajai un "reklamētajai" jaudai.

Pirmkārt, šī ir viena lieta, ka šis akumulators ir viltots, un nekas, ko viņi apgalvo par to, nav taisnība, jaunās versijas ir vēl sliktākas, jo tās kopēja viltojumu, atstājot 2 centu aizsardzības ķēdi, tāpēc nekas neapturēs to izlādi līdz nullei.

Neliels raksts par LION/LIPO baterijām:

TLDR:

Tas nozīmē, ka šūnas maksimālais spriegums ir 4,2 V un ka "nominālais" (vidējais) spriegums ir 3,7 V.

Piemēram, šeit ir “klasiskā” 3,7 V/4,2 V akumulatora sprieguma profils. Spriegums sākas ar maksimālo 4,2 un lielāko akumulatora darbības laiku ātri samazinās līdz aptuveni 3,7 V. Kad esat sasniedzis 3,4 V, akumulators ir izlādējies, un pie 3,0 V izslēgšanas shēma atvieno akumulatoru.

Mani mērījumi, izmantojot manekena slodzi:

Akumulators uzlādēts: 4.1V

Ierobežojums ir iestatīts uz: 3.4V

Slodzes simulācija: 0,15A (manai ierīcei bija nelielas problēmas, ja tā bija zemāka par šo.)

Izmērītā jauda: 0,77 Ah, piešķiriet tai bezmaksas 0,8 Ah, kas ir 800 mAh, nevis reklamētajiem 6000 mAh!

Tā kā šim akumulatoram pat nebija aizsardzības ķēdes, es varēju brīvi nolaisties zemāk, bet pie 3,4 V pēc 10 minūtēm tas jau avarē līdz 3,0 V.

Tāpēc, veicot vienkāršus aprēķinus, akumulators nodrošina:

Teorētiski

Akumulatora spriegums = 3,7 V.

Jauda = 3,7x6000 = 22000 mWh

Īsts

Akumulatora spriegums = 3.7V Jauda = 3.7x800 = 2960 mWh

Versija: 0.1 ARDUINO NANO PAMATS

Pat ar LowPower bibliotēku Arduino nano patērē ~ 16 mA (miega režīmā) -> FAIL.

Teorētiski

Pavg = VxIavg = 5Vx16mA = 80 mW

Akumulatora darbības laiks = 22000/80 = 275 stundas = aptuveni 11 dienas

RealPavg = VxIavg = 5Vx16mA = 80 mW

Akumulatora darbības laiks = 800/80 = 10 stundas

Versija: 0.2 Atmega 328P Barebone

ATmega328 patērētā jauda lielā mērā ir atkarīga no tā, ko jūs ar to darāt. Vienkārši sēžot tur noklusējuma stāvoklī, tas var izmantot 16mA @ 5V, kamēr darbojas 16MHz.

Kad ATmega328P ir aktīvajā režīmā, tas nepārtraukti izpildīs vairākus miljonus norādījumu sekundē. Turklāt iebūvētās perifērijas ierīces no analogā uz digitālo pārveidotāju (ADC), sērijas perifērijas saskarni (SPI), taimeri 0, 1, 2, divu vadu saskarni (I2C), USART, sargsuņa taimeri (WDT) un izslēgšanas noteikšanu (BOD) patērē enerģiju.

Lai taupītu enerģiju, ATmega328P MCU atbalsta vairākus miega režīmus, un neizmantotās perifērijas ierīces var izslēgt. Miega režīmi atšķiras atkarībā no tā, kuras daļas paliek aktīvas, pēc miega ilguma un laika, kas vajadzīgs, lai pamostos (pamošanās periods). Miega režīmu un aktīvās perifērijas ierīces var vadīt, izmantojot AVR miega un barošanas bibliotēkas vai, precīzāk, ar lielisko mazjaudas bibliotēku.

Mazjaudas bibliotēka ir vienkārša lietošanā, bet ļoti spēcīga. Paziņojums LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); ievieto MCU SLEEP_MODE_PWR_DOWN no 16 ms līdz 8 s atkarībā no pirmā argumenta. Tas atspējo ADC un BOD. Izslēgšanas miega režīms nozīmē, ka visas mikroshēmas funkcijas ir atspējotas līdz nākamajam pārtraukumam. Turklāt ārējais oscilators tiek apturēts. Tikai līmeņa pārtraukumi INT1 un INT2, PIN maiņas pārtraukumi, TWI/I2C adrešu atbilstība vai WDT, ja tas ir iespējots, var pamodināt MCU. Tātad ar vienu paziņojumu jūs samazināsit enerģijas patēriņu. 3,3 V Pro Mini bez strāvas gaismas diodes un bez regulatora (skat. Zemāk), kurā darbojas paziņojums, enerģijas patēriņš ir 4,5 μA. Tas ir ļoti tuvu tam, kas minēts ATmega328P datu lapā izslēgšanas miega režīmā, ja WDT ir iespējots 4,2 μA (datu lapa ir saistīta ar avotiem). Tāpēc esmu diezgan pārliecināts, ka powerDown funkcija izslēdz visu, kas ir saprātīgi iespējams. Izmantojot paziņojumu LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, WDT tiks atspējots, un jūs nepamodīsieties, kamēr netiks iedarbināts pārtraukums.

Tātad, izmantojot barebone iestatījumu, mēs varam ieslēgt mikroshēmu miega režīmā uz 5 minūtēm, kamēr tā patērē ļoti maz enerģijas (0,04 mA bez perifērijas ierīcēm). Tomēr šī ir tikai Atmega 328P mikroshēma ar kristāla oscilatoru un nekas cits, šajā konfigurācijā izmantotais sprieguma pastiprinātājs, lai palielinātu akumulatora spriegumu no 3,7 V -> 5,0 V, arī patērē 0,01 mA.

Viena nemainīga sprieguma aizplūšana bija pievienotais foto rezistors, kas palielināja patēriņu miega režīmā līdz 1 mA (tas ietver visas sastāvdaļas).

Formula, lai aprēķinātu precīzu ierīces patēriņu gan miega, gan modināšanas režīmā, ir šāda:

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

Jons = 13 mA

Tas galvenokārt nāk no RF433 Mhz raidītāja:

Raidītājs:

Darba spriegums: 3V - 12V maks. strāvas patēriņš 12V Darba strāva: maks. Mazāk par 40mA un min 9mAR Rezonanses režīms: (SAW) Modulācijas režīms: ASK Darba frekvence: Eve 315MHz vai 433MHz Pārraides jauda: 25mW (315MHz pie 12V) Frekvences kļūda: +150kHz (maks.) Ātrums: mazāks par 10Kbps

Miega režīms = 1mA

Bez fotorezistora būtu ievērojami mazāk.

Trunona laiks Ton = 250 mS = 0,25 s

Miega laiks Tsleep = 5 min = 300 s

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

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

Iavg = 1,26 mA

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

Teorētiski

Akumulatora darbības laiks = 22000mWh/6mW = 3666 stundas = aptuveni 152 dienas

Īsts

Akumulatora darbības laiks = 800mWh/6mW = 133 stundas = aptuveni 5,5 dienas

Lai gan šīs joprojām bija labākas UltraFire sērijas, ko es sākotnēji izmantoju, varēja redzēt, ka bez saules paneļa vai zemā 1 mA patēriņa šis projekts ilgi neizdzīvos.

Jūtieties brīvi izveidot staciju un pierakstiet savus secinājumus un aprēķinus komentāros, un es atjaunināšu rakstu. Es arī novērtētu rezultātus ar dažādiem MCU un pastiprinātāju pārveidotājiem.

3. solis: Veiksmīgas laika stacijas izveide

Veiksmīgas laika stacijas izveide
Veiksmīgas laika stacijas izveide
Veiksmīgas laika stacijas izveide
Veiksmīgas laika stacijas izveide
Veiksmīgas laika stacijas izveide
Veiksmīgas laika stacijas izveide
Veiksmīgas laika stacijas izveide
Veiksmīgas laika stacijas izveide

Lai gan tā ir pirmā veiksmīgā versija, tajā ir nedaudz kļūdu attēlos, un es nevaru tos pārtaisīt, jo stacijas jau ir izvietotas. Abi attēlā redzamie sprieguma pastiprinātāji ir pieejami rakstīšanas laikā aeromodelēšanai un citiem lietojumiem. Pārveidojot savu staciju, es domāju par mazāka un efektīvāka sprieguma pastiprināšanas dēļa iegādi, tomēr mazāks izmērs noteikti nenozīmē, ka tā ir efektīvāka.

Jaunais mazais modulis attēlā, kuram pat nav indikatora, faktiski iztukšoja 3mA (*FAIL*), tāpēc es paliku pie vecās tāfeles:

PFM vadības DC-DC USB 0.9V-5V līdz 5V līdzstrāvas pastiprināšanas pastiprināšanas barošanas modulis

Rakstīšanas laikā šis modulis joprojām ir pieejams Ebay par 99 centiem, bet, ja jūs nolemjat izmantot citu pastiprinātāju, vienmēr pārbaudiet enerģijas patēriņu gaidīšanas režīmā. Izmantojot labas kvalitātes pastiprinātāju, tam nevajadzētu būt lielākam par manu (0,01 mA), lai gan uz kuģa esošā mazā gaismas diode bija jāizlodē.

4. solis: aparatūras saraksts

Aparatūras saraksts
Aparatūras saraksts
  • 18650 6000mAh aizsargāta litija jonu uzlādējama akumulatora iebūvēta aizsardzības plāksne
  • Atmega 328P16M 5V ar sāknēšanas ielādētāju
  • Adafruit DC Boarduino (ar Arduino saderīgs) komplekts (ar ATmega328) <tas būs labs ieguldījums, ja plānojat turpmākus kailu projektus
  • Fotogaismas jutīgs pretestība Fotorezistors Optoresistors 5mm GL5539
  • 1A 1000V diode 1N4007 IN4007 DO-41 taisngriežu diodes
  • PFM vadības DC-DC USB 0.9V-5V līdz 5V līdzstrāvas pastiprināšanas pastiprināšanas barošanas modulis
  • 1.6W 5.5V 266mA mini saules paneļa moduļa sistēmas epoksīda šūnu lādētājs DIY
  • TP405 5V mini USB 1A litija akumulatora uzlādes paneļa lādētāja modulis
  • 433 MHz RF raidītāja un uztvērēja saišu komplekts Arduino/ARM/MC tālvadības pultij <Komplektā ir gan raidītājs, gan uztvērējs
  • IP65 slēdža aizsarga sadales kārbas āra ūdensnecaurlaidīgs korpuss 150x110x70mm
  • Jauns DHT22 temperatūras un relatīvā mitruma sensora modulis Arduino
  • 1x220 omi, 2x10KOhm, 1xLED, 1xMini slēdzis, 1x1N4007diode
  • Adafruit 16 MHz keramikas rezonators / oscilators [ADA1873]
  • Arduino UNO/Mega utt uztvērēja stacijai + Raspberry PI 1/2/3
  • Skaidra akrila plastmasas kaste (pēc izvēles)

To visu var atrast ebay, es negribu reklamēt nevienu pārdevēju, izveidojot saites uz viņu lapām, un saites nākotnē tik un tā kļūs mirušas.

Piezīmes par aparatūras sarakstu:

Tikai gadījumā, ja jūs kaut kā ķieģeļu Atmega ar programmēšanu nopirkt vairāk no tiem, tas pats attiecas uz sprieguma pastiprinātāju un saules uzlādes kontrolieri.

Saules lādētājā ir 2 mazas krāsainas gaismas diodes, kuras tiek ieslēgtas tikai saules uzlādes gadījumā un norāda (sarkans-> uzlādē, zils-> pilnībā uzlādēts). Tos var arī nepārdot. Tas drīzāk dod nedaudz vairāk sulas akumulatoram uzlādes laikā.

Kā redzat, manā sarakstā nav akumulatoru turētāju. Kāpēc? Jo tie ir neuzticami. Man bija neskaitāmas reizes, kad akumulators izkļuva no turētāja un zaudēja savienojumu. It īpaši, ja jūsu uzstādīšana ir uzstādīta uz augsta trauka staba, piemēram, manējā, atvērta jebkādiem skarbiem laika apstākļiem. Es pat ieslēdzu akumulatoru turētājā ar 2 rāvējslēdzējiem, un tas joprojām spēja izkļūt. Nedariet to, vienkārši noņemiet akumulatora ārējo pārklājumu un pielodējiet vadus tieši akumulatora apakšdaļā, kas satur aizsardzības ķēdi pret uzlādi (neapejiet aizsardzību). Akumulatora turētāju var izmantot tikai akumulatora turēšanai ierīcē.

TP405 5V mini USB 1A litija akumulatora uzlādes panelis: diemžēl šajā panelī nav iekļauta saules paneļa reversās strāvas aizsardzība, tāpēc, lai pārtrauktu strāvas padevi, jums būs jānovieto vēl 1 diode starp vienu saules paneļa kāju un uzlādes ķēdi naktī ieplūst atpakaļ saules panelī.

5. solis: montāža

Montāža
Montāža
Montāža
Montāža
Montāža
Montāža

Šī tāfele satur salīdzinoši maz sastāvdaļu, un marķieri uz tāfeles ir diezgan vienkārši.

Pārliecinieties, ka NELIETOJAT Atmega328P nepareizi (tas var sakarst un sabojāt mikroshēmu, var iznīcināt arī sprieguma pastiprinātāju).

Šajā iestatījumā mikroshēma ir vērsta uz leju (mazais U cauruma marķējums PIN1). Visām pārējām sastāvdaļām jābūt acīmredzamām.

LDR izmantojiet ekranētu kabeli (piem., Audio kabelis no CDrom. Dažos gadījumos (daudzu nedēļu pārbaudes laikā) izrādījās, ka tas traucē radio signāla pārraidei. Šī bija viena no tām kļūdām, kuras bija grūti novērst, tādēļ, ja nevēlaties nepatikšanas, vienkārši izmantojiet ekranētu kabeli.

LED: Kastes apakšdaļā esošā gaismas diode sākotnēji tika pievienota mirgošanai, kad notiek izejošā radio pārraide, bet vēlāk es to uzskatīju par enerģijas izšķiešanu, un sāknēšanas laikā tas mirgo tikai 3 reizes.

TP: ir pārbaudes punkts strāvas mērīšanai visā ķēdē.

DHT22: nepērciet lēto DHT11, tērējiet par 50 centiem vairāk, lai iegūtu balto DHT22, kas var izmērīt arī negatīvo temperatūru.

6. darbība: korpusa dizains

Korpusa dizains
Korpusa dizains
Korpusa dizains
Korpusa dizains
Korpusa dizains
Korpusa dizains

Lai gan tas ir nedaudz pārspīlēts, tika izveidots 3D drukāts kubs (weather_cube), lai noturētu vietā DHT22 temperatūras sensoru. Kubs ir pielīmēts IP kastes apakšā, un tajā ir tikai 1 caurums, lai gaiss varētu sasniegt sensoru. Esmu pievienojis tīklu pie bedres pret bitēm, lapsenēm un citām mazām mušām.

Pēc izvēles var izmantot ārēju kārbu, lai padarītu staciju ūdensnecaurlaidīgāku, ja to uzstādīsit uz trauka staba atklātā vietā.

Ideja 1 noderīgai funkcijai: lielas metāla jumta plāksnes pievienošana 1-2 cm virs kastes, kas vasarā rada ēnu no saules, lai gan tas varētu arī atņemt mūsu noderīgo saules gaismu no paneļa. Jūs varat nākt klajā ar dizainu, kas atdala paneli un kasti (atstājot paneli saulē, kasti ēnā).

Attēlos: viena no stacijām pēc 1 gada tika izņemta no darba vides, akumulatora spriegums joprojām ir satriecošs 3,9 V, nevienai kastes daļai nav ūdens bojājumu, lai gan tīkls, ko pielīmēju kuba apakšā, tika saplēsts. Iemesls, kāpēc stacija bija jāapkalpo, ir savienojuma kļūme LDR savienotājā, lai gan šķiet, ka pārejas kabelis joprojām ir vietā, savienojums bija salauzts, tāpēc tapa dažreiz peldēja, nodrošinot sliktu LDR analogo rādījumu. Ieteikums: ja izmantojat standarta datora savienojuma kabeļus, pēc tam, kad stacija darbojas nevainojami, pielīmējiet tos visus, lai izvairītos no tā.

7. solis: programmatūra

Programmatūra
Programmatūra

Programmatūras kodam būs nepieciešamas 3 ārējās bibliotēkas (LowPower, DHT, VirtualWire). Pēdējā laikā man bija problēmas viegli atrast dažus no tiem tiešsaistē, tāpēc pievienoju tos atsevišķā ZIP failā. Neatkarīgi no tā, kādu OS jūs izmantojat Linux/Windows, vienkārši atrodiet savu Arduino IDE bibliotēkas mapi un izvelciet to tur.

Tikai piezīme, neatkarīgi no tā, ka es jau neiesaku pirkt DHT11, ja jūs izmantojat nepareiza tipa DHT sensoru, programma inicializācijas sadaļā sākumā vienkārši karājas uz visiem laikiem (jūs pat neredzēsit, ka starta indikators mirgo 3 reizes).

Galvenais cilpas kods ir ļoti vienkāršs, vispirms tas nolasa vides vērtības (temperatūra, siltuma indekss, mitrums, saules enerģija), nosūta tās pa radio un pēc tam izmanto mazjaudas bibliotēku, lai Arduino iemigtu uz 5 minūtēm.

Es atklāju, ka, samazinot pārraides ātrumu, palielināsies radio pārraides stabilitāte. Stacija sūta ļoti mazu datu apjomu, 300 bps ir vairāk nekā pietiekami. Tāpat neaizmirstiet, ka raidītājs darbojas tikai no apm. 4.8V, nākotnē 3.3V versijā tas var izraisīt vēl sliktāku pārraides kvalitāti (datu sūtīšana caur sienām un citi šķēršļi). Man radās problēma, izmantojot Arduino Mega, kas pievienota Raspberry PI 2, kas baro Mega no PI, un es nesaņēmu nekādu pārraidi. Risinājums bija barot Mega no atsevišķas ārējas 12 V barošanas avota.

8. darbība. Versija 2 (balstīta uz ESP32)

2. versija (balstīta uz ESP32)
2. versija (balstīta uz ESP32)
2. versija (balstīta uz ESP32)
2. versija (balstīta uz ESP32)
2. versija (balstīta uz ESP32)
2. versija (balstīta uz ESP32)

Viss, kas var salūzt, sabojāsies, citējot veco labo Mērfiju, un galu galā pēc gadiem stacijas neizdevās noslēpumainā veidā. Viens sāka sūtīt bezjēdzīgus saules datus, kas pieauga līdz desmitiem tūkstošu, un tas nav iespējams šādu iemeslu dēļ: Arduino panelī ir 6 kanāli (8 kanāli Mini un Nano, 16 Mega), 10 bitu analogo ciparu pārveidotājs. Tas nozīmē, ka ievades spriegums no 0 līdz 5 voltiem tiks kartēts veselos skaitļos no 0 līdz 1023. Tāpēc pēc radio, LDR nomaiņas un Atmega 328P vairākkārtējas pārprogrammēšanas es padevos un nolēmu, ka ir pienācis laiks jauninājumiem. Iesim ESP32.

Tāfele, ko es izmantoju, bija: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi un Bluetooth karte Rev1 MicroPython 4MB FLASH

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

Mikrokontrolleris ESP-32

Darba spriegums 3,3 V digitālās I/O tapas 19 Analogās ieejas tapas 6 Pulksteņa ātrums (maks.) 240 MHz Zibspuldze 4M baiti Garums 5 mm Platums 2,54 mm Svars 4 g

Kam atšķirībā no attēlā redzamā nav LOLIN logotipa (viltots no Ķīnas). Mans pirmais patīkamais pārsteigums bija tas, ka uz tāfeles uzdrukātā pinout sakrita ar Arduino pinout! Pēc darīšanas ar tik daudziem noname dēļiem, kur man visu dienu bija jāmeklē pinouts miris noguris, pieļaujot kļūdas, beidzot tāfele, kurā pinout ir taisni uz priekšu WoW!

Tomēr šeit ir stāsta tumšā puse:

Sākotnēji es esmu savienojis LDR ar A15, kas ir 12. tapa, jo bija vieglāk piespraust tapas kopā. Tad man ir 4095 rādījumi (tas ir maksimums, ko varat iegūt, izmantojot AnlogRead par ESP32), kas mani satrieca, jo viss iemesls, kāpēc es pārbūvēju staciju, bija vecās LDR rādījumu pārtraukums (DHT joprojām darbojās labi)). Tātad izrādās, ka:

Esp 32 integrē divus 12 bitu ACD reģistrus. ADC1 līdz 8 kanāliem, kas pievienoti GPIO 32-39, un ADC2 līdz 10 kanāliem citā tapā. Lieta ir tāda, ka ESP32 izmanto ADC2, lai pārvaldītu wifi funkcijas, tādēļ, ja izmantojat Wifi, jūs nevarat izmantot šo reģistru. ADC draivera API atbalsta ADC1 (8 kanāli, pievienoti GPIO 32 - 39) un ADC2 (10 kanāli, pievienoti GPIO 0, 2, 4, 12 - 15 un 25 - 27). Tomēr ADC2 lietošanai ir daži ierobežojumi lietojumprogrammai:

ADC2 izmanto Wi-Fi draiveris. Tāpēc lietojumprogramma var izmantot ADC2 tikai tad, ja Wi-Fi draiveris nav palaists. Dažas no ADC2 tapām tiek izmantotas kā siksnas (GPIO 0, 2, 15), tāpēc tās nevar brīvi izmantot. Tā tas ir šādos oficiālajos attīstības komplektos:

Tātad, savienojot LDR no tapas 12 līdz A0, kas ir VP, viss tika atrisināts, bet es nesaprotu, kāpēc viņi pat uzskaita ADC2 tapas kā pieejamas ražotājiem. Cik daudzi citi hobisti iztērēja daudz laika, līdz to izdomāja? Vismaz atzīmējiet nederīgās tapas ar sarkanu vai kaut ko, vai arī nepieminiet to rokasgrāmatā, lai citi ražotāji par tām varētu uzzināt tikai tad, ja tās patiešām ir vajadzīgas. Viss ESP32 mērķis ir to izmantot kopā ar WIFI, visi to izmanto ar WIFI.

Labs sākums, kā iestatīt Arduino IDE šai plāksnei:

Lai gan es to ievietoju kodā, tas atkal notiek:

Šis kods var netikt apkopots citiem ESP32 modeļiem, izņemot Weemos LOLIN 32!

Veidot iestatījumus: -Izmantot augšupielādi/sērijas: 115200 -Izmantojiet CPU/RAM: 240Mhz (Wifi | BT) -Izmantojiet zibspuldzes frekvenci: 80 Mhz

Tīklā ir daudz uz ESP32 balstītu meteoroloģisko staciju, tās ir daudz izplatītākas nekā mana 1. versija ar bezkaulu mikroshēmu, jo tās ir vieglāk uzstādīt, jums nav nepieciešams programmētājs, vienkārši pievienojiet ierīci USB un ieprogrammējiet to un to dziļā miega režīms ir lieliski piemērots ilgstošai darbībai no akumulatora. Tūlīt pēc nūjas šī bija pirmā lieta, ko es pārbaudīju pat pirms lodēšanas izlaušanas tapās, jo, kā es atzīmēju vairākas vietas šajā projektā, Svarīgākā lieta ir enerģijas patēriņš, un ar pašreizējo (viltoto) akumulatoru un mazu saules paneli gaidīšanas režīms jauda nevar pārsniegt 1-2 mA, pretējā gadījumā projekts nespēs sevi uzturēt ilgtermiņā.

Tas atkal bija patīkams pārsteigums, ka dziļā miega režīms darbojas kā reklamēts. Dziļā miega laikā strāva bija tik zema, ka mans lētais multimetrs to pat nevarēja izmērīt (der man).

Sūtot datus, strāva bija aptuveni 80 mA (kas ir aptuveni 5 reizes vairāk nekā tad, kad Atmega 328P pamodās un pārraidīja), tomēr neaizmirstiet, ka ar V1 miega režīmā LDR bija vidēji 1mA jaudas izlāde (kas bija atkarīgs arī no gaismas līmeņa un mainījās no 0,5 mA līdz 1 mA), kas tagad vairs nav.

Tagad, kad UltraFire akumulators ir atmaskots, ja izmantojat to pašu akumulatoru, jūs varat sagaidīt:

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

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

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

Teorētiski

Akumulatora darbības laiks = 22000 mWh/2,5 mW = 8800 stundas = aptuveni 366 dienas

Īsts

Akumulatora darbības laiks = 800 mWh/2,5 mW = 320 stundas = aptuveni 13 dienas

Man nebija iespējas precīzi izmērīt ieslēgšanās laiku, bet, veicot pielāgojumus, tas pārspēj aptuveni 2 sekundes.

Es negribēju pavadīt pēcpusdienu, lai kodētu visu, tāpēc meklēju citas meteoroloģiskās stacijas vietnē Instructables, pamatojoties uz ESP32, lai redzētu, ko tās dara datu glabāšanai. Diemžēl pamanīju, ka viņi izmanto neelastīgas un ierobežotas vietnes, piemēram, weathercloud. Tā kā es neesmu “mākoņa” cienītājs un viņu kods jau sen ir salauzts, jo kopš tā laika vietne ir mainījusi savu API, esmu veltījis savas 10 minūtes, lai izveidotu pielāgotu risinājumu, jo tas nav tik grūti, kā varētu domāt. Sāksim!

Pirmkārt, šim projektam nav shēmas plates attēla atsevišķi, jo tajā tiek izmantotas tieši tādas pašas sastāvdaļas (atvainojiet, ka tas ir pielodēts neglītā maizes dēļa attēlā) kā V1 ar atšķirību, ka viss darbojas 3,3 V. DHT savienoja ar pullup uz VCC, LDR velk uz leju ar 10k. Problēma, ko varētu redzēt ar 18650 baterijām, piemēram, manu ķīniešu viltojumu (6500 mAh ultra saules uguns lol: D), ir tā, ka tās sāk izlādes līkni no aptuveni 4,1 V jauna vecuma un turpina darboties, līdz sākas to izslēgšanas shēma, lai apturētu šūnu bojājumus (tiem, kuriem paveicas to iegūt). Tas mums nekur nav piemērots kā 3.3V ieeja. Lai gan šajā projektā LOLIN ir litija akumulatora savienotājs un lādēšanas ķēde, es vēlējos atjaunot lielāko daļu to, ko es varētu no vecās stacijas, tāpēc ar veco 18650 jūs nevarat izmantot šo iebūvēto lādētāju. Risinājums bija vienkārši: es no vecā sprieguma pastiprinātāja nogriezu 5V pielodētu mikro USB kabeli, un voila problēma ir atrisināta, jo microUSB plāksnei ir regulators.

Tātad atšķirība starp veco un jauno versiju, kas vecajā akumulatorā nodrošina 3.7V -> palielināta līdz 5V -> ardu darbojas ar 5V -> visas sastāvdaļas darbojas ar 5V.

Jaunajā: akumulators nodrošina 3,7 V -> palielināts līdz 5 V -> regulēts, izmantojot ESP32 borta reg. -> visas sastāvdaļas darbojas ar 3,3 V.

Programmatūras ziņā mums būs nepieciešama arī cita DHT bibliotēka, Arduino DHT nav saderīga ar ESP. Tas, kas mums vajadzīgs, tiek saukts par DHT ESP.

Es sāku savu kodu balstīt uz šī koda sniegto DHT piemēru. Koda darbība ir šāda:

1, iegūstiet vides datus no fotoelementa DHT + saules datiem

2, izveidojiet savienojumu ar wifi ar statisku IP

3, ievietojiet datus php skriptā

4, Ejiet gulēt 10 minūtes

Kā jūs pamanīsit, es noregulēju efektivitāti, lai absolūti samazinātu pamošanās laiku, jo tas patērē 5 reizes vairāk enerģijas nekā vecais projekts, kad tas tika ieslēgts. Kā es to izdarīju? Pirmkārt, ja ir jebkāda veida kļūda, funkcija getTemperature () atgriezīsies ar nepatiesu (tas nozīmē, ka atkal gulēs 10 minūtes). Tas var būt tā, ka DHT sensoru nevar uzsākt vai nav pieejams Wi -Fi savienojums. Kā pamanāt, tika noņemta arī parastā while () cilpa, lai mūžīgi mēģinātu izveidot savienojumu ar wifi, bet tur vajadzēja atstāt 1 sekundes aizkavi, pretējā gadījumā tas ne vienmēr izveidos savienojumu, un tas ir atkarīgs arī no piekļuves punkta veida, slodzes utt. notiks, ar 0,5s man radās nekonsekventa uzvedība (dažreiz tā nevarēja izveidot savienojumu). Ja kāds zina labāku veidu, kā to izdarīt, lūdzu, atstājiet to komentāros. Tikai tad, kad tiek nolasīti DHT dati UN ir izveidots Wi -Fi savienojums, tas mēģinās ievietot datus tīmekļa servera skriptā. Visu veidu laika izšķērdēšanas funkcijas, piemēram, Serial.println (), ir atspējotas arī parastajā darbības režīmā. Kā serveris es arī izmantoju IP, lai izvairītos no nevajadzīgas DNS uzmeklēšanas, manā kodā gan noklusējuma vārteja, gan DNS serveris ir iestatīts uz 0.0.0.0.

Es nesaprotu, kāpēc ir tik grūti izveidot savu API, ja viss ir nepieciešams:

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

int httpResponseCode = http. POST (atbilde);

Jūs ievietojat šo mazo php kodu jebkuram aveņu pi, un jūs varat uzreiz veikt sistēmas () uzdevumus, pamatojoties uz telemetriju, piemēram, ieslēgt ventilatorus vai ieslēgt gaismas, ja kļūst pietiekami tumšs.

Dažas piezīmes par kodu:

WiFi.config (staticIP, vārteja, apakštīkls, dns); // JĀBŪT pēc Wifi jāsāk cik mēms …

WiFi.mode (WIFI_STA); // MUST citādi tas arī radīs nevēlamu AP

Jā, tagad jūs zināt. Arī IP konfigurāciju secība var mainīties, izmantojot platformas, vispirms izmēģināju citus piemērus, kur tika pārslēgtas vārtejas un apakštīkla vērtības. Kāpēc iestatīt statisku IP? Tas ir diezgan acīmredzami, ja jūsu tīklā ir īpaša kastīte, piemēram, Linux serveris, kurā darbojas isc dhcpd, jūs nevēlaties simt miljonu žurnāla ierakstu no ESP pamodināšanas un IP iegūšanas no DHCP. Maršrutētāji parasti nereģistrē asociācijas, lai tās neredzētu. Šī ir enerģijas taupīšanas cena.

Sliktas kvalitātes akumulatora dēļ V2 nekad nav spējis sevi uzturēt, un es to vienkārši esmu uzlicis uz adaptera, tādēļ, ja vēlaties izveidot V1 vai V2, nepērciet minēto akumulatoru, veiciet savu izpēti par baterijām (jebkura 18650 vairāk nekā 2000mAh reklamētā jauda Ebay ir krāpšana ar lielu varbūtību).

Ieteicams: