Përmbajtje:

Stacioni i motit NaTaLia: Stacioni i motit Arduino me energji diellore Bëhet në rrugën e duhur: 8 hapa (me fotografi)
Stacioni i motit NaTaLia: Stacioni i motit Arduino me energji diellore Bëhet në rrugën e duhur: 8 hapa (me fotografi)
Anonim
Stacioni i motit NaTaLia: Stacioni i motit Arduino me energji diellore është bërë në rrugën e duhur
Stacioni i motit NaTaLia: Stacioni i motit Arduino me energji diellore është bërë në rrugën e duhur
Stacioni i motit NaTaLia: Stacioni i motit Arduino me energji diellore u bë në rrugën e duhur
Stacioni i motit NaTaLia: Stacioni i motit Arduino me energji diellore u bë në rrugën e duhur

Pas 1 viti të funksionimit të suksesshëm në 2 vende të ndryshme, unë po ndaj planet e mia të projektit të stacionit të motit me energji diellore dhe po shpjegoj se si evoluoi në një sistem i cili me të vërtetë mund të mbijetojë për periudha të gjata kohore nga energjia diellore. Nëse ndiqni udhëzimet e mia dhe përdorni të njëjtat materiale të listuara, mund të ndërtoni një stacion moti me energji diellore i cili do të funksionojë për shumë vite. Në fakt faktori i vetëm që kufizon sa kohë do të funksionojë është jetëgjatësia e baterisë që po përdorni.

Hapi 1: Funksionimi i stacionit të motit

1, Transmetues: Kuti e montuar në natyrë me panel diellor e cila dërgon telemetri të motit (Temperatura, Lagështia, Indeksi i Nxehtësisë, Fuqia Diellore) në mënyrë periodike në njësinë e marrësit të brendshëm.

2, Marrësi: Njësia e brendshme e bërë nga një Raspberry PI 2 + Arduino Mega që ka një Marrës RF 433 Mhz të lidhur për marrjen e të dhënave. Në konfigurimin tim, kjo njësi nuk ka ndonjë funksion lokal të ekranit LCD. Shkon pa kujdes. Një program kryesor C kujdeset për marrjen e të dhënave hyrëse nga Arduino përmes serialit, pastaj regjistrimin e të dhënave në një skedar teksti dhe vënien në dispozicion të të dhënave të fundit të marra përmes telnet për pajisjet e tjera për ta pyetur atë.

Stacioni po kontrollon dritat në shtëpinë time duke lexuar rezistencën e fotove (e cila përcakton nëse është ditë apo natë jashtë). Marrësi është pa kokë në rastin tim, por ju lehtë mund ta modifikoni projektin për të shtuar një ekran LCD. Një nga pajisjet që përdorin, analizojnë dhe shfaqin të dhënat e motit nga stacioni është projekti im tjetër: Hekurforcoje thotë dolli NetBSD.

Hapi 2: Versionet e para

Versionet e para
Versionet e para
Versionet e para
Versionet e para
Versionet e para
Versionet e para
Versionet e para
Versionet e para

Ka shumë projekte diellore në rrjet, por shumë prej tyre bëjnë gabimin e zakonshëm që sistemi merr më shumë energji nga bateria me kalimin e kohës atë që paneli diellor mund të rimbushë, veçanërisht gjatë muajve të errët dhe të errët të dimrit.

Kur krijoni një sistem me energji diellore, e vetmja gjë që ka rëndësi është KONSUMI I FUQIS, në të gjithë përbërësit: mcu, transmetues radio, rregullator tensioni etj.

Përdorimi i një kompjuteri të madh si një mjedër pi ose një pajisje wifi të etur për energji si ESP vetëm për të mbledhur dhe transportuar disa pjesë të të dhënave të motit do të ishte e tepërt, por siç do ta tregoj në këtë tutorial është edhe një bord i vogël Arduino.

Më e mira është gjithmonë matja e rrymës gjatë procesit tuaj të ndërtimit me një metër ose me një shtrirje (e dobishme kur përpiqeni të matni goditje të vogla në përdorim gjatë operacionit në kohëzgjatje shumë të shkurtra (milisekonda)).

Në foton e parë mund të shihni stacionin tim të parë (Arduino Nano Based) dhe bordin e dytë Arduino Barebone Atmega 328P.

Versioni i parë, megjithëse funksionoi në mënyrë perfekte (monitorimi i mjedisit dhe dërgimi i të dhënave përmes radios) kishte konsum shumë të lartë të energjisë 46mA ~ dhe mbaroi baterinë brenda pak javësh.

Të gjitha versionet përdorën baterinë e mëposhtme:

18650 6000mAh Bateri e mbrojtur me Li-jon të Mbushur Pllakë Mbrojtëse e integruar

UPDATE në këto bateri ScamFire. Edhe pse ky është një Udhëzues mjaft i vjetër, unë prapë u ndjeva i detyruar ta korrigjoja për shkak të kësaj baterie fals. MOS blini baterinë e përmendur, bëni kërkimin tuaj në lidhje me bateritë e tjera LION/LIPO, të gjitha bateritë 3.7V do të punojnë me këtë projekt.

Më në fund kisha kohë të zbërtheja baterinë ScamFire për të parë se cili është kapaciteti i tij i vërtetë. Prandaj ne do të bëjmë 2 llogaritjet krah për krah me kapacitetet reale dhe të "reklamuara".

Para së gjithash, kjo është një gjë që kjo bateri është e rreme dhe asgjë që ata pretendojnë për të është e vërtetë, versionet e reja janë edhe më keq ata kopjuan falsifikimin duke lënë jashtë qarkun e mbrojtjes 2 cent kështu që asgjë nuk do t'i ndalojë ata të shkarkohen në zero.

Një artikull i vogël mbi bateritë LION/LIPO:

TLDR:

Çfarë do të thotë kjo është se tensioni maksimal i qelizës është 4.2v dhe se tensioni "nominal" (mesatar) është 3.7V.

Për shembull, këtu është një profil i tensionit për një bateri 'klasike' 3.7V/4.2V. Tensioni fillon nga 4.2 maksimumi dhe shpejt zbret në rreth 3.7V për shumicën e jetës së baterisë. Pasi të keni goditur 3.4V bateria është e vdekur dhe në 3.0V qarku i ndërprerjes shkëput baterinë.

Matjet e mia duke përdorur një ngarkesë bedel:

Bateria e ngarkuar: 4.1V

Ndërprerja e vendosur në: 3.4V

Simulimi i ngarkesës: 0.15A (pajisja ime kishte pak problem të shkonte më poshtë se kjo.)

Kapaciteti i matur: 0.77Ah jepni një 0.8 Ah falas që është 800mAh në vend të 6000mAh të reklamuar!

Meqenëse kjo bateri nuk kishte as qarkun e mbrojtjes mund të shkoja lirshëm më poshtë, por në 3.4V pas 10 minutash ajo tashmë bie në 3.0V.

Prandaj, me llogaritjet e thjeshta bateria siguron:

Teorike

Tensioni i baterisë = 3.7V

Fuqia = 3.7x6000 = 22000 mWh

E vërtetë

Tensioni i baterisë = 3.7V Fuqia = 3.7x800 = 2960 mWh

Versioni: 0.1 ARDUINO NANO BAZUAR

Edhe me bibliotekën LowPower një Arduino nano konsumon m 16 mA (në modalitetin e gjumit) -> FAIL.

Teorike

Pavg = VxIavg = 5Vx16mA = 80 mW

Jetëgjatësia e baterisë = 22000/80 = 275 orë = 11 ditë përafërsisht

RealPavg = VxIavg = 5Vx16mA = 80 mW

Jetëgjatësia e baterisë = 800/80 = 10 orë

Version: 0.2 Atmega 328P Barebone

Fuqia e konsumuar nga një ATmega328 varet shumë nga ajo që jeni duke bërë me të. Vetëm ulur atje në një gjendje të paracaktuar, mund të përdorë 16mA @ 5V ndërsa funksionon në 16MHz.

Kur ATmega328P është në modalitetin aktiv, ai do të ekzekutojë vazhdimisht disa miliona udhëzime në sekondë. Më tej, Periferikët në bord Analog në Konvertues Dixhital (ADC), Ndërfaqja Seriale Periferike (SPI), Kohëmatësi 0, 1, 2, Ndërfaqe me Dy tela (I2C), USART, Kohëmatësi Watchdog (WDT) dhe Zbulimi i Brown-out (BOD) konsumojnë energji.

Për të kursyer energji, ATmega328P MCU mbështet një numër të mënyrave të gjumit dhe pajisjet periferike të papërdorura mund të fiken. Mënyrat e gjumit ndryshojnë në cilat pjesë mbeten aktive, nga kohëzgjatja e gjumit dhe koha e nevojshme për t'u zgjuar (periudha e zgjimit). Mënyra e gjumit dhe pajisjet periferike aktive mund të kontrollohen me bibliotekat e gjumit dhe fuqisë AVR ose, më koncizisht, me bibliotekën e shkëlqyer me fuqi të ulët.

Biblioteka Low-Power është e thjeshtë për t’u përdorur, por shumë e fuqishme. Deklarata LowPower.powerDown (SLEEP_8S, ADC_OFF, BOD_OFF); vendos MCU në SLEEP_MODE_PWR_DOWN për 16 ms në 8 s, në varësi të argumentit të parë. Çaktivizon ADC dhe BOD. Gjumi i fikur do të thotë që të gjitha funksionet e çipit janë të çaktivizuara deri në ndërprerjen tjetër. Më tej, oshilatori i jashtëm është ndalur. Vetëm ndërprerjet e nivelit në INT1 dhe INT2, ndërprerjet e ndryshimit të kunjit, përputhja e adresës TWI/I2C ose WDT, nëse është e aktivizuar, mund të zgjojë MCU -në. Pra, me deklaratën e vetme, ju do të minimizoni konsumin e energjisë. Për një 3.3 V Pro Mini pa LED të energjisë dhe pa rregullator (shiko më poshtë) që po përdor deklaratën, konsumi i energjisë është 4.5 μA. Kjo është shumë afër asaj që është përmendur në fletën e të dhënave ATmega328P për gjumë të fikur me WDT të aktivizuar prej 4.2 μA (fleta e të dhënave e lidhur në burime). Prandaj, jam plotësisht i sigurt, se funksioni powerDown fik çdo gjë që është e arsyeshme e mundur. Me deklaratën LowPower.powerDown (SLEEP_FOREVER, ADC_OFF, BOD_OFF);, WDT do të çaktivizohet dhe nuk do të zgjoheni derisa të shkaktohet një ndërprerje.

Pra, me konfigurimin e barebone ne mund ta vendosim çipin në modalitetin e gjumit për 5 minuta, ndërsa po konsumon shumë pak energji (0.04 mA pa pajisje periferike). Sidoqoftë, ky është vetëm çipi Atmega 328P me oshilatorin kristal dhe asgjë tjetër, përforcuesi i tensionit i përdorur në këtë konfigurim për të rritur tensionin e baterisë nga 3.7V -> 5.0 V gjithashtu konsumon 0.01 mA.

Një kullim i vazhdueshëm i tensionit ishte rezistenca e shtuar e fotografisë që rrit konsumin në modalitetin e gjumit në një 1 mA të përgjithshme (kjo përfshin të gjithë përbërësit).

Formula për llogaritjen e konsumit të saktë për pajisjen në modalitetin e gjumit dhe zgjimit është:

Iavg = (Ton*Jon + Gjumë*Fjetur) / (Ton + Gjumë)

Jon = 13mA

Kjo vjen kryesisht nga transmetuesi RF433 Mhz:

Transmetues:

Tensioni i punës: 3V - 12V për max. përdorimi i energjisë 12VRryma e punës: max Më pak se 40mA max, dhe min 9mRezionanca mode: (SAW) Mënyra e modulimit: ASK Frekuenca e punës: Eve 315MHz ose 433MHz Fuqia e transmetimit: 25mW (315MHz në 12V) Gabimi i frekuencës: +150kHz (max) Shpejtësia: më pak se 10Kbps

Gjumi = 1mA

Do të ishte shumë më pak pa fotorezistues.

Koha e trunonit Ton = 250 mS = 0.25s

Koha e gjumit Gjumi = 5 min = 300s

Iavg = (Ton*Jon + Gjumë*Fjetur) / (Ton + Fjetje)

Iavg = (0.25s*13mA + 300s*1mA) / (0.25s + 300s)

Iavg = 1.26mA

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

Teorike

Jetëgjatësia e baterisë = 22000mWh/6mW = 3666 orë = 152 ditë përafërsisht

E vërtetë

Jetëgjatësia e baterisë = 800mWh/6mW = 133 orë = 5.5 ditë përafërsisht

Edhe pse këto ishin akoma një seri më e mirë UltraFire ajo që kam përdorur fillimisht mund të shihni që pa panelin diellor ose konsumin e ulët 1mA ky projekt nuk do të mbijetonte gjatë.

Mos ngurroni të ndërtoni stacionin dhe shkruani gjetjet dhe llogaritjet tuaja në komente dhe unë do ta azhurnoj artikullin. Unë gjithashtu do të vlerësoja rezultatet me MCU të ndryshëm dhe konvertuesit e rritjes.

Hapi 3: Ndërtimi i një Stacioni Moti të Suksesshëm

Ndërtimi i një stacioni të suksesshëm të motit
Ndërtimi i një stacioni të suksesshëm të motit
Ndërtimi i një stacioni të suksesshëm të motit
Ndërtimi i një stacioni të suksesshëm të motit
Ndërtimi i një stacioni të suksesshëm të motit
Ndërtimi i një stacioni të suksesshëm të motit
Ndërtimi i një stacioni të suksesshëm të motit
Ndërtimi i një stacioni të suksesshëm të motit

Edhe pse është versioni i parë i suksesshëm, ai përmban pak dështime në fotografi dhe nuk mund t’i ribëj sepse stacionet tashmë janë vendosur. Dy përforcuesit e tensionit të treguar në figurë janë të arritshëm në kohën e shkrimit për modelimin aero dhe aplikimet e tjera. Kur ridizajnova stacionin tim, po mendoja të merrja një tabelë më të vogël dhe më efikase të rritjes së tensionit, megjithatë më e vogël në madhësi definitivisht nuk do të thotë se është më efikase.

Moduli i ri i vogël në figurë i cili nuk ka as një tregues të udhëhequr në të vërtetë thau 3mA (*FAIL*) në vetvete, kështu që unë qëndrova me tabelën time të vjetër:

PFM Control DC-DC USB 0.9V-5V në 5V DC Moduli i Furnizimit me Energji të Rritjes së Rritjes

Në kohën e shkrimit, ky modul është ende i disponueshëm në Ebay për 99 cent, por nëse vendosni të përdorni një përforcues tjetër, gjithmonë kontrolloni konsumin e energjisë në gatishmëri. Me një përforcues me cilësi të mirë nuk duhet të jetë më shumë se imi (0.01 mA), megjithëse LED-i i vogël në bord duhej të ishte i shkrirë.

Hapi 4: Lista e pajisjeve

Lista e pajisjeve
Lista e pajisjeve
  • 18650 6000mAh Bateri Li-ion e Mbushur me Rimbushje Pllakë Mbrojtëse e integruar
  • Atmega 328P16M 5V me bootloader
  • Komplet Adafruit DC Boarduino (i pajtueshëm me Arduino) (me ATmega328) <ky do të jetë një investim i mirë nëse jeni duke bërë projekte të ardhshme barebone
  • Rezistencë e ndjeshme ndaj dritës së fotografisë Photoresistor Optoresistor 5mm GL5539
  • Diodë 1A 1000V 1N4007 IN4007 DO-41 Diodë ndreqës
  • PFM Control DC-DC USB 0.9V-5V në 5V DC Moduli i Furnizimit me Energji të Rritjes së Rritjes
  • 1.6W 5.5V 266mA Mini Panel Diellor Modeli i Sistemit Epoxy Cell Charger DIY
  • Moduli i ngarkuesit të bordit të ngarkimit të baterisë litium TP405 5V Mini USB 1A
  • Kompleti i lidhësit të transmetuesit dhe marrësit RF 433Mhz për telekomandën Arduino/ARM/MC <Kit, përmban si transmetuesin ashtu edhe zbuluesin
  • IP65 Switch Protector Junction Box Outdoor i papërshkueshëm nga uji 150x110x70mm
  • Moduli i ri DHT22 i Temperaturës dhe Sensorit të Lagështisë Relative për Arduino
  • 1x220 Ohm, 2x10KOhm, 1xLED, 1x Mini Switch, 1x1N4007diodë
  • Adafruit 16 MHz Ceramonator / Oshilator qeramik [ADA1873]
  • Arduino UNO/Mega etj për stacionin e marrësit + Mjedër PI 1/2/3
  • Kuti plastike e pastër akrilike (opsionale)

Të gjitha këto mund t'i gjeni në Ebay, nuk dua të promovoj asnjë shitës duke u lidhur me faqet e tyre dhe lidhjet do të bëhen të vdekura në të ardhmen gjithsesi.

Shënime për listën e pajisjeve:

Në rast se ju blini Atmega disi me programim blini më shumë prej tyre, e njëjta vlen edhe për përforcuesin e tensionit dhe kontrolluesin e ngarkesës diellore.

Ngarkuesi diellor përmban 2 LED të vogla me ngjyra të cilat ndizen vetëm në rast të karikimit diellor dhe tregojnë (e kuqe-karikimi, blu-gjendje të ngarkuara plotësisht). Këto mund të jenë të pashitura gjithashtu. Përkundrazi i jep pak më shumë lëng baterisë gjatë karikimit.

Siç e shihni nuk ka mbajtës të baterisë në listën time. Pse? Sepse nuk janë të besueshme. Kam pasur raste të panumërta kur bateria doli nga mbajtësi i saj dhe humbi lidhjen. Sidomos nëse konfigurimi juaj është i montuar në një shtyllë të lartë pjate si ajo ime, e hapur për çdo kusht të ashpër të motit. Unë madje e mbylla baterinë në mbajtëse me 2 zinxhirë dhe ajo përsëri arriti të lëvizte jashtë. Mos e bëni, thjesht hiqni veshjen e jashtme nga bateria dhe lidhni telat drejtpërdrejt në pjesën e poshtme të baterisë, që përmbajnë qarkun e mbrojtjes nga mbingarkesa (mos e anashkaloni mbrojtjen). Mbajtësi i baterisë mund të përdoret vetëm për mbajtjen e baterisë në vend në pajisje.

Tabela e ngarkimit të baterisë litium TP405 5V Mini USB 1A: për fat të keq kjo tabelë nuk përfshin mbrojtje nga rryma e kundërt në panelin diellor, për këtë do t'ju duhet edhe 1 diodë më shumë për t'u vendosur në mes të njërës këmbë të panelit diellor dhe qarkut të karikimit për të ndaluar përpjekjen aktuale të kthehet përsëri në panelin diellor gjatë natës.

Hapi 5: Asambleja

Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi
Kuvendi

Ky bord përmban relativisht pak përbërës dhe shënuesit në tabelë janë mjaft të thjeshtë.

Sigurohuni që NUK e futni Atmega328P në rrugën e gabuar (që mund të nxehet dhe tullojë çipin, mund të shkatërrojë edhe përforcuesin e tensionit).

Në këtë konfigurim, çipi përballet poshtë (vrima e vogël U shënon PIN1). Të gjithë përbërësit e tjerë duhet të jenë të qartë.

Përdorni kabllo të mbrojtur (p.sh.: Kablloja audio nga CDrom do të jetë mirë) për LDR. Në disa raste (gjatë shumë javëve të testimit) doli se po ndërhyn në transmetimin e sinjalit radio. Ky ishte një nga ato defekte të vështira për tu zgjidhur, kështu që nëse nuk doni telashe, përdorni vetëm një kabllo të mbrojtur, fundi i tregimit.

LED: LED -ja në pjesën e poshtme të kutisë fillimisht u shtua për të ndezur kur ka transmetim radio në dalje, por më vonë e kam konsideruar atë si humbje energjie dhe ajo vetëtimon vetëm 3 herë gjatë procesit të nisjes.

TP: është pika e provës për matjen e rrymës për qarkun e përgjithshëm.

DHT22: Mos blini DHT11 të lirë, shpenzoni 50 cent më shumë për të marrë DHT22 të bardhë e cila mund të masë edhe temperaturat negative.

Hapi 6: Hartimi i rastit

Dizajni i rastit
Dizajni i rastit
Dizajni i rastit
Dizajni i rastit
Dizajni i rastit
Dizajni i rastit

Edhe pse është pak e tepërt, një kub i printuar 3D (weather_cube) u bë për të mbajtur sensorin e temperaturës DHT22 në vend. Kubi është ngjitur në pjesën e poshtme të kutisë IP, duke shfaqur vetëm 1 vrimë që ajri të arrijë në sensor. Unë kam shtuar një rrjetë në vrimë kundër bletëve, grerëzave dhe mizave të tjera të vogla.

Një kuti e jashtme mund të përdoret opsionalisht për ta bërë stacionin më të papërshkueshëm nga uji në rast se e montoni atë në një shtyllë pjate në natyrë.

Ide për 1 veçori të dobishme: shtimi i një pllake të madhe çati metalike 1-2 centimetra në krye të kutisë duke siguruar hije nga dielli gjatë verës, megjithëse kjo gjithashtu mund të largojë dritën tonë të dobishme të diellit nga paneli. Mund të dalësh me një dizajn që ndan panelin dhe kutinë (duke e lënë panelin në diell, kutia në hije).

Në fotot: një nga stacionet e larguara nga mjedisi i punës pas 1 viti, tensioni i baterisë është akoma në 3.9V mahnitëse, nuk ka dëme uji në asnjë pjesë të kutisë edhe pse rrjeta që ngjita në pjesën e poshtme të kubit u copëtua. Arsyeja që stacioni duhej të servisohej ishte defekti i lidhjes në lidhësin LDR, megjithëse kablloja e kërcyesit dukej se ishte ende në vend, lidhja ishte e prishur, prandaj pinja nganjëherë lundronte duke siguruar lexime të këqija analoge LDR. Sugjerim: nëse përdorni jumpercables standarde të kompjuterit, ngjitini të gjithë pasi stacioni të funksionojë në mënyrë perfekte për ta shmangur këtë.

Hapi 7: Softueri

Softuer
Softuer

Kodi i softuerit do të kërkojë 3 biblioteka të jashtme (LowPower, DHT, VirtualWire). Kisha probleme me gjetjen e disa prej tyre lehtësisht në internet kohët e fundit, kështu që i bashkoj në një skedar ZIP të veçantë. Pavarësisht se çfarë sistemi po përdorni Linux/Windows, thjesht gjeni dosjen e bibliotekës tuaj Arduino IDE dhe nxirreni atje.

Vetëm një shënim, pavarësisht se unë tashmë ju këshilloj kundër blerjes së DHT11, nëse përdorni llojin e gabuar të sensorit DHT, programi do të qëndrojë përgjithmonë në fillim në pjesën e inicimit (as nuk do të shihni që drita e ndezjes e ndezjes të ndizet 3 herë).

Kodi kryesor i lakut është shumë i thjeshtë, së pari lexon vlerat e mjedisit (temperatura, indeksi i nxehtësisë, lagështia, diellore), i dërgon ato përmes radios, pastaj përdor bibliotekën me fuqi të ulët për ta vënë Arduino -n në gjumë për 5 minuta.

Kam gjetur se ulja e baudratit do të rrisë qëndrueshmërinë e transmetimeve të radios. Stacioni po dërgon një sasi shumë të vogël të të dhënave, 300 bps janë më se të mjaftueshme. Gjithashtu mos harroni se transmetuesi po funksionon vetëm nga përafërsisht. 4.8V, në versionin e ardhshëm 3.3V kjo mund të çojë në cilësi edhe më të keqe të transmetimit (dërgimi i të dhënave përmes mureve dhe pengesave të tjera). Kam një problem me përdorimin e një Arduino Mega të bashkangjitur me një Raspberry PI 2 që fuqizon Mega nga PI, që nuk kam marrë ndonjë transmetim. Zgjidhja ishte fuqizimi i Mega nga një furnizim i veçantë i jashtëm 12V.

Hapi 8: Versioni 2 (Bazuar në ESP32)

Versioni 2 (Bazuar në ESP32)
Versioni 2 (Bazuar në ESP32)
Versioni 2 (Bazuar në ESP32)
Versioni 2 (Bazuar në ESP32)
Versioni 2 (Bazuar në ESP32)
Versioni 2 (Bazuar në ESP32)

Çdo gjë që mund të prishet do të prishet për të cituar Murphy -n e mirë të vjetër dhe përfundimisht pas vitesh stacionet dështuan në mënyra misterioze. Njëri filloi të dërgojë të dhëna marramendëse diellore të cilat u rritën në dhjetëra mijëra, gjë që është e pamundur për shkak të: Bordit Arduino përmban një 6 kanal (8 kanale në Mini dhe Nano, 16 në Mega), konvertues analog 10-bit analog në dixhital. Kjo do të thotë se do të hartojë tensionet hyrëse midis 0 dhe 5 volt në vlera të plota midis 0 dhe 1023. Kështu, pasi zëvendësova radion, LDR dhe riprogramova Atmega 328P shumë herë, hoqa dorë dhe vendosa se ishte koha për inovacion. Le të shkojmë në ESP32.

Bordi që kam përdorur ishte një: ESP32 WEMOS LOLIN32 Lite V1.0.0 Wifi & Bluetooth Card Rev1 MicroPython 4MB FLASH

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

Mikrokontrolluesi ESP-32

Tensioni i funksionimit 3.3V Kunja I/O Dixhitale 19 Kunja Anale të Hyrjes 6 Shpejtësia e Orës (Maks) 240Mhz Flash 4M bajt Gjatësia 5mm Gjerësia 2.54mm Pesha 4g

E cila ndryshe nga ajo në figurë nuk ka logon LOLIN (e falsifikuar nga Kina). Surpriza ime e parë e këndshme ishte se pinouti i shtypur në tabelë përputhej me pinout Arduino! Pasi u trajtova me kaq shumë borde noname ku më duhej të kërkoja pinouts gjatë gjithë ditës i vdekur i lodhur duke bërë gabime më në fund një tabelë ku pinout është drejt përpara WoW!

Sidoqoftë, këtu është ana e errët e historisë:

Fillimisht unë e kam lidhur LDR me A15 që është kunja 12 sepse ishte më e lehtë të ngjiteshin kunjat së bashku. Pastaj kam 4095 lexime (që është maksimumi që mund të marrësh me AnlogRead në ESP32) gjë që më tërhoqi mendjen sepse e gjithë arsyeja pse rindërtova stacionin ishte leximet e prishura të LDR nga ajo e vjetra (DHT ishte ende duke funksionuar mirë) Pra rezulton se:

Esp 32 integron dy regjistra ACD 12-bit. ADC1 me 8 kanale të bashkangjitura në GPIO 32-39 dhe ADC2 me 10 kanale në kunjat e tjera. Gjë është se ESP32 përdor ADC2 për të menaxhuar funksionet wifi, kështu që nëse përdorni Wifi, nuk mund ta përdorni atë regjistër. API -ja e shoferit ADC mbështet ADC1 (8 kanale, bashkangjitur GPIO -ve 32 - 39), dhe ADC2 (10 kanale, bashkangjitur GPIO -ve 0, 2, 4, 12 - 15 dhe 25 - 27). Sidoqoftë, përdorimi i ADC2 ka disa kufizime për aplikimin:

ADC2 përdoret nga drejtuesi i Wi-Fi. Prandaj aplikacioni mund të përdorë ADC2 vetëm kur drejtuesi i Wi-Fi nuk ka filluar. Disa nga kunjat ADC2 përdoren si kunja për lidhjen (GPIO 0, 2, 15) kështu që nuk mund të përdoren lirshëm. I tillë është rasti në Kutitë e mëposhtme zyrtare të Zhvillimit:

Kështu që lidhja e LDR nga pin 12 në A0 që është VP zgjodhi gjithçka, por nuk e kuptoj pse po i listojnë edhe kunjat ADC2 si të disponueshëm për krijuesit. Sa hobistë të tjerë humbën shumë kohë derisa ta kuptonin këtë? Të paktën shënoni kunjat e papërdorshëm me ngjyrë të kuqe ose diçka ose mos e përmendni fare në manual, kështu që krijuesit e tjerë mund të mësojnë rreth tyre nëse kanë vërtet nevojë për to. I gjithë qëllimi i ESP32 është ta përdorë atë me WIFI, të gjithë e përdorin atë me WIFI.

Një fillim i mirë se si të konfiguroni Arduino IDE për këtë tabelë:

Edhe pse e futa në kod këtu shkon edhe një herë:

Ky kod mund të mos përpilohet për modele të tjera ESP32 përveç Weemos LOLIN 32!

Ndërtoni cilësimet: -Përdorni ngarkimin/serinë: 115200 -Përdorni CPU/ram: 240Mhz (Wifi | BT) -Përdorni frekuencën e blicit: 80 Mhz

Ka mijëra stacione moti të bazuara në ESP32 në rrjet, ato janë shumë më të zakonshme sesa versioni im 1 me çipin e zhveshur sepse ato janë më të lehta për tu konfiguruar, nuk keni nevojë për programues thjesht lidhni pajisjen në usb dhe programoni atë dhe të tyre mënyra e gjumit të thellë është e shkëlqyeshme për një kohë të gjatë që funksionon nga bateria. Kjo ishte gjëja e parë që provova edhe para se të bashkohesha në kunjat, sepse siç vura re vende të shumta në këtë projekt, gjëja më e rëndësishme është konsumi i energjisë dhe me baterinë aktuale (të rreme) dhe panelin e vogël diellor gatishmëria fuqia nuk mund të shkojë me të vërtetë mbi 1-2mA, përndryshe projekti nuk do të jetë në gjendje të mbajë veten në një afat të gjatë.

Ishte përsëri një surprizë e këndshme që mënyra e gjumit të thellë funksionon siç reklamohet. Gjatë gjumit të thellë, rryma ishte aq e ulët sa shumë metri im i lirë nuk mund ta matte atë (funksionon për mua).

Gjatë dërgimit të të dhënave rryma ishte rreth 80mA (që është rreth 5 herë më shumë se kur Atmega 328P ishte zgjuar dhe transmetuar), megjithatë mos harroni se me V1 kishte një shkarkim mesatar të energjisë 1mA në LDR në modalitetin e gjumit (e cila gjithashtu varej nga nivelet e dritës dhe shkoi nga 0.5mA - 1mA) që tani është zhdukur.

Tani që bateria UltraFire është zhbllokuar nëse përdorni të njëjtën bateri këtu është ajo që mund të prisni:

Iavg = (Ton*Jon + Gjumë*Fjetur) / (Ton + Fjetje)

Iavg = (2s*80mA + 300s*0.01mA) / (2s + 300s) Iavg = 0.5mA

Pavg = VxIavg = 5Vx0.5mA = 2.5 mW

Teorike

Jetëgjatësia e baterisë = 22000mWh/2.5mW = 8800 orë = 366 ditë përafërsisht

E vërtetë

Jetëgjatësia e baterisë = 800mWh/2.5mW = 320 orë = 13 ditë përafërsisht

Unë nuk kisha një hapësirë për të matur saktësisht kohën e ndezjes, por me ndryshimet e mia ajo përfundon rreth 2 sekonda.

Nuk doja të kaloja pasditen në kodimin me porosi të gjithçkaje, kështu që kërkova disa stacione të tjera të motit në Instructables bazuar në ESP32 për të parë se çfarë bëjnë për ruajtjen e të dhënave. Mjerisht vuri re se ata po përdorin faqe jofleksibile dhe të kufizuara siç është cloudcloud. Meqenëse unë nuk jam një tifoz i "cloud" dhe kodi i tyre u prish prej kohësh sepse faqja ka ndryshuar API -në e saj që atëherë, më janë dashur 10 minuta për të bërë një zgjidhje me porosi sepse nuk është aq e vështirë sa mund të mendohet. Le të fillojmë!

Para së gjithash, nuk ka asnjë fotografi të bordit të qarkut veç e veç për këtë projekt, sepse përdor komponentët e njëjtë saktësisht (më falni për atë të ngjitur në figurën e shëmtuar të bukës) si V1 me ndryshimin se gjithçka shkon 3.3V. DHT u lidh me një tërheqje në VCC, LDR u tërhoq me një 10k. Problemi që mund të shihni me bateritë 18650 si ato të rreme kineze (6500 mAh ultra sun fire lol: D) është se ata fillojnë kurbën e shkarkimit nga rreth 4.1V moshë e re dhe shkojnë derisa qarku i tyre i ndërprerjes të fillojë për të ndaluar dëmtimin e qelizave (ata që kanë fatin ta kenë). Kjo nuk është askund e mirë për ne si hyrje 3.3V. Megjithëse kjo tabelë LOLIN ka një lidhës baterie litiumi dhe qark karikimi në këtë projekt unë doja të rinovoja sa më shumë që të mundja nga stacioni i vjetër, kështu që me atë të vjetër 18650 NUK MUND ta përdorni këtë karikues të integruar. Zgjidhja ishte e thjeshtë: Unë ndërpreva një kabllo mikro USB të ngjitur në 5V nga përforcuesi i vjetër i tensionit dhe problemi voila u zgjidh, pasi bordi në microUSB ka rregullator.

Pra, ndryshimi midis versionit të vjetër dhe atij të ri që në baterinë e vjetër siguron 3.7V -> rritur në 5V -> ardu funksionon në 5V -> të gjithë përbërësit funksionojnë në 5V.

Në atë të re: bateria siguron 3.7V -> rritur në 5V -> rregullohet përmes reg në bord në ESP32 -> të gjithë përbërësit funksionojnë në 3.3V.

Softuerisht do të kemi nevojë për një bibliotekë DHT gjithashtu, DHT e Arduino nuk është e pajtueshme me atë të ESP. Ajo që na nevojitet quhet DHT ESP.

Fillova ta bazoja kodin tim në shembullin DHT, ky kod siguroi. Funksionimi i kodit është:

1, Merrni të dhënat mjedisore nga të dhënat DHT + Diellore nga fotoceli

2, Lidhu me wifi me IP statike

3, POST të dhënat në një skript php

4, Flini për 10 minuta

Siç do ta vini re, kam akorduar kodin për efikasitet për të minimizuar absolutisht kohën e zgjimit pasi ai po kullon 5 herë energji sesa projekti i vjetër kur bëri kur ishte ndezur. Si e bëra këtë? Para së gjithash, nëse ka ndonjë lloj gabimi, funksioni getTemperature () do të kthehet me false (që do të thotë 10 minuta gjumë përsëri). Kjo mund të jetë si sensori DHT që nuk mund të fillohet ose lidhja wifi nuk është e disponueshme. Siç vëreni laku i zakonshëm gjatë () për të vazhduar përpjekjen e shoqatës wifi u hoq gjithashtu, por një vonesë 1 sekondëshe duhej lënë atje, përndryshe nuk do të lidhet gjithmonë dhe gjithashtu varet nga lloji i AP, ngarkesa etj. Sa shpejt do të ndodhë, me 0.5s kam marrë sjellje jokonsistente (ndonjëherë nuk mund të lidhej). Nëse dikush di një mënyrë më të mirë për ta bërë këtë, ju lutemi lini atë në komente. Vetëm kur të dhënat DHT lexohen DHE lidhja wifi është e hapur, do të përpiqet t'i postojë të dhënat në skript në serverin e uebit. Të gjitha llojet e funksioneve të humbjes së kohës si Serial.println () janë çaktivizuar në modalitetin normal të funksionimit gjithashtu. Si server unë gjithashtu përdor IP për të shmangur një kërkim të panevojshëm DNS, në kodin tim si porta e paracaktuar ashtu edhe serveri dns i vendosur në 0.0.0.0.

Unë nuk e kuptoj pse është kaq e vështirë të krijosh API -në tënde kur gjithçka që duhet është:

sprintf (përgjigje, "temp =%d & hum =%d & hi =%d & sol =%d", temp, hum, hi, sol);

int httpResponseCode = http. POST (përgjigje);

Ju e vendosni këtë kod të vogël php në çdo pi mjedër dhe mund të bëni detyra të sistemit () menjëherë bazuar në telemetrinë si ndizni tifozët ose ndizni dritat nëse errësohet sa duhet.

Disa shënime në lidhje me kodin:

WiFi.config (staticIP, gateway, subnet, dns); // DUHET të jetë pasi Wifi të fillojë sa budalla…

Modaliteti WiFi (WIFI_STA); // DUHET përndryshe do të krijojë gjithashtu një AP të padëshiruar

Po mirë tani e dini. Gjithashtu rendi i konfigurimeve IP mund të ndryshojë përmes platformave, unë provova shembuj të tjerë së pari ku u ndërruan vlerat e portës dhe nën -rrjetës. Pse të vendosni IP statike? Epo është mjaft e qartë, nëse keni një kuti të dedikuar në rrjetin tuaj si një server linux që ekzekuton isc dhcpd, ju nuk doni njëqind milion regjistrime log kur ESP zgjohet dhe merrni IP nga DHCP. Routerët normalisht nuk regjistrojnë shoqatat në mënyrë që të mos shihen. Ky është çmimi i kursimit të energjisë.

V2 nuk ka qenë kurrë në gjendje të mbajë veten për shkak të baterisë me cilësi të keqe dhe unë thjesht e kam vënë atë në një përshtatës, kështu që nëse doni të ndërtoni ose V1 ose V2 NUK blini baterinë e përmendur, bëni kërkimin tuaj për bateritë (çdo 18650 kapaciteti i reklamuar mbi 2000mAh në Ebay është një mashtrim me një probabilitet të lartë).

Recommended: