blogy logo
login PRIHLÁS SA
BLOG deadawp
ČLÁNKY
DISKUSIE
3
SLEDUJETE BLOG
Programátor
deadawp



Monitorovanie napätia batérie s LoRa + ESP32
pridal deadawp 9.5. 2025 o 18:51 (naposledy upravené 10.5. 2025 o 12:28)

Dnes si ukážeme implementáciu senzorového uzla pre LoRa PPP (Point-to-Point) komunikáciu, ktorý bude postavený na DPS 433_LoRa_Lolin32. Tento senzorový uzol bude merať napätie trakčnej batérie (12V), ktorá napája elektrický oplotok, resp. zdroj impulzov, ktorý do oplotku generuje krátke vysokonapäťové pulzy, ktoré odradia zver pri pokuse o spôsobenie škôd na poli.

Častokrát sa stalo, že zver stiahla plot a zvalila ho po elektrickom šoku, čo spôsobilo prebíjanie oplotku do zeme a násobne rýchlejšie došlo k vybitiu batérie. Senzorový uzol tak bude mať za úlohu v pravidelných intervaloch posielať údaje o napätí batérie, ktorej napätie zistí skrz napäťový delič a následným prepočtom si vyráta vstupné napätie deliča.

Pôvodne som riešenie chcel vytvoriť na doske XIAO_LoRa, avšak pájkovanie batérie priamo na pady zo spodnej časti XIAO dosky sa mi veľmi nepáčilo, zvlášť, keď som nemal JST XH konektor (v SMD verzii) s roztečou 2,54 mm, teda v prevedení ako to má PH 2.0 verzia na Lolin32 devkite. Baterku som nechcel natvrdo pájkovať bez možnosti odpojenia.

Doska 433_LoRa_Lolin32 obsahuje možnosti pripojiť:

  • ADC snímač (3V3, GND, ADC_IN)
  • OneWire senzor (3V3, GND, DATA)
  • I2C periféria (3V3, GND, SDA, SCL) - hardvérová I2C
  • Solárny panel (5V, GND)
  • RA-02 (Semtech SX1278)
  • Lolin32

V porovnaní s XIAO_LoRa doskou, 433_LoRa_Lolin32 nediposnuje miestom pre spájkovanie rezistorov priamo na DPS. Z toho dôvodu ich bolo nutné napájkovať priamo na kábel, ktorý ide k batérii. Použil som rezistory, ktoré šuflík dal. Pri výbere som dbal nato, aby som pokryl celé možné napätie batérie, ktorá je dobíjaná samostatným systémom. Štandardne môže mať až 14,8 V (pre ľahšie výpočty zaokrúhlime na 15V).

Nakoniec som sa rozhodol pre 470K rezistor na vstup a 100K rezistor do zeme. Z takéhoto pomeru rezistorov vzniklo to, že výstupná napätie deliča je 5,7-krát menšie od vstupného. Nevyužije sa tak celý 3V3 rozsah ESP32 a jeho ADC pinu, pri napätí batérie 15V bude na výstupe deliča 2.63V, teda je tam ete viac ako 0,6V rezerva na zvyšovanie vstupného napätia ešte o viac ako 3V.

Túto formulu používa aj senzorový uzol po meraní mV na ADC pine na prepočet vstupného napätia. Vysielač vysiela ADC napätie a aj vypočítané vstupné napätie deliča. Pri meraní ADC pinom mikrokontroléra ESP32 sa vykonáva jedno skúšobné meranie, ktoré ma za úlohu eliminovať šum, či naindukované napätie a následne sa vykonáva 5 priemerovaných meraní, ktorých výsledok sa berie za finálnu hodnotu napätia deliča. Z tejto hodnoty sa počíta aj vstupné napätie deliča.

Ako vidíme na blokovej schéme riešenia, vysielač neposiela dáta do databázy. To robí až LoRa prijímač, ktorý má k dispozícii WiFi AP v dosahu, cez ktorý sa môže pripojiť na internet a po HTTPS poslať dekódované dáta na cloud. Umiestnenie prijímača voči vysielaču tak bude mať prioritu pre spoľahlivé prijímanie dát. 

Vysielač bol umiestnený do elektrikárskej krabice s rozmermi 100x100x38 mm, vrátane napájacej Li-pol batérie s kapacitou 1000 mAh a ochranným obvodom. Na predný kryt krabice som dopasoval solárny panel 100x100 mm. Tento panel má 5V výstup a dokáže dodávať špičkový výkon až 3W, štandardne 1,2W, čo je dostatočné, nakoľko Lolin32 funguje v režime hlbokého spánku, do ktorého uspáva aj LoRa modul RA-02 (AI-Thinker). Prebúdza sa v pravidelných intervaloch iba pre účel merania a odoslania dát na prijímač.

Celkový uptime vysielača v aktívnom stave je pod 2 sekundy, keďže meranie trvá prakticky niekoľko nanosekúnd a samotný prenos dát okolo 1,2 sekundy. Spotreba v režime spánku je pre tento Node bude niekde nad 2 mA. Je to dané najmä integrovanými LED diódami, trvale napájaným USB-UART prevodníkom CH340. Vzhľadom na dobíjanie batérie nie je problémom ani táto spotreba, ktorá sa môže zdať vysoká pre LoRa zariadenie. Ak by sme prešli na XIAO, spotreba by bolo niekde okolo 50 uA.

Prijímač ale musí byť trvale napájaný, teda u neho je vyššia požiadavka na prevádzku na batériu. Z toho dôvodu som tu siahol po 2000 mAh Li-Ion batérii z dôvodu, že spotreba môže byť od 17 mA po 80 mA v závislosti od nastavenia Lolin32 devkitu. Devkit, resp. jeho procesor Xtensa môže spať, ale musí predtým urobiť niekoľko vecí. RA-02 musí byť nastavený do režimu posluchu (RX), čo má za následok jeho spotrebu 15 mA, aby dokázal prijať prichádzajúci paket. Toto môže čekovať ESP32, alebo je možné využiť aj interrupt pin DIO0 na RA-02 (SX1278) module. Tento pin zmení stav pri prijatí dát, čo dokáže ako externý interrupt prebudiť aj mikrokontróler ESP32 z režimu spánku.

Sú tu ale určité úskalia... Prijímač môže byť maximálne v light sleepe, čo znamená vyššiu spotrebu v porovnaní s deep sleep režimom. Je to práve z dôvodu, že pri prebudení z light sleepu mikrokontróler pokračuje v programe tam, kde skončil (od bodu, kde bol uspatý). Ak by šlo o deep sleep, mikrokontróler by musel byť reštartovaný a tak musí znova nastaviť aj LoRa modul, teda dáta sa stratia. Aby ich dokázal prečítať, musí to byť naozaj maximálne light sleep, ktorý má mať spotrebu okolo 0,8 mA (z datasheetu), Lolin32 devkit bude mať minimálne 2,5 mA v tomto režime + treba rátať do celkovej spotreby aj 15 mA modulu RA-02.

Prijímač vyzerá následovne:
- má anténový výstup pre pripojenie ľubovoľnej antény do SMA konektoru (OMNI, smerová)
- v krabičke je batéria, ktorá sa pripája priamo do Lolinu32 skrz batériový konektor JST PH 2.0
- 433_LoRa_Lolin32 doska s hardvérom
- solaŕny panel dobíja batériu maximálnym prúdom až 500 mA, zároveň môže napájať aj samotné zariadenie



Kritickým bodom bolo umiestnenie prijímača voči vysielaču. Vysielač už bol stacionárny a prišlo k problému s nepriamou viditeľnosťou pri prvom plánovanom osadení prijímača. Vysielač a prijímač boli od seba asi 662 metrov. Nedošlo k priamej viditeľnosti, čo potvrdzuje model prepočtu HeyWhatsThat Path Profiler, alebo UISP Design Center. Druhý model je presnejší, nakoľko umožňuje nastavenie výšky antén nad zemským povrchom voči sebe, čo umožňuje dostať presnejší výstup. Ani jeden z modelov ale nepočíta s budovami, stromami vo výhľade. Ich prepočet je relevantný iba k povrchu ako takému pre overenie "priamej viditeľnosti".

 

Takéto umiestnenie vysielača a prijímača malo za následok nekonzistentnosť v prijatých paketoch a značnú variáciu pomeru signálu voči šumu (nižšia hodnota je horšia). RSSI je možné vyhodnotiť ako dosť zlé, až takmer nedostatočné (i keď LoRa má nato rezervu až niekde k -137 dBm, možno až -141 dBm) s takýmito podmienkami prenosu dát bez priamej viditeľnosti. Rovnako tak občas prijímač nebol schopný prijať paket, alebo dekódovať ho v dôsledku čoho bol zahodený.

Signál v takomto posadení vysielača  a prijímača prechádza prakticky po takmer jednu tretinu cesty skrz kopec a blízko prijímača ešte aj cez asi 3 strechy a veľký listnatý strom.

Ako môžeme aj z grafu vidieť, loguje sa napätie trakčnej batérie a posiela sa do databázy. Môžeme vidieť, že pred šiestou hodinou ráno začína byť aktívny aj solárny panel, ktorý túto batériu dobíja a stará sa o jej power management. Po štvrtej hodine poobede klesá prúd z panela, čím sa znižuje napätie na batérii, až neskôr nie je batéria nabíjaná vôbec a počas noci dosahuje napätie niekde na úrovni 12,6 až 12,5V, čo značí takmer plne nabitú batériu aj počas tohto obdobia.


Systém dokáže pri nízkom napätí batérie zaslať aj email s informáciou o stave napätia, teda nie je nutné sústavne monitorovať webovú vizualizáciu s grafom. Aby emaily neboli otravné, pošle sa maximálne 1 e-mail za 6 hodín a aj to iba v prípade, že napätie batérie kleslo pod 11V, čo už indikuje značné vybíjanie, keď maximálne prípustné vybíjanie olovenej batérie je do 10,5V a pod túto hodnotu by nemal klesnúť, teda notifikácia je včasná a s meraním v XX minútovom intervale dokáže upozorniť tak, aby obsluha mohla vykonať obhliadku, či meranie batérie.

Čo sa týka LoRa komunikácie, vysielač a prijímač používa rovnakú prednastavenú nosnú (strednú) frekvenciu, šírku pásma, rovnaký spreading factor, coding rate, alebo čo je najdôležitejšie, spoločný sync word, vďaka ktorému môžem mať viacero PPP LoRa komunikácii, ktoré budú iba logicky oddelené sync wordom, ktorý filtruje pakety. Vďaka tomu prijímač bude reagovať iba na pakety od určeného vysielača, ktorý používa identický sync word a iný odignoruje. V praxi je tu super napríklad pre produkčnú verziu LoRa aplikácie a testovaciu, kedy sa nemusíte báť, že by vám prijímač zachytil aj testovacie dáta, keďže sa využíva iný sync word, hoci stredná frevencia, i šírka pásma je rovnaká.



Prístupov 97
Kvalita článku
hlasov 0

PRÍSPEVKY
SLEDOVAŤ
Prosím prihláste sa pre možnosť pridania komentáru.
Prihláste sa, alebo použite facebook login facebook login
ĎALŠIE ČLÁNKY V BLOGU
Monitorovanie napätia batérie s LoRa + E...
[ 9.5.2025] (príspevkov 0)
LoRa node s odberom pod 3 uA
[ 30.4.2025] (príspevkov 0)
Recenzia YATO YT-8272
[ 16.4.2025] (príspevkov 0)
Loud ESP32 pre Webrádio
[ 14.4.2025] (príspevkov 0)
NFC karta s WiFi konfiguráciou
[ 8.4.2025] (príspevkov 0)
Návrh jednoduchých PCB v EasyEDA
[ 5.4.2025] (príspevkov 0)
Test dosahu LoRa 433 MHz RA-02
[ 4.4.2025] (príspevkov 0)
Lolin32 vs. Lolin32 Lite - čo je dobré v...
[ 21.3.2025] (príspevkov 0)