Innholdsfortegnelse:
- Trinn 1: Valg av komponenter
- Trinn 2: Konstruksjon
- Trinn 3: Kode - Low Power Sensor Library, brukergrensesnitt og Arduino Sketch
- Trinn 4: Måling av forsyningsstrøm
- Trinn 5: Total strøm og batterilevetid
- Trinn 6: Forsyningsalternativer - Solar Assist, Only Battery, Only Solar
- Trinn 7: Konklusjon
Video: Easy Very Low Power BLE i Arduino del 2 - Temperatur/fuktighetsmonitor - Rev 3: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:20
Oppdatering: 23. november 2020 - Første utskifting av 2 x AAA -batterier siden 15. januar 2019, dvs. 22 måneder for 2xAAA AlkalineUpdate: 7. april 2019 - Rev 3 av lp_BLE_TempHumidity, legger til dato/klokkeslett, ved hjelp av pfodApp V3.0.362+, og automatisk struping ved sending data
Oppdatering: 24. mars 2019 - Rev 2 av lp_BLE_TempHumidity, legger til flere plottalternativer og i2c_ClearBus
Denne instruerbare, en svært lav effekt temperatur fuktighetsmonitor, er del 2 av 3.
Del 1 - Bygging av BLE -enheter med svært lav effekt er enkelt med Arduino -deksler som setter opp Arduino for å kode nRF52 -enheter med lav effekt, programmeringsmodulen og måle forsyningsstrømmen. Den dekker også spesialiserte lavtids -tidtakere og komparatorer og debounced innganger og bruk av pfodApp for å koble til og kontrollere nRF52 -enheten.
Del 2 - En fuktighetsmonitor med svært lav effekt, denne, dekker bruk av en Redbear Nano V2 -modul og en Si7021 temperatur- / fuktighetssensor for å bygge et lavt strømbatteri / solmonitor. Det dekker også endring av Si7021 -biblioteket til lav effekt, justering av BLE -enheten for å redusere strømforbruket på <25uA og designe en tilpasset temperatur/fuktighetsvisning for mobilen din.
Del 3 - Et Redbear Nano V2 erstatningsdeksel som bruker andre nRF52 -baserte moduler i stedet for Nano V2. Den dekker valg av forsyningskomponenter, konstruksjon, fjerning av nRF52 -programmeringsbeskyttelse for brikker, bruk av NFC -pinner som vanlig GPIO, og definering av et nytt nRF52 -kort i Arduino.
Denne instruksen er en praktisk anvendelse av del 1 -bygging av BLE -enheter med svært lav effekt, gjort enkelt med Arduino ved å konstruere en BLE -temperatur- og fuktighetsmonitor med svært lav effekt. Monitoren vil fungere i mange år med Coin Cell eller 2 x AAA -batterier, enda lenger med solhjelp. Denne opplæringen dekker justering av BLE -parametrene for lavt strømforbruk og hvordan du kan drive enheten fra batteri ELLER batteri + kun solceller ELLER solcelle.
I tillegg til å vise gjeldende temperatur og fuktighet, lagrer skjermen de siste 36 timene på 10 minutter og de siste 10 dagene med timevisninger. Disse kan kartlegges på Android -mobilen din og verdiene lagres i en loggfil. Ingen Android -programmering er nødvendig, pfodApp håndterer alt dette. Android -skjermen og kartleggingen er fullstendig kontrollert av din Arduino -skisse, slik at du kan tilpasse den etter behov.
Et Redbear Nano V2 -kort brukes til nRF52832 BLE -komponenten, og et Sparkfun Si7021 breakout -kort brukes til temperatur- / fuktighetssensoren. Et modifisert lavt strømbibliotek brukes med Si7021. En liten PCB ble designet for å holde NanoV2 og levere komponenter. Siden det ikke brukes noen overflatemonterte komponenter, kan du like gjerne bygge dette på vero -bord. Tre versjoner av strømforsyning dekkes. i) Battery plus Solar assist, ii) Only Battery, iii) Only Solar. Solar Only -alternativet har ikke batterilagring, og det vil bare kjøre når det er litt lys. Et sterkt romlys eller bordlampe er tilstrekkelig.
Oversikt
Dette prosjektet har 4 relative uavhengige deler:-
- Komponentvalg og konstruksjon
- Kode - Low Power Sensor Library, brukergrensesnitt og Arduino Sketch
- Måling av strøm og batterilevetid
- Forsyningsalternativer - Solar Assist, Only Battery, Only Solar
Trinn 1: Valg av komponenter
Komponentvalg
Som nevnt i del 1-Trikset for å få en løsning med veldig lav effekt er å gjøre ingenting mesteparten av tiden, minimere strømmen gjennom eksterne pull-up/pull-down motstander på innganger og ikke ha noen ekstra komponenter. Dette prosjektet vil bruke hvert av disse triksene for å få en løsning med lav effekt.
Komponenten nRF52832
NRF52832 -brikken kan kjøres med en strømforsyning på mellom 1,7V og 3,6V (absolutt maks spenning 3,9V). Dette betyr at du kan drive brikken direkte fra en myntcelle eller 2 x AAA -batterier. Imidlertid er det klokt å legge til en spenningsregulator for å beskytte brikken mot overspenning. Denne ekstra komponenten kommer med en strømkostnad, men når det gjelder NanoV2-kortet, bruker den innebygde regulatoren, TLV704, mindre enn 5,5uA maks, vanligvis bare 3,4uA. For dette lille ekstra strømforbruket får du beskyttelse for opptil 24V forsyningsinnganger.
Komponenten Si7021
Selve Si7021 -sensoren trekker typisk <1uA når den ikke tar en måling, dvs. i standby, og opptil 4mA når dataene overføres via I2C. Siden vi ikke måler kontinuerlig, er 4mA ikke en vesentlig del av den gjennomsnittlige forsyningsstrømmen. Å ta en avlesning på veldig 30 sekunder legger til mindre enn 1uA til den gjennomsnittlige forsyningsstrømmen, se målingene av forsyningsstrømmen nedenfor.
Det er to lett tilgjengelige Si7021 breakout boards. En fra Adafruit og en fra Sparkfun. Et raskt blikk på de to brettene vil fortelle deg at Adafruit -brettet har mange flere komponenter enn Sparkfun -brettet, så du ville være tilbøyelig til å velge Sparkfun -brettet. Når vi ser på skjemaene for hvert brett, viser det at Sparkfun-kortet bare er bare sensoren og to 4k7 pullup-resisotorer, mens Adafruit-kortet har en innebygd, MIC5225, regulator som vanligvis trekker 29uA hele tiden. Dette er signifikant når overstrømmen for resten av kretsen er <30uA. Siden vi allerede har en regulator for nRF52832 -brikken, er denne ekstra komponenten ikke nødvendig, og Si7021 kan drives fra den 3,3V -forsyningen. Så dette prosjektet vil bruke Si7021 breakout board fra Sparkfun.
minimere strømmen gjennom eksterne pull-up/pull-down motstander på innganger
4K7 I2C pullup motstander har ikke særlig høy verdi og vil trekke 0,7mA når de trekkes lavt. Dette ville være et problem hvis de var på en bryterinngang som var jordet i lange perioder. I dette prosjektet minimeres imidlertid strømmen gjennom disse motstandene ved bare å bruke I2C -grensesnittet sjelden og i bare kort tid. Mesteparten av tiden er I2C-linjene ikke i bruk og er høy / tri-tilstand, så ingen strøm strømmer gjennom disse motstandene.
Trinn 2: Konstruksjon
Prosjektet er konstruert på en liten PCB, men siden det ikke er noen SMD -komponenter, kan det like gjerne bygges ved hjelp av vero board. PCB -en ble produsert av pcbcart.com fra disse Gerber -filene, TempHumiditySensor_R1.zip PCB -en er generell for å brukes til andre BLE -prosjekter.
Skjematikken er vist ovenfor. Her er en pdf -versjon.
Deleliste
Omtrentlig kostnad per enhet per desember 2018, ~ US $ 62, eksklusive frakt og programmereren fra del 1
- Redbear NanoV2 ~ 17 dollar
- Sparkfun Si7021 breakout board ~ US $ 8
- 2 x 53mm x 30mm 0,15W 5V solceller f.eks. Overfly ~ 1,10 dollar
- 1 x PCB TempHumiditySensor_R1.zip ~ US $ 25 for 5 av www.pcbcart.com ELLER Vero -brett (strip kobber) f.eks. Jaycar HP9540 ~ $ 5
- 2 x 1N5819 schottky -dioder f.eks. Digikey 1N5819FSCT-ND ~ 1 dollar
- 1 x 470R 0,4W 1% motstand f.eks. Digikey BC3274CT-ND ~ 0,25 dollar
- 6 x 6 -pins hanhodestifter f.eks. Sparkfun PRT-00116 ~ 1,5 dollar
- kvinne til hunnhopper f.eks. Adafruit ID: 1950 ~ 2 dollar
- 3 mm x 12 mm nylonskruer, f.eks. Jaycar HP0140 ~ AUD $ 3
- 3 mm x 12 mm nylonmuttere, f.eks. Jaycar HP0146 ~ AUD $ 3
- Scotch Permanent Monteringstape Cat 4010 f.eks. fra Amazon ~ 6,6 dollar
- AAA x 2 batteriholder, f.eks. Sparkfun PRT-14219 ~ 1,5 dollar
- 2 x AAA 750mA alkaliske batterier, f.eks. Sparkfun PRT-09274 ~ 1,0 $ Disse batteriene skal vare> 2 år. Energizer alkaliske batterier har høyere kapasitet
- Plastboks (ABS) 83 mm x 54 mm x 31 mm, f.eks. Jaycar HB6005 ~ AUD $ 3
- pfodApp ~ 10 dollar
- 1 x 22uF 63V lav ESR kondensator (valgfritt) f.eks. Jaycar RE-6342 ~ 0,5 $ AUD eller Digikey P5190-ND ~ 0,25 US $
Konstruksjonen er rett frem. Batteriholderen og solcellene er festet til plastboksen med kraftig dobbeltsidig tape.
Legg merke til Gnd -koblingskabelen fra CLK til GND i den ferdige delen. Dette er installert ETTER programmering for å forhindre at støy på CLK -inngangen utløser nRF52 -brikken til en høystrøms feilsøkingsmodus
Trinn 3: Kode - Low Power Sensor Library, brukergrensesnitt og Arduino Sketch
Last ned zip -koden, lp_BLE_TempHumidity_R3.zip, og pakk den ut til Arduino Sketches -katalogen. Du må også installere lp_So7021 -biblioteket fra denne zip -filen og også installere pfodParser -biblioteket.
Low Power Sensor Library, lp_Si7021
Både Adafruit og Sparkfun gir støttebiblioteker for å få tilgang til Si7021 -sensoren, men begge disse bibliotekene er uegnet for svært lav strømbruk. Begge bruker en forsinkelse (25) i koden til å forsinke lesing av sensoren mens den måler. Som nevnt i Del 1 er forsinkelser onde. Arduino-forsinkelsen () holder bare mikroprosessoren i gang med strøm mens den venter på at forsinkelsen skal ta ut. Dette bryter den første regelen om lav effekt BLE, gjør ingenting mesteparten av tiden. Lp_Si7021-biblioteket erstatter alle forsinkelser med lp_timere som setter mikroprosessoren i dvale mens den venter på at sensoren skal fullføre målingen.
Hvor stor forskjell gjør biblioteket lp_Si7021? Ved å bruke det originale SparkFun Si7021 -støttebiblioteket og ta en lesning i sekundet uten serielle utskrifter, trekker det ~ 1,2mA gjennomsnitt. Ved å erstatte Sparkfun -biblioteket med lp_Si7021 -biblioteket reduseres gjennomsnittlig strøm til ~ 10uA, dvs. 100 ganger mindre. I dette prosjektet er den raskeste måleraten en gang hvert 30. sekund når mobilen er tilkoblet, noe som resulterer i en gjennomsnittlig sensorstrøm på mindre enn 1uA. Når det ikke er noen BLE -tilkobling, er målehastigheten en gang hvert tiende minutt, og den gjennomsnittlige sensortilførselsstrømmen er ubetydelig.
Brukergrensesnitt
Over er hovedskjermen og en zoomet visning av timers historikk i 10 dager. Plottene kan zoomer og panoreres i begge retninger, ved hjelp av to fingre.
Brukergrensesnittet er kodet i Arduino -skissen og deretter sendt til pfodApp på den første tilkoblingen, hvor blir det bufret for gjentatt bruk og oppdateringer. Det grafiske displayet er bygget på tegning av primitiver. Se Tilpassede Arduino -kontroller for Android for en opplæring i hvordan du bygger dine egne kontroller. Termometer-, RHGauge- og Button -filene inneholder tegnekommandoer for disse elementene.
Merk: Ingen hvis denne skjermen er innebygd i pfodApp. Hele skjermen er fullstendig kontrollert av koden i din Arduino -skisse
SendDrawing_z () -metoden i lp_BLE_TempHumidity_R3.ino -skissen definerer brukergrensesnittet.
void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // bakgrunn som standard for WHITE hvis den utelates, dvs. start (50, 60); parser.sendRefreshAndVersion (30000); // forespør dwg på nytt hvert 30. sekund. dette ignoreres hvis ingen parserversjon er satt // trykk på knappene over for å tvinge frem oppdateringer dwgs.touchZone (). cmd ('u'). størrelse (50, 39).send (); dwgs.pushZero (35, 22, 1.5); // flytt null til sentrum av dwg til 35, 22 og skala 1,5 ganger rhGauge.draw (); // tegne kontrollen dwgs.popZero (); dwgs.pushZero (18, 33); // flytt null til sentrum av dwg til 18, 33 skala er 1 (standard) termometer. tegning (); // tegne kontrollen dwgs.popZero ();
dwgs.pushZero (12,5, 43, 0,7); // flytt null til sentrum av dwg til 12,5, 43 og skala med 0,7
hrs8PlotButton.draw (); // tegne kontrollen dwgs.popZero (); dwgs.pushZero (37,5, 43, 0,7); // flytt null til sentrum av dwg til 37,5, 43 og skala med 0,7 dager1PlotButton.draw (); // tegne kontrollen dwgs.popZero ();
dwgs.pushZero (12,5, 54, 0,7); // flytt null til sentrum av dwg til 12,5, 54 og skala med 0,7
days3PlotButton.draw (); // tegne kontrollen dwgs.popZero (); dwgs.pushZero (37,5, 54, 0,7); // flytt null til sentrum av dwg til 37,5, 54 og skala med 0,7 dager10PlotButton.draw (); // tegne kontrollen dwgs.popZero (); dwgs.end (); }
PushZero -kommandoene endrer opprinnelse og skalering for å tegne den neste komponenten. Dette lar deg enkelt endre størrelsen og plasseringen av knappene og målerne.
På den første tilkoblingen tar det første displayet 5 eller 6 sekunder å laste ned ~ 800 byte som definerer displayet. pfodApp bufrer skjermen, så fremtidige oppdateringer trenger bare å sende endringene, måleposisjonene og avlesningene. Disse oppdateringene tar bare et par sekunder å sende 128 byte trenger for å oppdatere skjermen.
Det er fem (5) aktive berøringssoner definert i displayet. Hver knapp har en definert i trekningsmetoden (), slik at du kan klikke på den for å åpne det respektive plottet, og den øvre halvdelen av skjermen er konfigurert som den tredje berøringssonen
dwgs.touchZone (). cmd ('u'). størrelse (50, 39). send ();
Når du klikker på skjermen over knappene, blir kommandoen 'u' dwg sendt til skissen din for å tvinge fram en ny måling og skjermoppdatering. Normalt når oppdateringer skjer, skjer det bare hvert 30. sekund. Hvert klikk eller oppdatering av tegningen tvinger til en ny måling. Svaret fra Arduino -skissen til pfodApp er forsinket til den nye målingen er fullført (~ 25mS), slik at den siste verdien kan sendes i oppdateringen.
Arduino skisse
Arduino Sketch, lp_BLE_TempHumidity_R3.ino, er en forbedret versjon av eksempelskissen som ble brukt i del 1. Lp_BLE_TempHumidity_R3.ino -skissen erstatter menyen med tegningen vist ovenfor. Den legger også til lp_Si7021 sensorstøtte og dataarrays for å lagre de 10 minutter og timemessige historiske målingene.
Hovedkomplikasjonen i lp_BLE_TempHumidity_R3.ino -skissen er å håndtere sending av plottdataene. Når målingene gjøres, håndterer readRHResults () innsamling av resultatene og lagring av dem i de historiske matrisene. Matrisene er 120 lange, men når dataene sendes, er de første 30 datapunktene for med et finere tidsintervall.
Det er noen få punkter du må ta vare på når du sender de 200 merkelige plottpunktene til visning:-
- Hvert datapunkt er ~ 25 byte langt, i CSV -tekstformat. Så 150 poeng er 3750 byte med data. Klassen lp_BLESerial har en buffer på 1536 byte, hvorav 1024 er stor nok til den største pfod -meldingen. De andre 512 byte er reservert for å sende dataene. Når de historiske dataene har fylt opp 512 byte, blir utsendelse av ytterligere data forsinket til det er plass i bufferen.
- For å unngå at plottdata bremser hovedskjermoppdateringene, sendes plottdataene bare mens plottskjermen vises. Når brukeren bytter tilbake til hovedskjermen, sendes plottdata på pause. Sending av plottdata gjenopptas når brukeren klikker på plottknappen for å vise plottet igjen.
- De historiske tomtene starter fra 0 (nå) og går bakover i tid. Hvis det ikke har vært noen ny måling siden det siste plottet ble vist, vises de tidligere dataene som allerede ble lastet ned, umiddelbart igjen. Hvis det er en ny måling, blir den lagt til de forrige plottdataene.
- Når skjermen først slås på, er det ingen historiske målinger og 0 lagres i matrisene som en ugyldig avlesning. Når plottet vises, hoppes bare ugyldige avlesninger, noe som resulterer i et kortere plot.
Celsius og Fahrenheit
Skissen lp_BLE_TempHumidity_R3.ino viser og plotter dataene i Celsius. For å konvertere resultatene til Fahrenheit erstatt alle forekomster av
parser.print (sensor. Temp_RawToFloat (..
med
parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…
Og bytt ut unicode degC -symbolet i Octal / 342 / 204 / 203 med degF -symbolet / 342 / 204 / 211
pfodApp vil vise hvilken Unicode du mobil kan vise.
Se Bruke ikke-ASCII-tegn i Arduino for mer informasjon. Endre også MIN_C, MAX_C innstillingene i Termometer. H. Til slutt justerer du tomtegrensene slik du ønsker det f.eks. endre | Temp C ~ 32 ~ 8 ~ deg C |
å si
| Temp F ~ 90 ~ 14 ~ deg F |
Trinn 4: Måling av forsyningsstrøm
Ved å bruke lp_Si7021 -biblioteket, selv å ta en temperatur/fuktighetsmåling hvert 10. sekund, bidrar bare ~ 1uA til den gjennomsnittlige forsyningsstrømmen, så hovedfaktoren i forsyningsstrømmen og dermed batterilevetiden er strømmen som brukes av BLE -reklame og tilkobling og dataoverføring..
Koble temperatur/fuktighetskortet til programmereren beskrevet i del 1 som vist ovenfor.
Når solcellene og batteriene er frakoblet, er Vin og Gnd koblet til programmererens Vdd og Gnd (de gule og grønne ledningene) og SWCLK og SWDIO kobles til Clk og SIO på programmeringshovedkortet (de blå og rosa ledningene)
Du kan nå programmere NanoV2 og måle forsyningsstrømmen som beskrevet i del 1.
Installer Si7021 -biblioteket med lav effekt fra denne zip -filen, lp_Si7021.zip og installer pfodParser -biblioteket og pakk ut lp_BLE_TempHumidity_R3.zip til Arduino sketches -katalogen, og programmer Temp/Humditiy -kortet med lp_BLE_TempHumidity_R3.ino
Som nevnt ovenfor er sensorens bidrag <1uA, gjennomsnittlig, med den høyeste målehastigheten som brukes i dette prosjektet, så BLE -annonsering og tilkoblingsparametere er den avgjørende faktoren for batterilevetid.
BLE-annonserings- og tilkoblingsparametrene som påvirker strømforbruket er: -Tx Power, Advertising Interval, Max and Min Connection Intervals og Slave Latency.
Merk: Ved å bruke tilkoblingene ovenfor er det to (2) regulatorer i forsyningen, en på NanoV2 -kortet via Vin og MAX8881 på programmereren. Dette betyr at de målte forsyningsstrømmene vil være ~ 5uA høyere enn den faktiske, på grunn av den andre regulatoren. Verdiene som er angitt nedenfor er de målte strømmene minus denne ekstra 5uA.
Tx strøm
Tx Strømeffekter leverer strøm både når den er tilkoblet og når du annonserer (ikke tilkoblet). Dette prosjektet bruker maksimal effektinnstilling (+4) og gir det beste området og størst støyimmunitet for de mest pålitelige tilkoblingene. Du kan bruke metoden lp_BLESerial setTxPower () til å endre strøminnstillingen. Gyldige verdier er, i økende effekt, -40, -30, -20, -16, -12, -8, -4, 0 +4. Du må kalle metoden lp_BLESeriell start () FØR du ringer setTxPower (). Se skissen lp_BLE_TempHumidity_R3.ino.
Du kan eksperimentere med å redusere Tx Power, men kompromisset er kortere rekkevidde og flere tilkoblingsbrudd på grunn av forstyrrelser. I dette prosjektet er Tx Power satt til standard, +4. Som du vil se nedenfor, selv med denne innstillingen, er det fortsatt svært lav strømforsyning.
Reklameintervall
For en gitt Tx -effekt, når det ikke er noen forbindelse, angir reklameintervallet gjennomsnittlig strømforbruk. Det anbefalte området er 500 til 1000mS. Her ble 2000mS brukt. Kompromisset er at lengre reklameintervaller betyr at det er tregere for mobilen din å finne enheten og opprette en tilkobling. Internt settes reklameintervaller i multipler på 0,625mS i området 20mS til 10,24sek. Metoden lp_BLESerial setAdvertisingInterval () tar mS som argument, for enkelhets skyld. For +4 TxPower og 2000mS reklameintervall var det nåværende forbruket ~ 18uA. For reklameintervall på 1000mS var det ~ 29uA. Rev 2 brukte reklameintervall på 2000mS, men dette resulterte i treg tilkobling. Rev 3 endret til 1000mS reklameintervall for å gjøre tilkoblinger raskere.
Maks og min tilkoblingsintervaller
Når en tilkobling er etablert, bestemmer tilkoblingsintervallet hvor ofte mobilen kontakter enheten. Med lp_BLESerial setConnectionInterval () kan du angi foreslått maks og min, men mobilen styrer hva tilkoblingsintervallet faktisk er. For enkelhets skyld er argumentene til setConnectionInterval () i mS, men internt er tilkoblingsintervallene i multiple på 1,25mS, i området 7,5mS til 4sec.
Standardinnstillingen er setConnectionInterval (100, 150) dvs. min 100mS til maks 150mS. Å øke disse verdiene reduserer forsyningsstrømmen mens du er tilkoblet, men kompromisset er langsommere overføring av data. Hver oppdatering av skjermen tar omtrent 7 BLE -meldinger, mens hele 36 timer på 10 min målinger tar omtrent 170 BLE -meldinger. Så å øke tilkoblingsintervallene bremser oppdateringene på skjermen og plottet vises.
Klassen lp_BLESerial har en senderbuffer på 1536 byte og sender bare en blokk med 20 byte fra denne bufferen, hvert maksimale tilkoblingsintervall for å forhindre oversvømmelse av BLE -lenken med data. Også når du sender plottdata, sender skissen bare data til 512 byte venter på å bli sendt, og forsinker deretter sending av mer data til noen data er sendt. Dette unngår oversvømmelse av sendebuffer. Denne strupingen av sendingene gjør dataoverføringen til mobilen pålitelig, men den er ikke optimalisert for maksimal gjennomføring.
I dette prosjektet ble tilkoblingsintervallene igjen som standardverdiene.
Slave Latency
Når det ikke er data å sende til mobilen, kan enheten eventuelt ignorere noen av tilkoblingsmeldingene fra mobilen. Dette sparer strøm og strøm. Innstillingen Slave Latency er antallet tilkoblingsmeldinger som skal ignoreres. Standarden er 0. Metoden lp_BLESerial setSlaveLatency () kan brukes til å endre denne innstillingen.
Standard Slave Latency på 0 ga ~ 50uA forsyningsstrøm, ignorerer skjermoppdateringene hvert 30. sekund, men inkluderer keepAlive -meldingene veldig 5 sekunder. Å sette Slave Latency til 2 ga en gjennomsnittlig tilkoblet strøm på ~ 25uA. En innstilling for slaveforsinkelse på 4 ga ~ 20uA. Høyere innstillinger syntes ikke å redusere forsyningsstrømmen, så en Slave Latency -innstilling på 4 ble brukt.
Når den er tilkoblet, ber hvert 30. sekund pfodApp om en skjermoppdatering. Dette tvinger til en sensormåling og sender tilbake data for å oppdatere det grafiske displayet. Denne oppdateringen resulterer i en ekstra ~ 66uA i 2 sekunder hver 30 sek. Det er et gjennomsnitt på 4,4uA over de 30 sekundene. Å legge dette til 20uA, gir en gjennomsnittlig tilkoblingsforsyningsstrøm på ~ 25uA
Trinn 5: Total strøm og batterilevetid
Ved å bruke innstillingene ovenfor, som angitt i lp_BLE_TempHumidity_R3.ino, total forsyningsstrøm ved tilkobling og oppdatering av skjermen hvert 30. sekund, omtrent 25uA. Når den ikke er tilkoblet, er den omtrent 29uA.
For beregning av batterilevetid antas en kontinuerlig strømforbruk på ~ 29uA.
Ulike batterier har forskjellig kapasitet og spenningsegenskaper. Batteriene som vurderes her er CR2032 myntcelle, CR2450 (N) myntcelle, 2 x AAA Alkaline, 2 x AAA Litium og LiPo.
Batterisammendrag
Hvis du bruker Solar Assist, må du legge til 50% til disse batterilevetidstallene (forutsatt 8 timer om dagen lys)
Merk: 22uF LowESR -kondensatoren (C1), i tillegg til den innebygde NanoV2 22uF -kondensatoren, lagrer solcellestrømmen og leverer den deretter for TX -strømpulsene. Ellers leverer batteriet noe av TX -strømmen. Denne ekstra 22uF LowESR gir omtrent 10% til batteristrømmen når solcellen ikke er forsyning, men forlenger også batterilevetiden ved å kompensere for den økende batterimotstanden når batteriet når slutten av levetiden. Målingene nedenfor ble tatt UTEN den ekstra 22uF kondensatoren.
CR2032 - 235mAHr - batterilevetid 10 månederCR2450 (N) - 650mAHr (540mAHr) - batterilevetid 2,3 år (2yrs) 2 x AAA Alkalisk - 1250mAHr - batterilevetid 3,8.yrs2 x AAA Litium - 1200mAHr - batterilevetid 4,7 år LiPo oppladbar - anbefales ikke på grunn av høy selvutladning.
CR2032
Denne myntcellen har en kapasitet på vanligvis 235mAHr (Energizer Battery), en nominell spenning på 3V og en spesifisert utladningsspenning på 2V. Dette innebærer en batterilevetid på 8100 timer eller ~ 0,9 år. Imidlertid øker den interne cellemotstanden etter hvert som batteriet når slutten av levetiden, og det er derfor ikke mulig å gi topp Tx -strømpulser. En større forsyningskondensator kan brukes for å redusere denne effekten, men si 10 måneders levetid.
CR2450 (N)
Denne myntcellen har en kapasitet på vanligvis 620mAHr (540mAHr for CR2450N), en nominell spenning på 3V og en spesifisert utladningsspenning på 2V. Dette innebærer en batterilevetid på 22, 400 timer eller ~ 2 år 6 m (18600 timer ~ 2 år 2 meter for CR2450N). Imidlertid øker den interne cellemotstanden etter hvert som batteriet når slutten av levetiden, og det er derfor ikke mulig å gi topp -Tx -strømpulser. En større forsyningskondensator kan brukes for å redusere denne effekten, men si 2 år 4 m (2 år N) levetid.
Merk: CR2450N -versjonen har en tykkere leppe som forhindrer feil installasjon i en CR2450N -holder. Du kan sette inn en CR2450N- og CR2450 -celle i en CR2450 -holder, men du kan ikke sette inn en CR2450 -celle i en CR2450N -holder
2 x AAA alkaliske celler
Disse batteriene har en kapasitet på ca 1250mAHr (Energizer Battery) for svært lave strømmer, en nominell spenning på 2x1,5V = 3V og en spesifisert utladningsspenning på 2x0,8V = 1,6V. Men denne spesifiserte utladningsspenningen er mindre enn driftsspenningen til Si7021 -sensoren (1,9V), så batteriet kan bare brukes ned til ~ 1V hver. Dette reduserer kapasiteten med omtrent 10% til 15%, dvs. ~ 1000mAHr.
Dette innebærer en batterilevetid på 34, 500 timer eller ~ 4 år. Imidlertid øker den interne cellemotstanden etter hvert som batteriet når slutten av levetiden, og det er derfor ikke mulig å gi topp Tx -strømpulser. En større forsyningskondensator kan brukes for å redusere denne effekten, men si 3yr 10m levetid. Merk Alkaliske batterier har en selvutlading på 2% til 3% per år.
2 x AAA litiumceller
Disse batteriene har en kapasitet på ca 1200mAHr (Energizer Battery), en nominell spenning på 2x1.7V = 3.4V, ved lave strømmer, og en utladet spenning på 2x1.4V = 2.4V. Dette innebærer en batterilevetid på 41, 400 timer eller 4 år 8 minutter.
LiPo oppladbart batteri
Disse batteriene kommer i forskjellige kapasiteter fra 100mAHr til 2000mAHr, i flate formater, og har en ladet spenning på 4,2V og en utladet spenning på> 2,7V. Imidlertid har de en høy selvutladning på 2% -3%/måned (dvs. 24% til 36% per år) og er derfor ikke like egnet for denne applikasjonen som de andre batteriene.
Trinn 6: Forsyningsalternativer - Solar Assist, Only Battery, Only Solar
Batteri pluss Solar Assist
Konstruksjonen ovenfor bruker forsyningen Battery plus Solar Assist. Når solcellepanelene genererer mer spenning enn batterispenningen, vil solcellene drive monitoren, noe som forlenger batterilevetiden. Vanligvis kan batterilevetiden forlenges med ytterligere 50%.
Solcellepanelene som brukes er små, 50 mm x 30 mm, billige, ~ 0,50 dollar og lav effekt. De er nominelt 5V paneler, men trenger fullt direkte sterkt sollys for å generere 5V. I dette prosjektet er to paneler koblet i serie, slik at det er tilstrekkelig å plassere skjermen noen steder i nærheten av et vindu, i direkte sollys, for å erstatte batteristrømmen. Selv godt opplyst rom, eller en bordlampe, er nok til at solcellene genererer> 3.3V ved> 33uA og tar over fra batteriet.
Et enkelt testpanel ble konstruert for å avgjøre hvor temperatur / fuktighetsmonitoren kunne plasseres, ut av solen og fremdeles være soldrevet. Som du kan se fra bildet ovenfor, produserer de to panelene som er koblet til en 100K motstand 5.64V over 100K, dvs. 56uA strøm ved 5.64V. Dette er mer enn tilstrekkelig overtakelse av å drive skjermen fra batteriet. Enhver spenningsavlesning over den nominelle batterispenningen på 3V betyr at solcellene vil drive monitoren i stedet for batteriet.
De to dioder i temperaturfuktighetsovervåkningskretsen isolerer solcellene og batteriene fra hverandre og beskytter mot å koble dem i motsatt polaritet. 10V 1W zener og motstand i 470R-serien beskytter NanoV2s innebygde regulator mot overspenning fra to solceller i full sol, spesielt hvis 12V celler tilfeldigvis brukes i stedet for 5V. Ved normal drift ved <5V trekker 10V zener bare ~ 1uA.
Bare batteri
For bare batteriforsyning, bare utelat R1, D1 og D3 og solcellene. Du kan også erstatte D1 med et stykke ledning hvis du ikke vil ha omvendt polaritetsbeskyttelse.
Bare solar
Strømforsyningen til monitoren bare fra solceller, uten batteri, krever en annen strømforsyningskrets. Problemet er at mens skjermen vil fungere på 29uA, vil nRF52 trekke ~ 5mA i 0,32 sek ved oppstart. Kretsen vist ovenfor (pdf -versjon) holder MAX8881 -regulatoren av til inngangskondensatorene, 2 x 1000uF, lades opp til 4,04V. Deretter frigjør MAX6457 MAX8881 SHDN -inngangen for å slå på nRF52 (NanoV2) De 2 x 1000uF kondensatorene gir den nødvendige oppstartstrømmen.
Dette lar monitoren starte opp så snart det er nok solenergi, slik at den holder seg på 29uA.
Trinn 7: Konklusjon
Denne opplæringen har presentert en batteri-/solcelledrevet temperaturfuktighetsmonitor som et eksempel på BLE -prosjekt med svært lav effekt i Arduino for nRF52832 -brikken. Tilførselsstrømmer på ~ 29uA oppnås ved å stille inn tilkoblingsparameterne. Dette resulterte i en myntcellebatterilevetid på CR2032 som oversteg 10 måneder. Lengre for myntceller og batterier med høyere kapasitet. Ved å legge til to billige solceller forlenges batterilevetiden enkelt med 50% eller mer. Et sterkt romlys eller en bordlampe er tilstrekkelig for å drive skjermen fra solcellene.
En spesiell strømkrets ble presentert for å la monitoren kjøres rent fra solceller med lav kapasitet.
Den gratis pfodDesigner lar deg designe menyer/undermenyer, plotte mot dato/tid og logge data og deretter generere Arduino-skissen med lav effekt for deg. Her ble et tilpasset grensesnitt kodet ved hjelp av pfodApp -tegningsprimitiver. Koble til pfodApp viser brukergrensesnittet og oppdaterer avlesningene mens skjermen bruker ~ 29uA
Ingen Android -programmering er nødvendig. pfodApp håndterer alt dette.
Anbefalt:
Trådløs dørsensor - Ultra Low Power: 5 trinn
Trådløs dørsensor - Ultra Low Power: Nok en dørsensor !! Motiveringen for meg for å lage denne sensoren var at mange jeg så på internett hadde den ene eller den andre begrensningen. Noen av målene med sensoren for meg er: 1. Sensoren skal være veldig rask - helst mindre enn
A Juke Box for the Very Young Aka Raspi-Music-Box: 5 trinn
A Juke Box for the Very Young … Aka Raspi-Music-Box: Inspirert av den instruerbare " Raspberry-Pi-baserte-RFID-Music-Robot " Jeg beskrev en musikkspiller som ROALDH bygde for 3-åringen, og bestemte meg for å bygge en jukeboks til mine enda yngre barn. Det er i utgangspunktet en eske med 16 knapper og en Raspi 2 i
Arduino Ultra Low Power værstasjon: 5 trinn
Arduino Ultra Low Power værstasjon: Denne guiden viser deg hvordan du bygger en vær med svært lav effekt ved hjelp av en arduino nano, en bme 280 og rf433 radiomodul, som vil vare omtrent 1,5 til 2 år på 2 LiPo 18650 -er og evnen å utvide den og legge til flere sensorer og en solcelleanlegg
Enkel Bridge to BLE (Bluetooth Low Energy) Bridge: 9 trinn (med bilder)
Enkel WiFi til BLE (Bluetooth Low Energy) Bridge: Oppdatering 4. desember 2017 - reviderte Feather nRF52 -skisser og feilsøkingstips. Lagt til bilder av bro montert i eske. Dette enkle prosjektet gir WiFi -tilgang til alle Bluetooth Low Energy (BLE) moduler som implementerer Nordic's UART med TX Notify. Det
UDuino: Very Low Cost Arduino Compatible Development Board: 7 trinn (med bilder)
UDuino: Very Low Cost Arduino Compatible Development Board: Arduino -plater er flotte for prototyping. De blir imidlertid ganske dyre når du har flere samtidige prosjekter eller trenger mange kontrollerkort for et større prosjekt. Det er noen gode, billigere alternativer (Boarduino, Freeduino), men