Indholdsfortegnelse:
- Trin 1: Valg af komponenter
- Trin 2: Konstruktion
- Trin 3: Kode - Low Power Sensor Library, brugergrænseflade og Arduino Sketch
- Trin 4: Måling af forsyningsstrømmen
- Trin 5: Total forsyningsstrøm og batterilevetid
- Trin 6: Forsyningsalternativer - Solar Assist, Only Battery, Only Solar
- Trin 7: Konklusion
Video: Let meget lav effekt BLE i Arduino del 2 - Temperatur/fugtighedsmonitor - Rev 3: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
Opdatering: 23. november 2020 - Første udskiftning af 2 x AAA -batterier siden 15. januar 2019, dvs. 22 måneder til 2xAAA AlkalineUpdate: 7. april 2019 - Rev 3 af lp_BLE_TempHumidity, tilføjer dato/tid -plots, ved hjælp af pfodApp V3.0.362+, og automatisk gasning ved afsendelse data
Opdatering: 24. marts 2019 - Rev 2 af lp_BLE_TempHumidity, tilføjer flere plotmuligheder og i2c_ClearBus
Denne instruerbare, en meget lav effekt temperaturfugtighedsmonitor, er del 2 af 3.
Del 1 - Opbygning af BLE -enheder med meget lav effekt gøres let med Arduino -dæksler, der sætter Arduino op til kode nRF52 -enheder med lav effekt, programmeringsmodulet og måling af forsyningsstrømmen. Det dækker også specialiserede laveffekt -timere og komparatorer og debounced input og brug af pfodApp til at oprette forbindelse til og styre nRF52 -enheden.
Del 2 - En meget lav effektfugtighedsmonitor, denne, dækker ved hjælp af et Redbear Nano V2 -modul og en Si7021 temperatur- / fugtighedsføler til at bygge et lavt strømbatteri / solmonitor. Det dækker også over ændring af Si7021 -biblioteket til lav effekt, indstilling af BLE -enheden for at reducere dets nuværende forbrug på <25uA og designe en brugerdefineret temperatur/fugtighedsvisning til din mobil.
Del 3 - En Redbear Nano V2 udskiftning dækker ved hjælp af andre nRF52 baserede moduler i stedet for Nano V2. Det dækker valg af forsyningskomponenter, konstruktion, fjernelse af nRF52 -chip -programmeringsbeskyttelse, brug af NFC -ben som normal GPIO og definition af et nyt nRF52 -kort i Arduino.
Denne instruks er en praktisk anvendelse af del 1 Bygning med meget lav effekt BLE -enheder gjort let med Arduino ved at konstruere en meget lav effekt BLE temperatur- og fugtighedsmonitor. Skærmen vil køre i årevis på Coin Cell eller 2 x AAA -batterier, endnu længere med solhjælp. Denne vejledning dækker indstilling af BLE -parametrene til lavt strømforbrug og hvordan du driver din enhed fra batteri ELLER batteri + kun sol eller EL.
Ud over at vise den aktuelle temperatur og fugtighed gemmer monitoren de sidste 36 timer med 10 minutters aflæsninger og de sidste 10 dage med timeaflæsninger. Disse kan kortlægges på din Android -mobil og værdierne gemmes i en logfil. Ingen Android -programmering er påkrævet, pfodApp håndterer alt det. Android -skærmen og kortlægningen styres fuldstændigt af din Arduino -skitse, så du kan tilpasse den efter behov.
Et Redbear Nano V2 -kort bruges til nRF52832 BLE -komponenten, og et Sparkfun Si7021 breakout -kort bruges til temperatur- / fugtighedsføleren. Et modificeret lavt strømbibliotek bruges med Si7021. En lille print blev designet til at rumme NanoV2 og levere komponenter. Men da der ikke bruges overflademonterede komponenter, kan du lige så let bygge dette på vero board. Tre versioner af strømforsyning er dækket. i) Battery plus Solar assist, ii) Only Battery, iii) Only Solar. Indstillingen Solar Only har ikke noget batterilagring og kører derfor kun, når der er lidt lys. Et lyst rumlys eller en bordlampe er tilstrækkelig.
Omrids
Dette projekt har 4 relative uafhængige dele:-
- Komponentvalg og konstruktion
- Kode - Low Power Sensor Library, brugergrænseflade og Arduino Sketch
- Måling af forsyningsstrøm og batterilevetid
- Forsyningsalternativer - Solar Assist, Only Battery, Only Solar
Trin 1: Valg af komponenter
Komponentvalg
Som nævnt i del 1-Tricket til at få en løsning med virkelig lav effekt er at gøre ingenting det meste af tiden, minimere strømmen gennem eksterne pull-up/pull-down modstande på indgange og ikke have nogen ekstra komponenter. Dette projekt vil bruge hvert af disse tricks til at få en løsning med lav effekt.
Komponenten nRF52832
NRF52832 -chippen kan køre med en strømforsyning på mellem 1,7V og 3,6V (absolut maks. Spænding 3,9V). Det betyder, at du kan drive chippen direkte fra en møntcelle eller 2 x AAA -batterier. Det er dog forsigtigt at tilføje en spændingsregulator for at beskytte chippen mod overspænding. Denne ekstra komponent kommer med en strømomkostning, men i tilfælde af NanoV2-kortet bruger den indbyggede regulator, TLV704, mindre end 5,5uA max, typisk kun 3,4uA. For dette lille ekstra strømforbrug får du beskyttelse af op til 24V forsyningsindgange.
Komponenten Si7021
Selve Si7021 -sensoren trækker typisk <1uA, når der ikke foretages en måling, dvs. i standby, og op til 4mA, når dataene overføres via I2C. Da vi ikke løbende måler, er 4mA ikke en væsentlig del af den gennemsnitlige forsyningsstrøm. Hvis man tager en aflæsning meget 30 sekunder, tilføjes mindre end 1uA til den gennemsnitlige forsyningsstrøm, se målingerne af forsyningsstrømmen nedenfor.
Der er to let tilgængelige Si7021 breakout boards. En fra Adafruit og en fra Sparkfun. Et hurtigt blik på de to tavler vil fortælle dig, at Adafruit -tavlen har mange flere komponenter end Sparkfun -tavlen, så du ville være tilbøjelig til at vælge Sparkfun -tavlen. Når man ser på skemaerne for hvert bord, viser det sig, at Sparkfun-kortet kun er den bare sensor og to 4k7 pullup-resisotorer, mens Adafruit-tavlen har en indbygget, MIC5225, regulator, der typisk tegner 29uA hele tiden. Dette er signifikant, når overstrømmen for resten af kredsløbet er <30uA. Da vi allerede har en regulator til nRF52832 -chippen, er denne ekstra komponent ikke nødvendig, og Si7021 kan forsynes med denne 3,3V -forsyning. Så dette projekt vil bruge Si7021 breakout board fra Sparkfun.
minimere strømmen gennem eksterne pull-up/pull-down modstande på indgange
4K7 I2C pullup modstande har ikke særlig høj værdi og vil trække 0,7 mA, når de trækkes lavt. Dette ville være et problem, hvis de var på en switchindgang, der var jordet i lange perioder. Men i dette projekt minimeres strømmen gennem disse modstande ved kun at bruge I2C -grænsefladen sjældent og kun i kort tid. Det meste af tiden er I2C-linjer ikke i brug og er i høj / tri-tilstand, så der strømmer ingen strøm gennem disse modstande.
Trin 2: Konstruktion
Projektet er konstrueret på en lille print, men da der ikke er SMD -komponenter, kan det lige så let bygges ved hjælp af vero board. PCB'et blev fremstillet af pcbcart.com ud fra disse Gerber -filer, TempHumiditySensor_R1.zip PCB'et er generelt tilstrækkeligt til at kunne bruges til andre BLE -projekter.
Skematikken er vist ovenfor. Her er en pdf -version.
Liste over dele
Omtrentlige omkostninger pr. Enhed pr. December 2018, ~ US $ 62, eksklusive forsendelse og programmøren fra del 1
- Redbear NanoV2 ~ 17 $
- Sparkfun Si7021 breakout board ~ US $ 8
- 2 x 53mm x 30mm 0,15W 5V solceller f.eks. Overfly ~ 1,10 $
- 1 x PCB TempHumiditySensor_R1.zip ~ US $ 25 for 5 off www.pcbcart.com ELLER Vero board (strip kobber) f.eks. Jaycar HP9540 ~ $ 5
- 2 x 1N5819 schottky -dioder f.eks. Digikey 1N5819FSCT-ND ~ US $ 1
- 1 x 470R 0,4W 1% modstand f.eks. Digikey BC3274CT-ND ~ 0,25 $
- 6 x 6 ben hanstik, f.eks. Sparkfun PRT-00116 ~ 1,5 $
- hun til hun springer f.eks. Adafruit ID: 1950 ~ US $ 2
- 3 mm x 12 mm nylonskruer, f.eks. Jaycar HP0140 ~ AUD $ 3
- 3 mm x 12 mm nylonmøtrikker, f.eks. Jaycar HP0146 ~ AUD $ 3
- Scotch Permanent Monteringstape Cat 4010 f.eks. fra Amazon ~ 6,6 US $
- AAA x 2 batteriholder, f.eks. Sparkfun PRT-14219 ~ 1,5 $
- 2 x AAA 750mA alkaliske batterier, f.eks. Sparkfun PRT-09274 ~ US $ 1.0 Disse batterier skal vare> 2 år. Energizer alkaliske batterier har højere kapacitet
- Plastkasse (ABS) 83 mm x 54 mm x 31 mm, f.eks. Jaycar HB6005 ~ AUD $ 3
- pfodApp ~ US $ 10
- 1 x 22uF 63V lav ESR kondensator (valgfri) f.eks. Jaycar RE-6342 ~ 0,5 $ AUD eller Digikey P5190-ND ~ 0,25 $
Konstruktionen er lige frem. Batteriholderen og solcellerne er fastgjort til plastkassen med kraftigt dobbeltsidet tape.
Bemærk Gnd -linkwiren fra CLK til GND i den færdige del. Dette installeres EFTER programmering for at forhindre støj på CLK -input i at udløse nRF52 -chippen til en højstrøms fejlfindingstilstand
Trin 3: Kode - Low Power Sensor Library, brugergrænseflade og Arduino Sketch
Download zip -koden, lp_BLE_TempHumidity_R3.zip, og pak den ud til dit Arduino Sketches -bibliotek. Du skal også installere lp_So7021 -biblioteket fra denne zip -fil og også installere pfodParser -biblioteket.
Low Power Sensor Library, lp_Si7021
Både Adafruit og Sparkfun giver supportbiblioteker til at få adgang til Si7021 -sensoren, men begge disse biblioteker er uegnede til meget lav strømforbrug. Begge bruger en forsinkelse (25) i koden til at forsinke læsning af sensoren, mens den måler. Som bemærket i del 1 Forsinkelser er onde. Arduino-forsinkelsen () holder bare mikroprocessoren kørende ved hjælp af strøm, mens den venter på, at forsinkelsen går ud. Dette bryder den første regel om lav effekt BLE, gør ingenting det meste af tiden. Lp_Si7021-biblioteket erstatter alle forsinkelser med lp_timere, der sætter mikroprocessoren i dvale, mens den venter på, at sensoren måler.
Hvor stor forskel gør biblioteket lp_Si7021? Brug af det originale SparkFun Si7021 supportbibliotek og tag en læsning i sekundet uden serielle udskrifter, tegner ~ 1,2mA gennemsnit. Udskiftning af Sparkfun -biblioteket med lp_Si7021 -biblioteket reducerer den gennemsnitlige strøm til ~ 10uA, dvs. 100 gange mindre. I dette projekt er den hurtigste målerate en gang hvert 30. sekund, når mobilen er tilsluttet, hvilket resulterer i en gennemsnitlig sensorstrøm på mindre end 1uA. Når der ikke er nogen BLE -forbindelse, er målehastigheden en gang hvert 10. minut, og den gennemsnitlige sensorforsyningsstrøm er ubetydelig.
Brugergrænseflade
Ovenfor er hovedskærmdisplayet og en zoomet visning af 10 -dages timeliste. Plots kan zoomes og panoreres i begge retninger ved hjælp af to fingre.
Brugergrænsefladen er kodet i Arduino -skitsen og derefter sendt til pfodApp på den første forbindelse, hvor den cachelagres til gentagen brug og opdateringer. Det grafiske display er bygget på at tegne primitiver. Se Custom Arduino Controls til Android for en vejledning i, hvordan du opbygger dine egne kontroller. Termometer-, RHGauge- og knapfilerne indeholder tegningskommandoer for disse elementer.
Bemærk: Ingen, hvis denne skærm er indbygget i pfodApp. Hele displayet styres fuldstændigt af koden i din Arduino -skitse
SendDrawing_z () -metoden i lp_BLE_TempHumidity_R3.ino -skitsen definerer brugergrænsefladen.
void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // baggrundsstandarder til HVID, hvis de udelades, dvs. start (50, 60); parser.sendRefreshAndVersion (30000); // anmod dwg igen hvert 30. sekund. dette ignoreres, hvis der ikke er indstillet parserversion // tryk på knapperne ovenfor for at tvinge displayopdateringer dwgs.touchZone (). cmd ('u'). størrelse (50, 39).send (); dwgs.pushZero (35, 22, 1.5); // flytte nul til midten af dwg til 35, 22 og skala 1,5 gange rhGauge.draw (); // tegne kontrollen dwgs.popZero (); dwgs.pushZero (18, 33); // flytte nul til midten af dwg til 18, 33 skala er 1 (standard) termometer. tegn (); // tegne kontrollen dwgs.popZero ();
dwgs.pushZero (12,5, 43, 0,7); // flyt nul til centrum af dwg til 12,5, 43 og skala med 0,7
hrs8PlotButton.draw (); // tegne kontrollen dwgs.popZero (); dwgs.pushZero (37,5, 43, 0,7); // flytte nul til centrum af dwg til 37,5, 43 og skala med 0,7 dage1PlotButton.draw (); // tegne kontrollen dwgs.popZero ();
dwgs.pushZero (12,5, 54, 0,7); // flytte nul til centrum af dwg til 12,5, 54 og skalere med 0,7
days3PlotButton.draw (); // tegne kontrollen dwgs.popZero (); dwgs.pushZero (37,5, 54, 0,7); // flytte nul til centrum af dwg til 37,5, 54 og skala med 0,7 dage10PlotButton.draw (); // tegne kontrollen dwgs.popZero (); dwgs.end (); }
PushZero -kommandoerne ændrer oprindelse og skalering for at tegne den næste komponent. Dette lader dig nemt ændre størrelsen og placeringen af knapperne og målerne.
Ved den første forbindelse tager det første display 5 eller 6 sekunder at indlæse ~ 800 bytes, der definerer displayet. pfodApp gemmer displayet, så fremtidige opdateringer behøver kun at sende ændringerne, målepositioner og aflæsninger. Disse opdateringer tager kun et par sekunder at sende de 128 bytes, der skal opdateres i displayet.
Der er fem (5) aktive berøringszoner defineret i displayet. Hver knap har en defineret i sin draw () metode, så du kan klikke på den for at åbne det respektive plot, og den øverste halvdel af skærmen er konfigureret som den tredje berøringszone
dwgs.touchZone (). cmd ('u'). størrelse (50, 39).send ();
Når du klikker på skærmen over knapperne, sendes 'u' dwg -kommandoen til din skitse for at tvinge en ny måling og skærmopdatering. Normalt sker der ved tilslutning kun opdateringer hvert 30. sekund. Hvert klik eller opdatering af tegningen tvinger til en ny måling. Svaret fra Arduino -skitsen til pfodApp er forsinket, indtil den nye måling er fuldført (~ 25mS), så den seneste værdi kan sendes i opdateringen.
Arduino Skitse
Arduino Sketch, lp_BLE_TempHumidity_R3.ino, er en forbedret version af eksempelskitsen, der blev brugt i del 1. Lp_BLE_TempHumidity_R3.ino -skitsen erstatter menuen med tegningen vist ovenfor. Det tilføjer også lp_Si7021 sensorunderstøttelse og dataarays til at gemme de 10 min. Og timelige historiske målinger.
Den største komplikation i lp_BLE_TempHumidity_R3.ino -skitsen er at håndtere afsendelse af plotdata. Når målingerne foretages, håndterer readRHResults () indsamling af resultaterne og gemmer dem i de historiske arrays. Arrays er 120 lange, men når dataene sendes, er de første 30 datapunkter til med et finere tidsinterval.
Der er et par punkter, der skal tages hensyn til, når du sender de 200 ulige plotpunkter til visning:-
- Hvert datapunkt er ~ 25 bytes langt, i CSV -tekstformat. Så 150 point er 3750 bytes data. Klassen lp_BLESerial har en 1536 byte -buffer, hvoraf 1024 er stor nok til den største pfod -meddelelse. De andre 512 bytes er forbeholdt afsendelse af data. Når de historiske data har fyldt de 512 bytes, udsendes yderligere data forsinket, indtil der er plads i bufferen.
- For at undgå, at plotdata bremser de vigtigste skærmopdateringer, sendes plotdata kun, mens plotskærmen vises. Når brugeren skifter tilbage til hovedskærmen, sendes plottdata på pause. Afsendelse af plotdata genoptages, når brugeren klikker på plotknappen for at få vist plottet igen.
- De historiske plots starter fra 0 (nu) og går baglæns i tiden. Hvis der ikke har været nogen ny måling siden det sidste plot blev vist, vises de tidligere data, der allerede blev downloadet, bare igen med det samme. Hvis der er en ny måling, tilføjes den til de tidligere plottata.
- Når skærmen først tændes, er der ingen historiske aflæsninger, og 0 gemmes i arrays som en ugyldig læsning. Når plottet vises, springes ugyldige aflæsninger bare over, hvilket resulterer i et kortere plot.
Celsius og Fahrenheit
Lp_BLE_TempHumidity_R3.ino -skitsen viser og plotter dataene i Celsius. For at konvertere resultaterne til Fahrenheit skal du erstatte alle forekomster af
parser.print (sensor. Temp_RawToFloat (..
med
parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…
Og udskift unicode degC -symbolet i Octal / 342 / 204 / 203 med degF -symbolet / 342 / 204 / 211
pfodApp viser enhver Unicode, du kan vise på din mobil.
Se Brug af ikke-ASCII-tegn i Arduino for flere detaljer. Ændr også MIN_C, MAX_C indstillingerne i Termometer. H. Til sidst justeres plotgrænserne, som du ønsker f.eks. ændring | Temp C ~ 32 ~ 8 ~ deg C |
at sige
| Temp F ~ 90 ~ 14 ~ deg F |
Trin 4: Måling af forsyningsstrømmen
Ved hjælp af biblioteket lp_Si7021 bidrager selv en temperatur/luftfugtighedsmåling hvert 10. sekund kun til ~ 1uA til den gennemsnitlige forsyningsstrøm, så hovedfaktoren i forsyningsstrømmen og dermed batterilevetiden er den strøm, der bruges af BLE -reklame og forbindelse og dataoverførsel.
Tilslut temperatur/fugtighedskortet til programmereren beskrevet i del 1 som vist ovenfor.
Når solcellerne og batterierne er frakoblet, er Vin og Gnd forbundet til programmørens Vdd og Gnd (de gule og grønne ledere), og SWCLK og SWDIO forbindes til Clk og SIO på programmeringsoverskriftskortet (de blå og pink ledninger)
Du kan nu programmere NanoV2 og måle forsyningsstrømmen som beskrevet i del 1.
Installer Si7021 -biblioteket med lavt strømforbrug fra denne zip -fil, lp_Si7021.zip, og installer pfodParser -biblioteket, og pak lp_BLE_TempHumidity_R3.zip ud til dit Arduino sketches -bibliotek, og programmer Temp/Humditiy -kortet med lp_BLE_TempHumidity_R3.ino
Som nævnt ovenfor er sensorens bidrag <1uA, gennemsnit, ved den højeste målerate, der bruges i dette projekt, så BLE -reklame- og forbindelsesparametre er den afgørende faktor for batterilevetid.
BLE-reklame- og forbindelsesparametrene, der påvirker det aktuelle forbrug, er: -Tx Power, Advertising Interval, Max og Min Connection Intervals og Slave Latency.
Bemærk: Ved hjælp af forbindelserne ovenfor er der to (2) regulatorer i forsyningen, en på NanoV2 -kortet via Vin og MAX8881 på programmørens forsyning. Det betyder, at de målte forsyningsstrømme vil være ~ 5uA højere end den faktiske på grund af den anden regulator. De nedenfor anførte værdier er de målte strømme minus denne ekstra 5uA.
Tx effekt
Tx Effekteffekter leverer strøm både når den er tilsluttet og ved reklame (ikke tilsluttet). Dette projekt anvender den maksimale effektindstilling (+4) og giver det bedste område og størst støjimmunitet for de mest pålidelige forbindelser. Du kan bruge metoden lp_BLESerial setTxPower () til at ændre strømindstillingen. Gyldige værdier er i stigende effekt -40, -30, -20, -16, -12, -8, -4, 0 +4. Du skal kalde metoden lp_BLESerial begin () FØR du kalder setTxPower (). Se lp_BLE_TempHumidity_R3.ino -skitsen.
Du kan eksperimentere med at reducere Tx -strømmen, men kompromiset er kortere rækkevidde og flere forbindelsesbrud på grund af interferens. I dette projekt er Tx Power tilbage som standard, +4. Som du vil se nedenfor, selv med denne indstilling, er meget lav forsyningsstrøm stadig mulig.
Reklameinterval
For en given Tx -effekt, når der ikke er nogen forbindelse, angiver reklameintervallet det gennemsnitlige aktuelle forbrug. Det anbefalede område er 500 til 1000mS. Her blev 2000mS brugt. Kompromiset er, at længere reklameintervaller betyder, at det er langsommere for din mobil at finde enheden og oprette en forbindelse. Internt indstilles annonceringsintervaller i multipler på 0,625mS i området 20mS til 10,24sek. Metoden lp_BLESerial setAdvertisingInterval () tager mS som argument for nemheds skyld. For +4 TxPower og 2000mS reklameinterval var det nuværende forbrug ~ 18uA. For 1000mS reklameinterval var det ~ 29uA. Rev 2 brugte 2000mS reklameinterval, men dette resulterede i langsomme forbindelser. Rev 3 ændret til 1000 mS reklameinterval for at gøre forbindelser hurtigere.
Maks. Og min. Forbindelsesinterval
Når en forbindelse er etableret, bestemmer forbindelsesintervallet, hvor ofte mobilen kontakter enheden. Lp_BLESerial setConnectionInterval () lader dig indstille de foreslåede max og min, men mobilen styrer, hvad forbindelsesintervallet faktisk er. For nemheds skyld er argumenterne til setConnectionInterval () i mS, men internt er forbindelsesintervallerne i multiple på 1,25mS, i området 7,5mS til 4sec.
Standardindstillingen er setConnectionInterval (100, 150) dvs. min 100mS til max 150mS. Forøgelse af disse værdier reducerer forsyningsstrømmen, mens den er tilsluttet, men kompromiset er langsommere dataoverførsel. Hver opdatering af skærmen tager omkring 7 BLE -beskeder, mens hele 36 timer på 10 min. Målinger tager omkring 170 BLE -meddelelser. Så at øge forbindelsesintervallerne bremser skærmopdateringerne, og plottet vises.
Klassen lp_BLESerial har en 1536 bytes sendebuffer og sender kun en blok med 20 bytes fra denne buffer, hvert maksimale forbindelsesinterval for at forhindre oversvømmelse af BLE -linket med data. Også ved afsendelse af plotdata sender skitsen kun data, indtil 512 bytes venter på at blive sendt, og derefter forsinker afsendelse af flere data, indtil nogle data er blevet sendt. Dette undgår oversvømmelse af sendebuffer. Denne begrænsning af senderne gør datatransmissionen til mobilen pålidelig, men den er ikke optimeret til maksimum gennem put.
I dette projekt blev forbindelsesintervallerne efterladt som standardværdier.
Slave Latency
Når der ikke er nogen data, der skal sendes til mobilen, kan enheden eventuelt ignorere nogle af forbindelsesmeddelelserne fra mobilen. Dette sparer Tx strøm og forsyningsstrøm. Indstillingen Slave Latency er antallet af forbindelsesmeddelelser, der skal ignoreres. Standarden er 0. Metoden lp_BLESerial setSlaveLatency () kan bruges til at ændre denne indstilling.
Standard Slave Latency på 0 gav ~ 50uA forsyningsstrøm og ignorerede skærmopdateringerne hvert 30. sekund, men inklusive keepAlive -meddelelser meget 5 sekunder. Indstilling af Slave Latency til 2 gav en gennemsnitlig tilsluttet strøm på ~ 25uA. En Slave Latency -indstilling på 4 gav ~ 20uA. Højere indstillinger reducerede tilsyneladende ikke forsyningsstrømmen, så der blev brugt en Slave Latency -indstilling på 4.
Når den er tilsluttet, anmoder pfodApp hvert 30. sekund om en skærmopdatering. Dette tvinger til en sensormåling og sender data tilbage for at opdatere det grafiske display. Denne opdatering resulterer i en ekstra ~ 66uA i 2 sekunder hver 30 sek. Det er et gennemsnit på 4,4uA over de 30 sekunder. Tilføjelse af dette til 20uA giver en gennemsnitlig tilslutningsforsyningsstrøm på ~ 25uA
Trin 5: Total forsyningsstrøm og batterilevetid
Ved hjælp af indstillingerne ovenfor, som angivet i lp_BLE_TempHumidity_R3.ino, den samlede forsyningsstrøm ved tilslutning og opdatering af displayet hvert 30. sekund, cirka 25uA. Når den ikke er tilsluttet, er den cirka 29uA.
Til beregning af batterilevetid antages en kontinuerlig strømforbrug på ~ 29uA.
Forskellige batterier har forskellige kapaciteter og spændingsegenskaber. Batterierne, der betragtes her, er CR2032 møntcelle, CR2450 (N) møntcelle, 2 x AAA Alkaline, 2 x AAA Lithium og LiPo.
Batteri Oversigt
Hvis du bruger Solar Assist, skal du tilføje 50% til disse batterilevetidstal (forudsat 8 timers lys om dagen)
Bemærk: 22uF LowESR -kondensatoren (C1), ud over den indbyggede NanoV2 22uF -kondensator, gemmer solcellestrømmen og leverer den derefter til TX -strømimpulser. Ellers leverer batteriet noget af TX -strømmen. Denne ekstra 22uF LowESR tilføjer cirka 10% til batteristrømmen, når solcellen ikke er forsyning, men forlænger også batterilevetiden ved at kompensere for den stigende batteriets indre modstand, når batteriet når slutningen af levetiden. Nedenstående målinger blev taget UDEN den ekstra 22uF kondensator.
CR2032 - 235mAHr - batterilevetid 10 månederCR2450 (N) - 650mAHr (540mAHr) - batterilevetid 2,3 år (2yrs) 2 x AAA Alkaline - 1250mAHr - batterilevetid 3,8.yrs2 x AAA Lithium - 1200mAHr - batterilevetid 4,7 år LiPo genopladelig - anbefales ikke på grund af høj selvudladning.
CR2032
Denne møntcelle har en kapacitet på typisk 235mAHr (Energizer -batteri), en nominel spænding på 3V og en specificeret afladningsspænding på 2V. Dette indebærer en batterilevetid på 8100 timer eller ~ 0,9 år. Den interne cellemodstand stiger imidlertid, når batteriet når slutningen af dets levetid, og det er derfor muligvis ikke i stand til at levere de maksimale Tx -strømimpulser. En større forsyningskondensator kan bruges til at reducere denne effekt, men sig 10 måneders levetid.
CR2450 (N)
Denne møntcelle har en kapacitet på typisk 620mAHr (540mAHr for CR2450N), en nominel spænding på 3V og en specificeret afladningsspænding på 2V. Dette indebærer en batterilevetid på 22, 400 timer eller ~ 2 år 6 m (18600 timer ~ 2 år 2 m for CR2450N). Den interne cellemodstand stiger imidlertid, når batteriet når slutningen af dets levetid, og derfor er det muligvis ikke i stand til at levere de maksimale Tx -strømimpulser. En større forsyningskondensator kan bruges til at reducere denne effekt, men sig 2 år 4 m (2 år N) levetid.
Bemærk: CR2450N -versionen har en tykkere læbe, som hjælper med at forhindre forkert installation i en CR2450N -holder. Du kan indsætte en CR2450N- og CR2450 -celle i en CR2450 -holder, men du kan ikke indsætte en CR2450 -celle i en CR2450N -holder
2 x AAA alkaliske celler
Disse batterier har en kapacitet på ca. 1250mAHr (Energizer Battery) til meget lave strømme, en nominel spænding på 2x1,5V = 3V og en specificeret afladningsspænding på 2x0,8V = 1,6V. Men denne angivne afladningsspænding er mindre end driftsspændingen for Si7021 -sensoren (1,9V), så batteriet kan kun bruges ned til ~ 1V hver. Dette reducerer kapaciteten med ca. 10% til 15%, dvs. ~ 1000mAHr.
Dette indebærer en batterilevetid på 34, 500 timer eller ~ 4 år. Den interne cellemodstand stiger imidlertid, når batteriet når slutningen af dets levetid, og det er derfor muligvis ikke i stand til at levere de maksimale Tx -strømimpulser. En større forsyningskondensator kan bruges til at reducere denne effekt, men sig 3 års levetid på 10 m. Bemærk! Alkaliske batterier har en selvafladning på 2% til 3% om året.
2 x AAA litiumceller
Disse batterier har en kapacitet på ca. Dette indebærer en batterilevetid på 41, 400 timer eller 4 år 8 m.
LiPo genopladeligt batteri
Disse batterier findes i forskellige kapaciteter fra 100mAHr til 2000mAHr, i flade formater og har en opladet spænding på 4,2V og en afladet spænding på> 2,7V. De har imidlertid en høj selvafladning på 2% -3%/måned (dvs. 24% til 36% om året) og er derfor ikke så velegnede til denne applikation som de andre batterier.
Trin 6: Forsyningsalternativer - Solar Assist, Only Battery, Only Solar
Batteri plus Solar Assist
Konstruktionen ovenfor bruger batteriet plus Solar Assist -forsyningen. Når solpanelerne genererer mere spænding end batterispændingen, vil solcellerne drive monitoren, hvilket forlænger batteriets levetid. Normalt kan batteriets levetid forlænges med yderligere 50%.
De anvendte solpaneler er små, 50 mm x 30 mm, billige, ~ $ 0,50 og lav effekt. De er nominelt 5V paneler, men har brug for fuldt direkte stærkt sollys for at generere 5V. I dette projekt er to paneler forbundet i serie, så det er tilstrækkeligt at placere skærmen et sted tæt på et vindue, ude af direkte sol, til at udskifte batteriet. Selv et godt oplyst rum eller en skrivebordslampe er nok til, at solcellerne genererer> 3,3V ved> 33uA og overtager batteriet.
Et enkelt testpanel blev konstrueret til at bestemme, hvor temperatur / fugtighedsmonitoren kunne placeres, ude af solen og stadig være soldrevet. Som du kan se på billedet ovenfor, producerer de to paneler forbundet til en 100K modstand 5.64V på tværs af 100K, dvs. 56uA strøm ved 5.64V. Dette er mere end tilstrækkeligt overtag til at drive skærmen fra batteriet. Enhver spændingsaflæsning over den nominelle batterispænding på 3V betyder, at solcellerne får strøm til monitoren i stedet for batteriet.
De to dioder i temperaturfugtighedsovervågningskredsløbet isolerer solcellerne og batterierne fra hinanden og beskytter mod at forbinde dem i omvendt polaritet. 10V 1W zener og 470R-seriens modstand beskytter NanoV2's indbyggede regulator mod overspænding fra to solceller i fuld sol, især hvis der tilfældigvis bruges 12V celler i stedet for 5V. Ved normal drift ved <5V trækker 10V zener kun ~ 1uA.
Kun batteri
For kun batteriforsyning skal du bare udelade R1, D1 og D3 og solcellerne. Du kan også erstatte D1 med et stykke ledning, hvis du ikke ønsker beskyttelse mod omvendt polaritet.
Kun solceller
Strømforsyning til skærmen fra solceller uden batteri kræver et andet strømforsyningskredsløb. Problemet er, at mens skærmen fungerer på 29uA, trækker nRF52 ved opstart ~ 5mA i 0,32 sek. Kredsløbet vist ovenfor (pdf -version) holder MAX8881 -regulatoren slukket, indtil indgangskondensatorerne, 2 x 1000uF, oplades op til 4,04V. Derefter frigiver MAX6457 MAX8881 SHDN -input for at tænde for nRF52 (NanoV2) De 2 x 1000uF kondensatorer leverer den nødvendige startstrøm.
Dette lader skærmen starte op, så snart der er nok solenergi, så den kan køre på 29uA.
Trin 7: Konklusion
Denne vejledning har præsenteret en batteri-/soldrevet temperaturfugtighedsmonitor som et eksempel på et meget lavt effekt BLE -projekt i Arduino til nRF52832 -chippen. Forsyningsstrømme på ~ 29uA, hvor de opnås ved at indstille forbindelsesparametrene. Dette resulterede i en CR2032 møntcellebatteriets levetid på mere end 10 måneder. Længere for møntceller og batterier med højere kapacitet. Tilføjelse af to billige solceller forlængede let batterilevetiden med 50% eller mere. Et lyst rumlys eller en bordlampe er tilstrækkelig til at drive skærmen fra solcellerne.
Et særligt strømkredsløb blev præsenteret for at tillade skærmen at køre rent fra solceller med lav kapacitet.
Den gratis pfodDesigner lader dig designe menuer/undermenuer, plotte mod dato/tid og logge data og derefter generere Arduino-skitsen med lav effekt til dig. Her blev en brugerdefineret grænseflade kodet ved hjælp af pfodApp -tegningsprimitiver. Forbindelse med pfodApp viser brugergrænsefladen og opdaterer målingerne, mens skærmen bruger ~ 29uA
Ingen Android -programmering er påkrævet. pfodApp håndterer alt dette.
Anbefalede:
Sådan opretter du et Arduino -skjold meget let (ved hjælp af EasyEDA): 4 trin
Sådan opretter du et Arduino Shield meget let (ved hjælp af EasyEDA): I denne Instructable vil jeg lære dig, hvordan du opretter et Arduino Uno Shield meget let. Jeg vil ikke gå i detaljer for meget, men jeg inkluderede en video, hvor jeg gå lidt mere i dybden med, hvordan du bruger softwaren. Jeg bruger EasyEDA -webapplikationen, siden jeg
Lav et spil i Notesblok og meget meget mere: 10 trin
At lave et spil i Notesblok og meget meget mere: Dette er min første instruerbare. Så hvis du har forslag, så kommenter. Lad os komme i gang! Når vi alle hører ordet notesblok, tænker vi på nogle kedelige ubrugelige applikationer til at notere ting. Godt notesblok er meget mere end det. Vi kan styre vores side
Trappe natlampe - Meget lav effekt og 2 sensorer: 5 trin
Trappens natlampe - Meget lav effekt og 2 sensorer: Jeg byggede denne nattelampe med lav effekt og to infrarøde bevægelsessensorer, så jeg kan installere en enkelt enhed, halvvejs i trappen, og få den udløst enten af en person, der går op eller kommer ned ad trapperne. Jeg har også gjort mit design meget lavt
DIY MusiLED, musik-synkroniserede lysdioder med et klik Windows & Linux-applikation (32-bit og 64-bit). Let at genskabe, let at bruge, let at transportere .: 3 trin
DIY MusiLED, musik-synkroniserede lysdioder med et klik Windows & Linux-applikation (32-bit og 64-bit). Let at genskabe, let at bruge, let at transportere .: Dette projekt hjælper dig med at forbinde 18 lysdioder (6 røde + 6 blå + 6 gule) til dit Arduino-kort og analysere din computers lydkorts realtids signaler og videresende dem til lysdioderne for at tænde dem i takt med slageffekterne (Snare, High Hat, Kick)
Meget enkel Dog meget effektiv prank (computerprank): 3 trin
Meget enkel … Dog meget effektiv prank (Computer Prank): Denne instruktør er MEGET enkel, men alligevel MEGET effektiv! Hvad der vil ske er: Du skjuler alle ikonerne på offerets skrivebord. Offeret vil freak ud, når de ser computeren, når du laver sjov. Dette kan overhovedet ikke skade computeren