Sadržaj:

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

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

Video: Lako BLE vrlo male snage u Arduinu, dio 2 - Monitor temperature/vlažnosti - Rev 3: 7 koraka
Video: Дельта Волги. Каспий. Астраханский заповедник. Птичий рай. Половодье. Нерест рабы. Nature of Russia. 2024, Novembar
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. novembra 2020. - Prva zamjena 2 x AAA baterija od 15. januara 2019., tj. 22 mjeseca za 2xAAA alkalnu Ažuriranje: 7. aprila 2019. - Rev 3 lp_BLE_TempHumidity, dodaje grafikone datuma/vremena, koristeći pfodApp V3.0.362+, i automatsko prigušivanje prilikom slanja podataka

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

Ovaj instruktor, Monitor 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, modulom za programiranje i mjerenjem struje napajanja. Obuhvaća i specijalizirane mjerače vremena i komparatore male snage i otkačene ulaze te upotrebu pfodApp -a za povezivanje i upravljanje nRF52 uređajem.

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

Dio 3 - Zamjena Redbear Nano V2 pokriva upotrebu drugih modula zasnovanih 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 nRF52 ploče u Arduinu.

Ovo uputstvo je praktična primjena Dijela 1 Izgradnja BLE uređaja vrlo male snage olakšanih 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 zadnjih 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 dnevnika. Nije potrebno Android programiranje, pfodApp rješava sve to. Android prikaz i grafikoni u potpunosti su kontrolirani vašom Arduino skicom pa ih možete prilagoditi prema potrebi.

Redbear Nano V2 ploča koristi se za komponentu nRF52832 BLE, a Sparkfun Si7021 ploča za razbijanje se koristi za senzor temperature / vlažnosti. Modificirana biblioteka male snage koristi se sa Si7021. Mali PCB je dizajniran za držanje NanoV2 i napajanje komponenti. Međutim, budući da se ne koriste površinski montirane komponente, ovo 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 jako svetlo u prostoriji ili stolna lampa.

Outline

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 - solarna pomoć, samo baterija, samo solarna

Korak 1: Odabir komponente

Izbor komponenti

Kao što je spomenuto u 1. dijelu-Trik za postizanje rješenja sa zaista 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 sa 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 na dugmastu ćeliju 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 ulaze do 24V napajanja.

Komponenta Si7021

Sam senzor Si7021 crpi tipično <1uA kada se 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 struje napajanja. Očitavanjem od 30 sekundi prosječnoj struji napajanja dodaje se manje od 1uA, pogledajte donje mjere mjere napajanja.

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 Adafruit ploča ima mnogo više komponenti od Sparkfun ploče, pa biste bili skloni odabiru Sparkfun ploče. Gledajući sheme svake ploče pokazuje se 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. Ovo 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 ploču za razbijanje iz Sparkfuna.

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

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

Korak 2: Konstrukcija

Građevinarstvo
Građevinarstvo
Građevinarstvo
Građevinarstvo
Građevinarstvo
Građevinarstvo

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.

Lista delova

Približna cijena po jedinici u prosincu 2018., ~ 62 USD, isključujući isporuku 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. Prelijetanje ~ 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 ~ US $ 1
  • 1 x 470R 0.4W 1% otpornik npr. Digikey BC3274CT-ND ~ 0,25 USD
  • 6 x 6 pinski muški zaglavlje, npr. Sparkfun PRT-00116 ~ 1,5 USD
  • ženski ženski skakač npr. Adafruit ID: 1950 ~ 2 USD
  • 3 mm x 12 mm najlonski vijci, npr. Jaycar HP0140 ~ 3 AUD $
  • 3 mm x 12 mm najlonske matice, npr. Jaycar HP0146 ~ 3 AUD $
  • Scotch Trajna traka za montažu Cat 4010 npr. od 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 $
  • pfodApp ~ 10 USD
  • 1 x 22uF 63V niski ESR kondenzator (opcionalno) npr. Jaycar RE-6342 ~ 0,5 AUD ili Digikey P5190-ND ~ 0,25 USD

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

Obratite pažnju na žicu Gnd veze 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 grešaka

Korak 3: 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
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đe morate instalirati biblioteku lp_So7021 iz ove zip datoteke, a takođe i instalirati biblioteku pfodParser.

Biblioteka senzora niske snage, lp_Si7021

I Adafruit i Sparkfun pružaju biblioteke podrške za pristup senzoru Si7021, međutim obje su biblioteke neprikladne za vrlo nisku potrošnju energije. Obojica koriste kašnjenje (25) u kodu za odgađanje očitavanja senzora tokom mjerenja. Kao što je navedeno u prvom dijelu, kašnjenja su zla. Arduino delay () samo održava mikroprocesor da radi koristeći napajanje dok čeka na istek kašnjenja. Ovo krši prvo pravilo BLE male snage, većinu vremena nemojte ništa raditi. Zamjenska biblioteka lp_Si7021 zamjenjuje sva kašnjenja lp_timerima koji mikroprocesor uspavljuju čekajući da senzor dovrši mjerenje.

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

Korisnički interfejs

Iznad je prikaz glavnog ekrana i zumirani prikaz desetodnevne istorije po satu. Crteži 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 keš za ponovnu upotrebu i ažuriranje. Grafički prikaz izgrađen je od primitiva crtanja. Pogledajte prilagođene Arduino kontrole za Android za vodič o tome kako izgraditi vlastite kontrole. Datoteke termometra, RHGauge i dugmeta 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 vašoj 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); // pozadinska postavka na WHITE ako je izostavljena, tj. start (50, 60); parser.sendRefreshAndVersion (30000); // ponovo zatražiti dwg svakih 30 sekundi. ovo se zanemaruje ako nije postavljena verzija parsera // dodirnite gornje tipke za prisilno ažuriranje ekrana dwgs.touchZone (). cmd ('u'). size (50, 39).send (); dwgs.pushZero (35, 22, 1.5); // premjestiti nulu u centar dwg na 35, 22 i skalirati 1,5 puta rhGauge.draw (); // crtanje kontrole dwgs.popZero (); dwgs.pushZero (18, 33); // premjestite nulu u središte dwg -a na 18, skala 33 je 1 (zadani) termometar.draw (); // crtanje kontrole dwgs.popZero ();

dwgs.pushZero (12,5, 43, 0,7); // pomjeranje nule u središte dwg na 12,5, 43 i skala za 0,7

hrs8PlotButton.draw (); // crtanje kontrole dwgs.popZero (); dwgs.pushZero (37,5, 43, 0,7); // premjestiti nulu u centar dwg na 37,5, 43 i skalirati za 0,7 dana1PlotButton.draw (); // crtanje kontrole dwgs.popZero ();

dwgs.pushZero (12,5, 54, 0,7); // pomjeranje nule u središte dwg na 12,5, 54 i skala za 0,7

days3PlotButton.draw (); // crtanje kontrole dwgs.popZero (); dwgs.pushZero (37,5, 54, 0,7); // premjestiti nulu u centar 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 da lako promijenite veličinu i položaj gumba i mjerača.

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

Na ekranu je definirano pet (5) aktivnih zona dodira. Svako dugme ima jedan definiran u svojoj draw () metodi, pa možete kliknuti na njega da otvorite odgovarajuću plohu, a gornja polovica ekrana je konfigurirana kao treća zona dodira

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

Kada kliknete na ekran iznad dugmadi, naredba 'u' dwg se šalje na vašu skicu kako bi se nametnulo novo mjerenje i ažuriranje ekrana. Obično se prilikom povezivanja ažuriranja 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 (~ 25mS), tako da se najnovija vrijednost može poslati u ažuriranju.

Arduino Sketch

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 meni sa crtežom prikazanim gore. Takođe dodaje podršku senzora lp_Si7021 i nizove podataka za skladištenje 10 -minutnih i satnih istorijskih merenja.

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

Prilikom slanja 200 neparnih točaka grafikona na prikaz morate obratiti pažnju na nekoliko točaka:-

  1. Svaka tačka podataka je dugačka ~ 25 bajtova u CSV tekstualnom formatu. Dakle, 150 bodova je 3750 bajtova podataka. Klasa lp_BLESerial ima bafer od 1536 bajtova, od kojih je 1024 dovoljno veliko za najveću pfod poruku. Ostalih 512 bajtova rezervirano je za slanje podataka. Nakon što su povijesni podaci napunili 512 bajtova, slanje daljnjih podataka se odgađa sve dok nema mjesta u međuspremniku.
  2. Da bi se izbjeglo usporavanje podataka grafikona, usporavanje ažuriranja glavnog ekrana, podaci grafikona se šalju samo dok je prikazan zaslon grafikona. Nakon što se korisnik vrati na glavni ekran, slanje podataka grafikona se pauzira. Slanje podataka zacrta se nastavlja kada korisnik pritisne dugme za iscrtavanje da bi ponovo prikazao grafiku.
  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 ponovo prikazuju. Ako postoji novo mjerenje, ono se dodaje prethodnim grafičkim podacima.
  4. Kada se monitor prvi put uključi, nema povijesnih očitanja i 0 se pohranjuje u nizove kao nevažeće očitanje. Kada se prikaže grafikon, neispravna očitanja se samo preskaču, što rezultira kraćim iscrtavanjem.

Celzijusa i Farenhajta

Skica lp_BLE_TempHumidity_R3.ino prikazuje i iscrtava podatke u Celzijusima. Za pretvaranje rezultata u Fahrenheit zamijenite sve pojave

parser.print (sensor. Temp_RawToFloat (..

sa

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 vaš mobilni telefon može prikazati.

Za više detalja pogledajte Korištenje znakova koji nisu ASCII u Arduinu. Također promijenite postavke MIN_C, MAX_C u termometru.h. Konačno prilagodite granice zacrta prema vašoj želji, npr. promena | Temp C ~ 32 ~ 8 ~ deg C |

reći

| Temp F ~ 90 ~ 14 ~ deg F |

Korak 4: Mjerenje napajanja

Merenje struje napajanja
Merenje struje napajanja

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

Spojite ploču za temperaturu/vlažnost na programator opisan u dijelu 1, kao što je prikazano gore.

Sa isključenim solarnim ćelijama i baterijama, Vin i Gnd su spojeni na Vdd i Gnd programera (žuti i zeleni vodiči), a SWCLK i SWDIO su spojeni 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 Temp/Humditiy ploču 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: Koristeći gornje veze, u napajanju su dva (2) regulatora, jedan na ploči NanoV2 preko Vina i MAX8881 na napajanju programatora. To znači da će izmjerene struje napajanja biti za ~ 5uA veće od stvarnih, zbog drugog regulatora. Dolje navedene vrijednosti su izmjerene struje minus ovih dodatnih 5uA.

Tx Power

Tx Efekti napajanja napajaju struju i kada su povezani i prilikom oglašavanja (nisu povezani). Ovaj projekt koristi postavku maksimalne snage (+4) i pruža najbolji domet i najveću otpornost na buku za najpouzdanije veze. Možete koristiti metodu lp_BLESerial setTxPower () za promjenu postavke napajanja. Važeće 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 više prekida veze zbog smetnji. U ovom projektu Tx Power je zadan na zadanu vrijednost, +4. Kao što ćete vidjeti u nastavku, čak i s ovom postavkom, i dalje je moguća vrlo niska struja napajanja.

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 da duži intervali oglašavanja znači da vaš mobitel sporije pronalazi uređaj i uspostavlja vezu. Interno, intervali oglašavanja su višestruko postavljeni na 0,625 mS u rasponu od 20 mS do 10,24 sek. 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 reklamni interval od 2000mS, ali je to 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 kontaktira uređaj. Lp_BLESerial setConnectionInterval () vam omogućuje da postavite predložene maks. I min., Međutim, mobilni kontrolira koji 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 struja napajanja dok ste povezani, ali kompromis je sporiji prijenos podataka. Svako ažuriranje ekrana uzima oko 7 BLE poruka, dok punih 36 sati mjerenja od 10 minuta traje oko 170 BLE poruka. Tako povećanje intervala povezivanja usporava ažuriranje ekrana 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 mobilni pouzdan, ali nije optimiziran za maksimalni put.

U ovom projektu intervali povezivanja su ostavljeni kao zadane vrijednosti.

Slave latency

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

Zadana Slave Latency od 0 dala je ~ 50uA struje napajanja, zanemarujući ažuriranje ekrana svakih 30 sekundi, ali uključujući i KeepAlive poruke vrlo 5 sekundi. Postavljanje Slave Latency na 2 dalo je prosječnu priključenu struju napajanja od ~ 25uA. Postavka Slave 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.

Kada je povezan, svakih 30 sekundi pfodApp traži ažuriranje ekrana. 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 tokom 30 sekundi. Dodavanjem ovoga na 20uA, dobiva se prosječna struja napajanja od ~ 25uA

Korak 5: Ukupna struja napajanja i vijek trajanja baterije

Koristeći gore navedene postavke, kako je postavljeno u lp_BLE_TempHumidity_R3.ino, ukupna struja napajanja pri povezivanju i ažuriranje ekrana svakih 30 sekundi, približno 25uA. Kad nije spojen, iznosi približno 29uA.

Za izračunavanje vijeka trajanja baterije pretpostavlja se kontinuirano napajanje strujom od ~ 29uA.

Različite baterije imaju različite kapacitete i naponske karakteristike. Ovdje se razmatraju baterije tipa CR2032, dugmaste ć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), pored ugrađenog kondenzatora NanoV2 22uF, pohranjuje struju solarne ćelije, a zatim je napaja za impulse TX struje. S druge strane, baterija napaja dio TX struje. Ovaj dodatni 22uF LowESR dodaje oko 10% struji baterije kada solarna ćelija nije napajanje, ali i produljuje vijek trajanja baterije kompenzirajući rastući unutarnji otpor baterije kada baterija istekne. Donja mjerenja su 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 gLiPo 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 vijek trajanja baterije od 8100 sati ili ~ 0,9 godina. Međutim, unutarnji otpor ćelije raste kako se baterija istroši i stoga 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 vijeka trajanja.

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 se baterija istroši i stoga 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 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 ćelije

Ove baterije imaju kapacitet od oko 1250 mAHr (Energizer baterija) za vrlo niske struje, nominalnog napona 2x1.5V = 3V i specificiranog napona pražnjenja 2x0.8V = 1.6V. No, ovaj specificirani 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%, odnosno ~ 1000 mAHr.

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

2 x AAA litijumske ćelije

Ove baterije imaju kapacitet od oko 1200 mAHr (Energizer baterija), nominalnog napona 2x1.7V = 3.4V, pri malim strujama, i ispražnjenog napona 2x1.4V = 2.4V. 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 - solarna pomoć, samo baterija, samo solarna
Alternative opskrbe - solarna pomoć, samo baterija, samo solarna
Alternative opskrbe - solarna pomoć, samo baterija, samo solarna
Alternative opskrbe - solarna pomoć, samo baterija, samo solarna
Alternative opskrbe - solarna pomoć, samo baterija, samo solarna
Alternative opskrbe - solarna pomoć, samo baterija, samo solarna
Alternative opskrbe - solarna pomoć, samo baterija, samo solarna
Alternative opskrbe - solarna pomoć, samo baterija, samo solarna

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, produžujući vijek trajanja baterije. Obično se vijek trajanja baterije može produžiti 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 paneli, ali im je potrebno potpuno direktno sunčevo svjetlo za generiranje 5V. U ovom projektu dva panela su povezana u seriju tako da je postavljanje monitora negdje blizu prozora, izvan direktnog sunca, dovoljno za zamjenu energije baterije. Čak i dobro osvijetljena prostorija ili stolna lampa dovoljna je da solarne ćelije generiraju> 3,3 V pri> 33uA i preuzmu bateriju.

Konstruisana je jednostavna ploča za testiranje 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 povezane 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 punom suncu, posebno ako se umjesto 12V koriste 12V ćelije. U normalnom radu na <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.

Solar Only

Za napajanje monitora samo iz solarnih ćelija, bez baterije, potreban je drugi krug napajanja. Problem je u tome što dok monitor radi na 29uA, pri uključivanju nRF52 troši ~ 5mA u trajanju od 0,32 sek. Gore prikazano kolo (pdf verzija) drži regulator MAX8881 isključenim sve 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 kondenzatora napajaju potrebnu startnu struju.

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

Korak 7: Zaključak

Ovaj vodič je predstavio baterijski monitor sa solarnom kontrolom temperature kao primjer BLE projekta vrlo male snage u Arduinu za čip nRF52832. Struje napajanja od ~ 29uA gdje se postižu podešavanjem parametara veze. To je rezultiralo vijekom trajanja dugmaste baterije CR2032 preko 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 svetlost ili stolna lampa dovoljna su za napajanje monitora iz solarnih ćelija.

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

Besplatni pfodDesigner vam omogućava da dizajnirate menije/podmenije, iscrtavate podatke o datumu/vremenu i zapisujete podatke, a zatim generirate Arduino skicu 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 Androida. pfodApp rješava sve to.

Preporučuje se: