Začínáme s IoT LoRa

3830-2_lilygo-ttgo-lora32-t3_v1-6-868mhz-0-96--sma-wifi-modul

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

Share on facebook
Facebook
Share on google
Google+
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on pinterest
Pinterest

Napsat komentář

Nejčtenější články

Akční nabídka

Arduino UNO R3

ATmega328P, Klon

160 Kč

RobotDyn 4×3

Maticová analogová klávesnice

91,10 Kč

Arduino Gamepad

Joystick Shield

146,90 Kč