Kazalo:

Enostaven BLE z zelo nizko porabo energije v Arduinu, 2. del - Nadzor temperature/vlažnosti - Rev 3: 7 korakov
Enostaven BLE z zelo nizko porabo energije v Arduinu, 2. del - Nadzor temperature/vlažnosti - Rev 3: 7 korakov

Video: Enostaven BLE z zelo nizko porabo energije v Arduinu, 2. del - Nadzor temperature/vlažnosti - Rev 3: 7 korakov

Video: Enostaven BLE z zelo nizko porabo energije v Arduinu, 2. del - Nadzor temperature/vlažnosti - Rev 3: 7 korakov
Video: Высокая плотность 2022 2024, November
Anonim
Enostaven BLE z zelo nizko porabo energije v Arduinu 2. del - Nadzor temperature/vlažnosti - Rev 3
Enostaven BLE z zelo nizko porabo energije v Arduinu 2. del - Nadzor temperature/vlažnosti - Rev 3
Enostaven BLE z zelo nizko porabo energije v Arduinu 2. del - Nadzor temperature/vlažnosti - Rev 3
Enostaven BLE z zelo nizko porabo energije v Arduinu 2. del - Nadzor temperature/vlažnosti - Rev 3
Enostaven BLE z zelo nizko porabo energije v Arduinu 2. del - Nadzor temperature/vlažnosti - Rev 3
Enostaven BLE z zelo nizko porabo energije v Arduinu 2. del - Nadzor temperature/vlažnosti - Rev 3

Posodobitev: 23. november 2020 - prva zamenjava 2 x AAA baterij od 15. januarja 2019, tj. 22 mesecev za 2xAAA alkalne posodobitve: 7. april 2019 - 3. rev. Lp_BLE_TempHumidity, doda datumske/časovne ploskve z uporabo pfodApp V3.0.362+in samodejno dušenje pri pošiljanju podatkov

Posodobitev: 24. marec 2019 - 2. revija lp_BLE_TempHumidity, dodaja več možnosti ploskev in i2c_ClearBus

Ta navodila, zelo nizek temperaturni nadzor vlažnosti, je del 2 od 3.

1. del - Enostavna izdelava naprav BLE z zelo nizko porabo z Arduino pokrovi, ki Arduino nastavljajo za kodiranje nRF52 naprav z nizko porabo energije, programskim modulom in merjenjem napajalnega toka. Zajema tudi specializirane merilnike časa in primerjalnike z nizko porabo energije ter odkrite vhode in uporabo pfodApp za povezavo in upravljanje naprave nRF52.

2. del - Ta monitor za nizko porabo energije, ta, zajema uporabo modula Redbear Nano V2 in senzorja temperature / vlažnosti Si7021 za izdelavo baterije z nizko porabo energije / sončnega monitorja. Zajema tudi spreminjanje knjižnice Si7021 na nizko porabo, nastavitev naprave BLE za zmanjšanje trenutne porabe <25uA in oblikovanje zaslona temperature/vlažnosti po meri za vaš mobilni telefon.

3. del - Zamenjava Redbear Nano V2 zajema uporabo drugih modulov na osnovi nRF52 namesto Nano V2. Zajema izbiro napajalnih komponent, konstrukcijo, odstranitev zaščite programiranja čipov nRF52, uporabo nožic NFC kot običajnega GPIO in opredelitev nove plošče nRF52 v Arduinu.

To navodilo je praktična uporaba dela 1, ki je z Arduinom olajšal gradnjo naprav z nizko porabo energije BLE z zelo nizko porabo energije z izdelavo nadzornika temperature in vlažnosti BLE z zelo nizko porabo. Monitor bo več let deloval na gumbastih celicah ali 2 x AAA baterijah, še dlje s solarno pomočjo. Ta vadnica zajema prilagajanje parametrov BLE za nizko porabo energije in kako napajati napravo samo iz baterije ALI iz baterije + sončne ali sončne energije.

Poleg prikaza trenutne temperature in vlažnosti monitor shranjuje zadnjih 36 ur 10 -minutnih odčitkov in zadnjih 10 dni urnih odčitkov. Te lahko zabeležite v mobilni napravi Android in vrednosti shranite v datoteko dnevnika. Programiranje za Android ni potrebno, pfodApp obravnava vse to. Zaslon in grafikone Android popolnoma nadzira vaša skica Arduino, tako da jih lahko po potrebi prilagodite.

Za komponento nRF52832 BLE se uporablja plošča Redbear Nano V2, za senzor temperature / vlažnosti pa plošča Sparkfun Si7021. S Si7021 se uporablja spremenjena knjižnica z nizko porabo energije. Majhno tiskano vezje je bilo zasnovano za shranjevanje NanoV2 in dobavo komponent. Ker pa se ne uporabljajo površinsko nameščene komponente, lahko to z lahkoto zgradite na plošči vero. Zajete so tri različice napajanja. i) Baterija plus solarna pomoč, ii) Samo baterija, iii) Samo sončna energija. Možnost Solar Only nima prostora za shranjevanje baterije, zato bo delovala le, če bo svetloba. Zadostuje svetla sobna svetilka ali namizna svetilka.

Oris

Ta projekt ima 4 relativno neodvisne dele:-

  1. Izbira komponent in konstrukcija
  2. Koda - knjižnica senzorjev z nizko porabo energije, uporabniški vmesnik in skica Arduino
  3. Merjenje napajalnega toka in življenjske dobe baterije
  4. Alternative oskrbe - Solar Assist, Only Battery, Solar Only

1. korak: Izbira komponent

Izbira komponent

Kot je omenjeno v 1. delu-Zvijača pri doseganju res nizke porabe energije je, da večino časa ne delate nič, zmanjšate tok skozi zunanje vlečne/spustne upore na vhodih in nimate dodatnih komponent. Ta projekt bo uporabil vsakega od teh trikov, da bi dobil rešitev z nizko porabo energije.

Komponenta nRF52832

Čip nRF52832 lahko deluje z napajanjem med 1,7 V in 3,6 V (absolutna največja napetost 3,9 V). To pomeni, da lahko čip napajate neposredno iz gumbaste celice ali 2 x AAA baterij. Vendar je smiselno dodati regulator napetosti za zaščito čipa pred prenapetostjo. Ta dodatna komponenta ima stroške energije, vendar v primeru plošče NanoV2 regulator na vozilu, TLV704, porabi manj kot 5,5uA max, običajno le 3,4uA. Za to majhno dodatno porabo energije dobite zaščito za do 24 V napajalne vhode.

Komponenta Si7021

Sam senzor Si7021 črpa običajno <1uA, ko ne izvaja meritev, to je v stanju pripravljenosti, in do 4mA pri prenosu podatkov prek I2C. Ker meritev ne izvajamo stalno, 4 mA ni pomemben del povprečnega napajalnega toka. Če izmerite 30 sekund, povprečnemu napajalnemu toku dodate manj kot 1uA, glejte spodnje meritve napajalnega toka.

Obstajata dve zlahka dostopni plošči Si7021. Enega iz Adafruta in enega iz Sparkfuna. Hiter pogled na obe plošči vam bo povedal, da ima plošča Adafruit veliko več sestavnih delov kot plošča Sparkfun, zato bi bili nagnjeni k izbiri plošče Sparkfun. Če pogledamo sheme za vsako ploščo, je razvidno, da je plošča Sparkfun le goli senzor in dva 4k7 uporovna upora, medtem ko ima plošča Adafruit vgrajen regulator MIC5225, ki običajno porabi ves čas 29uA. To je pomembno, če je celotni tok preostalega tokokroga <30uA. Ker že imamo regulator za čip nRF52832, ta dodatna komponenta ni potrebna in Si7021 lahko napajamo iz tega 3.3V napajanja. Zato bo ta projekt uporabil prelomno ploščo Si7021 podjetja Sparkfun.

zmanjšajte tok z zunanjimi vlečnimi/izvlečnimi upori na vhodih

Pulpacijski upori 4K7 I2C niso posebej visoki vrednosti in bodo pri nizki napetosti potegnili 0,7 mA. To bi bil problem, če bi bili na stikalnem vhodu, ki je bil dolgo ozemljen. Vendar pa je v tem projektu tok skozi te upore minimiziran le z redko uporabo vmesnika I2C in le za kratek čas. V večini primerov vodila I2C niso v uporabi in so v visokem / tri stanju, zato skozi te upore ne teče tok.

2. korak: Gradnja

Gradnja
Gradnja
Gradnja
Gradnja
Gradnja
Gradnja

Projekt je zgrajen na majhnem tiskanem vezju, a ker ni komponent SMD, ga je mogoče prav tako enostavno zgraditi s ploščo vero. PCB je izdelal pcbcart.com iz teh Gerberjevih datotek, TempHumiditySensor_R1.zip PCB je dovolj splošen, da ga lahko uporabimo za druge projekte BLE.

Shema je prikazana zgoraj. Tukaj je pdf različica.

Seznam delov

Približni stroški na enoto od decembra 2018, ~ 62 USD, brez pošiljanja in programerja iz 1. dela

  • Redbear NanoV2 ~ 17 USD
  • Sparkfun Si7021 prelomna deska ~ 8 USD
  • 2 x 53 mm x 30 mm 0,15 W 5V sončne celice npr. Overfly ~ 1,10 USD
  • 1 x PCB TempHumiditySensor_R1.zip ~ 25 USD za 5 popusta www.pcbcart.com ALI Vero plošča (bakreni trak) npr. Jaycar HP9540 ~ 5 USD
  • 2 x 1N5819 schottky diode npr. Digikey 1N5819FSCT-ND ~ 1 USD
  • 1 x 470R 0,4 W 1% upor npr. Digikey BC3274CT-ND ~ 0,25 USD
  • 6 x 6 -polni moški zatiči glave, npr. Sparkfun PRT-00116 ~ 1,5 USD
  • skakalec ženska na žensko npr. Adafruit ID: 1950 ~ 2 USD
  • 3 mm x 12 mm najlonski vijaki, npr. Jaycar HP0140 ~ 3 AUD $
  • 3 mm x 12 mm najlonske matice, npr. Jaycar HP0146 ~ 3 AUD $
  • Scotch Trajni montažni trak Cat 4010 npr. od Amazona ~ 6,6 USD
  • Držalo za baterije AAA x 2, npr. Sparkfun PRT-14219 ~ 1,5 USD
  • 2 x AAA 750mA alkalne baterije, npr. Sparkfun PRT-09274 ~ US $ 1,0 Te baterije bi morale zdržati> 2 leti. Alkalne baterije Energizer imajo večjo zmogljivost
  • Plastična škatla (ABS) 83 mm x 54 mm x 31 mm, npr. Jaycar HB6005 ~ 3 AUD $
  • pfodApp ~ 10 USD
  • 1 x 22uF 63V nizki kondenzator ESR (izbirno) npr. Jaycar RE-6342 ~ 0,5 AUD ali Digikey P5190-ND ~ 0,25 USD

Konstrukcija je naravnost naprej. Nosilec baterije in sončne celice so pritrjeni na plastično škatlo z dvostranskim trakom za trpežne obremenitve.

V končnem delu upoštevajte žico za povezavo Gnd od CLK do GND. Ta je nameščen PO programiranju, da prepreči, da bi šum na vhodu CLK sprožil čip nRF52 v visokotokovnem načinu za odpravljanje napak

3. korak: Koda - knjižnica senzorjev z nizko porabo energije, uporabniški vmesnik in skica Arduino

Koda - knjižnica senzorjev z nizko porabo energije, uporabniški vmesnik in skica Arduino
Koda - knjižnica senzorjev z nizko porabo energije, uporabniški vmesnik in skica Arduino
Koda - knjižnica senzorjev z nizko porabo energije, uporabniški vmesnik in skica Arduino
Koda - knjižnica senzorjev z nizko porabo energije, uporabniški vmesnik in skica Arduino
Koda - knjižnica senzorjev z nizko porabo energije, uporabniški vmesnik in skica Arduino
Koda - knjižnica senzorjev z nizko porabo energije, uporabniški vmesnik in skica Arduino

Prenesite stisnjeno kodo, lp_BLE_TempHumidity_R3.zip in jo razpakirajte v imenik Arduino Sketches. Iz te datoteke zip morate namestiti tudi knjižnico lp_So7021 in namestiti tudi knjižnico pfodParser.

Knjižnica senzorjev nizke porabe, lp_Si7021

Tako Adafruit kot Sparkfun ponujata knjižnici podpore za dostop do senzorja Si7021, vendar sta ti knjižnici neprimerni za zelo nizko porabo energije. Oba uporabljata zakasnitev (25) v kodi za zamudo pri branju senzorja med merjenjem. Kot je navedeno v 1. delu, so zamude hudobne. Arduino delay () samo ohranja delovanje mikroprocesorja z močjo, medtem ko čaka na zakasnitev. To krši prvo pravilo nizke porabe energije BLE, večinoma ne naredite ničesar. Nadomestna knjižnica lp_Si7021 nadomešča vse zamude z lp_timerji, ki mikroprocesor uspavajo, medtem ko čakajo, da senzor konča merjenje.

Koliko razlikuje knjižnica lp_Si7021? Z uporabo izvirne knjižnice podpore SparkFun Si7021 in branjem na sekundo brez serijskih izpisov dobite povprečje ~ 1,2 mA. Zamenjava knjižnice Sparkfun s knjižnico lp_Si7021 zmanjša povprečni tok na ~ 10uA, to je 100 -krat manj. V tem projektu je najhitrejša hitrost merjenja enkrat na 30 sekund, ko je mobilni telefon priključen, kar povzroči povprečni tok senzorja manjši od 1uA. Kadar povezave BLE ni, je merilna hitrost enkrat na 10 minut in povprečni napajalni tok senzorja je zanemarljiv.

Uporabniški vmesnik

Zgoraj je glavni zaslon in povečan prikaz 10 -dnevne urne zgodovine. Površine je mogoče povečati in premikati v obe smeri z dvema prstoma.

Uporabniški vmesnik je kodiran na skici Arduino in nato poslan na pfodApp na prvi povezavi, kjer je predpomnjen za večkratno uporabo in posodobitve. Grafični zaslon je zgrajen iz risb primitiv. Za navodila o tem, kako zgraditi lastne kontrolnike, glejte Arduino Controls po meri za Android. Datoteke termometra, RHGauge in gumba vsebujejo ukaze za risanje za te predmete.

Opomba: Brez, če je ta zaslon vgrajen v pfodApp. Celoten zaslon je v celoti nadzorovan s kodo na vaši skici Arduino

Metoda sendDrawing_z () v skici lp_BLE_TempHumidity_R3.ino definira uporabniški vmesnik.

void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // ozadje privzeto na WHITE, če je izpuščeno, tj. start (50, 60); parser.sendRefreshAndVersion (30000); // ponovno zahteva dwg vsakih 30 sekund. to se prezre, če ni nastavljena različica razčlenjevalnika // dotaknite se zgornjih gumbov, da prisilite posodobitve zaslona dwgs.touchZone (). cmd ('u'). size (50, 39).send (); dwgs.pushZero (35, 22, 1,5); // premaknemo ničlo v središče dwg na 35, 22 in povečamo za 1,5 -krat rhGauge.draw (); // narišemo kontrolni dwgs.popZero (); dwgs.pushZero (18, 33); // premaknemo ničlo v sredino dwg na 18, lestvica 33 je 1 (privzeto) termometer.draw (); // narišemo kontrolni dwgs.popZero ();

dwgs.pushZero (12,5, 43, 0,7); // premaknemo ničlo v središče dwg na 12,5, 43 in merimo za 0,7

hrs8PlotButton.draw (); // narišemo kontrolni dwgs.popZero (); dwgs.pushZero (37,5, 43, 0,7); // premaknemo ničlo v središče dwg na 37,5, 43 in merimo za 0,7 dni1PlotButton.draw (); // narišemo kontrolni dwgs.popZero ();

dwgs.pushZero (12,5, 54, 0,7); // premaknemo ničlo v središče dwg na 12,5, 54 in merimo za 0,7

days3PlotButton.draw (); // narišemo kontrolni dwgs.popZero (); dwgs.pushZero (37,5, 54, 0,7); // premaknemo ničlo v središče dwg na 37,5, 54 in merimo za 0,7 dni 10PlotButton.draw (); // narišemo kontrolni dwgs.popZero (); dwgs.end (); }

Ukazi pushZero spremenijo izvor in skaliranje za risanje naslednje komponente. Tako lahko preprosto spremenite velikost in položaj gumbov in merilnikov.

Pri prvi povezavi začetni prikaz traja 5 ali 6 sekund, da se naloži ~ 800 bajtov, ki določajo prikaz. pfodApp predpomni zaslon, zato morajo prihodnje posodobitve samo pošiljati spremembe, položaje merilnikov in odčitke. Te posodobitve potrebujejo le nekaj sekund, da pošljejo 128 bajtov, potrebnih za posodobitev zaslona.

Na zaslonu je določenih pet (5) aktivnih območij na dotik. Vsak gumb ima v svoji metodi draw () določeno eno, zato ga lahko kliknete, da odprete ustrezno ploskev, zgornja polovica zaslona pa je konfigurirana kot tretje območje dotika

dwgs.touchZone (). cmd ('u'). velikost (50, 39).send ();

Ko kliknete zaslon nad gumbi, se ukaz 'u' dwg pošlje na vašo skico, da vsiljuje novo meritev in posodobitev zaslona. Običajno se ob vzpostavitvi povezave posodobijo le vsakih 30 sekund. Vsak klik ali osvežitev risbe povzroči novo meritev. Odziv iz skice Arduino na pfodApp je zakasnjen, dokler se nova meritev ne zaključi (~ 25 mS), tako da je mogoče v posodobitvi poslati najnovejšo vrednost.

Arduino skica

Skica Arduino, lp_BLE_TempHumidity_R3.ino, je izboljšana različica vzorčne skice, uporabljene v 1. delu. Skica lp_BLE_TempHumidity_R3.ino nadomešča meni z zgornjo risbo. Dodaja tudi podporo senzorja lp_Si7021 in matrike podatkov za shranjevanje 10 -minutnih in urnih zgodovinskih meritev.

Glavni zaplet skice lp_BLE_TempHumidity_R3.ino je rokovanje s pošiljanjem podatkov ploskve. Ko se meritve izvedejo, program readRHResults () obravnava zbiranje rezultatov in njihovo shranjevanje v zgodovinske matrike. Polja so dolga 120, toda ko se pošljejo podatki, je prvih 30 podatkovnih točk v krajšem časovnem intervalu.

Pri pošiljanju 200 čudnih točk ploskve na prikaz morate upoštevati nekaj točk:-

  1. Vsaka podatkovna točka je dolga ~ 25 bajtov v besedilni obliki CSV. 150 točk je torej 3750 bajtov podatkov. Razred lp_BLESerial ima 1536 -bajtni medpomnilnik, od katerih je 1024 dovolj veliko za največje sporočilo pfod. Ostalih 512 bajtov je rezerviranih za pošiljanje podatkov. Ko zgodovinski podatki zapolnijo 512 bajtov, se pošiljanje nadaljnjih podatkov odloži, dokler v medpomnilniku ni prostora.
  2. Da bi se izognili upočasnitvi podatkov ploskev na glavnem zaslonu, se podatki narišejo le, ko je prikazan zaslon ploskve. Ko se uporabnik vrne na glavni zaslon, se pošiljanje podatkov ploskve zaustavi. Pošiljanje podatkov ploskve se nadaljuje, ko uporabnik klikne gumb ploskve, da znova prikaže ploskev.
  3. Zgodovinski zapleti se začnejo od 0 (zdaj) in segajo nazaj v čas. Če od prikaza zadnje ploskve ni bilo nove meritve, se prejšnji podatki, ki so bili že preneseni, takoj znova prikažejo. Če je nova meritev, se ta doda prejšnjim podatkom ploskve.
  4. Ko je monitor prvič vklopljen, ni zgodovinskih odčitkov in 0 je shranjeno v matrikah kot neveljavno odčitavanje. Ko je grafikon prikazan, se neveljavni odčitki le preskočijo, zaradi česar je grafikon krajši.

Celzija in Fahrenheita

Skica lp_BLE_TempHumidity_R3.ino prikazuje in prikazuje podatke v Celziju. Če želite rezultate pretvoriti v Fahrenheit, zamenjajte vse pojavitve

parser.print (sensor. Temp_RawToFloat (..

z

parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…

In zamenjajte simbol unicode degC v oktalnem / 342 / 204 / 203 s simbolom degF / 342 / 204 / 211

pfodApp bo prikazal vse Unicode, ki jih lahko prikažete na mobilnem telefonu.

Za več podrobnosti glejte Uporaba znakov, ki niso ASCII v Arduinu. Spremenite tudi nastavitve MIN_C, MAX_C v Thermometer.h. Končno prilagodite meje ploskve, kot želite, npr. spremenite | Temp C ~ 32 ~ 8 ~ deg C |

reči

| Temp F ~ 90 ~ 14 ~ deg F |

4. korak: Merjenje napajalnega toka

Merjenje napajalnega toka
Merjenje napajalnega toka

Z uporabo knjižnice lp_Si7021 celo merjenje temperature/vlažnosti vsakih 10 sekund prispeva le ~ 1uA k povprečnemu napajalnemu toku, zato je glavni dejavnik napajalnega toka in s tem življenjska doba baterije tok, ki ga uporablja BLE oglaševanje in povezava ter prenos podatkov.

Ploščo za temperaturo/vlažnost povežite s programerjem, opisanim v 1. delu, kot je prikazano zgoraj.

Ko so sončne celice in baterije izklopljeni, sta Vin in Gnd priključena na programerjeve Vdd in Gnd (rumena in zelena kabla), SWCLK in SWDIO pa na Clk in SIO plošče glave programatorja (modri in roza vodnik)

Zdaj lahko programirate NanoV2 in izmerite napajalni tok, kot je opisano v 1. delu.

Namestite knjižnico Si7021 z nizko porabo iz te datoteke zip, lp_Si7021.zip in namestite knjižnico pfodParser ter razpakirajte lp_BLE_TempHumidity_R3.zip v imenik skic Arduino in programirajte ploščo Temp/Humditiy z lp_BLE_TempHumidity_R3.ino

Kot je omenjeno zgoraj, je prispevek senzorja povprečno <1uA pri najvišji stopnji merjenja, uporabljeni v tem projektu, zato so oglaševalski in priključni parametri BLE odločilni dejavnik za življenjsko dobo baterije.

Oglaševalni in povezovalni parametri BLE, ki vplivajo na trenutno porabo, so: -Tx Power, Advertising Interval, Max in Min Connection Intervals in Slave Latency.

Opomba: Z uporabo zgornjih povezav sta v napajanju dva (2) regulatorja, eden na plošči NanoV2 prek Vina in MAX8881 na napajanju programerja. To pomeni, da bodo izmerjeni napajalni tokovi zaradi drugega regulatorja za ~ 5uA višji od dejanskega. Spodaj navedene vrednosti so izmerjeni tokovi minus teh dodatnih 5uA.

Tx moč

Tx Napajalni učinki napajajo tok tako pri povezavi kot pri oglaševanju (brez povezave). Ta projekt uporablja nastavitev največje moči (+4) in zagotavlja najboljši doseg in največjo odpornost proti hrupu za najbolj zanesljive povezave. Za spremembo nastavitve moči lahko uporabite metodo lp_BLESerial setTxPower (). Veljavne vrednosti so pri naraščajoči moči -40, -30, -20, -16, -12, -8, -4, 0 +4. Preden pokličete setTxPower (), morate poklicati metodo lp_BLESerial begin (). Oglejte si skico lp_BLE_TempHumidity_R3.ino.

Lahko poskusite z zmanjšanjem moči Tx, vendar je kompromis krajši doseg in več izpadov povezav zaradi motenj. V tem projektu je moč Tx privzeto nastavljena na +4. Kot boste videli spodaj, so kljub tej nastavitvi še vedno možni zelo nizek napajalni tok.

Interval oglaševanja

Za dano moč Tx, ko ni povezave, oglaševalski interval nastavi povprečno trenutno porabo. Priporočeno območje je 500 do 1000 mS. Tu je bilo uporabljenih 2000 mS. Kompromis je, da daljši časi oglaševanja pomenijo, da mobilni telefon počasneje najde napravo in vzpostavi povezavo. Interno so intervali oglaševanja nastavljeni na večkratnike 0,625 mS v območju od 20 mS do 10,24 sekunde. Za udobje metoda lp_BLESerial setAdvertisingInterval () za argument vzame mS. Za +4 TxPower in 2000mS oglaševalski interval je bila trenutna poraba ~ 18uA. Za interval oglaševanja 1000mS je bilo ~ 29uA. Rev 2 je uporabljal oglaševalski interval 2000mS, vendar je to povzročilo počasne povezave. Rev 3 je bil spremenjen v oglaševalski interval 1000mS, da bi bile povezave hitrejše.

Največji in najmanjši intervali povezave

Ko je povezava vzpostavljena, interval povezave določi, kako pogosto mobilni telefon vzpostavi stik z napravo. Lp_BLESerial setConnectionInterval () vam omogoča, da nastavite predlagano največjo in najmanjšo vrednost, vendar mobilna naprava nadzoruje, kakšen je v resnici interval povezave. Za udobje so argumenti setConnectionInterval () v mS, interno pa so intervali povezave večkratni do 1,25 mS v območju od 7,5 mS do 4 sekund.

Privzeta nastavitev je setConnectionInterval (100, 150), tj.min 100mS do max 150mS. Povečanje teh vrednosti zmanjša napajalni tok med povezavo, vendar je kompromis počasnejši prenos podatkov. Vsaka posodobitev zaslona traja približno 7 sporočil BLE, medtem ko celotnih 36 ur 10 -minutnih meritev traja približno 170 sporočil BLE. Tako povečanje intervalov povezave upočasni posodabljanje zaslona in prikaz ploskve.

Razred lp_BLESerial ima vmesni pomnilnik 1536 bajtov in pošilja le en blok po 20 bajtov iz tega vmesnika, pri čemer je vsak največji interval povezave, da se prepreči preplavitev povezave BLE s podatki. Tudi pri pošiljanju podatkov ploskev skica pošilja le podatke, dokler 512 bajtov ne čaka na pošiljanje, nato pa odloži pošiljanje več podatkov, dokler niso poslani nekateri podatki. S tem se izognete poplavljanju medpomnilnika za pošiljanje. Zaradi omejevanja pošiljanja je prenos podatkov na mobilno napravo zanesljiv, vendar ni optimiziran za največjo možno količino pošiljanja.

V tem projektu so bili privzete vrednosti intervali povezav.

Slate latency

Če ni podatkov za pošiljanje v mobilni telefon, lahko naprava opcijsko prezre nekatera sporočila o povezavi z mobilnega telefona. Tako prihranite moč Tx in napajalni tok. Nastavitev Slave Latency je število sporočil o povezavi, ki jih je treba prezreti. Privzeta vrednost je 0. Za spremembo te nastavitve lahko uporabite metodo lp_BLESerial setSlaveLatency ().

Privzeta zakasnitev pomožne enote 0 je dala ~ 50uA napajalnega toka, pri čemer se prezre posodobitve zaslona vsakih 30 sekund, vendar vključuje sporočila keepAlive zelo 5 sekund. Nastavitev Slave Latency na 2 je dala povprečni priključeni napajalni tok ~ 25uA. Nastavitev Slaven Latency 4 je dala ~ 20uA. Zdi se, da višje nastavitve ne zmanjšujejo napajalnega toka, zato je bila uporabljena nastavitev Slaven Latency 4.

Ko je povezan, vsakih 30 sekund pfodApp zahteva posodobitev zaslona. To prisili merjenje senzorja in pošlje nazaj podatke za posodobitev grafičnega prikaza. Ta posodobitev povzroči dodatnih ~ 66uA za 2 sekundi vsakih 30 sekund. To je povprečno 4,4 uA v 30 sekundah. Če temu dodamo 20uA, dobimo povprečni napajalni tok povezave ~ 25uA

5. korak: Skupni tok napajanja in življenjska doba baterije

Z uporabo zgornjih nastavitev, kot je določeno v lp_BLE_TempHumidity_R3.ino, skupni tok oskrbe, ko je povezan, in posodabljanje zaslona vsakih 30 sekund, približno 25uA. Ko ni povezan, je približno 29uA.

Za izračun življenjske dobe baterije je predviden stalen tok ~ 29uA.

Različne baterije imajo različne kapacitete in značilnosti napetosti. Tukaj obravnavane baterije so gumbaste celice CR2032, gumbaste celice CR2450 (N), 2 x AAA alkalne, 2 x AAA litijeve in LiPo.

Povzetek baterije

Če uporabljate Solar Assist, tem podatkom o življenjski dobi baterije dodajte 50% (ob predpostavki 8 ur na dan)

Opomba: Kondenzator 22uF LowESR (C1) poleg vgrajenega kondenzatorja NanoV2 22uF shranjuje tok sončne celice in ga nato napaja za impulze toka TX. Drugače pa baterija napaja del toka TX. Ta dodatni 22uF LowESR dodaja približno 10% toku akumulatorja, kadar sončna celica ni napajana, ampak tudi podaljša življenjsko dobo baterije tako, da kompenzira naraščajoč notranji upor baterije, ko se baterija izteče. Spodnje meritve so bile izvedene BREZ dodatnega 22uF kondenzatorja.

CR2032 - 235 mAHr - življenjska doba baterije 10 mesecev CR2450 (N) - 650 mAHr (540mAHr) - življenjska doba baterije 2,3 leta (2 leti) 2 x AAA alkalno - 1250 mAHr - življenjska doba baterije 3,8 leta 2 x AAA Litij - 1200 mAHr - življenjska doba baterije 4,7 leta LiPo ponovno polnjenje - ni priporočljivo zaradi velikega samopraznjenja.

CR2032

Ta kovancev ima kapaciteto običajno 235 mAHr (baterija za energijo), nazivno napetost 3 V in določeno napetost razelektritve 2 V. To pomeni, da je življenjska doba baterije 8100 ur ali ~ 0,9 leta. Vendar pa se notranji upor celic povečuje, ko se akumulatorju izteče življenjska doba, zato morda ne bo mogel zagotoviti največjih impulzov toka Tx. Za zmanjšanje tega učinka lahko uporabite večji napajalni kondenzator, vendar recimo 10 mesecev življenjske dobe.

CR2450 (N)

Kapaciteta te gumbaste celice je običajno 620 mAHr (540 mAHr za CR2450N), nazivna napetost 3 V in določena napetost razelektritve 2 V. To pomeni, da je življenjska doba baterije 22, 400 ur ali ~ 2 let 6 m (18600 ur ~ 2 let 2 m za CR2450N). Vendar pa se notranji upor celic povečuje, ko se akumulatorju izteče življenjska doba, zato morda ne bo mogel zagotoviti največjih impulzov toka Tx. Za zmanjšanje tega učinka lahko uporabite večji napajalni kondenzator, vendar recimo življenjsko dobo 2 let 4 m (2 leta N).

Opomba: Različica CR2450N ima debelejši rob, ki preprečuje napačno namestitev v držalo CR2450N. Celico CR2450N in CR2450 lahko vstavite v držalo CR2450, ne morete pa vstaviti celice CR2450 v držalo CR2450N

2 x AAA alkalne celice

Te baterije imajo kapaciteto približno 1250 mAHr (Energizer Battery) za zelo nizke tokove, nazivno napetost 2x1,5V = 3V in določeno izhodno napetost 2x0,8V = 1,6V. Toda ta določena napetost razelektritve je manjša od delovne napetosti senzorja Si7021 (1,9 V), zato je mogoče baterijo porabiti le do ~ 1V vsaka. To zmanjša zmogljivost za približno 10% do 15%, to je ~ 1000 mAHr.

To pomeni, da je življenjska doba baterije 34, 500 ur ali ~ 4 leta. Vendar pa se notranji upor celic povečuje, ko se akumulatorju izteče življenjska doba, zato morda ne bo mogel zagotoviti največjih impulzov toka Tx. Za zmanjšanje tega učinka lahko uporabite večji napajalni kondenzator, vendar recimo 3 leta 10 m življenjske dobe. Opomba: Alkalne baterije se samodejno praznijo od 2% do 3% na leto.

2 x AAA litijeve celice

Te baterije imajo kapaciteto približno 1200 mAHr (baterija Energizer), nazivno napetost 2x1,7 V = 3,4 V pri nizkih tokovih in izpraznjeno napetost 2x1,4 V = 2,4 V. To pomeni življenjsko dobo baterije 41, 400 ur ali 4 leta 8 m.

LiPo polnilna baterija

Te baterije so na voljo v različnih zmogljivostih od 100 mAHr do 2000 mAHr, v ploščatih oblikah in imajo napolnjeno napetost 4,2 V in izpraznjeno napetost> 2,7 V. Vendar imajo visoko samopraznjenje 2% -3%/mesec (tj. 24% do 36% na leto), zato niso primerne za to uporabo kot druge baterije.

6. korak: Alternative oskrbe - Solar Assist, Only Battery, Solar Only

Alternative oskrbe - Solar Assist, Only Battery, Solar Only
Alternative oskrbe - Solar Assist, Only Battery, Solar Only
Alternative oskrbe - Solar Assist, Only Battery, Solar Only
Alternative oskrbe - Solar Assist, Only Battery, Solar Only
Alternative oskrbe - Solar Assist, Only Battery, Solar Only
Alternative oskrbe - Solar Assist, Only Battery, Solar Only
Alternative oskrbe - Solar Assist, Only Battery, Solar Only
Alternative oskrbe - Solar Assist, Only Battery, Solar Only

Baterija in solarna pomoč

Zgornja konstrukcija uporablja napajanje Battery plus Solar Assist. Ko sončne celice ustvarijo več napetosti kot napetost akumulatorja, bodo sončne celice napajale monitor in tako podaljšale življenjsko dobo baterije. Običajno se lahko življenjska doba baterije podaljša za še 50%.

Uporabljene sončne celice so majhne, 50 mm x 30 mm, poceni, ~ 0,50 USD in nizke porabe energije. To so nominalno 5V plošče, vendar za ustvarjanje 5V potrebujejo popolno neposredno svetlobo. V tem projektu sta dve plošči povezani zaporedoma, tako da namestitev monitorja blizu okna, brez neposrednega sonca, zadostuje za zamenjavo energije baterije. Tudi dobro osvetljena soba ali namizna svetilka zadostuje, da sončne celice ustvarijo> 3,3 V pri> 33uA in prevzamejo baterijo.

Zgrajena je bila preprosta preskusna plošča, ki je določila, kje bi lahko postavili nadzornik temperature / vlažnosti, izven sonca in še vedno na sončno energijo. Kot lahko vidite na zgornji fotografiji, dve plošči, priključeni na 100K upor, proizvajata 5,64 V na 100K, to je 56uA tok pri 5,64 V. To je več kot dovolj za prevzem napajanja monitorja iz baterije. Vsak odčitek napetosti nad nazivno napetostjo baterije 3 V pomeni, da bodo sončne celice napajale monitor namesto baterije.

Dve diodi v vezju za nadzor temperaturne vlažnosti ločujeta sončne celice in baterije drug od drugega in ju varujeta pred povezavo v obratni polarnosti. Zener 10V 1W in upor serije 470R ščitijo vgrajeni regulator NanoV2 pred prenapetostjo dveh sončnih celic na soncu, še posebej, če se namesto 5V uporabljajo 12V celice. Pri normalnem delovanju pri <5V, zener 10 V črpa le ~ 1uA.

Samo baterija

Pri napajanju samo z baterijo izpustite R1, D1 in D3 ter sončne celice. D1 lahko zamenjate tudi s kosom žice, če ne želite zaščite pred obratno polariteto.

Samo sončni

Za napajanje monitorja samo iz sončnih celic, brez baterije, je potrebno drugo napajalno vezje. Težava je v tem, da medtem ko monitor deluje na 29uA, pri vklopu nRF52 porabi ~ 5mA za 0,32 sekunde. Zgoraj prikazano vezje (različica pdf) zadržuje regulator MAX8881 izklopljen, dokler se vhodni kondenzatorji, 2 x 1000uF, ne napolnijo do 4,04 V. Nato MAX6457 sprosti vhod MAX8881 SHDN za napajanje nRF52 (NanoV2) Kondenzatorji 2 x 1000uF napajajo potreben zagonski tok.

To omogoča, da se monitor vklopi takoj, ko bo dovolj sončne energije, da bo deloval pri 29uA.

7. korak: Zaključek

Ta vadnica je predstavila baterijski/solarni nadzor temperature vlažnosti kot primer projekta BLE z nizko porabo energije v Arduinu za čip nRF52832. Dovodni tokovi ~ 29uA, kjer so doseženi s prilagajanjem parametrov povezave. Zaradi tega je baterija v obliki gumbaste celice CR2032 presegla 10 mesecev. Daljša za kovance in celice z večjo zmogljivostjo. Dodajanje dveh poceni sončnih celic je zlahka podaljšalo življenjsko dobo baterije za 50% ali več. Za napajanje monitorja iz sončnih celic zadostuje močna sobna luč ali namizna svetilka.

Predstavljen je bil poseben napajalni tokokrog, ki omogoča uporabo monitorja izključno iz sončnih celic z majhno zmogljivostjo.

Brezplačni program pfodDesigner vam omogoča oblikovanje menijev/podmenijev, načrtovanje glede na datum/čas in dnevniške podatke, nato pa za vas ustvari skico Arduino z nizko porabo energije. Tu je bil kodiran vmesnik po meri z uporabo risb primitivov pfodApp. Povezovanje s pfodApp prikaže uporabniški vmesnik in posodobi odčitke, medtem ko monitor uporablja ~ 29uA

Programiranje za Android ni potrebno. pfodApp obravnava vse to.

Priporočena: