Sisukord:
- Samm: komponentide valimine
- 2. etapp: ehitamine
- Samm: kood - väikese energiatarbega andurite kogu, kasutajaliides ja Arduino visand
- 4. samm: toitevoolu mõõtmine
- Samm: kogu toitevool ja aku kasutusaeg
- 6. toiming: alternatiivsed tarned - päikeseenergia abi, ainult aku, ainult päikeseenergia
- Samm 7: Järeldus
Video: Lihtne väga väikese võimsusega BLE Arduino 2. osas - Temperatuuri/niiskuse monitor - Rev 3: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:45
Värskendus: 23. november 2020 - esmakordselt vahetati 2 x AAA patareid alates 15. jaanuarist 2019, st 22 kuud 2xAAA leelisel. Värskendus: 7. aprill 2019 - lp_BLE_TempHumidity versioon 3, lisab kuupäeva/kellaaja graafikud, kasutades pfodApp V3.0.362+, ja automaatne gaasipedaal saatmisel andmed
Värskendus: 24. märts 2019 - lp_BLE_TempHumidity 2. versioon, lisab rohkem graafikuvõimalusi ja i2c_ClearBus
See juhend, väga madala võimsusega temperatuuri niiskusmonitor, on 2. osa 3 -st.
Osa 1 - Väga väikese energiatarbega BLE -seadmete ehitamine lihtsaks Arduino kaantega Arduino seadistamine madala energiatarbega seadmete nRF52, programmeerimismooduli ja toitevoolu mõõtmiseks. See hõlmab ka spetsiaalseid väikese võimsusega taimerid ja võrdlusseadmeid ning tühistatud sisendeid ning pfodAppi kasutamist nRF52 seadmega ühenduse loomiseks ja juhtimiseks.
Osa 2 - Väga väikese võimsusega temperatuuriniiskuse monitor, see üks, hõlmab Redbear Nano V2 mooduli ja Si7021 temperatuuri / niiskuse anduri kasutamist väikese energiatarbega aku / päikesemonitori ehitamiseks. See hõlmab ka Si7021 raamatukogu muutmist väikese energiatarbega, BLE -seadme häälestamist, et vähendada selle praegust tarbimist <25uA, ja kohandatud temperatuuri/niiskuse ekraani kujundamist teie mobiiltelefonile.
Osa 3 - Redbeari Nano V2 asenduskaaned, mis kasutavad Nano V2 asemel muid nRF52 -põhiseid mooduleid. See hõlmab tarnekomponentide valimist, ehitust, nRF52 kiipide programmeerimiskaitse eemaldamist, NFC -tihvtide kasutamist tavalise GPIO -na ja uue nRF52 -plaadi määramist Arduinos.
See juhend on praktiline rakendus 1. osas - väga väikese energiatarbega BLE -seadmete ehitamine, mis on Arduino abil hõlbustatud, ehitades väga väikese võimsusega BLE temperatuuri ja niiskuse monitori. Monitor töötab aastaid Coin Cell või 2 x AAA patareidega, isegi kauem päikeseenergia abil. See õpetus hõlmab BLE parameetrite häälestamist väikese energiatarbimise jaoks ja seda, kuidas seadet toita patareist VÕI patareist + ainult päikesest või päikesest.
Lisaks praeguse temperatuuri ja niiskuse kuvamisele salvestab monitor viimase 36 tunni 10 -minutilise näidu ja viimase 10 päeva tunninäidu. Neid saab diagrammida teie Android -mobiiltelefonis ja logifaili salvestatud väärtused. Androidi programmeerimine pole vajalik, pfodApp tegeleb selle kõigega. Androidi kuva ja graafikut juhib täielikult teie Arduino visand, nii et saate seda vastavalt vajadusele kohandada.
Komponendi nRF52832 BLE jaoks kasutatakse Redbear Nano V2 plaati ja temperatuuri / niiskuse anduri jaoks Sparkfun Si7021 purunemisplaati. Si7021 -ga kasutatakse muudetud väikese energiatarbega raamatukogu. Väike trükkplaat oli mõeldud NanoV2 hoidmiseks ja komponentide varustamiseks. Kuna pinnale paigaldatud komponente ei kasutata, saate selle sama hõlpsalt vero -plaadile ehitada. See hõlmab kolme toiteallika versiooni. i) Aku ja päikeseenergia abi, ii) Ainult aku, iii) Ainult päikeseenergia. Ainult päikeseenergia suvandil pole aku salvestusruumi ja see töötab ainult valguse korral. Piisab heledast toavalgusest või laualambist.
Kontuur
Sellel projektil on 4 suhteliselt sõltumatut osa:-
- Komponentide valik ja ehitus
- Kood - vähese energiatarbega andurite kogu, kasutajaliides ja Arduino visand
- Toitevoolu ja aku eluea mõõtmine
- Varustusvariandid - päikeseenergia abi, ainult aku, ainult päikeseenergia
Samm: komponentide valimine
Komponentide valik
Nagu 1. osas mainitud-Tõeliselt väikese energiatarbega lahenduse saamise trikk on see, et enamasti ei tehta midagi, minimeeritakse vool sisendite väliste tõmbe-/tõmbetakistite kaudu ja neil pole lisakomponente. See projekt kasutab kõiki neid trikke väikese energiatarbega lahenduse saamiseks.
Komponent nRF52832
Kiip nRF52832 võib töötada toiteallikaga vahemikus 1,7–3,6 V (absoluutne maksimaalne pinge 3,9 V). See tähendab, et saate toita kiipi otse mündipatareist või 2 x AAA patareist. Siiski on mõistlik lisada pingeregulaator, et kaitsta kiipi ülepinge eest. Selle lisakomponendiga kaasneb energiakulu, kuid NanoV2 plaadi puhul tarbib rongisisene regulaator TLV704 vähem kui 5,5uA, tavaliselt ainult 3,4uA. Selle väikese lisatarbimise eest saate kaitset kuni 24 V toitesisendite eest.
Si7021 komponent
Si7021 andur ise tõmbab tavaliselt <1uA, kui mõõtmist ei tehta, st ooterežiimis, ja kuni 4 mA, kui edastatakse andmeid I2C kaudu. Kuna me ei tee mõõtmisi pidevalt, ei moodusta 4mA keskmise toitevoolu olulist osa. Näidu võtmine väga 30 sekundiga lisab keskmisele toitevoolule vähem kui 1uA, vt allpool toodud toitevoolu mõõtmisi.
Saadaval on kaks Si7021 murdeplaati. Üks Adafruitist ja teine Sparkfunist. Kiire pilk kahele tahvlile ütleb teile, et Adafruit -plaadil on palju rohkem komponente kui Sparkfuni tahvlil, nii et oleksite valmis valima Sparkfuni tahvli. Iga tahvli skeemide vaatamine näitab, et Sparkfuni plaat on lihtsalt tühi andur ja kaks 4k7 tõmbetugevdajat, samas kui Adafruit-plaadil on pardal olev MIC5225 regulaator, mis tavaliselt tõmbab kogu aeg 29uA. See on oluline, kui ülejäänud vooluahela kogu vool on <30uA. Kuna meil on juba regulaator nRF52832 kiibile, pole seda lisakomponenti vaja ja Si7021 saab toita sellest 3,3 V toiteallikast. Seega kasutab see projekt Sparkfuni Si7021 katkestusplaati.
minimeerida voolu sisendite väliste tõmbe-/tõmbetakistite kaudu
4K7 I2C tõmbetakistid ei ole eriti väärtuslikud ja tõmbavad madalale tõmmates 0,7 mA. See oleks probleem, kui nad asuksid lüliti sisendis, mis oli pikka aega maandatud. Kuid selles projektis minimeeritakse nende takistite kaudu voolu, kasutades I2C liidest ainult harva ja ainult lühikest aega. Enamasti ei kasutata I2C liine ja need on kõrge / kolme olekuga, nii et vool läbi nende takistite ei voola.
2. etapp: ehitamine
Projekt on ehitatud väikesele trükkplaadile, kuid kuna seal pole SMD komponente, saab seda sama hõlpsalt ehitada vero -plaadi abil. PCB valmistas pcbcart.com nendest Gerberi failidest, TempHumiditySensor_R1.zip. PCB on piisavalt üldotstarbeline, et seda saaks kasutada ka teiste BLE projektide jaoks.
Skeem on näidatud ülal. Siin on pdf -versioon.
Osade nimekiri
Ligikaudne ühiku hind 2018. aasta detsembri seisuga, ~ 62 USA dollarit, välja arvatud saatmine ja programmeerija 1. osas
- Redbear NanoV2 ~ 17 USA dollarit
- Sparkfun Si7021 purunemislaud ~ 8 USA dollarit
- 2 x 53mm x 30mm 0,15W 5V päikesepatareid nt. Ülelend ~ 1,10 USA dollarit
- 1 x trükkplaadi TempHumiditySensor_R1.zip ~ 25 USA dollarit 5 soodustusega www.pcbcart.com VÕI Vero plaat (riba vask) nt Jaycar HP9540 ~ 5 AUD
- 2 x 1N5819 schottky dioodi nt. Digikey 1N5819FSCT-ND ~ 1 USA dollar
- 1 x 470R 0,4W 1% takisti nt. Digikey BC3274CT-ND ~ 0,25 USA dollarit
- 6 x 6 kontaktiga isane päise tihvtid nt. Sparkfun PRT-00116 ~ 1,5 USA dollarit
- naissoost naissoost hüppaja nt. Adafruit ID: 1950 ~ 2 USA dollarit
- 3mm x 12mm nailonkruvid, nt. Jaycar HP0140 ~ 3 AUD
- 3mm x 12mm nailonmutrid, nt. Jaycar HP0146 ~ 3 AUD
- Scotch püsikinnituslint Cat 4010 nt. Amazonist ~ 6,6 USA dollarit
- AAA x 2 patareipesa, nt. Sparkfun PRT-14219 ~ 1,5 USA dollarit
- 2 x AAA 750mA leelispatareid, nt. Sparkfun PRT-09274 ~ 1,0 USA dollarit Need patareid peaksid vastu pidama> 2 aastat. Energizer leelispatareidel on suurem võimsus
- Plastkarp (ABS) 83mm x 54mm x 31mm, nt. Jaycar HB6005 ~ 3 AUD
- pfodApp ~ 10 USA dollarit
- 1 x 22uF 63V madala ESR -ga kondensaator (valikuline), nt Jaycar RE-6342 ~ 0,5 AUD või Digikey P5190-ND ~ 0,25 USA dollarit
Konstruktsioon on otse edasi. Akuhoidik ja päikesepatareid kinnitatakse plastkarbi külge tugeva kahepoolse teibiga.
Pange tähele Gnd -ühendusjuhet CLK -lt GND -le valmis osas. See on paigaldatud PÄRAST programmeerimist, et vältida CLK sisendi müra käivitamist nRF52 kiibil suure vooluga silumisrežiimis
Samm: kood - väikese energiatarbega andurite kogu, kasutajaliides ja Arduino visand
Laadige alla postiindeks lp_BLE_TempHumidity_R3.zip ja pakkige see oma Arduino Sketches kataloogi. Sellest zip -failist peate installima ka teeki lp_So7021 ja installima ka kogu pfodParser.
Madala energiatarbega andurite kogu, lp_Si7021
Nii Adafruit kui ka Sparkfun pakuvad Si7021 andurile juurdepääsu toetavaid raamatukogusid, kuid mõlemad teegid ei sobi väga väikese energiatarbega kasutamiseks. Mõlemad kasutavad koodis viivitust (25), et viivitada anduri lugemisega mõõtmise ajal. Nagu 1. osas märgitud, on viivitused kurjad. Arduino viivitus () hoiab mikroprotsessori lihtsalt voolu abil töös, kuni see ootab viivituse aegumist. See rikub väikese võimsusega BLE esimest reeglit, ärge tehke enamasti midagi. Asendusraamatukogu lp_Si7021 asendab kõik viivitused lp_timeritega, mis panevad mikroprotsessori magama, oodates, kuni andur mõõtmist lõpetab.
Kui palju vahet teeb raamatukogu lp_Si7021? Kasutades originaalset SparkFun Si7021 tugiteeki ja võttes ühe lugemise sekundis ilma jadaprintideta, joonistatakse keskmiselt ~ 1,2 mA. Sparkfuni raamatukogu asendamine raamatukoguga lp_Si7021 vähendab keskmist voolu ~ 10uA, st 100 korda vähem. Selle projekti puhul on kiireim mõõtmiskiirus üks kord iga 30 sekundi järel, kui mobiil on ühendatud, mille tulemuseks on anduri keskmine vool alla 1uA. Kui BLE -ühendust pole, on mõõtmise sagedus üks kord iga 10 minuti järel ja anduri keskmine toitevool on tühine.
Kasutajaliides
Eespool on põhiekraan ja suumitud vaade 10 -päevase tunniajaloo kohta. Jooniseid saab kahe sõrmega suumida ja panoraamida mõlemas suunas.
Kasutajaliides kodeeritakse Arduino visandis ja saadetakse seejärel esimesel ühendusel pfodAppile, kus see vahemällu salvestatakse korduvaks kasutamiseks ja värskendusteks. Graafiline kuva on üles ehitatud primitiivide joonistamisest. Vaadake kohandatud Arduino juhtelemente Androidile, et saada õpetust oma juhtelementide loomise kohta. Failid termomeeter, RHGauge ja nupp sisaldavad nende üksuste joonistamise käske.
Märkus: pole, kui see kuva on sisseehitatud pfodApp -i. Kogu ekraani juhib täielikult teie Arduino visandis olev kood
Visandis lp_BLE_TempHumidity_R3.ino olev meetod sendDrawing_z () määratleb kasutajaliidese.
void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // taustal vaikimisi valgel, kui see välja jätta, st algus (50, 60); parser.sendRefreshAndVersion (30000); // taotle dwg uuesti iga 30 sekundi tagant seda ignoreeritakse, kui parsimisversiooni pole seatud // puudutage ülalnuppe, et sundida värskendusi kuvama dwgs.touchZone (). cmd ('u'). size (50, 39).send (); dwgs.pushZero (35, 22, 1,5); // liigutage null dwg keskmesse 35, 22 ja skaleerige 1,5 korda rhGauge.draw (); // joonista juhtelement dwgs.popZero (); dwgs.pushZero (18, 33); // liiguta null dwg keskpunkti 18 -ni, 33 skaala on 1 (vaikimisi) termomeeter.draw (); // joonista juhtelement dwgs.popZero ();
dwgs.pushZero (12,5, 43, 0,7); // liigutage null dwg keskpunkti 12,5, 43 ja skaala 0,7 võrra
hrs8PlotButton.draw (); // joonista juhtelement dwgs.popZero (); dwgs.pushZero (37,5, 43, 0,7); // liigutage null dwg keskmesse 37,5, 43 ja skaleerige 0,7 päeva võrra1PlotButton.draw (); // joonista juhtelement dwgs.popZero ();
dwgs.pushZero (12,5, 54, 0,7); // liigutage null dwg keskele 12,5, 54 ja skaala 0,7
days3PlotButton.draw (); // joonista juhtelement dwgs.popZero (); dwgs.pushZero (37,5, 54, 0,7); // liigutage null dwg keskmesse 37,5, 54 ja skaleerige 0,7 päeva võrra10PlotButton.draw (); // joonista juhtelement dwgs.popZero (); dwgs.end (); }
PushZero käsud muudavad järgmise komponendi joonistamise päritolu ja skaleerimist. See võimaldab hõlpsalt muuta nuppude ja näidikute suurust ja asukohta.
Esmakordsel ühendamisel kulub esialgsele kuvale 5 või 6 sekundit, kuni alla laaditakse ~ 800 baiti, mis määravad ekraani. pfodApp salvestab ekraani vahemällu, nii et tulevased värskendused peavad saatma ainult muudatused, gabariidi asukohad ja näidud. Need värskendused võtavad vaid paar sekundit, et saata 128 baiti, mis vajavad ekraani värskendamist.
Ekraanil on määratletud viis (5) aktiivset puutetsooni. Igal nupul on oma draw () meetodis üks määratletud, nii et saate vastava joonise avamiseks klõpsata sellel ja ekraani ülemine pool on konfigureeritud kolmanda puutetsooniks
dwgs.touchZone (). cmd ('u'). suurus (50, 39). saata ();
Kui klõpsate nuppude kohal oleval ekraanil, saadetakse teie visandile käsk „u” dwg, et sundida uut mõõtmist ja ekraani värskendama. Tavaliselt ühendatakse värskendused ainult iga 30 sekundi järel. Joonise iga klõps või värskendamine sunnib uue mõõtmise tegema. Vastus Arduino visandilt pfodAppile lükatakse edasi, kuni uus mõõtmine on lõpule viidud (~ 25 mS), nii et värskenduses saab saata uusima väärtuse.
Arduino visand
Arduino visand lp_BLE_TempHumidity_R3.ino on 1. osas kasutatud näitejoonise täiustatud versioon. Lp_BLE_TempHumidity_R3.ino eskiis asendab menüü ülaltoodud joonisega. See lisab ka lp_Si7021 andurite toe ja andmemassiivid, et salvestada 10 -minutilised ja tunnilised ajaloolised mõõtmised.
Peamine komplikatsioon lp_BLE_TempHumidity_R3.ino visandis on graafiku andmete saatmine. Mõõtmiste tegemisel käsib readRHResults () tulemuste kogumist ja nende salvestamist ajaloolistesse massiividesse. Massiivid on 120 pikkused, kuid andmete saatmisel on esimesed 30 andmepunkti peenema ajavahemiku jaoks.
200 paaritu graafikupunkti kuvamisel tuleb arvestada mõne punktiga:-
- Iga andmepunkt on ~ 25 baiti pikk CSV -vormingus. Nii et 150 punkti on 3750 baiti andmeid. Klassil lp_BLESerial on 1536 baidine puhver, millest 1024 on suurima pfod -sõnumi jaoks piisavalt suur. Ülejäänud 512 baiti on reserveeritud andmete saatmiseks. Kui ajaloolised andmed on 512 baiti täitnud, lükatakse edasiste andmete saatmine edasi, kuni puhvris on ruumi.
- Et vältida graafiku andmete aeglustumist põhiekraani värskendamisel, saadetakse graafiku andmed ainult graafikuekraani kuvamise ajal. Kui kasutaja lülitub tagasi põhiekraanile, peatatakse graafiku andmete saatmine. Graafikuandmete saatmist jätkatakse, kui kasutaja klõpsab graafiku uuesti kuvamiseks graafiku nupul.
- Ajaloolised süžeed algavad nullist (praegu) ja lähevad ajas tagasi. Kui pärast viimast graafiku kuvamist pole uusi mõõtmisi tehtud, kuvatakse kohe alla laaditud varasemad andmed kohe uuesti. Kui on uus mõõtmine, lisatakse see eelmistele krundiandmetele.
- Monitori esmakordsel sisselülitamisel pole ajaloolisi näiteid ja 0 salvestatakse massiividesse kehtetu näitena. Graafiku kuvamisel jäetakse kehtetud näidud lihtsalt vahele, mille tulemuseks on lühem graafik.
Celsiuse ja Fahrenheiti järgi
Visand lp_BLE_TempHumidity_R3.ino kuvab ja joonistab andmed Celsiuse järgi. Tulemuste teisendamiseks Fahrenheiti järgi asendage kõik esinemised
parser.print (sensor. Temp_RawToFloat (..
koos
parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…
Ja asendage unicode degC sümbol Octal / 342 / 204 / 203 degF sümboliga / 342 / 204 / 211
pfodApp kuvab mis tahes Unicode'i, mida teie mobiil kuvada saab.
Lisateavet leiate jaotisest Mitte-ASCII märkide kasutamine Arduinos. Muutke ka termomeetri MIN_C, MAX_C seadeid. H. Lõpuks reguleerige joonise piire vastavalt soovile, nt. muutus | Temp C ~ 32 ~ 8 ~ deg C |
ütlema
| Temperatuur F ~ 90 ~ 14 ~ deg F |
4. samm: toitevoolu mõõtmine
Teeki lp_Si7021 kasutades aitab isegi temperatuuri/niiskuse mõõtmine iga 10 sekundi tagant ainult ~ 1uA keskmist toitevoolu, seega on peamine toitevoolu ja seega ka aku kasutusaeg BLE reklaamis ning ühenduses ja andmeedastuses kasutatav voolutugevus.
Ühendage temperatuuri/niiskuse plaat 1. osas kirjeldatud programmeerijaga, nagu ülal näidatud.
Kui päikesepatareid ja akud on vooluvõrgust lahti ühendatud, on Vin ja Gnd ühendatud programmeerija Vdd ja Gnd (kollane ja roheline juhe) ning SWCLK ja SWDIO on ühendatud programmeerija päiseplaadi Clk ja SIO -ga (sinine ja roosa juhe)
Nüüd saate programmeerida NanoV2 ja mõõta toitevoolu, nagu kirjeldatud 1. osas.
Paigaldage sellest zip -failist väikese võimsusega Si7021 teek, lp_Si7021.zip ja installige teek pfodParser ning pakkige lp_BLE_TempHumidity_R3.zip oma Arduino visandite kataloogi lahti ja programmeerige Temp/Humditiy -plaat lp_BLE_TempHumidity_R3.ino abil
Nagu eespool mainitud, on anduri panus selles projektis kasutatud kõrgeima mõõtmiskiiruse juures keskmiselt <1uA, seega on BLE reklaam ja ühenduse parameetrid aku eluiga määravaks teguriks.
BLE reklaami- ja ühendusparameetrid, mis mõjutavad praegust tarbimist, on järgmised: -Tx Power, Reklaami intervall, Max ja Min ühendusintervallid ning Slave Latentcy.
Märkus: Ülaltoodud ühendusi kasutades on toites kaks (2) regulaatorit, üks NanoV2 plaadil Vin kaudu ja MAX8881 programmeerija toitel. See tähendab, et teise regulaatori tõttu on mõõdetud toitevoolud ~ 5uA tegelikust kõrgemad. Allpool toodud väärtused on mõõdetud voolud, millest on lahutatud see lisa 5uA.
Tx võimsus
Tx Toiteefektid pakuvad voolu nii ühendatuna kui ka reklaamides (ühendamata). See projekt kasutab maksimaalse võimsuse seadistust (+4) ning tagab parima tööulatuse ja suurima mürakindluse kõige usaldusväärsemate ühenduste jaoks. Võimsuse sätte muutmiseks saate kasutada meetodit lp_BLESerial setTxPower (). Kehtivad väärtused on suureneva võimsusega -40, -30, -20, -16, -12, -8, -4, 0 +4. Enne setTxPower () helistamist peate helistama meetodile lp_BLESerial begin (). Vaadake lp_BLE_TempHumidity_R3.ino visandit.
Saate katsetada Tx Poweri vähendamist, kuid kompromiss on lühem ja häirete tõttu rohkem ühenduse katkestusi. Selles projektis on Tx Power jäetud vaikimisi +4. Nagu näete allpool, on isegi selle seadistuse korral endiselt võimalik väga madal toitevool.
Reklaami intervall
Kui ühendusvõimalus puudub, määrab antud Tx -võimsuse korral reklaamivahemik keskmise voolutarbimise. Soovitatav vahemik on 500 kuni 1000 mS. Siin kasutati 2000 mS. Kompromiss seisneb selles, et pikemad reklaamivahemikud tähendavad, et teie mobiiltelefon leiab seadme üles ja loob ühenduse aeglasemalt. Sisemiselt on reklaamide intervallid seatud 0,625 mS kordajatena vahemikus 20 mS kuni 10,24 s. Meetod lp_BLESerial setAdvertisingInterval () võtab mugavuse huvides argumendina mS. +4 TxPower ja 2000mS reklaamivahemiku korral oli voolutarve ~ 18uA. 1000mS reklaamivahemiku jaoks oli see ~ 29uA. 2. versioonis kasutati 2000 mS reklaamivahemikku, kuid selle tulemuseks olid aeglased ühendused. 3. versioon muudeti 1000 mS reklaamimise intervalliks, et kiirendada ühendusi.
Maksimaalsed ja minimaalsed ühenduse intervallid
Kui ühendus on loodud, määrab ühenduse intervall, kui tihti mobiil seadmega ühendust võtab. Lp_BLESerial setConnectionInterval () võimaldab määrata soovitatud maksimumi ja min, kuid mobiil juhib ühenduse intervalli tegelikult. Mugavuse huvides on argumendid setConnectionInterval () mS -is, kuid sisemiselt on ühendusintervallid 1,25 mS, vahemikus 7,5 mS kuni 4 s.
Vaikesäte on setConnectionInterval (100, 150), st min 100 mS kuni max 150 mS. Nende väärtuste suurendamine vähendab toitevoolu ühenduse ajal, kuid kompromiss on andmete aeglasem edastamine. Iga ekraani värskendamine võtab umbes 7 BLE -teadet, samas kui 36 -tunnine 10 -minutiline mõõtmine võtab umbes 170 BLE -sõnumit. Seega aeglustab ühenduse intervallide suurendamine ekraani värskendusi ja graafiku kuvamist.
Klassil lp_BLESerial on 1536 -baitine saatmispuhver ja see saadab sellest puhvrist ainult ühe 20 -baidise ploki, iga maksimaalse ühendusintervalli, et vältida BLE -lingi üleujutamist andmetega. Ka graafikuandmete saatmisel saadab visand andmeid ainult seni, kuni saatmist ootab 512 baiti, seejärel viivitab rohkemate andmete saatmisega, kuni mõned andmed on saadetud. See väldib saatmispuhvri üleujutamist. See saatmiste aeglustamine muudab andmete edastamise mobiilseadmesse usaldusväärseks, kuid see pole optimeeritud maksimaalse läbilaskvuse jaoks.
Selles projektis jäeti ühenduse intervallid vaikeväärtusteks.
Slave latentsus
Kui mobiilile saatmiseks pole andmeid, võib seade valikuliselt ignoreerida mõningaid mobiiltelefoni ühendussõnumeid. See säästab Tx voolu ja toitevoolu. Seade Slave Latentcy on ignoreeritavate ühendusteadete arv. Vaikimisi on 0. Selle sätte muutmiseks saab kasutada meetodit lp_BLESerial setSlaveLatency ().
Vaikimisi orja latentsus 0 andis ~ 50uA toitevoolu, ignoreerides ekraanivärskendusi iga 30 sekundi järel, kuid KeepAlive'i sõnumeid arvesse võttes väga 5 sekundit. Slave latentsuse seadmine väärtusele 2 andis keskmise ühendatud toitevoolu ~ 25uA. Orja latentsusaste 4 andis ~ 20uA. Kõrgemad seaded ei tundunud toitevoolu vähendavat, seega kasutati orja latentsuse seadistust 4.
Ühenduse korral taotleb pfodApp iga 30 sekundi järel kuva värskendamist. See sunnib andurit mõõtma ja saadab andmed graafilise kuva värskendamiseks tagasi. Selle värskenduse tulemuseks on täiendav ~ 66uA 2 sekundiks iga 30 sekundi järel. See on keskmiselt 4,4uA 30 sekundi jooksul. Selle lisamine 20uA -le annab keskmise ühenduse toitevoolu ~ 25uA
Samm: kogu toitevool ja aku kasutusaeg
Kasutades ülaltoodud seadeid, nagu on määratud lp_BLE_TempHumidity_R3.ino, kogu tarnevool ühendamisel ja ekraani värskendamine iga 30 sekundi järel, ligikaudu 25 uA. Kui see pole ühendatud, on see umbes 29uA.
Aku eluea arvutamiseks eeldatakse pidevat voolutugevust ~ 29uA.
Erinevatel patareidel on erinev võimsus ja pingeomadused. Siin käsitletakse patareisid CR2032, CR2450 (N), 2 x AAA leelist, 2 x AAA liitiumit ja LiPo.
Aku kokkuvõte
Kui kasutate Solar Assist'i, lisage neile aku kasutusaegadele 50% (eeldades, et valgus on 8 tundi päevas)
Märkus: 22uF LowESR kondensaator (C1) salvestab lisaks pardal olevale NanoV2 22uF kondensaatorile päikesepatarei voolu ja tarnib selle seejärel TX vooluimpulsside jaoks. Muidu annab aku osa TX -voolust. See täiendav 22uF LowESR lisab aku voolule umbes 10%, kui päikesepatarei ei ole toiteallikas, kuid pikendab ka aku kasutusaega, kompenseerides aku sisetakistuse tõusu, kui aku saab otsa. Allpool toodud mõõtmised tehti ilma täiendava 22uF kondensaatorita.
CR2032 - 235 mAh - aku kasutusiga 10 kuud suure isetühjenemise tõttu.
CR2032
Selle mündielemendi võimsus on tavaliselt 235mAHr (Energizer Battery), nimipinge 3V ja määratud tühjenemispinge 2V. See tähendab, et aku eluiga on 8100 tundi või ~ 0,9 aastat. Kuid aku sisemine takistus suureneb, kui aku saab kasutusiga ja seega ei pruugi see olla võimeline andma tippvooluimpulsse. Selle efekti vähendamiseks võib kasutada suuremat toitekondensaatorit, kuid näiteks 10 -kuulist eluiga.
CR2450 (N)
Selle mündielemendi võimsus on tavaliselt 620mAHr (CR2450N puhul 540mAHr), nimipinge 3V ja määratud tühjenemispinge 2V. See tähendab, et aku eluiga on 22, 400 tundi või ~ 2 aastat 6 meetrit (CR2450N puhul 18 600 tundi - 2 aastat 2 meetrit). Kuid aku sisemine takistus suureneb, kui aku saab kasutusiga ja seega ei pruugi see olla võimeline andma tippvooluimpulsse. Selle efekti vähendamiseks võib kasutada suuremat toitekondensaatorit, kuid öelge, et kasutusiga on 2 aastat 4 meetrit (2 aastat N).
Märkus: CR2450N versioonil on paksem huul, mis aitab vältida valet paigaldamist CR2450N hoidikusse. CR2450N ja CR2450 lahtri saate sisestada CR2450 hoidikusse, kuid CR2450N lahtrit CR2450N hoidikusse mitte
2 x AAA aluselised rakud
Nende patareide võimsus on umbes 1250mAHr (Energizer Battery) väga madalate voolude korral, nimipinge 2x1,5V = 3V ja määratud tühjenemispinge 2x0,8V = 1,6V. Kuid see määratud tühjenemispinge on väiksem kui Si7021 anduri tööpinge (1,9 V), nii et akut saab kasutada ainult kuni ~ 1 V. See vähendab võimsust umbes 10% kuni 15%, st ~ 1000 mAh.
See tähendab, et aku kestvus on 34, 500 tundi või ~ 4 aastat. Kuid aku sisemine takistus suureneb, kui aku saab kasutusiga ja seega ei pruugi see olla võimeline andma tippvooluimpulsse. Selle efekti vähendamiseks saab kasutada suuremat toitekondensaatorit, kuid öelge, et kasutusiga on 3 aastat 10 m. Märkus. Leelispatareide isetühjenemine on 2% kuni 3% aastas.
2 x AAA liitiumpatareid
Nende akude võimsus on umbes 1200mAHr (Energizer Battery), nimipinge 2x1,7V = 3,4V, madalate voolude korral ja tühjenenud pinge 2x1,4V = 2,4V. See tähendab aku kestvust 41, 400 tundi või 4 aastat 8 m.
Laetav LiPo aku
Neid patareisid on erineva võimsusega 100 mAh kuni 2000 mAh, tasasel kujul ja nende laetud pinge on 4,2 V ja tühjenenud pinge> 2,7 V. Kuid nende isetühjenemine on suur, 2–3% kuus (st 24% kuni 36% aastas) ja seega ei sobi need sellesse rakendusse nii hästi kui teised akud.
6. toiming: alternatiivsed tarned - päikeseenergia abi, ainult aku, ainult päikeseenergia
Aku pluss Solar Assist
Ülaltoodud konstruktsioon kasutab akut pluss Solar Assist. Kui päikesepaneelid tekitavad rohkem pinget kui aku pinge, hakkavad päikesepatareid monitori toiteallikaks, pikendades seega aku kasutusiga. Tavaliselt võib aku kasutusiga pikendada veel 50%.
Kasutatavad päikesepaneelid on väikesed, 50 mm x 30 mm, odavad, ~ 0,50 dollarit ja väikese võimsusega. Need on nominaalselt 5 V paneelid, kuid vajavad 5 V tekitamiseks täielikku otsest eredat päikesevalgust. Selles projektis on kaks paneeli järjestikku ühendatud, nii et monitori paigutamine akna lähedale, otsese päikesevalguse kätte, on aku asendamiseks piisav. Isegi hästi valgustatud ruumist või laualambist piisab, kui päikesepatareid genereerivad> 3.3V> 33uA ja võtavad akult üle.
Ehitati lihtne testpaneel, et teha kindlaks, kuhu temperatuuri / niiskuse monitori saaks päikese kätte paigutada ja siiski päikeseenergiaga toita. Nagu ülaltoodud fotolt näha, toodavad kaks 100K takistiga ühendatud paneeli 100K ulatuses 5,64 V, st 56uA voolu 5,64 V juures. See on enam kui piisav, kui võtta üle monitori toide akult. Iga pinge näit, mis ületab 3V aku nimipinget, tähendab, et päikesepatareid toidavad aku asemel monitori.
Temperatuuri niiskuse monitori ahelas olevad kaks dioodi eraldavad päikesepatareid ja patareid üksteisest ning kaitsevad neid vastupidise polaarsusega ühendamise eest. 10V 1W zener ja 470R seeria takisti kaitsevad NanoV2 pardal olevat regulaatorit kahe päikesepatarei ülepinge eest päikese käes, eriti kui 5V asemel kasutatakse 12V elemente. Tavarežiimis <5V, 10V Zener tõmbab ainult ~ 1uA.
Ainult aku
Ainult akutoitel jätke R1, D1 ja D3 ning päikesepatareid vahele. Kui te ei soovi vastupidist polaarsuskaitset, võite D1 asendada ka traaditükiga.
Ainult päikeseenergia
Monitori toiteks ainult päikesepatareidest, ilma patareita, on vaja erinevat toiteahelat. Probleem on selles, et kuigi monitor töötab 29uA, kasutab nRF52 sisselülitamisel ~ 5mA 0,32 sekundit. Ülaltoodud skeem (pdf -versioon) hoiab MAX8881 regulaatori välja, kuni sisendkondensaatorid, 2 x 1000uF, laadivad kuni 4,04 V. Seejärel vabastab MAX6457 nRF52 (NanoV2) toiteks MAX8881 SHDN sisendi. 2 x 1000uF kondensaatorid annavad vajaliku käivitusvoolu.
See võimaldab monitoril toite sisse lülitada niipea, kui päikeseenergiat on piisavalt, ja see töötab 29uA.
Samm 7: Järeldus
See õpetus on esitanud patarei-/päikeseenergial töötava temperatuuri niiskuse monitori näitena väga väikese energiatarbega BLE projektist Arduinos kiibi nRF52832 jaoks. Toitevool ~ 29uA, kui see saavutatakse ühenduse parameetrite häälestamisega. Selle tulemusel ületas CR2032 mündipatarei aku kasutusiga üle 10 kuu. Pikem suurema mahutavusega mündipatareide ja akude jaoks. Kahe odava päikesepatarei lisamine pikendas aku eluiga hõlpsalt 50% või rohkem. Ekraani päikesepatareide toiteks piisab heledast toavalgusest või laualambist.
Esitati spetsiaalne toiteahel, mis võimaldab monitori kasutada ainult väikese võimsusega päikesepatareidest.
Tasuta pfodDesigner võimaldab teil kujundada menüüsid/alammenüüsid, joonistada kuupäeva/kellaaja järgi ja logida andmeid ning seejärel genereerida teie jaoks väikese võimsusega Arduino eskiisi. Siin kodeeriti kohandatud liides, kasutades pfodApp joonistamise primitiive. Ühenduse loomine pfodAppiga kuvab kasutajaliidese ja värskendab näitu, kui monitor kasutab ~ 29uA
Androidi programmeerimine pole vajalik. pfodApp tegeleb selle kõigega.
Soovitan:
Väikese võimsusega vahelduva seadme keskmise voolutarbe määramine: 4 sammu
Väikese energiatarbega vahelduva seadme keskmise voolutarbe määramine: Sissejuhatus Huvi pärast tahtsin teada, kui kaua patareid minu kaugtemperatuurianduris vastu peavad. Selleks kulub järjestikku kaks AA -elementi, kuid ampermeetri joonele asetamisest ja ekraani vaatamisest on vähe abi, sest energiat tarbitakse
Lihtne väga väikese võimsusega BLE Arduino 3. osas - Nano V2 asendamine - 3. versioon: 7 sammu (piltidega)
Lihtne väga väikese energiatarbega BLE Arduino 3. osas - Nano V2 asendamine - 3. versioon: värskendus: 7. aprill 2019 - lp_BLE_TempHumidity versioon 3, lisab kuupäeva/kellaaja graafikud, kasutades pfodApp V3.0.362+, ja automaatne drosseldus andmete saatmisel Värskendus: 24. märts 2019 - lp_BLE_TempHumidity 2. versioon, lisab rohkem joonistusvalikuid ja i2c_ClearBus lisab GT832E
Väga väikese võimsusega suure võimendusega toru võimendi: 13 sammu (piltidega)
Ülimadala võimsusega suure võimendusega toruvõimendi: minusuguste magamistubade jaoks pole midagi hullemat kui mürakaebused. Teisest küljest on häbi, kui 50 W võimendi külge haagitakse koormus, mis hajutab kuumuses peaaegu kõik. Seetõttu proovisin luua suure võimendusega eelvõimendi, mis põhineb perekonnal
Väga väikese võimsusega keldri üleujutusalarm ESP8266 abil: 3 sammu
Üliväikese võimsusega keldri üleujutusalarm ESP8266-ga: Tere, tere tulemast minu esimesele juhendatavale. Minu maja kelder ujutatakse iga paari aasta tagant üle erinevatel põhjustel, nagu suvised äikesetormid, kõrge põhjavesi või isegi toru lõhkemine. Kuigi see pole kena koht, aga minu keskküte on
Väga lihtne Ometi väga tõhus jant (arvuti jant): 3 sammu
Väga lihtne … Ometi väga tõhus jant (arvuti jant): see juhendatav on VÄGA lihtne, kuid samas VÄGA tõhus! Mis juhtub, on järgmine: peidate ohvri töölauale kõik ikoonid. Kannatanu ehmub, kui näeb arvutit pärast seda, kui olete jama teinud. See ei saa arvutit kuidagi kahjustada