LoRa moduly Semtech 127X sú optimalizované pre low power aplikácie, ale nie každý ich dokáže správne používať, aby v tom režime fungovali, ak nemá vedomosť o tom, ako funguje host mikrokontróler, ktorý s ním použije. Z hľadiska softvéru môže ísť iba o jeden príkaz, avšak hardvérové správanie GPIO host mikrokontroléra môže zapríčiniť, že svojim prechodom do low power režimu zvýši odber LoRa modulu. Odber z 0,6 uA sa tak razom môže navýšiť na 1,6 mA. To predstavuje 2666-násobne navýšenie odberu. Prečo je to tak?
Mnoho mikrokontrolérov s low power režimom má svoje GPIO viazané na určitú digitálnu úroveň, ktorá sa môže zmeniť práve pri prechode do deep sleep (najúspornejšieho režimu) v závislosti na tom, na čo bolo GPIO nastavené. Pre príklad mikrokontroléry ESP32 nastavujú GPIO, ktoré boli použité ako výstup (Pinmode OUTPUT) na úroveň LOW. V tomto prípade to zapríčiní to, že pri uspatí mikrokontroléra ESP32, ktorý predtým softvérovo uspal LoRa modul prejde signál RST, ktorý je prepojený s LoRa modulom do stavu LOW, čím sa vykoná reštart LoRa modulu low power režimu, kde mal odber 0,6 uA. Ten sa opätovne spustí a beží v standby režime, kde má odber 1,6 mA.

Možných riešení je niekoľko. Niekto by to riešil tranzistorom, ktorým odpojí napájanie LoRa modulu, resp. zem. V závislosti od použitého rezistora sa tak navýši odber v aktívnom stave o 4 až 11 mA. No sú tu aj iné, lepšie riešenia, ktoré nevyžadujú externé komponenty. Túto modelovú situáciu vieme vyriešiť nastavením pinu RST a SS (Chip Select) do stavu INPUT, čím sa neovplyvní napäťová úroveň, ktorá tam funguje. Takto sa zabezpečí low power spotreba LoRa modulu. Rovnako tak ESP32 ponúka ja možnosti "holdu" stavu GPIO, ktorým je možné nastaviť úroveň, ktorá je podržaná aj počas režimu hlbokého spánku, deep sleep. Pri prebudení host mikrokontroléra sa LoRa modul inicializuje a je pripravený na vysielanie, prijímanie paketov.
Ak má LoRa modul odber 0,6 uA, dostaneme sa s ESP32 na odber pod 2,4 uA? Nie, nedostaneme. Minimum by bolo niekde na úrovni 10 až 20 uA v závislosti od použitého modulu ESP32, ak sa bavíme naozaj o "low power" verziách, kde nemôžeme zaradiť devkity, ktoré majú štandardne 5V napájanie skrz USB, USB-UART prevodník, ktorý je trvalo napájaný a ďalšie komponenty, vrátane LED diód.
Pri tejto príležitosti by som určite siahol a poukázal na XIAO modul od Seeed Studio s mikrokontrolérom MG24 (EFR32MG24 od Silicon Labs), ktorý sa môže pýšit spotrebou 1,95 uA v ultra low power režime. Vďaka tomu dokážeme získať combo ARM Cortex-M33 a LoRa modul s celkovým odberom len 2,55 uA počas neaktívneho (nie standby, ale low-power deep sleep) stavu. Toto combo má zároveň nabíjací obvod aj na Li-Ion / Li-pol batériu a ide naozaj o minimalistický dizajn, ako je aj vidieť. XIAO modul má veľkosť menej ako jeden palec štvorcový. nabíjanie rozsvieti aj integrovanú LED diódu, teda spotreba sa môže o niečo navýšiť, rovnako tak pri nabíjaní je živených viac súčiastok.

Odber LoRa modulu je prakticky totožný u SX1278, či SX1276, ktoré sú najpoužívanejšie v 3rd party moduloch RA-01, RA-02 (AI-Thinker), alebo RFM95/96/97/98 od HopeRF, ktoré existujú pre frekvenčné rozsahy LoRa a to 433 MHz (Ázia, Európa), 868 MHz (Európa primárne), 915 MHz (Ázia, USA, Kanada)., 470 MHz (CN470, Čína), 923 MHz (Japonsko)... Môžeme spomenúť aj SX1272, SX1262, ktoré sa vyskytujú v custom riešeniach rôznych LoRa devkitov. Väčšinou sa používa RA-02, nakoľko má na rozdiel od iných modulov aj integrovaný u.FL konektor pre pripojenie antény. Ostatné typy vyžadujú letovať anténu do pinhole a štandardne dostávajú štvrťvlnné anténky.


Spomenuté LoRa moduly sa vyznačujú aj vysokou senzitivitou vďaka čomu dokážu prijať aj veľmi slabý signál, rádovo -141 až -148 dBm, čo bežné prijímače nedokážu, tie končia niekde okolo -120 dBm. Rozdiel je niekoľko-násobný, nejde o lineárny nárast, ale logaritmický! Aj preto existujú rekordy prenosu dát cez LoRu na niekoľko sto kilometrov. Samozrejme podobný LoRa uzol musí merať aj dáta, čím si prirodzene navýši spotrebu o použitý senzor. Bežný teplotný snímač DS18B20 má kľudovú spotrebu 3 uA. Populárny snímač HTU21D pre kombináciu teplota + relatívna vlhkosť vzduchu má odber v režime spánku 0,02 až 0,14 uA. Zaujímavým teplotným snímačom môže byť aj STS4L od Sensirionu, ktorý má odber 0,4 uA. Môžme menovať aj ďalšie, ako HDC2080 od TI a iné... Stále sa však budeme pohybovať v jednotkách mikroampérov, čo je fantastické!

Takéto riešenie má potenciál veľmi dlho fungovať aj na malú batériu. Povedzme, že veľmi malá 240 mAh batéria, tak v low power stave pri odbere 2,55 uA (len pre samotné combo XIAO MG24 a RA-02) bude trvať kým ju vybije asi 10,74 roka (3 921 dní), to je ale samozrejme len teoretické. Na batériu vplýva aj samovybíjanie a takýto senzorový uzol predsa musí aj komunikovať. Pre niekoho môže byť nevýhodou, že tento setup funguje na 3.3V, i keď dnešné populárne low-power riešenia najmä s STM32 sú navrhnuté skôr pre napäťové úrovne 1,8V.

S MG24 určite budem testovať LoRa komunikáciu, prúdové odbery, či sa zhodujú s tým, čo udáva výrobca a bude z toho samostatný článok. Seeed Studio má na svojom webe venovaný aj článok k MG24 XIAO modulu a skutočne aj z grafu ampérmetra je patrná priemerná spotreba 1,95 uA v režime hlbokého spánku. MG24 je o dosť drahší v porovnaní napríklad s ESP32-C6 na XIAO module, ktorá je násobne dostupnejšia, i keď spotreba modulu samotného je niekde na úrovni 15 μA, čo je stále perfektné. Práve ESP32-C6 budem používať v setupe pre monitorovania napätia autobatérie batérie pre oplotok, ktoré bude cez LoRa technológiu zasielané na prijímací node (nejde o gateway v tom pravom slova zmysle), ktorý bude fungovať ako forwarder a dáta posielať na cloud a ukladať do databázy.

Samotné napätie batérie bude čítané cez napäťový delič, ktorý dostatočne zníži napäťovú úroveň, aby ju bolo bezpečné čítať mikrokontrolérom. Hľadal som vhodnú kombináciu rezistorov pre napäťový delič, aby sme boli v 3.3V max rozsahu a zároveň aby sme neboli len niekde na jeho polovici. Zaumienil som si, aby bola dostatočná rezerva, že sa napätie batérie môže pohybovať v rozsahu 0 až 15V. Najlepšie z dostupných rezistorov a toho, čo dom dal mi vyšla kombinácia rezistorov 470K a 100K. Táto kombinácia zníži 15V napätie vstupu na 2,632V prítomných na výstupe, ktoré bude čítať mikrokontróler. Teda pomer zmeny je tu niekde na úrovni 5,7.

Samotný napäťový delič má stálu spotrebu, ktorá je úmerná napätiu batérie. Ak by mala batéria maximálne napätie 15V (čo reálne mať nebude), spotreba bude 26.32μA. Pri strednej hodnote, povedzme nabitá batéria 12,6V bude spotreba deliča 22.11μA. To znamená, že tento napäťový delič bude mať vyšší odber ako ESP32-C6 a RA-02 LoRa modul. LoRa bude vysielať cca 2 až 4 krát za hodinu v trvaní jedného prenosu zhruba 1,2 sekundy. Predtým sa krátko zmeria napätie, teda celkový čas v operačnom režime bude niekde okolo 2 sekúnd. Treba však povedať, že spomenutý odber súvisí s batériou, ktorá je meraná, nie je to energia z batérie, ktorá napája ESP32-C6 a RA-02, teda ich spotrebu to nijako nenavyšuje.

Po inštalácii systému vyskúšame aj celkový dosah LoRa technológie v rámci legislatívneho limitu s priamou viditeľnosťou (Line of Sight). Uvidíme, či prídeme na limit technológie, alebo bude proti už príroda a nebudeme mať dostatočnú vzdialenosť bez prekážok vo výhľade na vysielač. K tomuto testovaniu je už DPS vo výrobe - XIAO_LoRa. DPS má rozmer 39x41 mm a umožňuje použitie XIAO modulu (akéhokoľvek). Zároveň obsahuje miesto pre naspájkovanie dvoch THT rezistorov pre napäťový delič ľubovoľného pomeru. Miesto pre naspájkovanie RA-02 modulu a tiež konektory pre pripojenie + a - od batérie k napäťovému deliču (IN G). Rovnako tak je k dispozícii aj I2C zbernica pre perifériu a 2-pinové rozhranie pre pripojenie solárneho panela s napätím 5V. K tomuto rozhraniu je možné naspájkovať aj zenerovú diódu 1N4733 v závernom smere, čím je možné obvod ochrániť, najmä ak má solárny panel vyššie napätie naprázdno. Všetky konektory majú štandardný rozostup 2,54 mm medzi pinmi, čo umožňuje použitie konektorov JST XH typu.
