Začínáme s IoT LoRa

LilyGO TTGO LoRa32 

V tomto příspěvku od našeho zákazníka Jakuba Urbance se naučíš základnímu programování LoRa modulů – konkrétně modulu LilyGO TTGO LoRa32. Cílem je zprovoznit základní konektivitu vysílač – přijímač a otestovat například dosah této technologie. My jsme ze dvou frekvenčních možností v nelicencovaném EU pásmu vybrali frekvenci 868MHz (druhá je – 433MHz).

Více o problematice LoRa najdeš na wikipedii: en.wikipedia.org/wiki/LoRa a mnoha článcích po Internetu.

Příprava 

Kromě dvou desek  LilyGO TTGO LoRa32 868MHz budeš potřebovat vývojové prostředí Arduino IDE, ve kterém budeš vyvíjet vlastní software pro desku a pomocí něho budeš software do desky i nahrávat. Předpokládám alespoň základní znalost Arduino IDE, kterou se můžete naučit v předchozích článcích na tomto blogu. Například zde: Začínáme s Arduinem

Příkladem jak nastavit Arduino IDE je například článek o programování Wemos D1 mini s WiFi na https://blog.laskakit.cz/zaciname-s-wemos-d1-mini-s-wifi-modulem-esp8266/

Podpora modulu LilyGO TTGO v Arduino IDE

V Arduino IDE a menu Soubor – Vlastnosti do seznamu Správce dalších desek URL přidej nový řádek: https://dl.espressif.com/dl/package_esp32_index.json

Tento řádek přidá podporu ESP32 pro programování v Arduino IDE.

Potom v menu Nástroje – Vývojová deska – Manažér desek zadej do horního vyhledávacího políčka ESP32 a klikni na tlačítko Instalace. V našem případě se jednalo o esp32 od Espressif System verze 1.0.4.

Po instalaci je třeba v menu Nástroje – Vývojová deska vybrat správnou desku – v našem případě je to  TTGO LoRa32-OLED V1

Ostatní nastavení je stejné jako v předchozích návodech – v menu Nástroje – Port vybereš COM port, na který se nainstaloval ovladač desky (např. COM3). Arduino IDE předpřipraví další nastavení samo. 

Test funkčnosti

Tím je příprava hotová a můžeš vyzkoušet, jestli vše funguje. Aplikace je jednoduchá až triviální. Naprogramuje se jedno LoRa zařízení jako odesílatel a druhé zařízení jako přijímač. 

  • Odesílatel bude posílat jednoduchý counter (počítadlo) a dále náhodné číslo.
  • Přijímač bude přijaté zprávy zobrazovat společně s ukazatelem RSSI (ukazatel síly signálu přijatého LoRa paketu)  a SNR (ukazatel odstupu signálu od šumu). Obě hodnoty – RSSI i SNR předchází ukazatel interního počítadla přijímače. 

To je vše. Takto jednoduché zapojení slouží k tomu, abychom mohli měřit vzdálenost, do které tahle malá LoRa zařízení dosáhnou. 

Zdrojové kódy si stáhni na GitHubu:

https://github.com/cubapp/LilyGO-TTGO-LoRa32-SenderReceiver

Aplikaci tvoří – na rozdíl od běžných Arduino aplikací – dva soubory ( neboj, je přehledná a nemá ani 100 řádků. ): 

  1. LoRa.ino: obsahuje kód jak pro část odesílatele, tak pro část přijímače. O kterou část se bude jednat při kompilaci a uploadu kódu do LoRa desky rozhoduje další soubor: 
  2. board_def.h:  v tomto souboru se nastavují zásadní parametry pro celý systém přijímač – vysílač. Nejdůležitější je nastavení, kterým vybíráš jestli kompiluješ přijímač nebo vysílač:
// Change here whether you define Sender or Receiver.
// The rest should be the same
#define LORA_SENDER 0
//#define LORA_SENDER 1

Ostatní parametry můžeš nechat tak, jak jsou a dáš nejprve kompilovat a upload s nastavením LORA_SENDER 1 do první desky tj. do vysílače. Pak změníš LORA_SENDER 0 a zopakuješ upload pro druhý modul – přijímač. Od té chvíle bys měl na displeji vysílače vidět dvakrát za sekundu zprávu typu:

1. RandNum: 42 

Na přijímači bude zpráva o něco složitější: 

[2]SNR. 9.3
[2]RSSI. -45

1. Rnd=42

Program je napsán úmyslně velice jednoduše tak, aby se dal snadno změnit, vylepšit, upravit apod. Jestli nepoužíváš Arduino IDE, je možné použít například PlatformIO modul do Visual Studio Code, který nemá s tímto programem žádné problémy (jen přejmenujte příponu z .ino na .cpp). 

Závěr a testy

K desce máme připojenou baterii 2000mAh a vydrží, energeticky neoptimalizovaně, posílat dvě LoRa zprávy za sekundu asi 28 hodin. Tento režim však není standardní LoRa použití – u těchto modulů se naopak předpokládá posílání několika málo hodnot za hodinu s důsledným powermanagementem. LoRa modul jsme chtěli zkusit hlavně pro dosah a tak jsme vysílač nechali doma (ve dřevěné kůlně) a signál byl použitelný až na vzdálenost 700 metrů v zastavěné oblasti, což považujeme za celkem dobrý výsledek.

Sdílet článek

5 komentářů

  1. Příspěvek od uživatele Jan Beneš:

    LoRa má opravdu malou spotřebu. Používám senzor sestavený z LoRa radio node v1.0, který je většinu času v deep sleep režimu (77μA). Můžu odeslat asi 3 až 4 tisíce měření a spotřebuji 0,01V baterky (asi 600mAh). Měření odebírám LoRa-MQTT bránou a následně přeposílám do Home Assistenta. To je opravdu super.

  2. Dobrý den.
    Vaše řešení by mne zajímalo. S nastavením TTGO ver T3_V1.6 mám s tou aplikací problémy.
    Můžeme mi, prosím, poradit jak nahrát program do desky ?
    S pozdravem
    Jaroslav

    1. Dobrý den, můžete více upřesnit, jaké problémy máte? Nejde Vám program vůbec do desky nahrát, nebo něco jiného? Pokud nejde deska nahrát, máte správně nainstalovány ovladače pro převodník CP2104?

  3. Dobrý den, doma již mám jeden LoRa modul, chci si koupit druhý, ale nejsem si jist jestli komunikuje každý s každým, nebo musím mít ten samý či jiný modul.
    Předem děkuju.

  4. Dobrý den.
    Prosím, k čemu je vypínač/přepinač vedle tlačítka? Info na displeji vidím v obou polohách.
    Díky za odpověď.

Napsat komentář: Jaroslav F. Zrušit odpověď na komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Mohlo by se také líbit