Sisällysluettelo:

NaTaLia -sääasema: Arduinon aurinkovoimalla toimiva sääasema tehty oikein: 8 vaihetta (kuvilla)
NaTaLia -sääasema: Arduinon aurinkovoimalla toimiva sääasema tehty oikein: 8 vaihetta (kuvilla)

Video: NaTaLia -sääasema: Arduinon aurinkovoimalla toimiva sääasema tehty oikein: 8 vaihetta (kuvilla)

Video: NaTaLia -sääasema: Arduinon aurinkovoimalla toimiva sääasema tehty oikein: 8 vaihetta (kuvilla)
Video: Proyectos con arduino por jóvenes hechos durante taller en línea 2024, Heinäkuu
Anonim
NaTaLia -sääasema: Arduinon aurinkovoimalla toimiva sääasema tehty oikein
NaTaLia -sääasema: Arduinon aurinkovoimalla toimiva sääasema tehty oikein
NaTaLia -sääasema: Arduinon aurinkovoimalla toimiva sääasema tehty oikein
NaTaLia -sääasema: Arduinon aurinkovoimalla toimiva sääasema tehty oikein

Yhden vuoden onnistuneen toiminnan jälkeen kahdessa eri paikassa jaan aurinkovoimalla toimivien sääasemaprojektisuunnitelmiani ja selitän, kuinka siitä kehittyi järjestelmä, joka voi todella selviytyä pitkään aurinkovoimalla. Jos noudatat ohjeita ja käytät samoja materiaaleja kuin luetellut, voit rakentaa aurinkovoimalla toimivan sääaseman, joka toimii monta vuotta. Itse asiassa ainoa tekijä, joka rajoittaa sen kestoa, on käyttämäsi akun käyttöikä.

Vaihe 1: Sääaseman toiminta

1, lähetin: Ulkoasennettava laatikko, jossa aurinkopaneeli, joka lähettää säätelemetriaa (lämpötila, kosteus, lämpöindeksi, aurinkovoima) säännöllisesti sisäiseen vastaanotinyksikköön.

2, Vastaanotin: Sisäyksikkö, joka on valmistettu Raspberry PI 2 + Arduino Megasta ja johon on liitetty 433 Mhz RF -vastaanotin tiedonsiirtoa varten. Asetuksissani tällä laitteella ei ole paikallista LCD -näyttötoimintoa. Se toimii huolettomasti. Pääohjelma C huolehtii siitä, että se vastaanottaa saapuvat tiedot Arduinolta sarjan kautta, kirjaa tiedot tekstitiedostoon ja asettaa viimeksi vastaanotetut tiedot saataville telnetin kautta muille laitteille kyselyä varten.

Asema ohjaa kotini valoja lukemalla valoresistoria (joka määrittää, onko ulkona päivä vai yö). Vastaanotin on päätäni minun tapauksessani, mutta voit helposti muokata projektia LCD -näytön lisäämiseksi. Yksi laitteista, joka käyttää, jäsentää ja näyttää aseman säätietoja, on toinen projektini: Ironforge NetBSD -leivänpaahdin.

Vaihe 2: Ensimmäiset versiot

Ensimmäiset versiot
Ensimmäiset versiot
Ensimmäiset versiot
Ensimmäiset versiot
Ensimmäiset versiot
Ensimmäiset versiot
Ensimmäiset versiot
Ensimmäiset versiot

Verkossa on paljon aurinkoprojekteja, mutta monet niistä tekevät yleisen virheen, jonka mukaan järjestelmä ottaa ajan myötä enemmän energiaa akusta, mitä aurinkopaneeli voi täydentää, varsinkin pilvisen ja pimeän talvikuukauden aikana.

Kun suunnittelet aurinkovoimalla toimivaa järjestelmää, ainoa asia on VIRRANKULUTUS kaikissa komponenteissa: MCU, radiolähetin, jännitesäädin jne.

Suuren tietokoneen, kuten vadelmapi: n tai virtaa nälkäisen wifi -laitteen, kuten ESP, käyttäminen vain parin bitin säätietojen keräämiseksi ja kuljettamiseksi olisi liioittelua, mutta kuten näytän tässä opetusohjelmassa, jopa pieni Arduino -levy on.

Parasta on aina mitata virta rakennusprosessin aikana mittarilla tai mittakaavalla (hyödyllistä, kun yrität mitata pieniä käytön piikkejä käytön aikana hyvin lyhyellä aikavälillä (millisekuntia)).

Ensimmäisessä kuvassa näet ensimmäisen (Arduino Nano Based) asemani ja toisen Arduino Barebone Atmega 328P -levyn.

Ensimmäisessä versiossa, vaikka se toimi täydellisesti (ympäristön seuranta ja datan lähettäminen radion kautta), virrankulutus oli liian korkea ~ 46 mA ja akku tyhjeni muutamassa viikossa.

Kaikki versiot käyttivät seuraavaa akkua:

18650 6000 mAh: n suojattu ladattava litiumioniakku Sisäänrakennettu suojalevy

PÄIVITÄ nämä ScamFire -akut. Vaikka tämä on melko vanha Instructable, tunsin silti pakko korjata sen tämän väärennetyn akun vuoksi. ÄLÄ osta mainittua akkua, tee oma tutkimuksesi muista LION/LIPO -akuista, kaikki 3,7 V: n akut toimivat tämän projektin kanssa.

Lopulta minulla oli aikaa purkaa ScamFire -akku nähdäkseni, mikä sen todellinen kapasiteetti on. Siksi teemme kaksi laskelmaa rinnakkain todellisen ja "mainostetun" kapasiteetin kanssa.

Ensinnäkin se on yksi asia, että tämä akku on väärennös, eikä mikään, mitä he väittävät siitä, on totta, uudet versiot ovat vielä pahempia, koska ne kopioivat väärennöksen jättämällä pois 2 sentin suojapiirin, joten mikään ei estä heitä tyhjentymästä nollaan.

Pieni artikkeli LION/LIPO-akuista:

TLDR:

Tämä tarkoittaa sitä, että kennon maksimijännite on 4,2 V ja että "nimellinen" (keskimääräinen) jännite on 3,7 V.

Tässä on esimerkiksi "klassisen" 3,7 V/4,2 V -akun jänniteprofiili. Jännite alkaa maksimista 4,2 ja laskee nopeasti noin 3,7 V: een suurimman osan akun kestosta. Kun painat 3,4 V, akku on tyhjä ja 3,0 V: n katkaisupiiri irrottaa akun.

Mittaukseni tyhjäkuormalla:

Akku ladattu: 4.1V

Katkaisu asetettu: 3.4V

Kuormitussimulaatio: 0,15 A (laitteellani oli hieman ongelmia, kun se laski tätä alle.)

Mitattu kapasiteetti: 0,77 Ah, anna sille ilmainen 0,8 Ah, joka on 800 mAh mainostetun 6000 mAh: n sijasta!

Koska tällä akulla ei ollut edes suojapiiriä, voisin vapaasti laskea alas, mutta 3,4 V: n jännitteellä 10 minuutin kuluttua se jo kaatuu 3,0 V: iin.

Siksi akku tarjoaa yksinkertaisilla laskelmilla:

Teoreettinen

Akun jännite = 3,7 V.

Teho = 3,7x6000 = 22000 mWh

Todellinen

Akun jännite = 3,7 V Teho = 3,7 x 800 = 2960 mWh

Versio: 0.1 ARDUINO NANO BASED

Jopa LowPower -kirjaston kanssa Arduino nano kuluttaa ~ 16 mA (lepotilassa) -> FAIL.

Teoreettinen

Pavg = VxIavg = 5Vx16mA = 80 mW

Akun kesto = 22000/80 = 275 tuntia = noin 11 päivää

RealPavg = VxIavg = 5Vx16mA = 80 mW

Akun kesto = 800/80 = 10 tuntia

Versio: 0.2 Atmega 328P Barebone

ATmega328: n kuluttama teho riippuu paljon siitä, mitä teet sen kanssa. Se vain istuu siellä oletustilassa, ja se voi käyttää 16 mA @ 5 V: tä, kun se toimii 16 MHz: n taajuudella.

Kun ATmega328P on aktiivitilassa, se suorittaa jatkuvasti useita miljoonia ohjeita sekunnissa. Lisäksi sisäiset oheislaitteet analogisesta digitaalimuuntimeen (ADC), sarjaperifeerinen liitäntä (SPI), ajastin 0, 1, 2, kaksi johdinliitäntää (I2C), USART, vahtikoira-ajastin (WDT) ja Brown-out-tunnistus (BOD) kuluttavat virtaa.

Virran säästämiseksi ATmega328P MCU tukee useita lepotilaa ja käyttämättömät oheislaitteet voidaan kytkeä pois päältä. Unitilat eroavat toisistaan osien ollessa aktiivisina, unen keston ja heräämiseen tarvittavan ajan mukaan (herätysjakso). Lepotilaa ja aktiivisia oheislaitteita voidaan ohjata AVR-virransäästö- ja virtakirjastoilla tai tarkemmin sanoen erinomaisella pienitehoisella kirjastolla.

Pienitehoinen kirjasto on helppokäyttöinen, mutta erittäin tehokas. Väite LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); asettaa MCU: n SLEEP_MODE_PWR_DOWN -tilaan 16 ms - 8 s ensimmäisestä argumentista riippuen. Se poistaa ADC: n ja BOD: n käytöstä. Virrankatkaisu tarkoittaa, että kaikki sirutoiminnot ovat poissa käytöstä seuraavaan keskeytykseen asti. Lisäksi ulkoinen oskillaattori pysäytetään. Vain INT1- ja INT2 -tason keskeytykset, nastanvaihdon keskeytykset, TWI/I2C -osoitteen vastaavuus tai WDT, jos käytössä, voivat herättää MCU: n. Joten yhdellä lausunnolla minimoit energiankulutuksen. 3.3 V: n Pro Mini -laitteessa, jossa ei ole virran merkkivaloa ja ilman säädintä (katso alla), joka käyttää ilmoitusta, energiankulutus on 4,5 μA. Se on hyvin lähellä sitä, mitä on mainittu ATmega328P-lomakkeessa virrankatkaisun unen ollessa WDT käytössä 4,2 μA (tietolomake linkitetty lähteisiin). Siksi olen melko varma, että powerDown -toiminto sulkee kaiken kohtuudella mahdollisen. Lauseella LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF); WDT poistetaan käytöstä etkä herää ennen kuin keskeytys laukaistaan.

Barebone -asetuksella voimme siis siirtää sirun lepotilaan 5 minuutiksi, kun se kuluttaa hyvin vähän energiaa (0,04 mA ilman oheislaitteita). Tämä on kuitenkin vain Atmega 328P -siru, jossa on kideoskillaattori, eikä mitään muuta. Tässä kokoonpanossa käytetty jännitteenvahvistin, joka lisää akun jännitettä 3,7 V -> 5,0 V, kuluttaa myös 0,01 mA.

Yksi vakiojännitteen tyhjennys oli lisätty valokuvavastus, joka nosti virrankulutuksen lepotilassa yhteen 1 mA: een (tämä sisältää kaikki komponentit).

Kaava laitteen tarkan kulutuksen laskemiseksi sekä lepotilassa että herätystilassa on:

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

Ioni = 13 mA

Tämä tulee enimmäkseen RF433 Mhz -lähettimestä:

Lähetin:

Käyttöjännite: 3V - 12V max. virrankulutus 12 V Työskentelyvirta: enintään Alle 40mA ja min 9mAR Resonanssitila: (SAW) Modulaatiotila: ASK Työskentelytaajuus: Eve 315MHz tai 433MHz Lähetysteho: 25mW (315MHz 12V) Taajuusvirhe: +150kHz (enintään) Nopeus: alle 10Kbps

Nukkuu = 1mA

Olisi huomattavasti vähemmän ilman valovastusta.

Trunon -aika Ton = 250 mS = 0,25 s

Uniaika 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

Teoreettinen

Akun kesto = 22000 mWh/6 mW = 3666 tuntia = noin 152 päivää

Todellinen

Akun kesto = 800 mWh/6 mW = 133 tuntia = noin 5,5 päivää

Vaikka nämä olivat edelleen parempi UltraFire -sarja, mitä alunperin käytin, huomasit, että ilman aurinkopaneelia tai pientä 1 mA: n kulutusta tämä projekti ei kestäisi kauan.

Voit vapaasti rakentaa aseman ja kirjoittaa havainnot ja laskelmat kommentteihin, niin päivitän artikkelin. Arvostaisin myös tuloksia erilaisilla MCU -yksiköillä ja tehostusmuuntimilla.

Vaihe 3: Rakenna onnistunut sääasema

Onnistuneen sääaseman rakentaminen
Onnistuneen sääaseman rakentaminen
Onnistuneen sääaseman rakentaminen
Onnistuneen sääaseman rakentaminen
Onnistuneen sääaseman rakentaminen
Onnistuneen sääaseman rakentaminen
Onnistuneen sääaseman rakentaminen
Onnistuneen sääaseman rakentaminen

Vaikka se on ensimmäinen onnistunut versio, se sisältää hieman epäonnistumista kuvissa, enkä voi muokata niitä, koska asemat ovat jo käytössä. Kaksi kuvassa näkyvää jännitteenvahvistinta ovat saatavissa tätä kirjoitettaessa lentokonemallinnukseen ja muihin sovelluksiin. Kun suunnittelin asemaani uudelleen, ajattelin hankkia pienemmän ja tehokkaamman jänniteasennuslevyn, mutta pienempi koko ei varmasti tarkoita, että se olisi tehokkaampi.

Kuvan uusi pieni moduuli, jossa ei ole edes merkkivaloa, itse asiassa tyhjensi 3 mA (*FAIL*), joten jäin vanhan levyn kanssa:

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

Tätä kirjoitettaessa tämä moduuli on edelleen saatavilla Ebayssa 99 sentillä, mutta jos päätät käyttää toista tehostinta, tarkista aina valmiustilan virrankulutus. Hyvälaatuisella tehostimella se ei saisi olla suurempi kuin minun (0,01 mA), vaikka pienet LED-valot jouduttiin poistamaan juotoksesta.

Vaihe 4: Laitelista

Laitteistoluettelo
Laitteistoluettelo
  • 18650 6000 mAh: n suojattu ladattava litiumioniakku, sisäänrakennettu suojalevy
  • Atmega 328P16M 5V käynnistyslataimella
  • Adafruit DC Boarduino (Arduino -yhteensopiva) -sarja (w/ATmega328) <tästä tulee hyvä sijoitus, jos teet tulevia paljaita projekteja
  • Valovaloherkkä vastus Valoresistori Optoresistori 5mm GL5539
  • 1A 1000V diodi 1N4007 IN4007 DO-41 tasasuuntaajan diodit
  • PFM-ohjaus DC-DC USB 0.9V-5V-5V dc Boost Step-up Power Supply Module
  • 1.6W 5.5V 266mA Mini aurinkopaneelimoduulijärjestelmä Epoksi -kennolaturi DIY
  • TP405 5V Mini USB 1A litiumakun latauslevyn latausmoduuli
  • 433 MHz: n RF -lähetin- ja vastaanotinlinkkisarja Arduino/ARM/MC -kaukosäätimelle <Kit, sisältää sekä lähettimen että paljastimen
  • IP65 Kytkinsuojakytkentärasia, vedenpitävä ulkokotelo 150x110x70mm
  • Uusi DHT22 -lämpötila- ja suhteellisen kosteusanturimoduuli Arduinolle
  • 1x220 ohmia, 2x10KOhm, 1xLED, 1x minikytkin, 1x1N4007diodi
  • Adafruit 16 MHz keraaminen resonaattori / oskillaattori [ADA1873]
  • Arduino UNO/Mega jne. Vastaanottimelle + Vadelma PI 1/2/3
  • Kirkas akryylimuovilaatikko (valinnainen)

Löydät nämä kaikki Ebaysta, en halua mainostaa mitään myyjiä linkittämällä heidän sivulleen, ja linkit kuolevat joka tapauksessa tulevaisuudessa.

Huomautuksia laitteistoluettelosta:

Siinä tapauksessa, että tilat Atmegaa jollakin ohjelmoinnilla, osta niitä enemmän, sama koskee jännitteenvahvistinta ja aurinkopaneelien varauksen ohjainta.

Aurinkolaturissa on 2 pientä värillistä LED-valoa, jotka syttyvät vain auringon latauksen yhteydessä ja osoittavat (punainen-> lataus, sininen-> täysin ladattu). Nämä voidaan myös juottamatta. Se antaa pikemminkin hieman enemmän mehua akulle latauksen aikana.

Kuten näette, luettelossani ei ole paristopidikkeitä. Miksi? Koska ne ovat epäluotettavia. Minulla oli lukemattomia kertoja, kun akku siirtyi pidikkeestään ja yhteys katkesi. Varsinkin jos laitteisto on asennettu korkealle astiansauvalle, kuten minun, joka on avoin kaikille ankarille sääolosuhteille. Pudotin jopa akun pidikkeeseen kahdella vetoketjulla ja se onnistui silti siirtymään ulos. Älä tee sitä, poista vain akun ulkoinen pinnoite ja juota johdot suoraan akun pohjaan, joka sisältää ylikuormitussuojapiirin (älä ohita suojaa). Paristopidikettä voidaan käyttää vain akun pitämiseen paikallaan laitteessa.

TP405 5V Mini USB 1A litiumakun latauslevy: valitettavasti tämä kortti ei sisällä aurinkopaneelin käänteisvirtausta, tätä varten tarvitset 1 diodin lisää aurinkopaneelin toisen jalan ja latauspiirin väliin virran katkaisemiseksi virtaamaan takaisin aurinkopaneeliin yöllä.

Vaihe 5: Kokoonpano

Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano
Kokoonpano

Tämä kortti sisältää suhteellisen vähän komponentteja ja levyn merkit ovat melko yksinkertaisia.

Varmista, ettet aseta Atmega328P -laitetta väärään suuntaan (se voi kuumentaa ja lohkoa sirun, voi myös tuhota jännitteenvahvistimen).

Tässä asetuksessa siru on alaspäin (pieni U -reikämerkintä PIN1). Kaikkien muiden osien pitäisi olla ilmeisiä.

Käytä suojattua kaapelia (esim. CDromin äänikaapeli toimii hyvin) LDR: lle. Joissakin tapauksissa (useiden testiviikkojen aikana) kävi ilmi, että se häiritsee radiosignaalin lähetystä. Tämä oli yksi niistä vikoista, joiden vianmääritys oli vaikeaa, joten jos et halua ongelmia, käytä vain suojattua kaapelia, tarinan loppu.

LED: Laatikon pohjassa oleva LED lisättiin alun perin vilkkumaan, kun lähtevää radiolähetystä lähetetään, mutta myöhemmin olen pitänyt sitä virranhukkina ja se vilkkuu vain 3 kertaa käynnistyksen yhteydessä.

TP: on testipiste koko piirin virran mittaamiseen.

DHT22: Älä osta halpaa DHT11: tä, käytä 50 senttiä enemmän saadaksesi valkoisen DHT22: n, joka voi mitata myös negatiivisia lämpötiloja.

Vaihe 6: Kotelon suunnittelu

Kotelon suunnittelu
Kotelon suunnittelu
Kotelon suunnittelu
Kotelon suunnittelu
Kotelon suunnittelu
Kotelon suunnittelu

Vaikka se on hieman liioittelua, 3D -painettu kuutio (weather_cube) tehtiin pitämään DHT22 -lämpötila -anturi paikallaan. Kuutio on liimattu IP -laatikon pohjaan, ja siinä on vain 1 reikä ilmaa varten. Olen lisännyt reiän verkkoon mehiläisiä, ampiaisia ja muita pieniä kärpäsiä vastaan.

Ulkoista laatikkoa voidaan käyttää valinnaisesti aseman vedenpitävyyden parantamiseksi, jos asennat sen avoimelle lautaselle.

Idea yhdelle hyödylliselle ominaisuudelle: suuren metallisen kattolevyn lisääminen 1-2 cm laatikon yläosaan, joka tarjoaa varjon auringolta kesällä, vaikka tämä voisi myös viedä hyödyllisen auringonvalon paneelista. Voit keksiä mallin, joka erottaa paneelin ja laatikon (jättäen paneelin aurinkoon, laatikon varjoon).

Kuvissa: yksi asemista poistettiin työympäristöstä vuoden kuluttua, akun jännite on edelleen upea 3,9 V, ei vesivahinkoja missään laatikon osassa, vaikka kuution pohjassa liimattu verkko repeytyi. Aseman huoltotarve johtuu LDR -liittimen yhteysvirheestä, vaikka hyppykaapeli näytti olevan edelleen paikallaan, yhteys katkesi, joten tappi oli joskus kelluva ja huonot LDR -analogiset lukemat. Ehdotus: jos käytät tavallisia PC -hyppyjohtoja, liimaa ne kaikki sen jälkeen, kun asema on toiminut täydellisesti välttääksesi tämän.

Vaihe 7: Ohjelmisto

Ohjelmisto
Ohjelmisto

Ohjelmistokoodi vaatii 3 ulkoista kirjastoa (LowPower, DHT, VirtualWire). Minulla oli vaikeuksia löytää joitakin niistä helposti verkossa viime aikoina, joten liitin ne erilliseen ZIP -tiedostoon. Riippumatta siitä, mitä käyttöjärjestelmää käytät Linux/Windows -käyttöjärjestelmässä, etsi vain Arduino IDE -kirjaston kansio ja purkaa ne sieltä.

Huomautus vain siitä huolimatta, että en jo suosittele DHT11: n ostamista, jos käytät väärän tyyppistä DHT -anturia, ohjelma roikkuu alusta loppuun alustusosion alussa (et edes näe käynnistyksen merkkivaloa vilkkuvan 3 kertaa).

Pääsilmukkakoodi on hyvin yksinkertainen, ensin se lukee ympäristöarvot (lämpötila, lämpöindeksi, kosteus, aurinko), lähettää ne radion kautta ja käyttää sitten alhaisen tehon kirjastoa laittaakseen Arduinon nukkumaan 5 minuutiksi.

Olen huomannut, että siirtonopeuden alentaminen lisää radiolähetysten vakautta. Asema lähettää hyvin pienen määrän dataa, 300 bps on enemmän kuin tarpeeksi. Älä myöskään unohda, että lähetin toimii vain n. 4,8 V, tulevassa 3,3 V: n versiossa tämä saattaa johtaa vielä huonompaan lähetyslaatuun (tietojen lähettäminen seinien läpi ja muut esteet). Minulla oli ongelma käytettäessä Arduino Mega -laitetta, joka oli liitetty Raspberry PI 2 -laitteeseen ja joka käynnisti Megan PI: ltä, joten en saanut mitään lähetystä. Ratkaisu oli antaa Megalle virta erillisestä ulkoisesta 12 V: n virtalähteestä.

Vaihe 8: Versio 2 (ESP32 -pohjainen)

Versio 2 (ESP32 -pohjainen)
Versio 2 (ESP32 -pohjainen)
Versio 2 (ESP32 -pohjainen)
Versio 2 (ESP32 -pohjainen)
Versio 2 (ESP32 -pohjainen)
Versio 2 (ESP32 -pohjainen)

Kaikki mikä voi rikkoutua, rikkoutuu lainaamaan vanhaa hyvää Murphyä ja lopulta vuosien jälkeen asemat epäonnistuivat salaperäisillä tavoilla. Yksi alkoi lähettää turhia aurinkotietoja, jotka nousivat kymmeniin tuhansiin, mikä on mahdotonta seuraavista syistä: Arduino-kortti sisältää 6-kanavaisen (8 kanavaa Minissä ja Nanossa, 16 Megassa), 10-bittisen analogisesta digitaalimuuntimeen. Tämä tarkoittaa, että se kartoittaa syöttöjännitteet 0–5 volttia kokonaislukuarvoihin 0–1023. Joten radion, LDR: n vaihdon ja Atmega 328P: n uudelleenohjelmoinnin jälkeen luovutin ja päätin, että on aika innovoida. Mennään ESP32.

Levy, jota käytin, oli: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

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

Mikro-ohjain ESP-32

Käyttöjännite 3,3 V: n digitaaliset I/O -nastat 19 Analogiset tulonastat 6 Kellonopeus (enintään) 240 MHz: n salama 4 M tavua Pituus 5 mm Leveys 2,54 mm Paino 4 g

Toisin kuin kuvassa, siinä ei ole LOLIN -logoa (väärennetty Kiinasta). Ensimmäinen miellyttävä yllätykseni oli, että taululle painettu pinout vastasi Arduinon pinoutia! Käsiteltyäni niin monia noname -tauluja, joissa minun piti etsiä pinoutteja koko päivän kuolleena väsyneenä tekemällä virheitä, vihdoin lauta, jossa pinout on suoraan eteenpäin WoW!

Tässä on kuitenkin tarinan pimeä puoli:

Aluksi olen liittänyt LDR: n A15: een, joka on nasta 12, koska tapien liimaaminen oli helpompaa. Sitten minulla on 4095 lukemaa (mikä on maksimi, jonka voit saada AnlogReadilla ESP32: lla), mikä sai minut hulluksi, koska koko syy, miksi rakensin aseman uudelleen, olivat vanhan LDR -lukemat (DHT toimi edelleen hyvin)). Joten käy ilmi, että:

Esp 32 yhdistää kaksi 12-bittistä ACD-rekisteriä. ADC1 kahdeksalla kanavalla, jotka on liitetty GPIO-laitteisiin 32-39, ja ADC2, jossa on 10 kanavaa toisissa nastoissa. Asia on, että ESP32 käyttää ADC2: ta wifi -toimintojen hallintaan, joten jos käytät Wifiä, et voi käyttää kyseistä rekisteriä. ADC -ohjaimen sovellusliittymä tukee ADC1: tä (8 kanavaa, liitetty GPIO: eihin 32 - 39) ja ADC2: ta (10 kanavaa, jotka on liitetty GPIO: iin 0, 2, 4, 12 - 15 ja 25 - 27). ADC2: n käytöllä on kuitenkin joitain rajoituksia sovellukselle:

Wi-Fi-ohjain käyttää ADC2-protokollaa. Siksi sovellus voi käyttää ADC2: ta vain, kun Wi-Fi-ohjain ei ole käynnistynyt. Joitakin ADC2 -tappeja käytetään vannetappeina (GPIO 0, 2, 15), joten niitä ei voi käyttää vapaasti. Näin on seuraavissa virallisissa kehityspaketeissa:

Joten LDR: n yhdistäminen nastasta 12 A0: een, joka on VP, ratkaisi kaiken, mutta en ymmärrä, miksi he jopa luettelevat ADC2 -nastat valmistajien saataville. Kuinka moni muu harrastaja hukkasi tonnia aikaa tämän selvittämiseen? Merkitse ainakin käyttämättömät nastat punaisella tai jollakin muulla tavalla tai älä mainitse sitä ohjekirjassa ollenkaan, jotta muut valmistajat voivat tietää niistä vain, jos he todella tarvitsevat niitä. ESP32: n koko tarkoitus on käyttää sitä WIFI: n kanssa, kaikki käyttävät sitä WIFI: n kanssa.

Hyvä alku Arduino IDE: n asettamiselle tälle levylle:

Vaikka laitoin sen tähän koodiin, se menee jälleen kerran:

Tätä koodia ei ehkä voi kääntää muille ESP32 -malleille kuin Weemos LOLIN 32!

Kokoonpanoasetukset: -Käytä latausta/sarjaa: 115200 -Käytä CPU/muistia: 240 MHz (Wifi | BT) -Käytä flash -taajuutta: 80 Mhz

Netissä on tonnia ESP32 -pohjaisia sääasemia, ne ovat paljon yleisempiä kuin versio 1 oli paljain sirulla, koska ne on helpompi asentaa, sinun ei tarvitse ohjelmoijaa vain liittää laite USB: hen ja ohjelmoida se ja niiden syvä lepotila on erinomainen akun käyttämiseen pitkään. Tämä oli ensimmäinen asia, jonka testasin jo ennen juottamista purkaustappeihin, koska kuten huomasin useita paikkoja tässä projektissa, tärkein asia on virrankulutus ja nykyinen (väärennetty) akku ja pieni aurinkopaneeli valmiustilassa Teho ei todellakaan voi ylittää 1-2 mA, koska muuten projekti ei kykene ylläpitämään itseään pitkällä aikavälillä.

Oli jälleen iloinen yllätys, että syvä lepotila toimii mainostetun mukaisesti. Syväunen aikana virta oli niin alhainen, että halpa monimittarini ei pystynyt edes mittaamaan sitä (toimii minulle).

Tietojen lähettämisen aikana virta oli noin 80 mA (mikä on noin 5 kertaa enemmän kuin Atmega 328P: n herätessä ja lähettäessä), mutta älä unohda, että V1: n LDR -virrankulutus oli lepotilassa keskimäärin 1 mA (joka riippui myös valotasosta ja oli 0,5 mA - 1 mA), joka on nyt poissa.

Nyt kun UltraFire -akku on purettu, jos käytät samaa akkua, voit odottaa seuraavaa:

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

Teoreettinen

Akun kesto = 22000 mWh/2,5 mW = 8800 tuntia = noin 366 päivää

Todellinen

Akun kesto = 800 mWh/2,5 mW = 320 tuntia = noin 13 päivää

Minulla ei ollut mahdollisuutta mitata tarkasti käynnistymisaikaa, mutta säätämistäni se ylittää noin 2 sekuntia.

En halunnut viettää iltapäivää kaiken mukautetulle koodaukselle, joten etsin muita ESP32 -pohjaisia Instructables -sääasemia nähdäkseni, mitä he tekevät tietojen tallennukseen. Valitettavasti huomasimme, että he käyttävät joustamattomia ja rajoitettuja sivustoja, kuten weathercloud. Koska en ole "pilven" fani ja heidän koodinsa rikkoutui pitkään, koska sivusto on muuttanut sen sovellusliittymää sen jälkeen, olen käyttänyt 10 minuuttia mukautetun ratkaisun tekemiseen, koska se ei ole niin vaikeaa kuin voisi luulla. Aloitetaan!

Ensinnäkin ei ole piirilevyn kuvaa erikseen tälle projektille, koska se käyttää täsmälleen samoja komponentteja (anteeksi, että juotettu ruma leipälauta kuva) kuin V1 sillä erolla, että kaikki kuluu 3,3 V. DHT kytkeytyi vetämällä VCC: hen, LDR veti alas 10k: lla. Ongelma, joka saattaa näkyä 18650 -paristolla, kuten kiinalaisella väärennökselläni (6500 mAh: n ultra -aurinko -palo: D), on se, että ne aloittavat purkauskäyrän noin 4,1 V: n uudesta iästä ja jatkavat, kunnes niiden katkaisupiiri käynnistyy soluvaurioiden pysäyttämiseksi (joilla on onni saada se). Tämä ei ole meille hyväksi 3.3V -tulona. Vaikka tässä LOLIN -kortissa on litiumparistoliitin ja latauspiiri tässä projektissa, halusin kunnostaa suurimman osan siitä, mitä voisin vanhasta asemasta, joten vanhan 18650: n avulla et voi käyttää tätä sisäänrakennettua laturia. Ratkaisu oli yksinkertainen: katkaisin 5 V: n juotetun mikro -USB -kaapelin irti vanhasta jännitteenvahvistimesta ja voila -ongelma ratkesi, koska microUSB: n piirilevyssä on säädin.

Joten ero vanhan ja uuden version välillä, joka vanhassa akussa tarjoaa 3,7 V -> korotettu 5 V: iin -> ardu toimii 5 V: lla -> kaikki komponentit toimivat 5 V: lla.

Uudessa: akku tarjoaa 3,7 V -> tehostettu 5 V: iin -> säädetty ESP32: n sisäisellä säätimellä -> kaikki komponentit toimivat 3,3 V: lla.

Ohjelmiston kannalta tarvitsemme myös toisen DHT -kirjaston, Arduinon DHT ei ole yhteensopiva ESP: n kanssa. Mitä tarvitsemme, kutsutaan DHT ESP: ksi.

Aloin perustaa koodini tämän koodin tarjoaman DHT -esimerkin ympärille. Koodin toiminta on:

1, Hanki ympäristötiedot DHT + Solar -tiedoista valokennolta

2, Yhdistä wifi -verkkoon staattisella IP -osoitteella

3, Lähetä tiedot php -skriptiin

4, Mene nukkumaan 10 minuutiksi

Kuten huomaat, viritin koodin tehokkuuden minimoimaan herätysajan, koska se kuluttaa viisi kertaa enemmän virtaa kuin vanha projekti, kun se käynnistettiin. Kuinka tein tämän? Ensinnäkin, jos on MITÄ tahansa virhe, getTemperature () -toiminto palauttaa väärin (mikä tarkoittaa, että 10 minuuttia nukkuu uudelleen). Tämä voi olla niin, että DHT -anturia ei voida käynnistää tai wifi -yhteys ei ole käytettävissä. Kuten huomaat tavallisen while () -silmukan, jolla voit jatkaa wifi -yhdistyksen ikuista yrittämistä, poistettiin myös, mutta 1 sekunnin viive oli jätettävä sinne, muuten se ei aina muodosta yhteyttä ja se riippuu myös tukiaseman tyypistä, kuormasta jne. Kuinka nopeasti se tapahtuu, 0,5 sekunnilla sain epäjohdonmukaista käyttäytymistä (joskus se ei voinut muodostaa yhteyttä). Jos joku tietää paremman tavan tehdä tämä, jätä se kommentteihin. Vasta kun DHT -tiedot luetaan JA Wifi -yhteys on muodostettu, se yrittää lähettää tiedot verkkopalvelimen komentosarjaan. Kaikenlaiset ajanhukkaustoiminnot, kuten Serial.println (): t, ovat myös pois käytöstä normaalissa toimintatilassa. Palvelimena käytän myös IP: tä tarpeettoman DNS -haun välttämiseksi, koodissani sekä oletusyhdyskäytävä että dns -palvelin on asetettu arvoon 0.0.0.0.

En ymmärrä, miksi on niin vaikeaa luoda oma sovellusliittymä, kun tarvitset vain:

sprintf (vastaus, "temp =%d & hum =%d & hi =%d & sol =%d", lämpötila, hum, hi, sol);

int httpResponseCode = http. POST (vastaus);

Laitat tämän pienen php -koodin mihin tahansa vadelmapi: hen ja voit tehdä järjestelmä () -tehtäviä heti telemetrian perusteella, kuten kytkeä tuulettimet päälle tai sytyttää valot, jos tulee tarpeeksi pimeää.

Muutama huomautus koodista:

WiFi.config (staticIP, yhdyskäytävä, aliverkko, dns); // PITÄÄ olla Wifin jälkeen, kuinka tyhmä…

WiFi.mode (WIFI_STA); // PITÄÄ muuten luoda myös ei -toivotun tukiaseman

Joo nyt tiedät. Myös IP -määritysten järjestys voi muuttua alustojen kautta, kokeilin ensin muita esimerkkejä, joissa yhdyskäytävän ja aliverkon arvot vaihdettiin. Miksi asettaa staattinen IP? On selvää, että jos verkossa on oma laatikko, kuten isc dhcpd -käyttöinen Linux -palvelin, et halua satoja miljoonia lokimerkintöjä ESP: n herätessä ja saamaan IP -osoitteen DHCP: ltä. Reitittimet eivät yleensä kirjaa yhdistyksiä, joten ne jäävät näkemättä. Tämä on virran säästämisen hinta.

V2 ei koskaan pystynyt ylläpitämään itseään huonolaatuisen akun vuoksi, ja olen yksinkertaisesti asettanut sen sovittimen päälle, joten jos haluat rakentaa joko V1- tai V2 -laitteen, älä osta mainittua akkua, tee oma tutkimus paristoista (mikä tahansa 18650 yli 2000 mAh: n mainostettu kapasiteetti Ebayssa on huijaus suurella todennäköisyydellä).

Suositeltava: