Përmbajtje:
- Hapi 1: Përzgjedhja e komponentit
- Hapi 2: Ndërtimi
- Hapi 3: Kodi - Biblioteka e Sensorit të Fuqisë së Ulët, Ndërfaqja e Përdoruesit dhe Skica Arduino
- Hapi 4: Matja e Rrymës së Furnizimit
- Hapi 5: Rryma totale e furnizimit dhe jeta e baterisë
- Hapi 6: Furnizoni Alternativat - Ndihmë Diellore, Vetëm Bateri, Vetëm Diell
- Hapi 7: Përfundimi
Video: BLE e lehtë me fuqi shumë të ulët në Arduino Pjesa 2 - Monitorues i temperaturës/lagështisë - Rev 3: 7 Hapa
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:10
Përditësimi: 23 Nëntor 2020 - Zëvendësimi i parë i 2 baterive AAA që nga 15 Janari 2019 dmth. 22 muaj për 2xAAA Alkaline Përditësim: 7 Prill 2019 - Rev 3 i lp_BLE_TempHumidity, shton komplotet e datës/orës, duke përdorur pfodApp V3.0.362+, dhe fikje automatike kur dërgoni të dhënave
Përditësim: 24 Mars 2019 - Rev 2 i lp_BLE_TempHumidity, shton më shumë mundësi komploti dhe i2c_ClearBus
Ky udhëzues, Një Monitorues i Lagështisë së Temperaturës me Fuqi Shumë të Ulet, është Pjesa 2 nga 3.
Pjesa 1 - Ndërtimi i pajisjeve BLE me fuqi shumë të ulët të bëra lehtë me mbulesat Arduino duke vendosur Arduino në kodimin e pajisjeve me fuqi të ulët nRF52, modulin e programimit dhe matjen e rrymës së furnizimit. Ai gjithashtu mbulon kohëmatësit dhe krahasuesit e specializuar të energjisë së ulët dhe hyrjet e depozituara dhe përdorimin e pfodApp për t'u lidhur dhe kontrolluar pajisjen nRF52.
Pjesa 2 - Një monitor i lagështisë së temperaturës me fuqi shumë të ulët, ky, mbulon duke përdorur një modul Redbear Nano V2 dhe një sensor të temperaturës / lagështisë Si7021 për të ndërtuar një bateri / monitor diellor me fuqi të ulët. Ai gjithashtu mbulon modifikimin e bibliotekës Si7021 me fuqi të ulët, rregullimin e pajisjes BLE për të zvogëluar konsumin e saj aktual prej <25uA dhe hartimin e një ekrani të personalizuar të temperaturës/lagështisë për celularin tuaj.
Pjesa 3 - Një zëvendësim Redbear Nano V2 mbulon duke përdorur module të tjerë të bazuar në nRF52 në vend të Nano V2. Ai mbulon përzgjedhjen e përbërësve të furnizimit, ndërtimin, heqjen e mbrojtjes së programimit të çipave nRF52, përdorimin e kunjave NFC si GPIO normale dhe përcaktimin e një bordi të ri nRF52 në Arduino.
Ky udhëzues është një aplikim praktik i Pjesës 1 Ndërtimi i pajisjeve BLE me fuqi shumë të ulët të bëra lehtë me Arduino duke ndërtuar një Monitor të temperaturës dhe lagështisë BLE me fuqi shumë të ulët. Monitori do të funksionojë për vite me radhë në Coin Cell ose 2 bateri AAA, madje edhe më gjatë me ndihmën diellore. Ky tutorial mbulon akordimin e parametrave BLE për konsum të ulët të energjisë dhe mënyrën e fuqizimit të pajisjes tuaj nga bateria OSE bateria + diellore OSE vetëm solare.
Përveç shfaqjes së temperaturës dhe lagështisë aktuale, monitori ruan 36 orët e fundit të leximeve 10min dhe 10 ditët e fundit të leximeve për orë. Këto mund të grafikohen në celularin tuaj Android dhe vlerat të ruhen në një skedar regjistri. Asnjë programim Android nuk kërkohet, pfodApp merret me të gjitha këto. Ekrani dhe grafiku i Android kontrollohet plotësisht nga skica juaj Arduino, kështu që ju mund ta personalizoni sipas kërkesës.
Një tabelë Redbear Nano V2 përdoret për përbërësin nRF52832 BLE dhe një dërrasë shpërthimi Sparkfun Si7021 përdoret për Sensorin e Temperaturës / Lagështisë. Një bibliotekë e modifikuar me fuqi të ulët përdoret me Si7021. Një PCB e vogël u krijua për të mbajtur NanoV2 dhe furnizimin me përbërës. Sidoqoftë, meqenëse nuk përdoren përbërës të montuar në sipërfaqe, mund ta ndërtoni me lehtësi në bordin vero. Tre versione të furnizimit me energji janë të mbuluara. i) Bateria plus Asistenti Diellor, ii) Vetëm Bateria, iii) Vetëm Diellor. Opsioni Solar Only nuk ka hapësirë ruajtëse të baterisë dhe kështu do të funksionojë vetëm kur ka pak dritë. Një dritë e ndritshme dhome ose llambë tavoline është e mjaftueshme.
Skicë
Ky projekt ka 4 pjesë relative të pavarura:-
- Përzgjedhja dhe Ndërtimi i Komponentit
- Kodi - Biblioteka e Sensorit me Fuqi të Ulët, Ndërfaqja e Përdoruesit dhe Skica Arduino
- Matja e Rrymës së Furnizimit dhe Jeta e Baterisë
- Alternativat e Furnizimit - Ndihma Diellore, Vetëm Bateria, Vetëm Diell
Hapi 1: Përzgjedhja e komponentit
Përzgjedhja e Komponentit
Siç u përmend në Pjesën 1-Mashtrimi për të marrë një zgjidhje vërtet të ulët të energjisë është të mos bëni asgjë shumicën e kohës, të minimizoni rrymën përmes rezistencave të jashtme tërheqëse/tërheqëse në hyrje dhe të mos keni ndonjë përbërës shtesë. Ky projekt do të përdorë secilën nga ato truket për të marrë një zgjidhje me fuqi të ulët.
Komponenti nRF52832
Çipi nRF52832 mund të funksionojë me një furnizim me energji midis 1.7V dhe 3.6V (tensioni maksimal maksimal 3.9V). Kjo do të thotë që ju mund ta furnizoni çipin direkt nga një qelizë monedhe ose 2 bateri AAA. Sidoqoftë, është e kujdesshme të shtoni një rregullator të tensionit për të mbrojtur çipin nga mbi volt. Ky komponent shtesë vjen me një kosto energjie, por në rastin e bordit NanoV2, rregullatori në bord, TLV704, konsumon më pak se 5.5uA max, zakonisht vetëm 3.4uA. Për këtë përdorim të vogël shtesë të energjisë ju merrni mbrojtje për hyrjet e furnizimit deri në 24V.
Komponenti Si7021
Vetë sensori Si7021 tërheq zakonisht <1uA kur nuk merr një matje, domethënë në gatishmëri, dhe deri në 4mA kur transmeton të dhënat përmes I2C. Meqenëse ne nuk marrim matje vazhdimisht, 4mA nuk është një pjesë e rëndësishme e rrymës mesatare të furnizimit. Duke marrë një lexim shumë 30 sekonda i shton më pak se 1uA rrymës mesatare të furnizimit, shihni matjet e rrymës së furnizimit më poshtë.
Ekzistojnë dy dërrasa të disponueshme të gatshme Si7021. Një nga Adafruit dhe një nga Sparkfun. Një vështrim i shpejtë në dy bordet do t'ju tregojë se bordi Adafruit ka shumë më tepër përbërës sesa bordi Sparkfun, kështu që ju do të jeni të prirur të zgjidhni bordin Sparkfun. Shikimi i skemave për secilën tabelë tregon se bordi Sparkfun është vetëm sensori i zhveshur dhe dy rezizotorë tërheqës 4k7, ndërsa bordi Adafruit ka një rregullator në bord, MIC5225, i cili zakonisht tërheq 29uA gjatë gjithë kohës. Kjo është domethënëse kur rryma mbi të gjithë për pjesën tjetër të qarkut është <30uA. Meqenëse ne tashmë kemi një rregullator për çipin nRF52832, ky komponent shtesë nuk është i nevojshëm dhe Si7021 mund të fuqizohet nga ai furnizim 3.3V. Pra, ky projekt do të përdorë bordin e daljes Si7021 nga Sparkfun.
minimizoni rrymën përmes rezistencave të jashtme tërheqëse/tërheqëse në hyrje
Rezistencat tërheqëse 4K7 I2C nuk janë me vlerë veçanërisht të lartë dhe do të tërheqin 0.7mA kur tërhiqen ulët. Ky do të ishte një problem nëse ata ishin në një hyrje kalimi që ishte e bazuar për periudha të gjata. Megjithatë në këtë projekt rryma përmes këtyre rezistencave minimizohet duke përdorur ndërfaqen I2C vetëm rrallë dhe vetëm për një kohë të shkurtër. Shumicën e kohës linjat I2C nuk janë në përdorim dhe janë të larta / tri-gjendje kështu që asnjë rrymë nuk rrjedh nëpër këto rezistorë.
Hapi 2: Ndërtimi
Projekti është ndërtuar në një PCB të vogël, por meqenëse nuk ka përbërës SMD, ai mund të ndërtohet po aq lehtë duke përdorur bordin vero. PCB është prodhuar nga pcbcart.com nga këto skedarë Gerber, TempHumiditySensor_R1.zip PCB është me qëllim të përgjithshëm mjaftueshëm për t'u përdorur për projekte të tjera BLE.
Skema është treguar më lart. Këtu është një version pdf.
Lista e Pjesëve
Kosto e përafërt për njësi në Dhjetor 2018, $ 62 dollarë, pa përfshirë transportin dhe programuesin nga Pjesa 1
- Redbear NanoV2 17 17 dollarë amerikanë
- Tabela e shpërthimit Sparkfun Si7021 ~ 8 dollarë amerikanë
- 2 x 53mm x 30mm 0.15W 5V qeliza diellore p.sh. Fluturo mbi 1.10 dollarë amerikanë
- 1 x PCB TempHumiditySensor_R1.zip 25 25 dollarë amerikanë për 5 zbritje www.pcbcart.com OSE tabelë Vero (shirit bakri) p.sh. Jaycar HP9540 ~ 5 AUD $
- 2 x 1N5819 dioda schottky p.sh. Digikey 1N5819FSCT-ND ~ 1 US $
- 1 x 470R 0.4W 1% rezistencë p.sh. Digikey BC3274CT-ND 0. 0.25 dollarë amerikanë
- Kunjat e kokës mashkullore 6 x 6 pin p.sh. Sparkfun PRT-00116 ~ 1.5 dollarë amerikanë
- bluzë nga femra në femër p.sh. ID Adafruit: 1950 2 2 dollarë amerikanë
- Vida najloni 3mm x 12mm, p.sh. Jaycar HP0140 ~ 3 AUD $
- Arra najloni 3mm x 12mm, p.sh. Jaycar HP0146 ~ 3 AUD $
- Scotch Permanent Mounting Tape Cat 4010 p.sh. nga Amazon 6. 6.6 dollarë amerikanë
- Mbajtës baterie AAA x 2, p.sh. Sparkfun PRT-14219 ~ 1.5 dollarë amerikanë
- 2 bateri alkaline AAA 750mA, p.sh. Sparkfun PRT-09274 1.0 1.0 US $ Këto bateri duhet të zgjasin> 2 vjet. Bateritë Alkaline Energizer kanë kapacitet më të lartë
- Kuti Plastike (ABS) 83mm x 54mm x 31mm, p.sh. Jaycar HB6005 ~ 3 AUD $
- pfodApp ~ 10 dollarë amerikanë
- 1 x 22uF 63V Kondensator i ulët ESR (Opsional) p.sh. Jaycar RE-6342 0.5 0.5 AUD $ ose Digikey P5190-ND 0. 0.25 US $
Ndërtimi është drejt përpara. Mbajtësi i baterisë dhe qelizat diellore janë të fiksuara në kutinë plastike me shirit të dyanshëm të rëndë.
Vini re tela lidhëse Gnd nga CLK në GND në pjesën e përfunduar. Kjo është instaluar PAS programimit për të parandaluar zhurmën në hyrjen CLK që të shkaktojë çipin nRF52 në një mënyrë korrigjimi aktual të lartë
Hapi 3: Kodi - Biblioteka e Sensorit të Fuqisë së Ulët, Ndërfaqja e Përdoruesit dhe Skica Arduino
Shkarkoni kodin e zipuar, lp_BLE_TempHumidity_R3.zip dhe hapeni atë në drejtorinë tuaj të Skicave Arduino. Ju gjithashtu duhet të instaloni bibliotekën lp_So7021 nga ky skedar zip dhe gjithashtu të instaloni bibliotekën pfodParser.
Biblioteka e sensorëve me fuqi të ulët, lp_Si7021
Të dy Adafruit dhe Sparkfun ofrojnë biblioteka mbështetëse për të hyrë në sensorin Si7021, megjithatë të dyja ato biblioteka janë të papërshtatshme për përdorim shumë të ulët të energjisë. Të dy përdorin një vonesë (25) në kod për të vonuar leximin e sensorit gjatë matjes së tij. Siç u tha në Pjesën 1 Vonesat janë të këqija. Vonesa Arduino () thjesht mban mikro-procesorin në punë duke përdorur energji ndërsa pret që vonesa të përfundojë. Kjo thyen rregullin e parë të BLE me fuqi të ulët, mos bëni asgjë shumicën e kohës. Biblioteka zëvendësuese lp_Si7021, zëvendëson të gjitha vonesat me lp_timers të cilat vënë në gjumë mikro-procesorin duke pritur që sensori të përfundojë matjen e tij.
Sa ndryshim bën biblioteka lp_Si7021? Përdorimi i bibliotekës mbështetëse origjinale SparkFun Si7021 dhe marrja e një leximi në sekondë pa asnjë printim Serial, tërheq mesatarisht m 1.2mA. Zëvendësimi i bibliotekës Sparkfun me bibliotekën lp_Si7021 zvogëlon rrymën mesatare në u 10uA, pra 100 herë më pak. Në këtë projekt shkalla më e shpejtë e matjes është një herë në 30 sekonda kur celulari është i lidhur, gjë që rezulton në një rrymë mesatare të sensorit më pak se 1uA. Kur nuk ka lidhje BLE, shkalla e matjes është një herë në 10 minuta dhe rryma mesatare e furnizimit të sensorit është e papërfillshme.
Ndërfaqja e përdoruesit
Më sipër është ekrani kryesor i ekranit dhe një pamje e zmadhuar e historisë 10 -orëshe në orë. Komplotet mund të zmadhohen dhe vendosen në të dy drejtimet, duke përdorur dy gishta.
Ndërfaqja e përdoruesit kodohet në skicën Arduino dhe më pas i dërgohet pfodApp në lidhjen e parë ku është ruajtur për përdorim dhe përditësime të përsëritura. Ekrani grafik është ndërtuar nga vizatimi i primitivëve. Shikoni Custom Arduino Controls për Android për një mësim se si të krijoni kontrollet tuaja. Skedarët e Termometrit, RHGauge dhe Button përmbajnë komandat e vizatimit për ato artikuj.
Shënim: Asnjë nëse kjo ekran është e integruar në pfodApp. E gjithë ekrani kontrollohet plotësisht nga kodi në skicën tuaj Arduino
Metoda sendDrawing_z () në skicën lp_BLE_TempHumidity_R3.ino përcakton ndërfaqen e përdoruesit.
void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // sfondi i parazgjedhur në WHITE nëse hiqet dmth. fillimi (50, 60); parser.sendRefreshAndVersion (30000); // ri-kërko dwg çdo 30 sekonda sek. kjo injorohet nëse nuk vendoset asnjë version parser // prek butonat e mësipërm për të detyruar përditësimet e ekranit dwgs.touchZone (). cmd ('u'). madhësia (50, 39). dërgoni (); dwgs.pushZero (35, 22, 1.5); // lëviz zero në qendër të dwg në 35, 22 dhe shkallë me 1.5 herë rhGauge.draw (); // vizatoni kontrollin dwgs.popZero (); dwgs.pushZero (18, 33); // lëviz zero në qendër të dwg në 18, shkalla 33 është 1 (parazgjedhje) termometër.draw (); // vizatoni kontrollin dwgs.popZero ();
dwgs.pushZero (12.5, 43, 0.7); // lëvizni zero në qendër të dwg në 12.5, 43 dhe shkallëzoni me 0.7
hrs8PlotButton.draw (); // vizatoni kontrollin dwgs.popZero (); dwgs.pushZero (37.5, 43, 0.7); // lëviz zero në qendër të dwg në 37.5, 43 dhe shkallë me 0.7 ditë1PlotButton.draw (); // vizatoni kontrollin dwgs.popZero ();
dwgs.pushZero (12.5, 54, 0.7); // lëvizni zero në qendër të dwg në 12.5, 54 dhe shkallëzoni me 0.7
days3PlotButton.draw (); // vizatoni kontrollin dwgs.popZero (); dwgs.pushZero (37.5, 54, 0.7); // lëviz zero në qendër të dwg në 37.5, 54 dhe shkallë me 0.7 ditë10PlotButton.draw (); // vizatoni kontrollin dwgs.popZero (); dwgs.end (); }
Komandat pushZero ndryshojnë origjinën dhe shkallëzimin për vizatimin e komponentit tjetër. Kjo ju lejon të ndryshoni me lehtësi madhësinë dhe pozicionin e butonave dhe matësve.
Në lidhjen e parë, ekranit fillestar i duhen 5 ose 6 sekonda për të ngarkuar poshtë bajtët ~ 800 që përcaktojnë ekranin. pfodApp ruan ekranin, kështu që përditësimet e ardhshme duhet të dërgojnë vetëm ndryshimet, pozicionet e matësve dhe leximet. Këto përditësime marrin vetëm disa sekonda për të dërguar 128 bajtët e nevojshëm për të azhurnuar ekranin.
Janë pesë (5) zona prekëse aktive të përcaktuara në ekran. Çdo buton ka një të përcaktuar në metodën e tij të tërheqjes (), kështu që ju mund të klikoni mbi të për të hapur komplotin përkatës, dhe gjysma e sipërme e ekranit konfigurohet si zona e tretë e prekjes
dwgs.touchZone (). cmd ('u'). madhësia (50, 39). dërgoni ();
Kur klikoni në ekranin mbi butonat, komanda 'u' dwg dërgohet në skicën tuaj për të detyruar një matje të re dhe përditësim të ekranit. Normalisht kur lidheni, përditësimet ndodhin vetëm çdo 30 sekonda. Çdo klikim ose rifreskim i vizatimit detyron një matje të re. Përgjigja nga skica Arduino në pfodApp vonohet derisa të përfundojë matja e re (m 25mS) në mënyrë që vlera më e fundit të dërgohet në përditësim.
Skicë Arduino
Skica Arduino, lp_BLE_TempHumidity_R3.ino, është një version i zgjeruar i skicës shembull të përdorur në Pjesën 1. Skica lp_BLE_TempHumidity_R3.ino zëvendëson menunë me vizatimin e treguar më sipër. Ai gjithashtu shton mbështetjen e sensorit lp_Si7021 dhe grupet e të dhënave për të ruajtur matjet historike 10 min dhe orë.
Komplikimi kryesor në skicën lp_BLE_TempHumidity_R3.ino është të trajtosh dërgimin e të dhënave të komplotit. Ndërsa matjet bëhen readRHResults () merret me mbledhjen e rezultateve dhe ruajtjen e tyre në vargjet historike. Vargjet janë 120 të gjata, por kur të dhënat dërgohen, 30 pikat e para të të dhënave janë për një interval kohor më të mirë.
Ka disa pika për të cilat duhet të kujdeseni kur dërgoni 200 pika të çuditshme të komplotit për t'u shfaqur:-
- Çdo pikë e të dhënave është by 25 bajt e gjatë, në formatin e tekstit CSV. Pra, 150 pikë janë 3750 bajt të dhëna. Klasa lp_BLESerial ka një tampon 1536 bajt, 1024 prej të cilave është mjaft i madh për mesazhin më të madh pfod. 512 bajtët e tjerë janë të rezervuar për dërgimin e të dhënave. Pasi të dhënat historike të kenë mbushur 512 bajtët, dërgimi i të dhënave të tjera shtyhet derisa të ketë hapësirë në tampon.
- Për të shmangur të dhënat e komplotit që ngadalësojnë përditësimet e ekranit kryesor, të dhënat e komplotit dërgohen vetëm ndërsa shfaqet ekrani i komplotit. Pasi përdoruesi të kthehet në ekranin kryesor, dërgimi i të dhënave të komplotit ndalet. Dërgimi i të dhënave të komplotit rifillon kur përdoruesi klikon butonin e komplotit për të shfaqur përsëri komplotin.
- Komplotet historike fillojnë nga 0 (tani) dhe kthehen prapa në kohë. Nëse nuk ka pasur asnjë matje të re që nga shfaqja e komplotit të fundit, të dhënat e mëparshme që tashmë ishin shkarkuar shfaqen përsëri menjëherë menjëherë. Nëse ka një matje të re, atëherë ajo shtohet në të dhënat e para të komplotit.
- Kur monitori ndizet për herë të parë, nuk ka lexime historike dhe 0 ruhet në vargjet si një lexim i pavlefshëm. Kur shfaqet komploti, leximet e pavlefshme thjesht anashkalohen, duke rezultuar në një komplot më të shkurtër.
Celsius dhe Fahrenheit
Skica lp_BLE_TempHumidity_R3.ino shfaq dhe vizaton të dhënat në Celsius. Për të kthyer rezultatet në Fahrenheit zëvendësoni të gjitha dukuritë e
parser.print (sensor. Temp_RawToFloat (..
me
parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…
Dhe zëvendësoni simbolin unicode degC në Octal / 342 / 204 / 203 me simbolin degF / 342 / 204 / 211
pfodApp do të shfaqë çdo Unicode që mund të shfaqni në celularin tuaj.
Shihni Përdorimi i karaktereve jo-ASCII në Arduino për më shumë detaje. Ndryshoni gjithashtu cilësimet MIN_C, MAX_C në Termometër.h. Më në fund rregulloni kufijtë e komplotit ashtu siç dëshironi p.sh. ndryshim | Temp C ~ 32 ~ 8 ~ deg C |
të thuash
| Temp F ~ 90 ~ 14 ~ deg F |
Hapi 4: Matja e Rrymës së Furnizimit
Duke përdorur bibliotekën lp_Si7021, edhe marrja e një matje të temperaturës/lagështisë çdo 10 sekonda kontribuon vetëm u 1uA në rrymën mesatare të furnizimit, kështu që faktori kryesor në rrymën e furnizimit dhe kështu jetëgjatësinë e baterisë është rryma e përdorur nga reklamimi dhe lidhja dhe transmetimi i të dhënave BLE. Me
Lidhni tabelën e Temperaturës/Lagështisë me Programuesin e përshkruar në Pjesën 1 siç tregohet më sipër.
Me qelizat diellore dhe bateritë e shkëputura, Vin dhe Gnd janë të lidhur me Vdd dhe Gnd të programuesit (lidhjet e Verdha dhe të Gjelbërta) dhe SWCLK dhe SWDIO janë të lidhura me Clk dhe SIO të tabelës së kokës së programuesit (lidhjet blu dhe rozë)
Tani mund të programoni NanoV2 dhe të matni rrymën e furnizimit siç përshkruhet në Pjesën 1.
Instaloni bibliotekën Si7021 me fuqi të ulët nga ky skedar zip, lp_Si7021.zip dhe instaloni bibliotekën pfodParser dhe hiqeni lp_BLE_TempHumidity_R3.zip në drejtorinë tuaj të skicave Arduino dhe programoni tabelën Temp/Humditiy me lp_BLE_TempHumidity_R3.ino
Siç u përmend më lart, kontributi i sensorit është <1uA, mesatarisht, në shkallën më të lartë të matjes të përdorur në këtë projekt, kështu që reklamat dhe parametrat e lidhjes së BLE janë faktori përcaktues për jetën e baterisë.
Parametrat e reklamimit dhe lidhjes të BLE që ndikojnë në konsumin aktual janë: -Tx Power, Intervali i Reklamimit, Intervale Lidhje Max dhe Min, dhe Vonesa e Slave.
Shënim: Duke përdorur lidhjet e mësipërme ka dy (2) rregullatorë në furnizim, një në tabelën NanoV2 nëpërmjet Vin dhe MAX8881 në furnizimin e programuesit. Kjo do të thotë që rrymat e matura të furnizimit do të jenë ~ 5uA më të larta se ato aktuale, për shkak të rregullatorit të dytë. Vlerat e cituara më poshtë janë rrymat e matura minus këtë 5uA shtesë.
Fuqia Tx
Tx Efektet e energjisë furnizojnë rrymën si kur lidheni ashtu edhe kur reklamoni (jo të lidhur). Ky projekt përdor cilësimin e fuqisë maksimale (+4) dhe siguron gamën më të mirë dhe imunitetin më të madh të zhurmës për lidhjet më të besueshme. Ju mund të përdorni metodën lp_BLESerial setTxPower () për të ndryshuar cilësimin e energjisë. Vlerat e vlefshme janë, në rritjen e fuqisë, -40, -30, -20, -16, -12, -8, -4, 0 +4. Duhet të telefononi metodën lp_BLESerial filloj () PARA se të telefononi setTxPower (). Shihni skicën lp_BLE_TempHumidity_R3.ino.
Mund të eksperimentoni me zvogëlimin e fuqisë Tx, por kompromisi është diapazoni më i shkurtër dhe më shumë ndërprerje të lidhjeve për shkak të ndërhyrjes. Në këtë projekt Tx Power lihet në parazgjedhjen e tij, +4. Siç do ta shihni më poshtë, edhe me këtë cilësim, rryma shumë e ulët e furnizimit janë ende të mundshme.
Intervali i Reklamimit
Për një fuqi të caktuar Tx, kur nuk ka lidhje, Intervali i Reklamimit vendos konsumin mesatar aktual. Gama e rekomanduar është 500 deri në 1000mS. Këtu u përdor 2000mS. Kompromisi është se intervale më të gjata reklamimi do të thotë se është më e ngadaltë që celulari juaj të gjejë pajisjen dhe të krijojë një lidhje. Brenda, intervalet e reklamave vendosen në shumëfish të 0.625mS në rangun 20mS deri në 10.24sek. Metoda lp_BLESerial setAdvertisingInterval () merr mS si argument, për lehtësi. Për intervalin reklamues +4 TxPower dhe 2000mS konsumi aktual ishte 18uA. Për intervalin reklamues 1000mS, ishte 29uA. Rev 2 përdori interval reklamimi 2000mS por kjo rezultoi në lidhje të ngadalta. Rev 3 ndryshoi në intervalin e reklamimit 1000mS për t'i bërë lidhjet më të shpejta.
Intervale maksimale dhe minimale të lidhjes
Pasi të krijohet një lidhje, intervali i lidhjes përcakton sa shpesh celulari kontakton pajisjen. Seti lp_BLESerialConnectionInterval () ju lejon të vendosni maksimumin dhe minin e sugjeruar, megjithatë celulari kontrollon se sa është në të vërtetë intervali i lidhjes. Për lehtësi argumentet për të vendosurConnectionInterval () janë në mS, por nga brenda intervalet e lidhjes janë në shumëfish të 1.25mS, në rangun 7.5mS deri në 4sek.
Cilësimi i paracaktuar është vendosur ConnectionInterval (100, 150) dmth min 100mS në max 150mS. Rritja e këtyre vlerave zvogëlon rrymën e furnizimit gjatë lidhjes, por kompromisi është transmetimi më i ngadalshëm i të dhënave. Çdo përditësim i ekranit merr rreth 7 mesazhe BLE, ndërsa 36 orë të plota të matjeve 10 min merr rreth 170 mesazhe BLE. Pra, rritja e intervaleve të lidhjes ngadalëson përditësimet e ekranit dhe shfaqjen e komplotit.
Klasa lp_BLESerial ka një tampon të dërgimit 1536 bajt dhe dërgon vetëm një bllok prej 20 bajtësh nga ky tampon, secila interval maksimal i lidhjes për të parandaluar përmbytjen e lidhjes BLE me të dhëna. Gjithashtu kur dërgoni të dhëna të komplotit, skica dërgon vetëm të dhëna derisa 512 byte presin të dërgohen, pastaj vonon dërgimin e më shumë të dhënave derisa të dërgohen disa të dhëna. Kjo shmang përmbytjet e dërgimit të tamponit. Kjo goditje e dërgimeve e bën transmetimin e të dhënave në celular të besueshëm, por nuk është i optimizuar për maksimumin përmes vendosjes.
Në këtë projekt, intervalet e lidhjes u lanë si vlera të paracaktuara.
Vonesa e skllevërve
Kur nuk ka të dhëna për t'u dërguar në celular, pajisja mund të injorojë opsionalisht disa nga mesazhet e lidhjes nga celulari. Kjo kursen energjinë Tx dhe rrymën e furnizimit. Cilësimi i vonesës së skllevërve është numri i mesazheve të lidhjes që duhet të injorohen. Parazgjedhja është 0. Metoda lp_BLESerial setSlaveLatency () mund të përdoret për të ndryshuar këtë cilësim.
Vonesa e paracaktuar e Slave prej 0 dha 50 AA rrymë furnizimi, duke injoruar përditësimet e ekranit çdo 30 sekonda, por duke përfshirë mesazhet e keepAlive shumë 5 sekonda. Vendosja e vonesës së skllevërve në 2 dha një rrymë mesatare të furnizimit të lidhur prej u 25uA. Një cilësim i vonesës së skllevërve prej 4 dha 20 AA. Cilësimet më të larta nuk duket se e zvogëlojnë rrymën e furnizimit, kështu që u përdor një cilësim Slave Latency prej 4.
Kur lidhet, çdo 30 sekonda pfodApp kërkon një përditësim të ekranit. Kjo detyron një matje të sensorit dhe dërgon të dhënat përsëri për të azhurnuar ekranin grafik. Ky përditësim rezulton me 66 AA shtesë për 2 sekonda secila 30 sekonda. Kjo është një mesatare prej 4.4uA gjatë 30 sekondave. Duke shtuar këtë në 20uA, jep një rrymë mesatare të furnizimit të lidhjes prej u 25uA
Hapi 5: Rryma totale e furnizimit dhe jeta e baterisë
Duke përdorur cilësimet e mësipërme, të përcaktuara në lp_BLE_TempHumidity_R3.ino, Totali i Furnizimit aktual kur Lidhet dhe përditëson ekranin çdo 30 sekonda, afërsisht 25uA. Kur nuk lidhet, është afërsisht 29uA.
Për llogaritjen e jetëgjatësisë së baterisë supozohet një tërheqje e vazhdueshme aktuale prej u 29uA.
Bateritë e ndryshme kanë kapacitete të ndryshme dhe karakteristika të tensionit. Bateritë e konsideruara këtu janë qeliza monedhë CR2032, qeliza monedhash CR2450 (N), 2 x AAA Alkaline, 2 x AAA Lithium dhe LiPo.
Përmbledhje e baterisë
Nëse përdorni Solar Assist atëherë shtoni 50% në këto shifra të jetëgjatësisë së baterisë (duke supozuar 8 orë dritë në ditë)
Shënim: Kondensatori 22uF LowESR (C1), përveç kondensatorit NanoV2 22uF në bord, ruan rrymën e Qelizës Diellore dhe më pas e furnizon atë për impulset aktuale TX. Nga ana tjetër, bateria furnizon një pjesë të rrymës TX. Ky shtesë 22UF LowESR i shton rreth 10% rrymës së baterisë kur qelia diellore nuk është furnizuesi, por gjithashtu zgjat jetën e baterisë duke kompensuar rritjen e rezistencës së brendshme të baterisë ndërsa bateria arrin fundin e jetës. Matjet më poshtë janë marrë PA Kondensator shtesë 22uF.
CR2032 - 235mAHr - jetëgjatësia e baterisë 10 muaj CR2450 (N) - 650mAHr (540mAHr) - jetëgjatësia e baterisë 2.3 vjet (2 vjet) 2 x AAA Alkaline - 1250mAHr - jeta e baterisë 3.8. 2 vjet 2 x AAA Lithium - 1200mAHr - jetëgjatësia e baterisë 4.7 vjet për shkak të vetë-shkarkimit të lartë.
CR2032
Kjo qelizë monedhe ka kapacitet tipik 235mAHr (Bateria Energizer), një tension nominal prej 3V dhe një tension të caktuar shkarkimi prej 2V. Kjo nënkupton një jetëgjatësi të baterisë 8100 orë ose 9 0.9yr. Sidoqoftë, rezistenca e brendshme e qelizës rritet ndërsa bateria arrin fundin e jetës dhe kështu mund të mos jetë në gjendje të sigurojë pulsin e pikut aktual Tx. Një kondensator më i madh furnizimi mund të përdoret për të zvogëluar këtë efekt, por të themi 10 muaj jetë.
CR2450 (N)
Kjo qelizë monedhe ka kapacitet prej zakonisht 620mAHr (540mAHr për CR2450N), një tension nominal prej 3V dhe një tension të caktuar shkarkimi prej 2V. Kjo nënkupton një jetëgjatësi të baterisë 22, 400 orë ose yr 2yr 6m (18600 orë ~ 2 vjet 2 milion për CR2450N). Sidoqoftë, rezistenca e brendshme e qelizave rritet ndërsa bateria arrin fundin e jetës dhe kështu mund të mos jetë në gjendje të sigurojë pulsin e pikut aktual Tx. Një kondensator më i madh furnizimi mund të përdoret për të zvogëluar këtë efekt, por të themi jetë 2v 4m (2v N).
Shënim: Versioni CR2450N ka një buzë më të trashë e cila ndihmon në parandalimin e instalimit të pasaktë në një mbajtës CR2450N. Mund të futni një qelizë CR2450N dhe CR2450 në një mbajtës CR2450, por nuk mund të futni një qelizë CR2450 në një mbajtës CR2450N
2 x qeliza alkaline AAA
Këto bateri kanë një kapacitet rreth 1250mAHr (Bateria Energizer) për rryma shumë të ulëta, një tension nominal 2x1.5V = 3V dhe një tension të caktuar shkarkimi 2x0.8V = 1.6V. Por ky tension i specifikuar i shkarkimit është më i vogël se tensioni i funksionimit të sensorit Si7021 (1.9V) kështu që bateria mund të përdoret vetëm deri në V 1V secila. Kjo zvogëlon kapacitetin me rreth 10% në 15%, pra ~ 1000mAHr.
Kjo nënkupton një jetëgjatësi të baterisë prej 34, 500 orësh ose 4 ~ vit. Sidoqoftë, rezistenca e brendshme e qelizës rritet ndërsa bateria arrin fundin e jetës dhe kështu mund të mos jetë në gjendje të sigurojë pulsin e pikut aktual Tx. Një kondensator më i madh i furnizimit mund të përdoret për të zvogëluar këtë efekt, por të themi 3 vjet 10m jetë. Shënim Bateritë alkaline kanë vetë -shkarkim prej 2% deri në 3% në vit.
2 x qeliza litiumi AAA
Këto bateri kanë një kapacitet prej rreth 1200mAHr (Bateria Energizer), një tension nominal 2x1.7V = 3.4V, në rryma të ulëta, dhe një tension të shkarkuar 2x1.4V = 2.4V. Kjo nënkupton një jetëgjatësi të baterisë 41, 400 orë ose 4 vjet 8m.
Bateri e Rimbushshme LiPo
Këto bateri vijnë në kapacitete të ndryshme nga 100mAHr në 2000mAHr, në formate të sheshta, dhe kanë një tension të ngarkuar prej 4.2V dhe një tension të shkarkuar> 2.7V. Sidoqoftë, ato kanë një vetë-shkarkim të lartë prej 2% -3%/muaj (domethënë 24% në 36% në vit) dhe kështu nuk janë aq të përshtatshme për këtë aplikim sa bateritë e tjera.
Hapi 6: Furnizoni Alternativat - Ndihmë Diellore, Vetëm Bateri, Vetëm Diell
Bateri plus Asistent Diellor
Ndërtimi i mësipërm përdor furnizimin me Bateri plus Solar Assist. Kur panelet diellore gjenerojnë më shumë tension sesa tensioni i baterisë, qelizat diellore do të furnizojnë monitorin, duke zgjatur kështu jetën e baterisë. Zakonisht jeta e baterisë mund të zgjatet me 50%të tjera.
Panelet diellore të përdorura janë të vogla, 50mm x 30mm, të lira, 0.50 dollarë, dhe fuqi të ulët. Ato janë panele nominale 5V, por kanë nevojë për dritë të plotë të drejtpërdrejtë të diellit për të gjeneruar 5V. Në këtë projekt dy panele janë të lidhur në seri në mënyrë që vendosja e monitorit në afërsi të dritares, jashtë diellit të drejtpërdrejtë, është e mjaftueshme për të zëvendësuar fuqinë e baterisë. Edhe dhoma e ndriçuar mirë, ose një llambë tavoline, është e mjaftueshme që qelizat diellore të prodhojnë> 3.3V në> 33uA dhe të marrin përsipër nga bateria.
Panelshtë ndërtuar një panel testues i thjeshtë për të përcaktuar se ku mund të vendoset Monitori i Temperaturës / Lagështisë, jashtë diellit dhe akoma të jetë me energji diellore. Siç mund ta shihni nga fotografia e mësipërme, dy panelet e lidhura me një rezistencë 100K po prodhojnë 5.64V përgjatë 100K, domethënë rrymë 56uA në 5.64V. Kjo është më se e mjaftueshme për të marrë përsipër fuqizimin e monitorit nga bateria. Çdo lexim i tensionit mbi tensionin nominal të baterisë prej 3V do të thotë që qelizat diellore do të vënë në punë monitorin në vend të baterisë.
Dy diodat në qarkun e Monitoruesit të Lagështisë së Temperaturës izolojnë qelizat diellore dhe bateritë nga njëra -tjetra dhe mbrohen nga lidhja e tyre në polaritet të kundërt. Rezistenca 10V 1W zener dhe seria 470R mbron rregullatorin në bord të NanoV2 nga tensioni i tepërt nga dy qeliza diellore në diell të plotë, veçanërisht nëse qelizat 12V ndodh të përdoren në vend të atyre 5V. Në funksionimin normal në <5V, zeneri 10V tërheq vetëm ~ 1uA.
Vetëm bateri
Për një furnizim vetëm me bateri, thjesht hiqni R1, D1 dhe D3 dhe qelizat diellore. Ju gjithashtu mund të zëvendësoni D1 me një copë teli nëse nuk doni mbrojtje të polaritetit të kundërt.
Vetëm diellore
Fuqizimi i monitorit vetëm nga Qelizat Diellore, pa bateri, kërkon një qark të ndryshëm të furnizimit me energji. Problemi është se ndërsa monitori do të funksionojë në 29uA, kur ndizet nRF52 tërheq m 5mA për 0.32 sek. Qarku i treguar më sipër (versioni pdf) mban rregullatorin MAX8881 të fikur derisa kondensatorët hyrës, 2 x 1000uF, të ngarkojnë deri në 4.04V. Pastaj MAX6457 lëshon hyrjen MAX8881 SHDN për të fuqizuar nRF52 (NanoV2) Kondensatorët 2 x 1000uF sigurojnë rrymën e nevojshme të fillimit.
Kjo lejon që monitori të ndizet sapo të ketë energji të mjaftueshme diellore ta mbani atë në punë në 29uA.
Hapi 7: Përfundimi
Ky tutorial ka paraqitur një Monitor të Lagështisë së Temperaturës me energji baterie/diellore si një projekt projekti BLE me fuqi shumë të ulët në Arduino për çipin nRF52832. Rrymat e furnizimit prej u 29uA aty ku arrihen duke akorduar parametrat e lidhjes. Kjo rezultoi në një jetëgjatësi të baterisë së qelizës monedhë CR2032 që tejkaloi 10 muaj. Më gjatë për qelizat e monedhave me kapacitet më të lartë dhe bateri. Shtimi i dy qelizave të lira diellore zgjati me lehtësi jetën e baterisë me 50% ose më shumë. Një dritë e ndritshme e dhomës ose një llambë tavoline është e mjaftueshme për të fuqizuar monitorin nga qelizat diellore.
Një qark i veçantë i energjisë u prezantua për të lejuar që monitori të punojë thjesht nga qeliza diellore me kapacitet të ulët.
PfodDesigner falas ju lejon të hartoni menutë/nën-menutë, vizatoni datën/kohën dhe regjistroni të dhënat dhe më pas krijoni skicë Arduino me fuqi të ulët për ju. Këtu një ndërfaqe me porosi u kodua duke përdorur primitivët e vizatimit pfodApp. Lidhja me pfodApp shfaq ndërfaqen e përdoruesit dhe azhurnon leximet ndërsa monitori po përdor 29uA
Asnjë programim Android nuk kërkohet. pfodApp merret me të gjitha këto.
Recommended:
Sistemi i automatizimit të shtëpisë WiFi me fuqi shumë të ulët: 6 hapa (me fotografi)
Sistemi i Automatizimit të Shtëpisë me Fuqi ultra të ulët WiFi: Në këtë projekt ne tregojmë se si mund të ndërtoni një sistem bazë të automatizimit lokal të shtëpisë në disa hapa. Ne do të përdorim një Raspberry Pi i cili do të veprojë si një pajisje qendrore WiFi. Ndërsa për nyjet fundore ne do të përdorim IOT Cricket për të prodhuar një bateri
DHT12 (sensori i lirë i lagështisë dhe temperaturës i2c), përdorim i shpejtë i lehtë: 14 hapa
DHT12 (sensori i lagështisë dhe temperaturës i lirë i2c), përdorim i lehtë i shpejtë: Mund të gjeni përditësime dhe të tjera në faqen time https://www.mischianti.org/2019/01/01/dht12-library-en/. Më pëlqen sensori që mund të përdoret me 2 tela (protokoll i2c), por unë e dua atë të lirë. Kjo është një bibliotekë Arduino dhe esp8266 për serinë DHT12 o
Llamba e natës e shkallëve - fuqi shumë e ulët dhe 2 sensorë: 5 hapa
Llamba e natës e shkallëve - Fuqia shumë e ulët dhe 2 sensorë: Kam ndërtuar këtë llambë nate të shkallëve me fuqi të ulët me dy sensorë të lëvizjes me rreze infra të kuqe në mënyrë që të mund të instaloj një pajisje të vetme, në gjysmë të rrugës në shkallë, dhe ta nxis atë ose nga dikush që shkon lart ose vjen poshte shkalleve. Unë gjithashtu e bëra modelin tim me fuqi shumë të ulët
DIY MusiLED, LED të sinkronizuara me muzikë me aplikacionin Windows & Linux me një klik (32-bit & 64-bit). Lehtë për t’u rikrijuar, e lehtë për t’u përdorur, e lehtë për t’u portuar .: 3 hapa
DIY MusiLED, LED të sinkronizuara me muzikë me aplikacionin Windows & Linux me një klik (32-bit & 64-bit). Lehtë për t'u rikrijuar, e lehtë për t'u përdorur, e lehtë për t'u transferuar.: Ky projekt do t'ju ndihmojë të lidhni 18 LED (6 të kuqe + 6 blu + 6 të verdhë) në bordin tuaj Arduino dhe të analizoni sinjalet e Kartës së Zërit të kompjuterit tuaj në kohë reale dhe t'i transmetoni ato në LED për t'i ndezur ato sipas efekteve të rrahjes (Snare, High Hat, Kick)
Sensori i temperaturës dhe lagështisë IoT WiFi. Pjesa: 8 IoT, Automatizimi në shtëpi: 9 hapa
Sensori i temperaturës dhe lagështisë IoT WiFi. Pjesa: 8 IoT, Automatizimi i Shtëpisë: Preambulë Ky artikull dokumenton forcimin praktik dhe zhvillimin e mëtejshëm të një Udhëzuesi të mëparshëm: 'Pimping' pajisja juaj e parë IoT WiFi. Pjesa 4: IoT, Automatizimi i Shtëpisë duke përfshirë të gjithë funksionalitetin e nevojshëm të softuerit për të mundësuar suksesin