Obsah:

Snadný BLE s velmi nízkým výkonem v Arduino Část 2 - Monitor teploty/vlhkosti - Rev 3: 7 kroků
Snadný BLE s velmi nízkým výkonem v Arduino Část 2 - Monitor teploty/vlhkosti - Rev 3: 7 kroků

Video: Snadný BLE s velmi nízkým výkonem v Arduino Část 2 - Monitor teploty/vlhkosti - Rev 3: 7 kroků

Video: Snadný BLE s velmi nízkým výkonem v Arduino Část 2 - Monitor teploty/vlhkosti - Rev 3: 7 kroků
Video: Lesson 15: Using Soil Moisture Sensor with Arduino SunFounder Kit | Robojax 2024, Listopad
Anonim
Snadný BLE s velmi nízkým výkonem v Arduino Část 2 - Monitor teploty/vlhkosti - Rev 3
Snadný BLE s velmi nízkým výkonem v Arduino Část 2 - Monitor teploty/vlhkosti - Rev 3
Snadný BLE s velmi nízkým výkonem v Arduino Část 2 - Monitor teploty/vlhkosti - Rev 3
Snadný BLE s velmi nízkým výkonem v Arduino Část 2 - Monitor teploty/vlhkosti - Rev 3
Snadný BLE s velmi nízkým výkonem v Arduino Část 2 - Monitor teploty/vlhkosti - Rev 3
Snadný BLE s velmi nízkým výkonem v Arduino Část 2 - Monitor teploty/vlhkosti - Rev 3

Aktualizace: 23. listopadu 2020 - První výměna 2 x baterií AAA od 15. ledna 2019, tj. 22 měsíců za 2xAAA Alkalické data

Aktualizace: 24. března 2019 - 2. revize lp_BLE_TempHumidity, přidává další možnosti vykreslování a i2c_ClearBus

Tento instruktážní monitor vlhkosti vzduchu s velmi nízkou spotřebou energie je částí 2 ze 3.

Část 1 - Budování velmi nízkoenergetických zařízení BLE usnadněných pomocí Arduino pokrývá osazení Arduina pro kódování zařízení s nízkou spotřebou nRF52, programovacího modulu a měření napájecího proudu. Zahrnuje také specializované časovače a komparátory s nízkým výkonem a odpojené vstupy a použití pfodApp k připojení a ovládání zařízení nRF52.

Část 2 - Monitor vlhkosti vzduchu s velmi nízkou spotřebou energie, tento, pokrývá použití modulu Redbear Nano V2 a snímače teploty / vlhkosti Si7021 k vybudování baterie / solárního monitoru s nízkým výkonem. Zahrnuje také úpravu knihovny Si7021 na nízkou spotřebu, vyladění zařízení BLE tak, aby se snížila jeho aktuální spotřeba <25uA, a návrh vlastního zobrazení teploty/vlhkosti pro váš mobil.

Část 3 - Náhrada Redbear Nano V2 pokrývá použití jiných modulů na bázi nRF52 místo Nano V2. Zahrnuje výběr napájecích komponent, konstrukci, odstranění ochrany programování čipů nRF52, používání pinů NFC jako normálního GPIO a definování nové desky nRF52 v Arduinu.

Tento instruktáž je praktickou aplikací části 1 Budování BLE zařízení s velmi nízkou spotřebou, které bylo s Arduinem snadné, a to zkonstruováním monitoru teploty a vlhkosti BLE s velmi nízkou spotřebou. Monitor poběží roky na Coin Cell nebo 2 x AAA bateriích, ještě déle se sluneční asistencí. Tento tutoriál se zabývá laděním parametrů BLE pro nízkou spotřebu energie a jak napájet zařízení z baterie NEBO baterie + solární NEBO pouze solární.

Kromě zobrazení aktuální teploty a vlhkosti monitor ukládá posledních 36 hodin odečtů po 10 minutách a posledních 10 dní odečtů po hodinách. Ty lze zaznamenat do mobilního zařízení Android a hodnoty uložit do souboru protokolu. Není vyžadováno žádné programování pro Android, o vše se stará pfodApp. Zobrazení a grafy pro Android jsou plně řízeny vaší skicou Arduino, takže si ji můžete přizpůsobit podle potřeby.

Pro komponentu nRF52832 BLE je použita deska Redbear Nano V2 a pro snímač teploty / vlhkosti je použita odpojovací deska Sparkfun Si7021. Se Si7021 se používá upravená knihovna s nízkým výkonem. Malý PCB byl navržen tak, aby pojal NanoV2 a dodával komponenty. Protože však nejsou použity žádné povrchově montované součásti, můžete to stejně snadno postavit na desce vero. Jsou pokryty tři verze napájecího zdroje. i) Baterie plus sluneční pomoc, ii) Pouze baterie, iii) Pouze sluneční. Možnost Pouze solární nemá žádné úložiště baterií, a proto se spustí pouze tehdy, když je nějaké světlo. Postačí jasné osvětlení místnosti nebo stolní lampa.

Obrys

Tento projekt má 4 relativně nezávislé části:-

  1. Výběr a konstrukce součásti
  2. Code - Low Power Sensor Library, User Interface and Arduino Sketch
  3. Měření napájecího proudu a životnosti baterie
  4. Alternativy dodávky - sluneční pomoc, pouze baterie, pouze sluneční

Krok 1: Výběr součásti

Výběr komponent

Jak je uvedeno v části 1-Trikem, jak získat řešení s opravdu malým výkonem, je většinu času nic nedělat, minimalizovat proud pomocí externích výsuvných/stahovacích odporů na vstupech a nemáte žádné další součásti. Tento projekt použije každý z těchto triků k získání řešení s nízkou spotřebou.

Komponenta nRF52832

Čip nRF52832 může pracovat s napájecím zdrojem mezi 1,7 V a 3,6 V (absolutní maximální napětí 3,9 V). To znamená, že můžete čip napájet přímo z knoflíkové baterie nebo 2 x AAA baterií. Je však rozumné přidat regulátor napětí, který chrání čip před přepětím. Tato další součást je dodávána s náklady na energii, ale v případě desky NanoV2 spotřebuje palubní regulátor TLV704 max. Méně než 5,5uA, obvykle pouze 3,4uA. Pro toto malé extra využití energie získáte ochranu až 24V napájecích vstupů.

Součást Si7021

Samotný senzor Si7021 čerpá typicky <1uA, když neprovádí měření, tj. V pohotovostním režimu, a až 4mA při přenosu dat přes I2C. Protože neprovádíme nepřetržité měření, 4mA není významnou součástí průměrného napájecího proudu. Odečtení hodnoty za 30 sekund přidá k průměrnému napájecímu proudu méně než 1 uA, viz měření napájecího proudu níže.

K dispozici jsou dvě snadno dostupné desky Si7021. Jeden od Adafruit a jeden od Sparkfun. Letmý pohled na dvě desky vám prozradí, že deska Adafruit má mnohem více komponent než deska Sparkfun, takže byste se přiklonili k výběru desky Sparkfun. Pohled na schémata pro každou desku ukazuje, že deska Sparkfun je pouze holý senzor a dva vytahovací rezistory 4k7, zatímco deska Adafruit má integrovaný regulátor MIC5225, který obvykle čerpá 29uA po celou dobu. To je významné, když je celkový proud pro zbytek obvodu <30uA. Protože již máme regulátor pro čip nRF52832, tato další součást není potřeba a Si7021 lze napájet z tohoto 3,3V zdroje. Tento projekt tedy bude používat oddělovací desku Si7021 od Sparkfun.

minimalizujte proud prostřednictvím externích výsuvných/stahovacích odporů na vstupech

Pullup rezistory 4K7 I2C nemají zvlášť vysokou hodnotu a při nízkém tahu budou odebírat 0,7 mA. To by byl problém, kdyby se nacházeli na spínacím vstupu, který byl uzemněn po dlouhou dobu. V tomto projektu je však proud přes tyto odpory minimalizován pouze pomocí rozhraní I2C jen zřídka a jen na krátkou dobu. Většinu času linky I2C nejsou používány a jsou vysoké / třístavové, takže těmito odpory neproudí žádný proud.

Krok 2: Konstrukce

Konstrukce
Konstrukce
Konstrukce
Konstrukce
Konstrukce
Konstrukce

Projekt je postaven na malém PCB, ale protože neexistují žádné komponenty SMD, lze jej stejně snadno postavit pomocí desky vero. Desku plošných spojů vyrobila společnost pcbcart.com z těchto souborů Gerber, TempHumiditySensor_R1.zip Deska plošných spojů je dostatečně obecná, aby mohla být použita pro jiné projekty BLE.

Schéma je ukázáno výše. Zde je verze pdf.

Seznam dílů

Přibližné náklady na jednotku k prosinci 2018, ~ 62 USD, bez poštovného a programátoru z části 1

  • Redbear NanoV2 ~ 17 USD
  • Odlamovací deska Sparkfun Si7021 ~ 8 USD
  • 2 x 53 mm x 30 mm 0,15 W 5V solární články, např. Přelétnout ~ 1,10 USD
  • 1 x PCB TempHumiditySensor_R1.zip ~ 25 USD za 5 slev www.pcbcart.com NEBO deska Vero (pásová měď), např. Jaycar HP9540 ~ AUD $ 5
  • 2 x 1N5819 schottky diody např. Digikey 1N5819FSCT-ND ~ 1 USD
  • 1 x 470R 0,4 W 1% odpor, např. Digikey BC3274CT-ND ~ 0,25 USD
  • 6 x 6 pinových zástrčkových kolíků, např. Sparkfun PRT-00116 ~ 1,5 USD
  • propojka mezi ženami a ženami, např. Adafruit ID: 1950 ~ 2 USD
  • Nylonové šrouby 3 mm x 12 mm, např. Jaycar HP0140 ~ AUD $ 3
  • Nylonové matice 3 mm x 12 mm, např. Jaycar HP0146 ~ AUD $ 3
  • Scotch Permanentní montážní páska Cat 4010 např. od Amazonu ~ 6,6 USD
  • Držák baterie AAA x 2, např. Sparkfun PRT-14219 ~ 1,5 USD
  • 2 x AAA 750mA alkalické baterie, např. Sparkfun PRT-09274 ~ 1,0 USD Tyto baterie by měly vydržet> 2 roky. Alkalické baterie Energizer mají vyšší kapacitu
  • Plastový box (ABS) 83 mm x 54 mm x 31 mm, např. Jaycar HB6005 ~ AUD $ 3
  • pfodApp ~ 10 USD
  • 1 x 22uF 63V Low ESR kondenzátor (volitelně), např. Jaycar RE-6342 ~ AUD $ 0,5 nebo Digikey P5190-ND ~ US $ 0,25

Konstrukce je přímočará. Držák baterie a solární články jsou připevněny k plastové krabici pomocí oboustranné lepicí pásky.

Všimněte si propojovacího kabelu Gnd od CLK k GND v hotové části. Toto je nainstalováno PO programování, aby se zabránilo šumu na vstupu CLK ve spuštění čipu nRF52 do režimu vysokého aktuálního ladění

Krok 3: Kód - knihovna snímačů s nízkým výkonem, uživatelské rozhraní a skica Arduino

Code - Low Power Sensor Library, User Interface and Arduino Sketch
Code - Low Power Sensor Library, User Interface and Arduino Sketch
Code - Low Power Sensor Library, User Interface and Arduino Sketch
Code - Low Power Sensor Library, User Interface and Arduino Sketch
Code - Low Power Sensor Library, User Interface and Arduino Sketch
Code - Low Power Sensor Library, User Interface and Arduino Sketch

Stáhněte si zip kód lp_BLE_TempHumidity_R3.zip a rozbalte jej do adresáře Arduino Sketches. Musíte také nainstalovat knihovnu lp_So7021 z tohoto souboru zip a také nainstalovat knihovnu pfodParser.

Knihovna snímačů nízkého výkonu, lp_Si7021

Adafruit i Sparkfun poskytují podpůrné knihovny pro přístup k senzoru Si7021, obě tyto knihovny však nejsou vhodné pro velmi nízkou spotřebu energie. Oba používají zpoždění (25) v kódu ke zpoždění čtení senzoru během jeho měření. Jak je uvedeno v části 1 Zpoždění jsou zlá. Zpoždění Arduino () pouze udržuje mikroprocesor v chodu, zatímco čeká na vypršení časového limitu. Tím je porušeno první pravidlo nízkého výkonu BLE, většinu času nic nedělejte. Náhradní knihovna lp_Si7021 nahrazuje všechna zpoždění lp_timers, které uvedou mikroprocesor do režimu spánku a čekají, až senzor dokončí měření.

Jak velký je rozdíl v knihovně lp_Si7021? Použití původní knihovny podpory SparkFun Si7021 a jedno čtení za sekundu bez sériových výtisků čerpá průměr ~ 1,2 mA. Výměna knihovny Sparkfun za knihovnu lp_Si7021 sníží průměrný proud na ~ 10uA, tj. 100krát méně. V tomto projektu je nejrychlejší rychlost měření jednou za 30 sekund, když je mobil připojen, což má za následek průměrný proud senzoru menší než 1uA. Pokud není připojeno BLE, je rychlost měření jednou za 10 minut a průměrný napájecí proud snímače je zanedbatelný.

Uživatelské rozhraní

Nahoře je hlavní obrazovka a zvětšený pohled na 10denní hodinovou historii. Grafy lze přibližovat a posouvat v obou směrech pomocí dvou prstů.

Uživatelské rozhraní je kódováno v náčrtu Arduino a poté odesláno do pfodApp při prvním připojení, kde je uloženo do mezipaměti pro opakované použití a aktualizace. Grafické zobrazení je postaveno na kreslících primitivách. Podívejte se na vlastní ovládací prvky Arduino pro Android, kde najdete návod, jak vytvořit vlastní ovládací prvky. Soubory Thermometer, RHGauge a Button obsahují příkazy kreslení pro tyto položky.

Poznámka: Žádné, pokud je tento displej integrován do pfodApp. Celý displej je zcela řízen kódem ve vaší skici Arduino

Metoda sendDrawing_z () ve skice lp_BLE_TempHumidity_R3.ino definuje uživatelské rozhraní.

void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // pozadí je výchozí BÍLÉ, pokud je vynecháno, tj. start (50, 60); parser.sendRefreshAndVersion (30 000); // každých 30 sekund znovu požádat o dwg toto je ignorováno, pokud není nastavena žádná verze analyzátoru // stisknutím výše uvedených tlačítek vynutíte aktualizaci zobrazení dwgs.touchZone (). cmd ('u'). size (50, 39).send (); dwgs.pushZero (35, 22, 1,5); // přesun nuly do středu dwg na 35, 22 a měřítko 1,5krát rhGauge.draw (); // nakreslete ovládací prvek dwgs.popZero (); dwgs.pushZero (18, 33); // přesun nuly do středu dwg na 18, měřítko 33 je 1 (výchozí) teploměr.draw (); // nakreslete ovládací prvek dwgs.popZero ();

dwgs.pushZero (12,5, 43, 0,7); // přesun nuly do středu dwg na 12,5, 43 a měřítko 0,7

hrs8PlotButton.draw (); // nakreslete ovládací prvek dwgs.popZero (); dwgs.pushZero (37,5, 43, 0,7); // přesun nuly do středu dwg na 37,5, 43 a měřítko o 0,7 dní1PlotButton.draw (); // nakreslete ovládací prvek dwgs.popZero ();

dwgs.pushZero (12,5, 54, 0,7); // posunutí nuly do středu dwg na 12,5, 54 a měřítko 0,7

days3PlotButton.draw (); // nakreslete ovládací prvek dwgs.popZero (); dwgs.pushZero (37,5, 54, 0,7); // přesun nuly do středu dwg na 37,5, 54 a měřítko o 0,7 dne10PlotButton.draw (); // nakreslete ovládací prvek dwgs.popZero (); dwgs.end (); }

Příkazy pushZero mění původ a měřítko pro kreslení další komponenty. To vám umožní snadno změnit velikost a umístění tlačítek a měřidel.

Při prvním připojení trvá úvodní zobrazení 5 nebo 6 sekund, než se načte ~ 800 bajtů, které definují zobrazení. pfodApp ukládá do mezipaměti displej, takže budoucí aktualizace stačí odeslat změny, pozice měřidel a hodnoty. Tyto aktualizace zasílají 128 bajtů potřebných k aktualizaci displeje jen několik sekund.

Na displeji je definováno pět (5) aktivních dotykových zón. Každé tlačítko má v metodě draw () definováno jedno, takže kliknutím na něj otevřete příslušný graf a horní polovina obrazovky je nakonfigurována jako třetí dotyková zóna.

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

Když kliknete na obrazovku nad tlačítky, do vašeho náčrtu se odešle příkaz 'u' dwg, aby vynutil nové měření a aktualizaci obrazovky. Normálně po připojení probíhá aktualizace pouze každých 30 sekund. Každé kliknutí nebo obnovení výkresu vynutí nové měření. Odpověď z náčrtu Arduino na pfodApp je zpožděna, dokud není dokončeno nové měření (~ 25 mS), aby bylo možné v aktualizaci odeslat nejnovější hodnotu.

Skica Arduino

Skica Arduino, lp_BLE_TempHumidity_R3.ino, je vylepšenou verzí ukázkové skici použité v Části 1. Skica lp_BLE_TempHumidity_R3.ino nahrazuje nabídku kresbou zobrazenou výše. Přidává také podporu senzorů lp_Si7021 a datová pole pro ukládání 10minutových a hodinových historických měření.

Hlavní komplikací skici lp_BLE_TempHumidity_R3.ino je zvládnutí odeslání dat vykreslení. Při provádění měření readRHResults () zpracovává shromažďování výsledků a jejich ukládání do historických polí. Pole jsou dlouhá 120, ale když jsou data odeslána, prvních 30 datových bodů je pro v jemnějším časovém intervalu.

Při odesílání 200 bodů lichého grafu k zobrazení je třeba se postarat o několik bodů:-

  1. Každý datový bod je ~ 25 bajtů dlouhý, v textovém formátu CSV. 150 bodů je tedy 3750 bajtů dat. Třída lp_BLESerial má vyrovnávací paměť 1536 bajtů, z nichž 1024 je dostatečně velké pro největší zprávu pfod. Dalších 512 bajtů je vyhrazeno pro odesílání dat. Jakmile historická data zaplní 512 bajtů, odesílání dalších dat se zpozdí, dokud není v mezipaměti místo.
  2. Aby nedocházelo ke zpomalení aktualizací hlavního zobrazení, jsou data vykreslování odesílána pouze při zobrazení obrazovky vykreslování. Jakmile se uživatel přepne zpět na hlavní obrazovku, odesílání dat vykreslení se pozastaví. Odesílání dat grafu se obnoví, když uživatel kliknutím na tlačítko vykreslení znovu zobrazí graf.
  3. Historické zápletky začínají od 0 (nyní) a jdou v čase zpět. Pokud od zobrazení posledního grafu neproběhlo žádné nové měření, předchozí data, která již byla stažena, se okamžitě zobrazí znovu. Pokud existuje nové měření, přidá se k předchozím datům vykreslení.
  4. Když je monitor poprvé zapnut, neexistují žádné historické hodnoty a 0 je uložena v poli jako neplatná hodnota. Když je zobrazen graf, neplatné hodnoty jsou přeskočeny, což má za následek kratší graf.

Celsia a Fahrenheita

Skica lp_BLE_TempHumidity_R3.ino zobrazuje a vykresluje data ve stupních Celsia. Chcete -li převést výsledky na Fahrenheita, nahraďte všechny výskyty

parser.print (sensor. Temp_RawToFloat (..

s

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

A nahradit symbol unicode degC v Octal / 342 / 204 / 203 symbolem degF / 342 / 204 / 211

pfodApp zobrazí jakýkoli Unicode, který můžete zobrazit v mobilu.

Další podrobnosti najdete v části Používání znaků jiných než ASCII v Arduinu. Změňte také nastavení MIN_C, MAX_C v teploměru.h. Nakonec upravte limity vykreslování, jak chcete, např. změna | Teplota C ~ 32 ~ 8 ~ ° C |

říct

| Teplota F ~ 90 ~ 14 ~ ° F |

Krok 4: Měření napájecího proudu

Měření napájecího proudu
Měření napájecího proudu

Pomocí knihovny lp_Si7021 přispívá i měření teploty/vlhkosti každých 10 sekund k průměrnému napájecímu proudu pouze ~ 1uA, takže hlavním faktorem napájecího proudu a potažmo životnosti baterie je proud používaný reklamou BLE a připojením a přenosem dat.

Připojte desku teploty/vlhkosti k programátoru popsanému v části 1, jak je uvedeno výše.

Když jsou solární články a baterie odpojeny, Vin a Gnd jsou připojeny k Vdd a Gnd programátoru (žlutý a zelený vodič) a SWCLK a SWDIO jsou připojeny k Clk a SIO desky záhlaví programátoru (modrý a růžový vodič)

Nyní můžete naprogramovat NanoV2 a měřit napájecí proud, jak je popsáno v části 1.

Nainstalujte knihovnu Si7021 s nízkým výkonem z tohoto souboru zip, lp_Si7021.zip a nainstalujte knihovnu pfodParser a rozbalte lp_BLE_TempHumidity_R3.zip do adresáře skic Arduino a naprogramujte desku Temp/Humditiy s lp_BLE_TempHumidity_R3.ino

Jak bylo uvedeno výše, přínos senzoru je <1uA, průměr, při nejvyšší rychlosti měření použité v tomto projektu, takže parametry BLE reklamy a připojení jsou určujícím faktorem pro životnost baterie.

BLE reklama a parametry připojení, které ovlivňují aktuální spotřebu, jsou: -Tx Power, Advertising Interval, Max a Min Connection Intervaly a Slave Latency.

Poznámka: Pomocí výše uvedených zapojení jsou v napájení dva (2) regulátory, jeden na desce NanoV2 přes Vin a MAX8881 na napájení programátoru. To znamená, že naměřené napájecí proudy budou o ~ 5uA vyšší než skutečné díky druhému regulátoru. Níže uvedené hodnoty jsou naměřené proudy mínus těchto 5uA navíc.

Tx Power

Tx Účinky napájení dodávají proud jak při připojení, tak při reklamě (nepřipojeno). Tento projekt využívá nastavení maximálního výkonu (+4) a poskytuje nejlepší dosah a největší odolnost proti rušení pro nejspolehlivější připojení. Ke změně nastavení výkonu můžete použít metodu lp_BLESerial setTxPower (). Platné hodnoty jsou při zvyšování výkonu -40, -30, -20, -16, -12, -8, -4, 0 +4. Než zavoláte setTxPower (), musíte zavolat metodu lp_BLESerial begin (). Viz skica lp_BLE_TempHumidity_R3.ino.

Můžete experimentovat se snížením výkonu Tx, ale kompromisem je kratší dosah a více výpadků připojení kvůli rušení. V tomto projektu je Tx Power ponechán na výchozí hodnotě +4. Jak uvidíte níže, i při tomto nastavení je stále možný velmi nízký napájecí proud.

Interval reklamy

Pokud pro dané Tx napájení neexistuje připojení, nastaví reklamní interval průměrnou aktuální spotřebu. Doporučený rozsah je 500 až 1 000 mS. Zde bylo použito 2000 mS. Kompromisem je, že delší reklamní intervaly znamenají, že je pro váš mobil pomalejší najít zařízení a nastavit připojení. Interně jsou reklamní intervaly nastaveny v násobcích 0,625 mS v rozsahu 20 mS až 10,24 s. Metoda lp_BLESerial setAdvertisingInterval () pro pohodlí bere jako argument mS. Pro reklamní interval +4 TxPower a 2000 mS byla aktuální spotřeba ~ 18uA. U reklamního intervalu 1000 mS to bylo ~ 29uA. Rev 2 používal reklamní interval 2 000 mS, ale to mělo za následek pomalé připojení. Rev 3 byl změněn na reklamní interval 1 000 mS, aby byla připojení rychlejší.

Max. A min. Intervaly připojení

Jakmile je připojení navázáno, interval připojení určuje, jak často mobil kontaktuje zařízení. Lp_BLESerial setConnectionInterval () vám umožňuje nastavit doporučené maximum a min. Mobil však určuje, jaký je vlastně interval připojení. Pro pohodlí jsou argumenty setConnectionInterval () v mS, ale interně jsou intervaly připojení násobkem 1,25 mS, v rozsahu 7,5 mS až 4 s.

Výchozí nastavení je Interval připojení (100, 150), tj. Min. 100 mS až max. 150 mS. Zvýšení těchto hodnot snižuje napájecí proud při připojení, ale kompromisem je pomalejší přenos dat. Každá aktualizace obrazovky trvá přibližně 7 zpráv BLE, zatímco celých 36 hodin 10minutového měření trvá přibližně 170 zpráv BLE. Prodloužení intervalů připojení tedy zpomalí aktualizace obrazovky a zobrazí se graf.

Třída lp_BLESerial má vyrovnávací paměť pro odesílání 1536 bajtů a z této vyrovnávací paměti odesílá pouze jeden blok o velikosti 20 bajtů, každý maximální interval připojení, aby se zabránilo zaplavení spojení BLE daty. Také při odesílání dat vykreslování skica odesílá data pouze do doby, než 512 bytů čeká na odeslání, a poté zpožďuje odesílání dalších dat, dokud nebudou odeslána některá data. Tím se zabrání zaplavení vyrovnávací paměti pro odesílání. Toto omezování odesílání činí přenos dat do mobilu spolehlivým, ale není optimalizováno pro maximální propust.

V tomto projektu byly ponechány intervaly připojení jako výchozí hodnoty.

Latence otroků

Pokud nejsou k dispozici žádná data k odeslání na mobilní zařízení, může zařízení volitelně ignorovat některé zprávy o připojení z mobilního telefonu. To šetří energii Tx a napájecí proud. Latence Slave je počet zpráv o připojení, které se mají ignorovat. Výchozí hodnota je 0. Ke změně tohoto nastavení lze použít metodu lp_BLESerial setSlaveLatency ().

Výchozí latence slave 0 dávala ~ 50uA napájecí proud, ignorování aktualizací obrazovky každých 30 sekund, ale včetně zpráv keepAlive velmi 5 sekund. Nastavení Slave latence na 2 poskytlo průměrný připojený napájecí proud ~ 25uA. Nastavení Slave latence 4 dávalo ~ 20uA. Vyšší nastavení nezdálo se snížení napájecího proudu, takže bylo použito nastavení Slave Latency 4.

Když je pfodApp připojen, každých 30 sekund požaduje aktualizaci displeje. To vynutí měření senzoru a odešle zpět data k aktualizaci grafického zobrazení. Tato aktualizace má za následek dalších ~ 66uA po dobu 2 sekund každých 30 sekund. To je v průměru 4,4uA za 30 sekund. Přidáním k 20uA získáte průměrný napájecí proud připojení ~ 25uA

Krok 5: Celkový napájecí proud a životnost baterie

Při použití výše uvedených nastavení, jak je uvedeno v lp_BLE_TempHumidity_R3.ino, celkový napájecí proud při připojení a aktualizace displeje každých 30 sekund, přibližně 25uA. Pokud není připojeno, je to přibližně 29uA.

Pro výpočet životnosti baterie se předpokládá trvalý odběr proudu ~ 29uA.

Různé baterie mají rozdílné kapacity a napěťové charakteristiky. Zde uvažované baterie jsou knoflíkové články CR2032, CR2450 (N), 2 x AAA alkalické, 2 x AAA lithiové a LiPo.

Shrnutí baterie

Pokud používáte Solar Assist, přidejte k těmto údajům o výdrži baterie 50% (za předpokladu 8 hodin denního světla)

Poznámka: 22uF kondenzátor LowESR (C1), kromě integrovaného kondenzátoru NanoV2 22uF, ukládá proud solárních článků a dodává jej pro proudové impulsy TX. Jinak baterie dodává část proudu TX. Tento extra 22uF LowESR přidává asi 10% proudu baterie, když solární článek není zdrojem, ale také prodlužuje životnost baterie kompenzací rostoucího vnitřního odporu baterie, když baterie dosáhne konce své životnosti. Níže uvedená měření byla provedena BEZ přídavného kondenzátoru 22uF.

CR2032 - 235mAHr - životnost baterie 10 měsíců CR2450 (N) - 650mAHr (540mAHr) - životnost baterie 2,3 roku (2 roky) 2 x AAA alkalické - 1250mAHr - životnost baterie 3,8 let2 x AAA lithium - 1200mAHr - životnost baterie 4,7 roku LiPo dobíjecí - nedoporučuje se kvůli vysokému samovybíjení.

CR2032

Tento knoflíkový článek má kapacitu typicky 235mAHr (baterie Energizer), jmenovité napětí 3V a určené vybíjecí napětí 2V. To znamená výdrž baterie 8 100 hodin nebo ~ 0,9 roku. Vnitřní odpor článku se však zvyšuje, když baterie dosáhne konce životnosti, a proto nemusí být schopna poskytovat špičkové proudové impulzy Tx. Ke snížení tohoto účinku lze použít větší napájecí kondenzátor, ale řekněme životnost 10 měsíců.

CR2450 (N)

Tento knoflíkový článek má kapacitu typicky 620mAHr (540mAHr pro CR2450N), jmenovité napětí 3V a určené vybíjecí napětí 2V. To znamená výdrž baterie 22, 400 hodin nebo ~ 2 roky 6 m (18 600 hodin ~ 2 roky 2 m pro CR2450N). Vnitřní odpor článku se však zvyšuje, když baterie dosáhne konce životnosti, a proto nemusí být schopna poskytovat špičkové proudové impulzy Tx. Ke snížení tohoto účinku lze použít větší napájecí kondenzátor, ale řekněme životnost 2 roky 4 m (2 roky N).

Poznámka: Verze CR2450N má silnější břit, který pomáhá zabránit nesprávné instalaci do držáku CR2450N. Do držáku CR2450 můžete vložit buňku CR2450N a CR2450, ale do držáku CR2450N nemůžete vložit buňku CR2450

2 x AAA alkalické články

Tyto baterie mají kapacitu přibližně 1250mAHr (Energizer Battery) pro velmi nízké proudy, jmenovité napětí 2x1,5V = 3V a určené vybíjecí napětí 2x0,8V = 1,6V. Toto specifikované vybíjecí napětí je však nižší než provozní napětí snímače Si7021 (1,9 V), takže baterii lze použít pouze do ~ 1 V každého. To snižuje kapacitu přibližně o 10% až 15%, tj. ~ 1000mAHr.

To znamená výdrž baterie 34, 500 hodin nebo ~ 4 roky. Vnitřní odpor článku se však zvyšuje, když baterie dosáhne konce životnosti, a proto nemusí být schopna poskytovat špičkové proudové impulsy Tx. Ke snížení tohoto účinku lze použít větší napájecí kondenzátor, ale řekněme životnost 3 roky a 10 m. Poznámka Alkalické baterie mají samovybíjení 2% až 3% za rok.

2 x lithiové články AAA

Tyto baterie mají kapacitu přibližně 1200mAHr (Energizer Battery), jmenovité napětí 2x1,7V = 3,4V, při nízkých proudech a vybité napětí 2x1,4V = 2,4V. To znamená výdrž baterie 41, 400 hodin nebo 4 roky 8 m.

Dobíjecí baterie LiPo

Tyto baterie přicházejí v různých kapacitách od 100mAHr do 2000mAHr, v plochých formátech, a mají nabité napětí 4,2V a vybité napětí> 2,7V. Mají však vysoké samovybíjení 2% -3%/měsíc (tj. 24% až 36% za rok), a proto nejsou pro tuto aplikaci tak vhodné jako ostatní baterie.

Krok 6: Alternativy napájení - solární asistent, pouze baterie, pouze sluneční

Alternativy dodávky - sluneční pomoc, pouze baterie, pouze sluneční
Alternativy dodávky - sluneční pomoc, pouze baterie, pouze sluneční
Alternativy dodávky - sluneční pomoc, pouze baterie, pouze sluneční
Alternativy dodávky - sluneční pomoc, pouze baterie, pouze sluneční
Alternativy dodávky - sluneční pomoc, pouze baterie, pouze sluneční
Alternativy dodávky - sluneční pomoc, pouze baterie, pouze sluneční
Alternativy dodávky - sluneční pomoc, pouze baterie, pouze sluneční
Alternativy dodávky - sluneční pomoc, pouze baterie, pouze sluneční

Baterie plus solární asistent

Výše uvedená konstrukce využívá napájení Battery plus Solar Assist. Když solární panely generují více napětí, než je napětí baterie, budou solární články napájet monitor, čímž se prodlouží životnost baterie. Životnost baterie lze obvykle prodloužit o dalších 50%.

Použité solární panely jsou malé, 50 mm x 30 mm, levné, ~ 0,50 $ a nízký výkon. Jsou to nominálně 5V panely, ale ke generování 5V potřebují plné přímé sluneční světlo. V tomto projektu jsou dva panely zapojeny do série, takže umístění monitoru blízko okna, mimo přímé slunce, stačí k výměně baterie. I dobře osvětlená místnost nebo stolní lampa stačí na to, aby solární články generovaly> 3,3 V při> 33uA a přebíraly energii z baterie.

Byl zkonstruován jednoduchý testovací panel, který určil, kde by mohl být monitor teploty / vlhkosti umístěn mimo slunce a stále by byl napájen solární energií. Jak vidíte z výše uvedené fotografie, dva panely připojené k rezistoru 100K produkují 5,64V přes 100K, tj. 56uA proud při 5,64V. To je více než dostatečné převzetí napájení monitoru z baterie. Jakákoli hodnota napětí vyšší než nominální napětí baterie 3 V znamená, že místo baterie budou monitor napájet solární články.

Dvě diody v obvodu sledování vlhkosti teploty od sebe navzájem izolují solární články a baterie a chrání je před propojením v opačné polaritě. Rezistor 10V 1W zener a 470R chrání palubní regulátor NanoV2 před přepětím ze dvou solárních článků na plném slunci, zvláště pokud se místo 5V použijí články 12V. Při normálním provozu při <5V odběr 10V zener pouze ~ 1uA.

Pouze baterie

Pro napájení pouze z baterie vynechejte R1, D1 a D3 a solární články. Pokud nechcete ochranu proti přepólování, můžete také nahradit D1 kusem drátu.

Pouze sluneční

Napájení monitoru pouze ze solárních článků, bez baterie, vyžaduje jiný napájecí obvod. Problém je v tom, že zatímco monitor bude pracovat na 29uA, při zapnutí odebírá nRF52 ~ 5mA po dobu 0,32 s. Výše uvedený obvod (verze pdf) drží regulátor MAX8881 vypnutý, dokud se vstupní kondenzátory, 2 x 1000uF, nenabijí až na 4,04V. Poté MAX6457 uvolní vstup MAX8881 SHDN pro napájení nRF52 (NanoV2). 2 x 1000uF kondenzátory dodávají potřebný spouštěcí proud.

Díky tomu se monitor zapne, jakmile bude dostatek solární energie, a bude udržován v chodu na 29uA.

Krok 7: Závěr

Tento tutoriál představil bateriový/solární monitor teploty vlhkosti jako příklad velmi nízkoenergetického BLE projektu v Arduinu pro čip nRF52832. Napájecí proudy ~ 29uA jsou dosaženy vyladěním parametrů připojení. Výsledkem byla životnost knoflíkové baterie CR2032 přesahující 10 měsíců. Delší pro knoflíkové články a baterie s vyšší kapacitou. Přidáním dvou levných solárních článků se snadno prodlouží životnost baterie o 50% a více. K napájení monitoru ze solárních článků stačí jasné osvětlení místnosti nebo stolní lampa.

Byl představen speciální napájecí obvod, který umožňuje provoz monitoru čistě ze solárních článků s nízkou kapacitou.

Bezplatný pfodDesigner vám umožňuje navrhovat nabídky/podnabídky, vykreslovat podle data/času a zaznamenávat data a poté pro vás generovat skicu Arduino s nízkým výkonem. Zde bylo vlastní rozhraní kódováno pomocí primitiv kreslení pfodApp. Spojení s pfodApp zobrazí uživatelské rozhraní a aktualizuje hodnoty, když monitor používá ~ 29uA

Není vyžadováno žádné programování pro Android. pfodApp to všechno zvládá.

Doporučuje: