Tartalomjegyzék:
- 1. lépés: Alkatrész kiválasztása
- 2. lépés: Építés
- 3. lépés: Kód - Kis fogyasztású érzékelő könyvtár, felhasználói felület és Arduino vázlat
- 4. lépés: A tápáram mérése
- 5. lépés: Teljes tápáram és akkumulátor élettartam
- 6. lépés: Alternatívák ellátása - Solar Assist, Csak akkumulátor, Csak Solar
- 7. lépés: Következtetés
Videó: Könnyű, nagyon alacsony teljesítményű BLE az Arduino 2. részében - Hőmérséklet/páratartalom monitor - Rev 3: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Frissítés: 2020. november 23. - 2 x AAA elem első cseréje 2019. január 15. óta, azaz 22 hónap 2xAAA alkáli frissítéssel. adat
Frissítés: 2019. március 24. - Az lp_BLE_TempHumidity 2. verziója, további ábrázolási lehetőségek és i2c_ClearBus
Ez az oktatható, nagyon alacsony teljesítményű hőmérséklet -páratartalom -monitor a 2. rész a 3 -ból.
1. rész - Nagyon kis teljesítményű BLE eszközök egyszerűvé tétele az Arduino burkolatokkal Az Arduino beállítása az nRF52 kis teljesítményű eszközök kódolására, a programozó modul és a tápáram mérése. Ezenkívül kiterjed a speciális kis fogyasztású időzítőkre és összehasonlítókra, valamint a visszakapcsolt bemenetekre, valamint a pfodApp használatával az nRF52 eszközhöz való csatlakozáshoz és vezérléshez.
2. rész - Egy nagyon alacsony energiafogyasztású hőmérséklet -páratartalom -monitor, ez a Redbear Nano V2 modul és egy Si7021 hőmérséklet / páratartalom -érzékelő használatával lefedi az alacsony fogyasztású akkumulátor / szolár monitor felépítését. Ez magában foglalja a Si7021 könyvtár alacsony energiaigényűre történő módosítását, a BLE eszköz beállítását, hogy csökkentse a jelenlegi <25uA fogyasztást, és egyedi hőmérséklet/páratartalom kijelzőt tervez a mobiljához.
3. rész - A Redbear Nano V2 csereborítások más nRF52 alapú modulokat használnak a Nano V2 helyett. Ez magában foglalja az ellátási alkatrészek kiválasztását, a konstrukciót, az nRF52 chip programozási védelmének eltávolítását, az NFC csapok használatát normál GPIO -ként, és egy új nRF52 kártya meghatározását az Arduino -ban.
Ez az oktatóanyag az 1. rész gyakorlati alkalmazása, nagyon kis teljesítményű BLE -eszközök építése, amelyek megkönnyítették az Arduino segítségével egy nagyon alacsony teljesítményű BLE hőmérséklet- és páratartalom -figyelő felépítésével. A monitor évekig működik Coin Cell vagy 2 x AAA elemekkel, napelemes asszisztenssel még tovább. Ez az oktatóanyag bemutatja a BLE paraméterek hangolását az alacsony energiafogyasztás érdekében, valamint azt, hogy miként táplálhatja a készüléket akkumulátorról VAGY akkumulátorról + csak szoláris vagy szoláris.
Az aktuális hőmérséklet és páratartalom megjelenítése mellett a monitor tárolja az utolsó 36 óra 10 perces leolvasást és az utolsó 10 nap óránkénti leolvasását. Ezeket az Android mobilján lehet diagramozni, és a naplófájlba mentett értékeket. Nincs szükség Android programozásra, a pfodApp mindezt kezeli. Az Android kijelzőjét és diagramját teljesen az Arduino vázlata vezérli, így igény szerint testreszabhatja.
A Redbear Nano V2 kártyát az nRF52832 BLE komponenshez, a Sparkfun Si7021 kitörőtáblát a hőmérséklet / páratartalom érzékelőhöz használják. A Si7021 készülékkel módosított, kis fogyasztású könyvtárat használnak. Egy kis NYÁK -ot terveztek a NanoV2 és az alkatrészek befogadására. Mivel azonban nincsenek felületre szerelt alkatrészek, ezt ugyanolyan könnyen felépítheti a vero táblára. Három tápegység -változat szerepel. i) Akkumulátor és napelemes asszisztens, ii) Csak akkumulátor, iii) Csak napelem. A Csak napelem opciónak nincs akkumulátortárolója, ezért csak akkor működik, ha van némi fény. Elég egy világos szobafény vagy asztali lámpa.
Vázlat
Ez a projekt 4 relatív független részből áll:-
- Alkatrész kiválasztása és felépítése
- Kód - Kis fogyasztású érzékelő könyvtár, felhasználói felület és Arduino vázlat
- A tápfeszültség és az akkumulátor élettartamának mérése
- Ellátási alternatívák - Solar Assist, Only Battery, Solar Only
1. lépés: Alkatrész kiválasztása
Alkatrész kiválasztása
Amint azt az 1. rész említette-Az igazán kis teljesítményű megoldás megszerzésének trükkje az, hogy az idő nagy részében semmit sem teszünk, minimalizáljuk az áramot a bemenetek külső fel-/lehúzó ellenállásain keresztül, és nincsenek extra alkatrészeink. Ez a projekt ezeket a trükköket fogja használni, hogy kis teljesítményű megoldást kapjon.
Az nRF52832 komponens
Az nRF52832 chip 1,7 V és 3,6 V közötti tápegységgel működhet (abszolút maximális feszültség 3,9 V). Ez azt jelenti, hogy a chipet közvetlenül egy gombelemről vagy 2 x AAA elemről táplálhatja. Érdemes azonban feszültségszabályozót hozzáadni, hogy megvédje a chipet a túlfeszültségtől. Ez az extra alkatrész energiaköltséggel jár, de a NanoV2 kártya esetében a fedélzeti szabályozó, a TLV704 kevesebb, mint 5,5uA-t fogyaszt, általában csak 3,4uA-t. Ez a kis extra energiafelhasználás védelmet biztosít akár 24 V -os tápbemenetek számára.
A Si7021 komponens
Maga a Si7021 érzékelő jellemzően <1uA -t vesz fel, ha nem végez mérést, azaz készenléti állapotban, és akár 4 mA -ig, amikor az adatokat I2C -n keresztül továbbítja. Mivel nem végezzük a mérést folyamatosan, a 4mA nem az átlagos tápáram jelentős része. Ha nagyon leolvas egy 30 másodpercet, akkor kevesebb, mint 1uA -t ad hozzá az átlagos tápáramhoz, lásd a tápáram mérését alább.
Két könnyen elérhető Si7021 törőlap található. Egy az Adafruit -tól és egy a Sparkfun -tól. Egy gyors pillantás a két táblára azt mutatja, hogy az Adafruit tábla sokkal több összetevőt tartalmaz, mint a Sparkfun tábla, így hajlamos lenne a Sparkfun táblát választani. Ha megnézzük az egyes kártyák vázlatait, akkor a Sparkfun tábla csak a csupasz érzékelő és két 4k7 felhúzó ellenállás, míg az Adafruit tábla rendelkezik beépített, MIC5225 szabályzóval, amely általában 29uA-t vesz fel. Ez akkor jelentős, ha az áramkör többi részén az összes áram <30uA. Mivel már rendelkezünk szabályzóval az nRF52832 chiphez, erre az extra komponensre nincs szükség, és a Si7021 a 3,3 V -os tápegységről táplálható. Tehát ez a projekt a Sparkfun Si7021 törőlapját fogja használni.
minimalizálja az áramot a bemenetek külső fel-/lehúzó ellenállása révén
A 4K7 I2C felhúzó ellenállások nem különösebben nagy értékűek, és alacsonyan húzva 0,7 mA -t húznak. Ez problémát jelentene, ha egy kapcsolóbemeneten lennének, amelyet hosszú ideig földeltek. Ebben a projektben azonban az ellenállásokon keresztül érkező áram minimálisra csökken, ha csak ritkán és csak rövid ideig használja az I2C interfészt. Az I2C vezetékek legtöbbször nincsenek használatban, és magas / háromállapotúak, így ezeken az ellenállásokon nem folyik áram.
2. lépés: Építés
A projekt egy kis NYÁK -ra épül, de mivel nincsenek SMD komponensek, ugyanilyen könnyen felépíthető a vero board segítségével. A NYÁK -ot a pcbcart.com gyártotta ezekből a Gerber fájlokból, TempHumiditySensor_R1.zip. A NYÁK elég általános célú ahhoz, hogy más BLE projektekhez is használható legyen.
A vázlat a fent látható. Itt egy pdf verzió.
Alkatrész lista
Hozzávetőleges egységköltség 2018. decemberben, ~ 62 USD, a szállítás és az 1. rész programozója nélkül
- Redbear NanoV2 ~ 17 USD
- Sparkfun Si7021 kitörőtábla ~ 8 USD
- 2 x 53mm x 30mm 0,15W 5V napelem pl. Overfly ~ 1,10 USD
- 1 x NYÁK TempHumiditySensor_R1.zip ~ 25 USD 5 kedvezményért www.pcbcart.com VAGY Vero tábla (szalag réz), pl. Jaycar HP9540 ~ 5 AUD
- 2 x 1N5819 schottky dióda pl. Digikey 1N5819FSCT-ND ~ 1 USD
- 1 x 470R 0,4W 1% -os ellenállás pl. Digikey BC3274CT-ND ~ 0,25 USD
- 6 x 6 tűs hüvelyes fejléc, pl. Sparkfun PRT-00116 ~ 1,5 USD
- női női ugró pl. Adafruit azonosító: 1950 ~ 2 USD
- 3mm x 12mm nylon csavarok, pl. Jaycar HP0140 ~ 3 AUD
- 3 mm x 12 mm -es nylon anyák, pl. Jaycar HP0146 ~ 3 AUD
- Scotch tartós rögzítőszalag Cat 4010 pl. az Amazon -tól ~ 6,6 USD
- AAA x 2 elemtartó, pl. Sparkfun PRT-14219 ~ 1,5 USD
- 2 db AAA 750mA alkáli elem, pl. Sparkfun PRT-09274 ~ US $ 1.0 Ezeknek az elemeknek> 2 évig kell tartaniuk. Az Energizer alkáli elemek nagyobb kapacitással rendelkeznek
- Műanyag doboz (ABS) 83 mm x 54 mm x 31 mm, pl. Jaycar HB6005 ~ 3 AUD
- pfodApp ~ 10 USD
- 1 x 22uF 63V alacsony ESR kondenzátor (opcionális) pl. Jaycar RE-6342 ~ 0,5 USD vagy Digikey P5190-ND ~ 0,25 USD
A konstrukció egyenesen előre halad. Az elemtartót és a napelemeket erős műanyag kétoldalas szalaggal rögzítik a műanyag dobozhoz.
Vegye figyelembe a Gnd összekötő vezetéket a CLK -tól a GND -ig a kész részben. Ezt a programozás UTÁN telepíti, hogy megakadályozza, hogy a CLK bemenet zajja az nRF52 chipet nagy áramú hibakeresési módba kapcsolja
3. lépés: Kód - Kis fogyasztású érzékelő könyvtár, felhasználói felület és Arduino vázlat
Töltse le az irányítószámot, lp_BLE_TempHumidity_R3.zip, és bontsa ki az Arduino Sketches könyvtárába. Ebből a zip fájlból telepítenie kell az lp_So7021 könyvtárat, és telepítenie kell a pfodParser könyvtárat is.
Kis fogyasztású érzékelő könyvtár, lp_Si7021
Mind az Adafruit, mind a Sparkfun támogató könyvtárakat biztosít a Si7021 érzékelő eléréséhez, azonban mindkét könyvtár nem alkalmas nagyon alacsony energiafogyasztásra. Mindketten késleltetést (25) használnak a kódban, hogy késleltessék az érzékelő leolvasását a mérés közben. Amint azt az 1. részben megjegyeztük, a késések gonoszak. Az Arduino késleltetés () csak a mikroprocesszort tartja áram alatt, miközben várja a késleltetés időtúllépését. Ez megsérti az alacsony teljesítményű BLE első szabályát, ne tegyen semmit az idő nagy részében. A csere lp_Si7021 könyvtár minden késleltetést lp_időzítőkkel helyettesít, amelyek alvó állapotba hozzák a mikroprocesszort, miközben az érzékelő befejezi a mérést.
Mennyi különbség van az lp_Si7021 könyvtárban? Az eredeti SparkFun Si7021 támogatási könyvtár használatával, és másodpercenként egy olvasással, soros nyomatok nélkül, ~ 1,2mA átlag. A Sparkfun könyvtár lecserélése az lp_Si7021 könyvtárra csökkenti az átlagos áramot ~ 10uA -ra, azaz 100 -szor kevesebbre. Ebben a projektben a leggyorsabb mérési sebesség 30 másodpercenként egyszer van, amikor a mobil csatlakoztatva van, ami az átlagos érzékelőáramot kisebb, mint 1uA. Ha nincs BLE csatlakozás, a mérési sebesség 10 percenként egyszer történik, és az átlagos érzékelő tápáram elhanyagolható.
Felhasználói felület
Fent a főképernyő és a 10 napos órai előzmények nagyított nézete látható. A rajzok két ujjal nagyíthatók és pásztázhatók mindkét irányban.
A felhasználói felületet az Arduino vázlat kódolja, majd elküldi a pfodApp -nak az első kapcsolaton, ahol a gyorsítótárban van ismételt használatra és frissítésekre. A grafikus kijelző primitív rajzokból épül fel. Tekintse meg az Egyéni Arduino vezérlők Androidra című útmutatót a saját vezérlők létrehozásáról. A Hőmérő, az RHGauge és a Button fájlok tartalmazzák az adott elemek rajzolási parancsait.
Megjegyzés: Nincs, ha ez a kijelző be van építve a pfodApp -ba. A teljes kijelzőt az Arduino -vázlat kódja szabályozza
A sendDrawing_z () metódus az lp_BLE_TempHumidity_R3.ino vázlatban határozza meg a felhasználói felületet.
void sendDrawing_z () {dwgs.start (50, 60, dwgs. WHITE); // a háttér alapértelmezés szerint FEHÉR, ha kihagyják, azaz start (50, 60); parser.sendRefreshAndVersion (30000); // kérje újra a dwg-t 30 másodpercenként ezt figyelmen kívül hagyja, ha nincs beállítva elemző verzió // érintse meg a fenti gombokat a frissítések kényszerítéséhez dwgs.touchZone (). cmd ('u'). size (50, 39).send (); dwgs.pushZero (35, 22, 1,5); // mozgassa a nullát a dwg középpontjába 35 -re, 22 -re, és 1,5 -szeres skálával rhGauge.draw (); // rajzoljuk a vezérlőt dwgs.popZero (); dwgs.pushZero (18, 33); // mozgassa a nullát a dwg közepére 18 -ra, a 33 skála 1 (alapértelmezett) hőmérő.draw (); // rajzoljuk a vezérlőt dwgs.popZero ();
dwgs.pushZero (12,5, 43, 0,7); // mozgassa a nullát a dwg közepére 12,5 -re, 43 -ra és skálázza 0,7 -el
hrs8PlotButton.draw (); // rajzoljuk a vezérlőt dwgs.popZero (); dwgs.pushZero (37,5, 43, 0,7); // mozgassa a nullát a dwg közepére 37,5 -re, 43 -ra és skálázza 0,7 nappal1PlotButton.draw (); // rajzoljuk a vezérlőt dwgs.popZero ();
dwgs.pushZero (12,5, 54, 0,7); // mozgassa a nullát a dwg közepére 12,5 -re, 54 -re és skálázza 0,7 -el
days3PlotButton.draw (); // rajzoljuk a vezérlőt dwgs.popZero (); dwgs.pushZero (37,5, 54, 0,7); // mozgassa a nullát a dwg közepére 37,5 -re, 54 -re és skálázza 0,7 nappal10PlotButton.draw (); // rajzoljuk a vezérlőt dwgs.popZero (); dwgs.end (); }
A pushZero parancsok megváltoztatják a következő komponens rajzolásának eredetét és méretezését. Ez lehetővé teszi a gombok és a mérők méretének és helyzetének egyszerű megváltoztatását.
Az első csatlakozáskor a kezdeti kijelző 5 vagy 6 másodperc alatt tölti le a kijelzőt meghatározó ~ 800 bájtot. A pfodApp gyorsítótárazza a kijelzőt, így a jövőbeni frissítéseknek csak a változtatásokat, a pozíciókat és a leolvasásokat kell elküldeniük. Ezek a frissítések csak néhány másodpercet vesznek igénybe, hogy elküldjék a kijelző frissítéséhez szükséges 128 bájtot.
A kijelzőn öt (5) aktív érintőzóna van meghatározva. Minden gombnak van egy rajzi () metódusában meghatározott definíciója, így rákattintva megnyithatja a megfelelő grafikont, és a képernyő felső fele a harmadik érintési zóna
dwgs.touchZone (). cmd ('u'). méret (50, 39).send ();
Amikor a gombok feletti képernyőre kattint, az „u” dwg parancs elküldésre kerül a vázlatához, hogy új mérést és képernyőfrissítést kényszerítsen. Általában csatlakoztatáskor a frissítések csak 30 másodpercenként történnek. A rajz minden kattintása vagy frissítése új mérést kényszerít. Az Arduino vázlatból a pfodApp -ra adott válasz késik, amíg az új mérés befejeződik (~ 25mS), így a frissítés elküldhető a frissítésben.
Arduino vázlat
Az Arduino vázlat, az lp_BLE_TempHumidity_R3.ino, az 1. részben használt példa vázlatának továbbfejlesztett változata. Az lp_BLE_TempHumidity_R3.ino vázlat a menüt a fenti ábrával helyettesíti. Ezenkívül hozzáadja az lp_Si7021 szenzortámogatást és az adattömböket a 10 perces és óránkénti történelmi mérések tárolásához.
Az lp_BLE_TempHumidity_R3.ino vázlat fő szövődménye a nyomtatási adatok küldésének kezelése. A mérések során az readRHResults () kezeli az eredmények összegyűjtését és a történelmi tömbökbe mentését. A tömbök 120 hosszúak, de az adatok elküldésekor az első 30 adatpont finomabb időközönként van.
A 200 páratlan ábrázolási pont elküldésekor néhány pontra ügyelni kell:-
- Minden adatpont ~ 25 bájt hosszú, CSV szövegformátumban. Tehát 150 pont 3750 bájt adat. Az lp_BLESerial osztály 1536 bájtos pufferrel rendelkezik, amelyből 1024 elég nagy a legnagyobb pfod üzenethez. A többi 512 bájt az adatok küldésére van fenntartva. Miután az előzményadatok kitöltötték az 512 bájtot, a további adatok elküldése addig késik, amíg nincs hely a pufferben.
- Annak elkerülése érdekében, hogy a nyomtatási adatok lelassítsák a főképernyő frissítéseit, a nyomtatási adatok csak akkor kerülnek elküldésre, amikor a nyomtatási képernyő látható. Amint a felhasználó visszatér a főképernyőre, a nyomtatási adatok küldése szünetel. A nyomtatási adatok küldése folytatódik, amikor a felhasználó a nyomtatás gombra kattintva újra megjeleníti a diagramot.
- A történelmi cselekmények 0 -tól kezdődnek (most), és visszamennek az időben. Ha az utolsó diagram megjelenítése óta nem történt új mérés, akkor a korábban letöltött adatok azonnal újra megjelennek. Ha új mérés történik, akkor hozzáadódik a korábbi diagramadatokhoz.
- A monitor első bekapcsolásakor nincsenek történelmi leolvasások, és a 0 érvénytelen értékként kerül tárolásra a tömbökben. A diagram megjelenítésekor az érvénytelen értékek csak kihagyásra kerülnek, ami rövidebb görbét eredményez.
Celsius és Fahrenheit
Az lp_BLE_TempHumidity_R3.ino vázlat Celsius -ban jeleníti meg és ábrázolja az adatokat. Ha az eredményeket Fahrenheit -fokra szeretné konvertálni, cserélje ki a (z) összes előfordulását
parser.print (sensor. Temp_RawToFloat (..
val vel
parser.print (sensor. CtoF (sensor. Temp_RawToFloat (…
És cserélje le az Unicode degC szimbólumot az Octal / 342 / 204 / 203 -ban a degF szimbólumra / 342 / 204 / 211
A pfodApp megjeleníti a mobil által megjeleníthető Unicode -kódot.
További részletekért lásd: Nem ASCII karakterek használata Arduino-ban. Módosítsa a MIN_C, MAX_C beállításokat is a Hőmérőben. H. Végül tetszés szerint állítsa be a nyomtatási határokat, pl. változás | Hőmérséklet C ~ 32 ~ 8 ~ deg C |
mondani
| Hőmérséklet F ~ 90 ~ 14 ~ deg F |
4. lépés: A tápáram mérése
Az lp_Si7021 könyvtár használatával akár 10 másodpercenként végzett hőmérséklet/páratartalom mérés is csak ~ 1uA hozzájárul az átlagos tápáramhoz, így a tápáram és ezáltal az akkumulátor élettartamának fő tényezője a BLE hirdetési, kapcsolat- és adatátviteli áram.
Csatlakoztassa a hőmérséklet/páratartalom kártyát az 1. részben leírt programozóhoz a fentiek szerint.
Ha a napelemeket és az akkumulátorokat kihúzza, a Vin és a Gnd a programozó Vdd és Gnd (sárga és zöld vezetékei), az SWCLK és SWDIO pedig a programozó fejlécének Clk és SIO csatlakozójához (a kék és rózsaszín vezetékek) kapcsolódnak.
Most programozhatja a NanoV2 -t és mérheti a tápáramot az 1. részben leírtak szerint.
Telepítse a kis teljesítményű Si7021 könyvtárat ebből a zip fájlból, lp_Si7021.zip, és telepítse a pfodParser könyvtárat, és bontsa ki az lp_BLE_TempHumidity_R3.zip fájlt az Arduino sketches könyvtárába, és programozza be a Temp/Humditiy táblát lp_BLE_TempHumidity_R3.ino
Amint fentebb említettük, az érzékelő hozzájárulása <1uA, átlagos, a projektben használt legmagasabb mérési sebesség mellett, így a BLE hirdetési és csatlakozási paraméterek az akkumulátor élettartamának meghatározó tényezői.
A BLE hirdetési és csatlakozási paraméterek, amelyek befolyásolják az áramfogyasztást, a következők: -Tx Power, Advertising Interval, Max és Min Connection Intervals, és Slave Latency.
Megjegyzés: A fenti csatlakozók használatával két (2) szabályozó van a tápegységben, az egyik a NanoV2 kártyán a Vin segítségével, a MAX8881 pedig a programozó tápellátásán. Ez azt jelenti, hogy a mért tápáramok ~ 5uA -val magasabbak lesznek a ténylegesnél, a második szabályozó miatt. Az alábbiakban megadott értékek a mért áramok, mínusz ez az extra 5uA.
Tx teljesítmény
Tx A tápegység tápfeszültséget biztosít mind csatlakoztatáskor, mind reklámozáskor (nincs csatlakoztatva). Ez a projekt a maximális teljesítmény -beállítást (+4) használja, és a legjobb hatótávolságot és a legnagyobb zajállóságot biztosítja a legmegbízhatóbb kapcsolatokhoz. Az lp_BLESerial setTxPower () módszerrel módosíthatja a teljesítménybeállítást. Az érvényes értékek a növekvő teljesítményben -40, -30, -20, -16, -12, -8, -4, 0 +4. A setTxPower () hívása előtt meg kell hívnia az lp_BLESerial begin () metódust. Lásd az lp_BLE_TempHumidity_R3.ino vázlatot.
Kísérletezhet a Tx Power csökkentésével, de a kompromisszum rövidebb hatótávolságú, és több interferencia miatt megszakad a kapcsolat. Ebben a projektben a Tx Power marad az alapértelmezett, +4. Amint alább látni fogja, még ezzel a beállítással is nagyon alacsony tápáram lehetséges.
Reklám intervallum
Adott Tx teljesítmény esetén, ha nincs kapcsolat, a Reklám intervallum határozza meg az átlagos áramfogyasztást. Az ajánlott tartomány 500-1000 mS. Itt 2000mS -t használtak. A kompromisszum az, hogy a hosszabb hirdetési időközök azt jelentik, hogy a mobilja lassabban találja meg az eszközt és létesít kapcsolatot. Belsőleg a hirdetési időközök 0,625 mS többszörösei a 20mS és 10,24 mp közötti tartományban. Az lp_BLESerial setAdvertisingInterval () metódus az mS argumentumát használja a kényelem érdekében. A +4 TxPower és a 2000mS hirdetési intervallum esetében az áramfogyasztás ~ 18uA volt. 1000mS hirdetési időközönként ~ 29uA volt. A Rev 2 a 2000 mS hirdetési intervallumot használta, de ez lassú kapcsolatokat eredményezett. A 3. revízió 1000 mS hirdetési intervallumra változott, hogy gyorsabb legyen a kapcsolat.
Max és Min csatlakozási intervallumok
A kapcsolat létrejötte után a csatlakozási intervallum határozza meg, hogy a mobil milyen gyakran lép kapcsolatba az eszközzel. Az lp_BLESerial setConnectionInterval () segítségével beállíthatja a javasolt max és min értéket, azonban a mobil vezérli, hogy valójában mi a kapcsolódási intervallum. A kényelem érdekében a setConnectionInterval () argumentumai mS -ban vannak megadva, de belsőleg a csatlakozási időközök 1,25 mS többszörösei, 7,5 mS és 4 s között.
Az alapértelmezett beállítás a Ezen értékek növelése csökkenti a tápfeszültséget csatlakoztatás közben, de a kompromisszum az adatok lassabb továbbítása. A képernyő minden frissítése körülbelül 7 BLE üzenetet vesz igénybe, míg a teljes 36 óra 10 perces mérés körülbelül 170 BLE üzenetet vesz igénybe. Tehát a csatlakozási intervallumok növelése lelassítja a képernyőfrissítéseket és a diagram megjelenítését.
Az lp_BLESerial osztály 1536 bájtos küldési pufferrel rendelkezik, és csak egy 20 bájtos blokkot küld ebből a pufferből, minden egyes maximális csatlakozási intervallumban, hogy megakadályozza a BLE kapcsolat adatokkal való elárasztását. A tervadatok küldésekor is a vázlat csak addig küld adatokat, amíg 512 bájt várakozik az elküldésre, majd késlelteti a további adatok küldését, amíg bizonyos adatokat el nem küld. Ezzel elkerülhető a küldési puffer elárasztása. A küldések ilyen fojtása megbízhatóvá teszi az adatátvitelt a mobilra, de nincs optimalizálva a maximális átviteli sebességre.
Ebben a projektben a csatlakozási intervallumok maradtak alapértelmezett értékként.
Rabszolga késleltetése
Ha nincs adat a mobilra küldésre, az eszköz opcionálisan figyelmen kívül hagyhat néhány, a mobilról érkező csatlakozási üzenetet. Ez takarít meg Tx áramot és tápfeszültséget. A Slave Latency beállítás a figyelmen kívül hagyandó csatlakozási üzenetek száma. Az alapértelmezett érték az 0. Az lp_BLESerial setSlaveLatency () módszerrel módosíthatja ezt a beállítást.
A 0 alapértelmezett Slave Latency ~ 50uA tápfeszültséget adott, figyelmen kívül hagyva a képernyőfrissítéseket 30 másodpercenként, de a keepAlive üzeneteket is beleértve 5 másodpercig. A Slave Latency 2 értékre állítása átlagosan ~ 25uA csatlakoztatott tápáramot eredményezett. A 4 -es szolga késleltetési beállítás ~ 20uA volt. A magasabb beállítások nem csökkentették a tápáramot, ezért 4 -es Slave Latency beállítást használtak.
Csatlakozáskor a pfodApp 30 másodpercenként megjelenítési frissítést kér. Ez kényszeríti az érzékelő mérését, és adatokat küld vissza a grafikus kijelző frissítéséhez. Ez a frissítés extra ~ 66uA -t eredményez 2 másodpercenként 30 másodpercenként. Ez átlagosan 4.4uA 30 másodperc alatt. Ha ezt hozzáadjuk a 20uA -hoz, akkor az átlagos csatlakozási tápáram ~ 25uA
5. lépés: Teljes tápáram és akkumulátor élettartam
A fenti beállítások használatával, az lp_BLE_TempHumidity_R3.ino dokumentumban meghatározottak szerint, a teljes ellátási áram csatlakoztatáskor és a kijelző frissítése 30 másodpercenként, körülbelül 25uA. Ha nincs csatlakoztatva, akkor körülbelül 29uA.
Az akkumulátor élettartamának kiszámításához ~ 29uA folyamatos áramfelvételt feltételezünk.
Különböző akkumulátorok kapacitása és feszültsége eltérő. Az itt figyelembe vett elemek a CR2032 gombelem, a CR2450 (N) gombelem, 2 x AAA alkáli, 2 x AAA lítium és LiPo.
Akkumulátor -összefoglaló
Ha Solar Assist -ot használ, akkor 50% -ot adjon hozzá az akkumulátor élettartamához (feltéve, hogy napi 8 óra a fény)
Megjegyzés: A 22uF LowESR kondenzátor (C1) a beépített NanoV2 22uF kondenzátoron kívül tárolja a napelemáramot, majd ellátja azt a TX áramimpulzusokkal. Egyébként az akkumulátor szolgáltatja a TX áram egy részét. Ez az extra 22uF LowESR körülbelül 10% -kal növeli az akkumulátor áramát, ha a napelem nem a tápellátás, de meghosszabbítja az akkumulátor élettartamát azáltal, hogy kompenzálja az akkumulátor belső ellenállásának növekedését az élettartam végén. Az alábbi méréseket a további 22uF kondenzátor NÉLKÜL végeztük.
CR2032 - 235mAHr - akkumulátor élettartam 10 hónap nagy önkisülés miatt.
CR2032
Ennek az érmecellának a kapacitása jellemzően 235 mAh (Energizer Battery), névleges feszültsége 3 V és a megadott kisülési feszültség 2 V. Ez azt jelenti, hogy az akkumulátor élettartama 8100 óra vagy ~ 0,9 év. A belső cellaellenállás azonban növekszik az akkumulátor élettartamának végéhez közeledve, így előfordulhat, hogy nem képes biztosítani a csúcs Tx áramimpulzusokat. Egy nagyobb tápkondenzátor használható ennek a hatásnak a csökkentésére, de mondjuk 10 hónapos élettartamra.
CR2450 (N)
Ennek az érmecellának a kapacitása jellemzően 620mAHr (540mAHr a CR2450N esetében), névleges feszültsége 3V és meghatározott kisülési feszültsége 2V. Ez azt jelenti, hogy az akkumulátor élettartama 22, 400 óra vagy ~ 2 év 6 méter (CR2450N esetén 18600 óra - 2 év 2 méter). A belső cellaellenállás azonban növekszik az akkumulátor élettartamának végéhez közeledve, így előfordulhat, hogy nem képes biztosítani a csúcs Tx áramimpulzusokat. Egy nagyobb tápkondenzátor használható ennek a hatásnak a csökkentésére, de mondjuk 2 év 4 méter (2 év É).
Megjegyzés: A CR2450N változat vastagabb ajakkal rendelkezik, ami segít megelőzni a helytelen beépítést a CR2450N tartóba. A CR2450N és CR2450 cellákat beillesztheti a CR2450 tartóba, de a CR2450N cellákat nem a CR2450N tartóba
2 x AAA alkáli cella
Ezeknek az akkumulátoroknak a kapacitása körülbelül 1250mAHr (Energizer Battery) nagyon alacsony áramok esetén, névleges feszültsége 2x1,5V = 3V és a megadott kisülési feszültség 2x0,8V = 1,6V. De ez a megadott kisülési feszültség kisebb, mint a Si7021 érzékelő üzemi feszültsége (1,9 V), így az akkumulátor csak ~ 1 V -ig használható. Ez körülbelül 10% -ról 15% -ra csökkenti a kapacitást, azaz ~ 1000mAHr.
Ez azt jelenti, hogy az akkumulátor élettartama 34, 500 óra vagy ~ 4 év. A belső cellaellenállás azonban növekszik az akkumulátor élettartamának végéhez közeledve, így előfordulhat, hogy nem tudja biztosítani a csúcs Tx áramimpulzusokat. Egy nagyobb tápkondenzátor használható ennek a hatásnak a csökkentésére, de mondjuk 3 év 10 m -es élettartam. Megjegyzés Az alkáli elemek évente 2-3% -os önkisüléssel rendelkeznek.
2 x AAA lítium elem
Ezeknek az akkumulátoroknak a kapacitása körülbelül 1200mAHr (Energizer Battery), névleges feszültségük 2x1,7V = 3,4V, kis áramoknál, és a kisült feszültség 2x1,4V = 2,4V. Ez azt jelenti, hogy az akkumulátor élettartama 41, 400 óra vagy 4 év 8 méter.
LiPo újratölthető akkumulátor
Ezek az akkumulátorok különböző kapacitásúak, 100 mAh és 2000 mAh között, lapos formátumban, és 4,2 V -os feltöltött feszültséggel és> 2,7 V -os kisült feszültséggel rendelkeznek. Azonban nagy az önkisülésük, havi 2% -3% (azaz 24% és 36% között évente), ezért nem alkalmasak erre az alkalmazásra, mint a többi akkumulátor.
6. lépés: Alternatívák ellátása - Solar Assist, Csak akkumulátor, Csak Solar
Akkumulátor és Solar Assist
A fenti konstrukció az Battery plus Solar Assist tápegységet használja. Ha a napelemek több feszültséget generálnak, mint az akkumulátor feszültsége, akkor a napelemek táplálják a monitort, így meghosszabbítják az akkumulátor élettartamát. Általában az akkumulátor élettartama további 50%-kal meghosszabbítható.
A használt napelemek kicsik, 50 mm x 30 mm -esek, olcsók, ~ 0,50 USD és alacsony fogyasztásúak. Ezek névlegesen 5 V -os panelek, de teljes közvetlen, erős napfényre van szükségük az 5 V -os generáláshoz. Ebben a projektben két panel sorba van kötve, így a monitor elhelyezése az ablak közelében, közvetlen napfénytől védve elegendő az akkumulátor cseréjéhez. Még a jól megvilágított helyiség vagy egy asztali lámpa is elegendő ahhoz, hogy a napelemek> 3,3 V -ot termeljenek> 33uA -nál, és átvegyék az akkumulátort.
Egy egyszerű tesztpanelt hoztak létre annak meghatározására, hogy hová lehet elhelyezni a hőmérséklet / páratartalom figyelőt, távol a naptól és továbbra is napelemmel. Amint a fenti képen látható, a 100K ellenálláshoz csatlakoztatott két panel 5,64 V -ot termel a 100K -on, azaz 56uA áramot 5,64 V -on. Ez több mint elegendő, ha átveszi a monitor áramellátását az akkumulátorról. Ha a névleges 3 V -os akkumulátorfeszültség feletti feszültség leolvasás azt jelenti, hogy a napelemek a monitort fogják táplálni az akkumulátor helyett.
A hőmérséklet -páratartalom -figyelő áramkörben lévő két dióda elkülöníti a napelemeket és az elemeket egymástól, és megakadályozza, hogy fordított polaritással csatlakoztassa őket. A 10 V-os 1 W-os zener és a 470R sorozatú ellenállás megvédi a NanoV2 fedélzeti szabályozóját a két napsugárzó túlfeszültségétől a teljes napsütésben, különösen akkor, ha 12 V-os cellákat használnak az 5 V-os helyett. Normál üzemmódban <5V esetén a 10V -os zener csak ~ 1uA -t vesz fel.
Csak akkumulátor
Csak elemellátás esetén hagyja ki az R1, D1 és D3 és a napelemeket. A D1 -et lecserélheti egy huzaldarabra is, ha nem szeretné a fordított polaritás elleni védelmet.
Csak Solar
A monitor tápellátása csak napelemekről, akkumulátor nélkül más tápáramkört igényel. A probléma az, hogy míg a monitor 29uA -n működik, bekapcsoláskor az nRF52 ~ 5mA -t vesz fel 0,32 másodpercig. A fenti áramkör (pdf verzió) a MAX8881 szabályozót lekapcsolva tartja mindaddig, amíg a bemeneti kondenzátorok, 2 x 1000uF, 4,04 V -ig nem töltődnek. Ezután a MAX6457 felszabadítja a MAX8881 SHDN bemenetet az nRF52 (NanoV2) bekapcsolásához. A 2 x 1000uF kondenzátor biztosítja a szükséges indítóáramot.
Ez lehetővé teszi, hogy a monitor bekapcsoljon, amint elegendő napenergia van, és továbbra is 29uA -on működik.
7. lépés: Következtetés
Ez az oktatóanyag egy akkumulátorral/napelemmel működő hőmérséklet -páratartalom -monitort mutat be példaként a nagyon alacsony teljesítményű BLE projekthez Arduino -ban az nRF52832 chiphez. A ~ 29uA tápáramokat a csatlakozási paraméterek beállításával érik el. Ennek eredményeként a CR2032 gombelemek élettartama meghaladta a 10 hónapot. Hosszabb a nagyobb kapacitású érmecellákhoz és elemekhez. Két olcsó napelem hozzáadásával az akkumulátor élettartama 50% -kal vagy annál tovább meghosszabbítható. Egy erős szobafény vagy egy asztali lámpa elegendő ahhoz, hogy a monitort a napelemekről táplálja.
Egy speciális áramkört mutattak be, amely lehetővé teszi a monitor tisztán kis kapacitású napelemekből történő működtetését.
Az ingyenes pfodDesigner lehetővé teszi menük/almenük tervezését, a dátum/idő függvényében történő ábrázolást és a naplóadatok létrehozását, majd a kis teljesítményű Arduino vázlat létrehozását. Itt egy egyedi felületet kódoltak a pfodApp rajz primitívek használatával. A pfodApp használatával való csatlakozás megjeleníti a felhasználói felületet, és frissíti a leolvasott értékeket, miközben a monitor ~ 29uA -t használ
Nincs szükség Android programozásra. A pfodApp mindezt kezeli.
Ajánlott:
Nagyon olcsó 4500 mAh teljesítményű bank készítése: 3 lépés
Hogyan készítsünk egy nagyon olcsó 4500 mAh -s Power Bank -ot: Amikor az üzletekben kerestem egy power bankot, a legolcsóbb, amit találtam, nem volt mindig megbízható, ezért ebben az oktathatóban megmutatom, hogyan lehet nagyon olcsó power bankot készíteni
Ultra alacsony teljesítményű, nagy erősítésű csőerősítő: 13 lépés (képekkel)
Ultra alacsony teljesítményű, nagy erősítésű csőerősítő: Az olyan hálószobás rockerekhez, mint én, nincs rosszabb a zajpanaszoknál. Viszont kár, hogy egy 50 W -os erősítőt olyan terhelésre akasztanak, amely szinte mindent eloszlat a melegben. Ezért megpróbáltam nagy nyereségű előerősítőt építeni, egy család alapján
Rendkívül alacsony teljesítményű pinceárvíz-riasztás ESP8266 segítségével: 3 lépés
Rendkívül alacsony teljesítményű pinceárvíz-riasztás ESP8266 segítségével: Üdvözöljük az első oktatható műsoromban. A házam pincéjét néhány évente elárasztják különböző okok miatt, például erős nyári zivatarok, magas talajvíz vagy akár csőtörés miatt. Bár ez nem szép hely, de a központi fűtésem
2 dollár Arduino. az ATMEGA328 önállóan. Könnyű, olcsó és nagyon kicsi. teljes útmutató: 6 lépés (képekkel)
2 dollár Arduino. az ATMEGA328 önállóan. Könnyű, olcsó és nagyon kicsi. teljes útmutató: Ebben az oktatóanyagban megtanulja, hogyan kell használni az Arduino ATMEGA328 mikrokontroller chipet önálló mikrovezérlőként. Csak 2 dollárba kerülnek, ugyanazt tehetik, mint az Arduino, és rendkívül kicsivé teszik a projektjeit. Lefedjük a csapok elrendezését
Alacsony teljesítményű FM adó antenna a mezőgazdasági csövekből: 8 lépés (képekkel)
Alacsony teljesítményű FM adó antenna a mezőgazdasági csövekből: Az FM adó antenna építése nem olyan nehéz; rengeteg terv van odakint. Tervezni akartunk olyan alkatrészekből, amelyeket szinte a világ bármely pontján beszerezhet egy négy (hamarosan 16!) Közösségi állomásból, amelyet Észak -Ugandában kezdtünk