Sadržaj:

Jednostavan BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3: 7 koraka
Jednostavan BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3: 7 koraka

Video: Jednostavan BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3: 7 koraka

Video: Jednostavan BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3: 7 koraka
Video: Часть 1. Аудиокнига Натаниэля Хоторна «Дом с семью фронтонами» (главы 1–3) 2024, Studeni
Anonim
Jednostavan BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3
Jednostavan BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3
Jednostavan BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3
Jednostavan BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3
Jednostavan BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3
Jednostavan BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3

Ažuriranje: 23. studenoga 2020. - Prva zamjena 2 x AAA baterija od 15. siječnja 2019., tj. 22 mjeseca za 2xAAA alkalnu Ažuriranje: 7. travnja 2019. - Rev 3 lp_BLE_TempHumidity, dodaje grafikone datuma/vremena pomoću pfodApp V3.0.362+i automatsko prigušivanje prilikom slanja podaci

Ažuriranje: 24. ožujka 2019. - 2. revija lp_BLE_TempHumidity, dodaje više opcija crtanja i i2c_ClearBus

Ovaj instruktor, Uređaj za nadzor vlažnosti temperature vrlo niske snage, dio je 2 od 3.

Dio 1 - Jednostavna izgradnja BLE uređaja vrlo male snage s Arduino poklopcima koji postavljaju Arduino za kodiranje nRF52 uređaja male snage, programskim modulom i mjerenjem opskrbne struje. Obuhvaća i specijalizirane mjerače vremena i usporedbe male snage te oslobođene ulaze i upotrebu pfodApp -a za povezivanje i upravljanje nRF52 uređajem.

Dio 2 - Ovaj monitor vlažnosti temperature vrlo niske potrošnje, ovaj, pokriva korištenje Redbear Nano V2 modula i senzora temperature / vlage Si7021 za izradu baterije / solarnog monitora male snage. Također obuhvaća promjenu biblioteke Si7021 na nisku potrošnju energije, podešavanje BLE uređaja radi smanjenja trenutne potrošnje od <25uA i dizajniranje prilagođenog prikaza temperature/vlažnosti za vaš mobitel.

Dio 3 - Zamjena Redbear Nano V2 pokriva korištenje drugih modula temeljenih na nRF52 umjesto Nano V2. Obuhvaća odabir komponenti napajanja, konstrukciju, uklanjanje zaštite programiranja čipova nRF52, korištenje NFC pinova kao normalnog GPIO -a i definiranje nove ploče nRF52 u Arduinu.

Ovo uputstvo je praktična primjena Dijela 1 izgradnje BLE uređaja vrlo niske snage koji su olakšani s Arduinom konstrukcijom BLE monitora temperature i vlažnosti vrlo niske snage. Monitor će godinama raditi na Coin Cell ili 2 x AAA baterijama, čak i duže sa solarnom pomoći. Ovaj vodič pokriva podešavanje BLE parametara za nisku potrošnju energije i kako napajati uređaj samo iz baterije ILI iz baterije + iz solarne ILI solarne jedinice.

Osim što prikazuje trenutnu temperaturu i vlažnost, monitor pohranjuje posljednjih 36 sati očitavanja od 10 minuta i zadnjih 10 dana očitanja po satu. One se mogu ucrtati na vaš Android mobitel, a vrijednosti spremiti u datoteku zapisnika. Nije potrebno Android programiranje, pfodApp rješava sve to. Android zaslon i grafikoni u potpunosti su kontrolirani vašom Arduino skicom tako da ih možete prilagoditi prema potrebi.

Redbear Nano V2 ploča koristi se za komponentu nRF52832 BLE, a ploča za probijanje Sparkfun Si7021 koristi se za osjetnik temperature / vlažnosti. Modificirana biblioteka male snage koristi se sa Si7021. Mali PCB dizajniran je za držanje NanoV2 i opskrbnih komponenti. Međutim, budući da se ne koriste komponente za površinsko montiranje, to možete isto tako jednostavno izgraditi na ploči vero. Obuhvaćene su tri verzije napajanja. i) Baterija plus solarna pomoć, ii) Samo baterija, iii) Samo solarna. Opcija Solar Only (Samo solarno) nema pohranu baterije pa će se pokrenuti samo ako ima svjetla. Dovoljno je jarko sobno svjetlo ili stolna lampa.

Nacrt

Ovaj projekt ima 4 relativna nezavisna dijela:-

  1. Odabir komponenti i konstrukcija
  2. Kod - Biblioteka senzora niske snage, Korisničko sučelje i Arduino skica
  3. Mjerenje struje napajanja i vijeka trajanja baterije
  4. Alternative opskrbe - Solar Assist, Only Battery, Solar Only

Korak 1: Odabir komponente

Odabir komponenti

Kao što je spomenuto u 1. dijelu-Trik za postizanje rješenja s stvarno niskom potrošnjom energije je da većinu vremena ne radite ništa, minimizirate struju kroz vanjske pull-up/pull-down otpornike na ulazima i nemate dodatne komponente. Ovaj će projekt koristiti svaki od tih trikova za dobivanje rješenja male snage.

Komponenta nRF52832

Čip nRF52832 može raditi s napajanjem između 1,7 V i 3,6 V (apsolutni maksimalni napon 3,9 V). To znači da možete napajati čip izravno iz dugmaste ćelije ili 2 x AAA baterije. Međutim, pametno je dodati regulator napona za zaštitu čipa od prenapona. Ova dodatna komponenta dolazi s troškom energije, ali u slučaju ploče NanoV2, ugrađeni regulator, TLV704, troši manje od 5,5uA max, obično samo 3,4uA. Za ovu malu dodatnu potrošnju energije dobivate zaštitu za do 24 V opskrbne ulaze.

Komponenta Si7021

Sam senzor Si7021 crpi tipično <1uA kada ne vrši mjerenje, tj. U stanju mirovanja, i do 4mA pri prijenosu podataka putem I2C. Budući da ne mjerimo kontinuirano, 4mA nije značajan dio prosječne opskrbne struje. Očitavanjem od 30 sekundi prosječnoj se opskrbnoj struji dodaje manje od 1uA, pogledajte dolje mjerenja opskrbne struje.

Postoje dvije lako dostupne ploče za probijanje Si7021. Jedan iz Adafruta i jedan iz Sparkfuna. Brzi pogled na dvije ploče reći će vam da ploča Adafruit ima mnogo više komponenti od ploče Sparkfun, pa biste bili skloni odabiru ploče Sparkfun. Pregled shema za svaku ploču pokazuje da je Sparkfun ploča samo goli senzor i dva 4k7 otpornika, dok Adafruit ploča ima ugrađeni regulator MIC5225 koji obično crpi 29uA cijelo vrijeme. To je značajno kada je ukupna struja za ostatak kruga <30uA. Budući da već imamo regulator za čip nRF52832, ova dodatna komponenta nije potrebna i Si7021 se može napajati iz tog napajanja od 3,3 V. Dakle, ovaj projekt će koristiti Si7021 probojnu ploču iz Sparkfuna.

minimizirati struju kroz vanjske pull-up/pull-down otpornike na ulazima

4K7 I2C izvlačni otpornici nisu osobito visoke vrijednosti i povući će 0,7 mA kad se spuste. To bi bio problem ako su na prekidaču koji je dugo bio uzemljen. Međutim, u ovom projektu struja kroz ove otpornike je smanjena korištenjem I2C sučelja rijetko i na kratko. Većinu vremena I2C vodovi nisu u upotrebi te su visoki / tri stanja pa kroz ove otpornike ne protiče struja.

Korak 2: Izgradnja

Graditeljstvo
Graditeljstvo
Graditeljstvo
Graditeljstvo
Graditeljstvo
Graditeljstvo

Projekt je izgrađen na malom PCB -u, ali budući da nema SMD komponenti, može se isto tako lako izgraditi pomoću vero ploče. PCB je proizveo pcbcart.com iz ovih Gerberovih datoteka, TempHumiditySensor_R1.zip PCB je dovoljno opće namjene da se može koristiti za druge BLE projekte.

Shema je prikazana gore. Evo pdf verzije.

Popis dijelova

Približni trošak po jedinici u prosincu 2018., ~ 62 USD, isključujući dostavu i programera iz 1. dijela

  • Redbear NanoV2 ~ 17 USD
  • Sparkfun Si7021 ploča za razbijanje ~ 8 USD
  • 2 x 53 mm x 30 mm 0,15 W 5V solarne ćelije npr. Overfly ~ 1,10 USD
  • 1 x PCB TempHumiditySensor_R1.zip ~ 25 USD za 5 popusta www.pcbcart.com ILI Vero ploča (bakreni trak) npr. Jaycar HP9540 ~ 5 AUD $
  • 2 x 1N5819 schottky diode npr. Digikey 1N5819FSCT-ND ~ 1 USD
  • 1 x 470R 0.4W 1% otpornik npr. Digikey BC3274CT-ND ~ 0,25 USD
  • 6 x 6 -pinske muške zaglavlje, npr. Sparkfun PRT-00116 ~ 1,5 USD
  • ženski skakač na ž. Adafruit ID: 1950 ~ 2 USD
  • 3 mm x 12 mm najlonski vijci, npr. Jaycar HP0140 ~ 3 AUD USD
  • 3 mm x 12 mm najlonske matice, npr. Jaycar HP0146 ~ 3 AUD $
  • Scotch Trajna traka za montažu Cat 4010 npr. s Amazona ~ 6,6 USD
  • AAA x 2 držač baterije, npr. Sparkfun PRT-14219 ~ 1,5 USD
  • 2 x AAA alkalne baterije 750mA, npr. Sparkfun PRT-09274 ~ 1,0 USD Ove baterije bi trebale trajati> 2 godine. Alkalne baterije Energizer imaju veći kapacitet
  • Plastična kutija (ABS) 83 mm x 54 mm x 31 mm, npr. Jaycar HB6005 ~ 3 AUD USD
  • pfodApp ~ 10 USD
  • 1 x 22uF 63V niski ESR kondenzator (izborno) npr. Jaycar RE-6342 ~ 0,5 AUD ili Digikey P5190-ND ~ 0,25 USD

Konstrukcija je ravna. Nosač baterija i solarne ćelije pričvršćene su na plastičnu kutiju dvostranom trakom za teške uvjete rada.

Zabilježite žicu spoja Gnd od CLK do GND u gotovom dijelu. Ovo je instalirano NAKON programiranja kako bi se spriječilo da buka na ulazu CLK pokrene čip nRF52 u visokootporni način otklanjanja pogrešaka

Korak 3: Kôd - knjižnica senzora niske snage, korisničko sučelje i Arduino skica

Kod - Biblioteka senzora niske snage, Korisničko sučelje i Arduino skica
Kod - Biblioteka senzora niske snage, Korisničko sučelje i Arduino skica
Kod - Biblioteka senzora niske snage, Korisničko sučelje i Arduino skica
Kod - Biblioteka senzora niske snage, Korisničko sučelje i Arduino skica
Kod - Biblioteka senzora niske snage, Korisničko sučelje i Arduino skica
Kod - Biblioteka senzora niske snage, Korisničko sučelje i Arduino skica

Preuzmite ZIP kôd, lp_BLE_TempHumidity_R3.zip i raspakirajte ga u svoj direktorij Arduino Sketches. Također morate instalirati knjižnicu lp_So7021 iz ove zip datoteke, a također i knjižnicu pfodParser.

Knjižnica senzora niske snage, lp_Si7021

I Adafruit i Sparkfun pružaju knjižnice podrške za pristup senzoru Si7021, međutim obje su knjižnice neprikladne za vrlo nisku potrošnju energije. Obojica koriste kašnjenje (25) u kodu za odgađanje čitanja senzora tijekom mjerenja. Kao što je navedeno u prvom dijelu, odgode su zlo. Arduino kašnjenje () samo održava mikroprocesor radeći napajanjem dok čeka na istek kašnjenja. Time se ruši prvo pravilo male snage BLE -a, većinu vremena nemojte ništa raditi. Zamjenska knjižnica lp_Si7021 zamjenjuje sva kašnjenja lp_timerima koji mikroprocesor uspavljuju čekajući da senzor dovrši mjerenje.

Koliko razlika čini knjižnica lp_Si7021? Korištenjem izvorne biblioteke podrške SparkFun Si7021 i čitanjem u sekundi bez serijskog ispisa, prosjek je ~ 1,2 mA. Zamjena Sparkfun knjižnice knjižnicom lp_Si7021 smanjuje prosječnu struju na ~ 10uA, tj. 100 puta manje. U ovom projektu najbrža mjerna brzina je jednom u 30 sekundi kada je mobilni telefon spojen, što rezultira prosječnom strujom senzora manjom od 1uA. Kad nema BLE veze, brzina mjerenja je jednom u 10 minuta, a prosječna opskrbna struja senzora je zanemariva.

Korisničko sučelje

Iznad je prikaz glavnog zaslona i zumirani prikaz desetodnevne satne povijesti. Zemljišta se mogu zumirati i pomicati u oba smjera, pomoću dva prsta.

Korisničko sučelje kodirano je na Arduino skici, a zatim se šalje na pfodApp na prvoj vezi, gdje se sprema u memoriju za ponovnu uporabu i ažuriranje. Grafički prikaz izgrađen je od crtanja primitiva. Pogledajte prilagođene Arduino kontrole za Android za vodič o tome kako izgraditi vlastite kontrole. Datoteke termometra, RHGauge i gumba sadrže naredbe za crtanje za te stavke.

Napomena: Nema ako je ovaj zaslon ugrađen u pfodApp. Cijeli zaslon u potpunosti je kontroliran kodom na Arduino skici

Metoda sendDrawing_z () u skici lp_BLE_TempHumidity_R3.ino definira korisničko sučelje.

void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // pozadina prema zadanim postavkama na BIJELO ako je izostavljena, tj. start (50, 60); parser.sendRefreshAndVersion (30000); // ponovno zatražiti dwg svakih 30 sekundi. ovo se zanemaruje ako nije postavljena verzija rastavljača // dodirnite gornje gumbe za prisilno ažuriranje zaslona dwgs.touchZone (). cmd ('u'). size (50, 39).send (); dwgs.pushZero (35, 22, 1.5); // pomaknemo nulu u središte dwg na 35, 22 i skaliramo 1,5 puta rhGauge.draw (); // crtanje kontrole dwgs.popZero (); dwgs.pushZero (18, 33); // pomaknite nulu u središte dwg na 18, ljestvica 33 je 1 (zadani) termometar.draw (); // crtanje kontrole dwgs.popZero ();

dwgs.pushZero (12,5, 43, 0,7); // pomaknemo nulu u središte dwg na 12,5, 43 i skaliramo za 0,7

hrs8PlotButton.draw (); // crtanje kontrole dwgs.popZero (); dwgs.pushZero (37,5, 43, 0,7); // pomaknemo nulu u središte dwg na 37,5, 43 i skaliramo za 0,7 dana1PlotButton.draw (); // crtanje kontrole dwgs.popZero ();

dwgs.pushZero (12,5, 54, 0,7); // pomaknemo nulu u središte dwg na 12,5, 54 i skaliramo za 0,7

days3PlotButton.draw (); // crtanje kontrole dwgs.popZero (); dwgs.pushZero (37,5, 54, 0,7); // premjestiti nulu u središte dwg na 37,5, 54 i skalirati za 0,7 dana10PlotButton.draw (); // crtanje kontrole dwgs.popZero (); dwgs.end (); }

Naredbe pushZero mijenjaju ishodište i skaliranje za crtanje sljedeće komponente. To vam omogućuje jednostavno mijenjanje veličine i položaja gumba i mjerača.

Pri prvom povezivanju početnom zaslonu je potrebno 5 ili 6 sekundi da se učita ~ 800 bajtova koji definiraju prikaz. pfodApp predmemorira zaslon pa buduća ažuriranja samo trebaju slati promjene, položaje mjerača i očitanja. Ovim ažuriranjima potrebno je samo nekoliko sekundi za slanje 128 bajtova potrebnih za ažuriranje zaslona.

Na zaslonu je definirano pet (5) aktivnih zona dodira. Svaki gumb ima jedan definiran u svojoj draw () metodi pa ga možete kliknuti da otvorite odgovarajuću plohu, a gornja polovica zaslona konfigurirana je kao treća zona dodira

dwgs.touchZone (). cmd ('u'). veličina (50, 39).send ();

Kada kliknete na zaslon iznad gumba, naredba 'u' dwg šalje se na vašu skicu kako bi prisilila novo mjerenje i ažuriranje zaslona. Uobičajeno, kada ste povezani, ažuriranja se događaju svakih 30 sekundi. Svaki klik ili osvježavanje crteža prisiljava na novo mjerenje. Odgovor s Arduino skice na pfodApp odgađa se dok se novo mjerenje ne dovrši (~ 25 mS), tako da se najnovija vrijednost može poslati u ažuriranju.

Arduino skica

Arduino skica, lp_BLE_TempHumidity_R3.ino, poboljšana je verzija primjera skice korištene u 1. dijelu. Skica lp_BLE_TempHumidity_R3.ino zamjenjuje izbornik s crtežom prikazanim gore. Također dodaje podršku senzora lp_Si7021 i nizove podataka za pohranu 10 -minutnih i satnih povijesnih mjerenja.

Glavna komplikacija u skici lp_BLE_TempHumidity_R3.ino je rukovanje slanjem podataka grafikona. Tijekom mjerenja readRHResults () rukuje prikupljanjem rezultata i spremanjem u povijesne nizove. Nizovi su dugački 120, ali kada se podaci pošalju, prvih 30 podatkovnih točaka je u kraćem vremenskom intervalu.

Prilikom slanja 200 neparnih točaka iscrtavanja morate paziti na nekoliko točaka:-

  1. Svaka podatkovna točka dugačka je 25 bajtova u CSV tekstualnom formatu. Dakle, 150 bodova je 3750 bajtova podataka. Klasa lp_BLESerial ima međuspremnik od 1536 bajtova, od kojih je 1024 dovoljno veliko za najveću pfod poruku. Ostalih 512 bajta rezervirano je za slanje podataka. Nakon što povijesni podaci ispune 512 bajtova, slanje daljnjih podataka odgađa se sve dok nema mjesta u međuspremniku.
  2. Kako bi se izbjeglo usporavanje podataka grafikona, ažuriranje glavnog zaslona, podaci se ispisuju samo dok je prikazan zaslon grafikona. Nakon što se korisnik vrati na glavni zaslon, slanje podataka o radnji se pauzira. Slanje podataka o iscrtavanju nastavlja se kada korisnik pritisne gumb nacrta za ponovni prikaz crteža.
  3. Povijesni zapleti počinju od 0 (sada) i idu unatrag u vremenu. Ako nije bilo novih mjerenja od prikaza posljednjeg grafikona, prethodni podaci koji su već preuzeti samo se odmah ponovno prikazuju. Ako postoji novo mjerenje, ono se dodaje prethodnim podacima grafikona.
  4. Kad se monitor prvi put uključi, nema povijesnih očitanja, a 0 se pohranjuje u nizove kao nevažeće očitanje. Kad se prikaže crtež, neispravna očitanja se samo preskaču, što rezultira kraćim iscrtavanjem.

Celzijusa i Fahrenheita

Skica lp_BLE_TempHumidity_R3.ino prikazuje i iscrtava podatke u Celzijusima. Za pretvaranje rezultata u Fahrenheit zamijenite sva pojavljivanja

parser.print (sensor. Temp_RawToFloat (..

s

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

I zamijenite unicode degC simbol u Octal / 342 / 204 / 203 simbolom degF / 342 / 204 / 211

pfodApp će prikazati bilo koji Unicode koji mobitel možete prikazati.

Za više pojedinosti pogledajte Korištenje znakova koji nisu ASCII u Arduinu. Promijenite i postavke MIN_C, MAX_C u termometru.h. Konačno prilagodite granice zacrta prema vašoj želji, npr. promjena | Temp C ~ 32 ~ 8 ~ deg C |

reći

| Temp F ~ 90 ~ 14 ~ deg F |

Korak 4: Mjerenje opskrbne struje

Mjerenje opskrbne struje
Mjerenje opskrbne struje

Korištenjem biblioteke lp_Si7021, čak i mjerenje temperature/vlažnosti svakih 10 sekundi samo doprinosi ~ 1uA prosječnoj opskrbnoj struji, pa je glavni faktor u opskrbnoj struji, a time i vijek trajanja baterije, struja koju koriste BLE oglašavanje i povezivanje i prijenos podataka.

Spojite ploču za temperaturu/vlažnost s programatorom opisanim u 1. dijelu, kao što je prikazano gore.

S isključenim solarnim ćelijama i baterijama, Vin i Gnd su spojeni na Vdd i Gnd programera (žuti i zeleni vodi), a SWCLK i SWDIO na Clk i SIO ploče zaglavlja programatora (plavi i ružičasti vodiči)

Sada možete programirati NanoV2 i mjeriti struju napajanja kako je opisano u 1. dijelu.

Instalirajte biblioteku Si7021 male snage iz ove zip datoteke, lp_Si7021.zip i instalirajte knjižnicu pfodParser te raspakirajte lp_BLE_TempHumidity_R3.zip u svoj Arduino direktorij skica i programirajte ploču Temp/Humditiy s lp_BLE_TempHumidity_R3.ino

Kao što je gore spomenuto, doprinos senzora je <1uA, prosjek, pri najvećoj brzini mjerenja koja se koristi u ovom projektu, pa su BLE oglašavanje i parametri povezivanja odlučujući faktor za trajanje baterije.

BLE parametri oglašavanja i povezivanja koji utječu na trenutnu potrošnju su: -Tx snaga, Interval oglašavanja, Maksimalni i Minimalni intervali povezivanja i Slave latencija.

Napomena: Pomoću gornjih veza postoje dva (2) regulatora u napajanju, jedan na ploči NanoV2 preko Vina i MAX8881 na napajanju programatora. To znači da će izmjerene dovodne struje zbog drugog regulatora biti ~ 5uA veće od stvarnih. Dolje navedene vrijednosti su izmjerene struje minus ovih dodatnih 5uA.

Tx snaga

Tx Učinci napajanja napajaju struju i kada su povezani i prilikom oglašavanja (nisu povezani). Ovaj projekt koristi postavku maksimalne snage (+4) i pruža najbolji raspon i najveću otpornost na buku za najpouzdanije veze. Za promjenu postavke snage možete koristiti metodu lp_BLESerial setTxPower (). Vrijedne vrijednosti su, u povećanju snage, -40, -30, -20, -16, -12, -8, -4, 0 +4. Morate pozvati lp_BLESerial begin () metodU PRIJE nego što pozovete setTxPower (). Pogledajte skicu lp_BLE_TempHumidity_R3.ino.

Možete eksperimentirati sa smanjenjem snage Tx -a, ali kompromis je manji domet i veći broj prekida veze zbog smetnji. U ovom projektu Tx Power je zadan na zadanu vrijednost, +4. Kao što ćete vidjeti u nastavku, čak i uz ovu postavku, vrlo niska struja napajanja i dalje je moguća.

Interval oglašavanja

Za datu Tx snagu, kada nema veze, oglasni interval postavlja prosječnu trenutnu potrošnju. Preporučeni raspon je 500 do 1000mS. Ovdje je korišteno 2000mS. Kompromis je u tome što duži intervali oglašavanja znači da će vaš mobitel sporije pronaći uređaj i uspostaviti vezu. Interno, intervali oglašavanja postavljeni su višestruko od 0,625 mS u rasponu od 20 mS do 10,24 s. Metoda lp_BLESerial setAdvertisingInterval () uzima mS kao argument, radi praktičnosti. Za +4 TxPower i 2000mS oglasni interval trenutna potrošnja je bila ~ 18uA. Za interval oglašavanja od 1000 mS, to je bilo ~ 29uA. Rev 2 je koristio oglasni interval od 2000mS, no to je rezultiralo sporim vezama. Rev 3 je promijenjen u 1000mS oglasni interval kako bi veze bile brže.

Maksimalni i minimalni intervali povezivanja

Nakon što se veza uspostavi, interval povezivanja određuje koliko često mobilni telefon kontaktira uređaj. Lp_BLESerial setConnectionInterval () omogućuje vam postavljanje predloženih max i min, međutim mobitel kontrolira koliki je zapravo interval povezivanja. Radi praktičnosti, argumenti za setConnectionInterval () su u mS, ali interno su intervali povezivanja višestruki od 1,25 mS, u rasponu od 7,5 mS do 4 sek.

Zadana postavka je setConnectionInterval (100, 150) tj. Min 100mS do max 150mS. Povećanjem ovih vrijednosti smanjuje se opskrbna struja dok je spojen, ali kompromis je sporiji prijenos podataka. Svako ažuriranje zaslona traje oko 7 BLE poruka, dok punih 36 sati mjerenja od 10 minuta traje oko 170 BLE poruka. Stoga povećanje intervala povezivanja usporava ažuriranje zaslona i prikaz radnje.

Klasa lp_BLESerial ima međuspremnik za slanje 1536 bajtova i šalje samo jedan blok od 20 bajtova iz ovog međuspremnika, svaki maksimalni interval povezivanja kako bi se spriječilo preplavljivanje BLE veze podacima. Također prilikom slanja podataka grafikona, skica šalje podatke samo dok 512 bajtova čeka na slanje, a zatim odgađa slanje više podataka sve dok se neki podaci ne pošalju. Time se izbjegava poplava međuspremnika za slanje. Ovo prigušivanje slanja čini prijenos podataka na mobitel pouzdanim, ali nije optimiziran za maksimum kroz put.

U ovom su projektu intervali povezivanja ostavljeni kao zadane vrijednosti.

Slave latencija

Kada nema podataka za slanje na mobitel, uređaj može opcionalno zanemariti neke od poruka o povezivanju s mobilnog telefona. Time se štedi Tx napajanje i struja. Postavka Slave Latency je broj poruka o povezivanju koje treba zanemariti. Zadana vrijednost je 0. Metoda lp_BLESerial setSlaveLatency () može se koristiti za promjenu ove postavke.

Zadana Slave Latency od 0 dala je struju napajanja ~ 50uA, zanemarujući ažuriranja zaslona svakih 30 sekundi, ali uključujući i KeepAlive poruke vrlo 5 sekundi. Postavljanje Slaven Latency na 2 dalo je prosječnu priključenu opskrbnu struju od ~ 25uA. Postavka Slaven Latency od 4 dala je ~ 20uA. Čini se da veće postavke nisu smanjile struju napajanja pa je korištena postavka Slave Latency od 4.

Kad je povezan, svakih 30 sekundi pfodApp traži ažuriranje zaslona. Ovo prisiljava mjerenje senzora i šalje podatke nazad radi ažuriranja grafičkog prikaza. Ovo ažuriranje rezultira dodatnim ~ 66uA za 2 sekunde svakih 30 sekundi. To je u prosjeku 4,4 uA tijekom 30 sekundi. Dodajući ovo na 20uA, dobiva se prosječna opskrbna struja priključka od ~ 25uA

Korak 5: Ukupna struja napajanja i vijek trajanja baterije

Koristeći gornje postavke, kako je postavljeno u lp_BLE_TempHumidity_R3.ino, ukupnu struju napajanja pri povezivanju i ažuriranje zaslona svakih 30 sekundi, približno 25uA. Kad nije spojen, iznosi približno 29uA.

Za izračunavanje vijeka trajanja baterije pretpostavlja se neprekidno strujanje od ~ 29uA.

Različite baterije imaju različite kapacitete i naponske karakteristike. Ovdje se razmatraju baterije tipa CR2032, gumene ćelije CR2450 (N), 2 x AAA alkalne, 2 x AAA litijske i LiPo.

Sažetak baterije

Ako koristite Solar Assist, dodajte ovim podacima o trajanju baterije 50% (pod pretpostavkom 8 sati dnevnog svjetla)

Napomena: 22uF LowESR kondenzator (C1), uz ugrađeni NanoV2 22uF kondenzator, pohranjuje struju solarne ćelije, a zatim je napaja za TX strujne impulse. S druge strane, baterija opskrbljuje dio TX struje. Ovaj dodatni 22uF LowESR dodaje oko 10% struji baterije kada solarna ćelija nije opskrbljena, ali i produljuje vijek trajanja baterije kompenzirajući rastući unutarnji otpor baterije kad baterija istekne. Dolje su mjerenja izvedena BEZ dodatnog kondenzatora od 22uF.

CR2032 - 235 mAHr - vijek trajanja baterije 10 mjeseci CR2450 (N) - 650 mAHr (540mAHr) - vijek trajanja baterije 2,3 godine (2 godine) 2 x AAA alkalni - 1250 mAHr - vijek trajanja baterije 3,8 g. 2 x AAA Litij - 1200 mAHr - vijek trajanja baterije 4,7 g. LiPo punjivo - ne preporučuje se zbog velikog samopražnjenja.

CR2032

Ova kovanica ima kapacitet od tipično 235 mAHr (baterija za napajanje), nominalnog napona od 3 V i navedenog napona pražnjenja od 2 V. To podrazumijeva trajanje baterije od 8100 sati ili ~ 0,9 godina. Međutim, unutarnji otpor ćelije raste kako baterija istječe, pa možda neće moći pružiti maksimalne impulse struje Tx. Za smanjenje ovog učinka može se koristiti veći kondenzator za napajanje, ali recimo 10 mjeseci života.

CR2450 (N)

Ova kovanica ima kapacitet od tipično 620 mAHr (540 mAHr za CR2450N), nominalni napon od 3 V i određeni napon pražnjenja od 2 V. To podrazumijeva trajanje baterije od 22, 400 sati ili ~ 2 godine 6 m (18600 sati ~ 2 godine 2 m za CR2450N). Međutim, unutarnji otpor ćelije raste kako baterija istječe, pa možda neće moći pružiti maksimalne impulse struje Tx. Za smanjenje ovog učinka može se koristiti veći opskrbni kondenzator, ali recimo 2 godine 4m (2yr N) vijeka trajanja.

Napomena: Verzija CR2450N ima deblji rub koji sprječava pogrešnu ugradnju u držač CR2450N. Možete umetnuti ćeliju CR2450N i CR2450 u držač CR2450, ali ne možete umetnuti ćeliju CR2450 u držač CR2450N

2 x AAA alkalne stanice

Ove baterije imaju kapacitet od oko 1250 mAHr (Energizer baterija) za vrlo niske struje, nazivnog napona 2x1.5V = 3V i navedenog napona pražnjenja 2x0.8V = 1.6V. No, navedeni napon pražnjenja manji je od radnog napona osjetnika Si7021 (1,9 V) pa se baterija može koristiti samo do ~ 1V svaki. Time se smanjuje kapacitet za oko 10% do 15%, tj. ~ 1000 mAHr.

To podrazumijeva trajanje baterije od 34, 500 sati ili ~ 4 godine. Međutim, unutarnji otpor ćelije raste kako baterija istječe, pa možda neće moći pružiti maksimalne impulse struje Tx. Za smanjenje ovog učinka može se koristiti veći opskrbni kondenzator, ali recimo 3 godine života 10 m. Napomena Alkalne baterije imaju samopražnjenje od 2% do 3% godišnje.

2 x AAA litijske ćelije

Ove baterije imaju kapacitet od oko 1200 mAHr (Energizer baterija), nominalni napon 2x1,7 V = 3,4 V, pri malim strujama i pražnjeni napon 2x1,4 V = 2,4 V. To podrazumijeva trajanje baterije od 41, 400 sati ili 4 godine 8 m.

LiPo punjiva baterija

Ove baterije dolaze u različitim kapacitetima od 100 mAHr do 2000 mAHr, u ravnim formatima i imaju napunjeni napon od 4,2 V i pražnjeni napon> 2,7 V. Međutim, oni imaju visoko samopražnjenje od 2% -3%/mjesečno (tj. 24% do 36% godišnje) pa nisu prikladni za ovu primjenu kao ostale baterije.

Korak 6: Alternative opskrbe - solarna pomoć, samo baterija, samo solarna

Alternative opskrbe - Solar Assist, Only Battery, Solar Only
Alternative opskrbe - Solar Assist, Only Battery, Solar Only
Alternative opskrbe - Solar Assist, Only Battery, Solar Only
Alternative opskrbe - Solar Assist, Only Battery, Solar Only
Alternative opskrbe - Solar Assist, Only Battery, Solar Only
Alternative opskrbe - Solar Assist, Only Battery, Solar Only
Alternative opskrbe - Solar Assist, Only Battery, Solar Only
Alternative opskrbe - Solar Assist, Only Battery, Solar Only

Baterija i solarna pomoć

Gornja konstrukcija koristi napajanje Battery plus Solar Assist. Kada solarni paneli generiraju veći napon od napona baterije, solarne će će stanice napajati monitor, čime se produljuje vijek trajanja baterije. Obično se vijek trajanja baterije može produljiti za još 50%.

Korišteni solarni paneli su mali, 50 mm x 30 mm, jeftini, ~ 0,50 USD i male snage. To su nominalno 5V ploče, ali za generiranje 5V potrebna im je potpuna izravna sunčeva svjetlost. U ovom su projektu dvije ploče povezane u nizu tako da je postavljanje monitora negdje blizu prozora, izvan izravnog sunca, dovoljno za zamjenu energije baterije. Čak i dobro osvijetljena soba ili stolna lampa dovoljna je da solarne ćelije generiraju> 3,3 V pri> 33uA i preuzmu bateriju.

Konstruirana je jednostavna ploča za ispitivanje kako bi se utvrdilo gdje bi se monitor za temperaturu / vlagu mogao postaviti, izvan sunca i još uvijek na solarnu energiju. Kao što možete vidjeti na gornjoj fotografiji, dvije ploče spojene na 100K otpornik proizvode 5,64 V na 100K, odnosno struju od 56uA na 5,64V. Ovo je više nego dovoljno za preuzimanje napajanja monitora iz baterije. Svako očitavanje napona iznad nominalnog napona baterije od 3 V znači da će solarne ćelije napajati monitor umjesto baterije.

Dvije diode u krugu nadzora temperature vlažnosti izoliraju solarne ćelije i baterije jedna od druge i štite ih od povezivanja obrnutim polaritetom. Zener od 10V 1W i otpornik serije 470R štite ugrađeni regulator NanoV2 od prenapona iz dvije solarne ćelije na suncu, osobito ako se umjesto 5V koriste 12V ćelije. U normalnom radu pri <5V, zener od 10V troši samo ~ 1uA.

Samo baterija

Za izvor napajanja samo izostavite R1, D1 i D3 i solarne ćelije. D1 možete zamijeniti i komadom žice ako ne želite zaštitu od obrnutog polariteta.

Samo solarni

Za napajanje monitora samo iz solarnih ćelija, bez baterije, potreban je drugačiji krug napajanja. Problem je u tome što dok će monitor raditi na 29uA, pri uključivanju nRF52 troši ~ 5mA u trajanju od 0,32 sek. Gore prikazani krug (pdf verzija) drži regulator MAX8881 isključenim dok se ulazni kondenzatori, 2 x 1000uF, ne napune do 4,04V. Zatim MAX6457 oslobađa MAX8881 SHDN ulaz za napajanje nRF52 (NanoV2) 2 x 1000uF kondenzatori opskrbljuju potrebnu startnu struju.

To omogućuje uključivanje monitora čim ima dovoljno solarne energije i nastavi raditi na 29uA.

Korak 7: Zaključak

Ovaj vodič predstavio je monitor vlažnosti temperature na baterije/solarno napajanje kao primjer BLE projekta vrlo male snage u Arduinu za čip nRF52832. Dovodne struje od ~ 29uA gdje se postižu podešavanjem parametara veze. To je rezultiralo vijekom trajanja baterije tipa CR2032 od 10 mjeseci. Duže za novčanice i baterije većeg kapaciteta. Dodavanjem dvije jeftine solarne ćelije lako se produžio vijek trajanja baterije za 50% ili više. Jaka sobna svjetlost ili stolna lampa dovoljna su za napajanje monitora iz solarnih ćelija.

Predstavljen je poseban krug napajanja koji omogućuje rad monitora isključivo iz solarnih ćelija niskog kapaciteta.

Besplatni pfodDesigner omogućuje vam oblikovanje izbornika/podizbornika, iscrtavanje datuma/vremena i zapisnika, a zatim generiranje Arduino skice male snage za vas. Ovdje je prilagođeno sučelje kodirano pomoću pfodApp primitiva za crtanje. Povezivanje s pfodApp -om prikazuje korisničko sučelje i ažurira očitanja dok monitor koristi ~ 29uA

Nije potrebno programiranje za Android. pfodApp rješava sve to.

Preporučeni: