Tartalomjegyzék:

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
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

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

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
Videó: Почему Koenigsegg стоит 4,8 миллиона долларов. Он едет как ракета и стоит каждого цента 2024, November
Anonim
Könnyű, nagyon alacsony teljesítményű BLE az Arduino 2. részében - Hőmérséklet/páratartalom monitor - Rev 3
Könnyű, nagyon alacsony teljesítményű BLE az Arduino 2. részében - Hőmérséklet/páratartalom monitor - Rev 3
Könnyű, nagyon alacsony teljesítményű BLE az Arduino 2. részében - Hőmérséklet/páratartalom monitor - Rev 3
Könnyű, nagyon alacsony teljesítményű BLE az Arduino 2. részében - Hőmérséklet/páratartalom monitor - Rev 3
Könnyű, nagyon alacsony teljesítményű BLE az Arduino 2. részében - Hőmérséklet/páratartalom monitor - Rev 3
Könnyű, nagyon alacsony teljesítményű BLE az Arduino 2. részében - Hőmérséklet/páratartalom monitor - Rev 3

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:-

  1. Alkatrész kiválasztása és felépítése
  2. Kód - Kis fogyasztású érzékelő könyvtár, felhasználói felület és Arduino vázlat
  3. A tápfeszültség és az akkumulátor élettartamának mérése
  4. 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

Építkezés
Építkezés
Építkezés
Építkezés
Építkezés
Építkezé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

Kód - Kis fogyasztású érzékelő könyvtár, felhasználói felület és Arduino vázlat
Kód - Kis fogyasztású érzékelő könyvtár, felhasználói felület és Arduino vázlat
Kód - Kis fogyasztású érzékelő könyvtár, felhasználói felület és Arduino vázlat
Kód - Kis fogyasztású érzékelő könyvtár, felhasználói felület és Arduino vázlat
Kód - Kis fogyasztású érzékelő könyvtár, felhasználói felület és Arduino vázlat
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:-

  1. 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.
  2. 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.
  3. 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.
  4. 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

A tápáram mérése
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

Ellátási alternatívák - Solar Assist, Only Battery, Solar Only
Ellátási alternatívák - Solar Assist, Only Battery, Solar Only
Ellátási alternatívák - Solar Assist, Only Battery, Solar Only
Ellátási alternatívák - Solar Assist, Only Battery, Solar Only
Ellátási alternatívák - Solar Assist, Only Battery, Solar Only
Ellátási alternatívák - Solar Assist, Only Battery, Solar Only
Ellátási alternatívák - Solar Assist, Only Battery, Solar Only
Ellátási alternatívák - Solar Assist, Only Battery, Solar Only

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: