joi, 16 iulie 2020

ESP32 LoRa Receiver

O solutie mai compacta si cu un consum redus de energie pentru receptia baloanelor lansate de amatori, este utilizarea placilor de dezvoltare cu microcontroller ESP32 si modul LoRa.

Am testat doua modele de placi de la TTGO, LoRa32 2.1_1.6 si T-Beam v1.0. Primul model, LoRa32, este compact si are display OLED inclus. Al doilea model, T-Beam, are suport pentru acumulator Li-Ion de tip 18650 si receiver GPS, dar displayul OLED trebuie achizitionat separat. Pe langa portul USB, ambele placi au WiFi si Bluetooth.

In comparatie cu Raspberry Pi, consumul placilor cu ESP32 este foarte redus, de aproximativ 50 mA pentru LoRa32 si de 160 mA pentru T-Beam.

Codul scris de catre Dave Akerman (M0RPI) pentru aceste microcontrellere poate fi descarcat de pe github si programat cu ajutorul mediului Arduino IDE.


Mai jos puteti gasi configurarea pentru Arduino IDE si cateva modificari ale codului original.

1. Adaugarea placilor ESP32 in Arduino IDE

File -> Preferences -> in campul "Additional Board Manager URLs" adaugati „https://dl.espressif.com/dl/package_esp32_index.json”
Tools -> Board -> Boards Manager -> search "esp32" -> Install "esp32 by Espressif Systems"


2. Instalare librarii

Sketch -> Include Library -> Manage Libraries
Adafruit GFX Library
Adafruit SSD1306 Library
Adafruit BusIO library

Sketch -> Include Library -> Add .zip Library
AXP202X_Library: https://github.com/lewisxhe/AXP202X_Library


3. Selectati tipul de placa dorita in Arduino IDE.

Tools -> Board -> ESP32 Arduino: „TTGO LoRa32-OLED V1” sau „T-Beam”


4. In continutului codului selectati din nou tipul de placa. Orice linie care incepe cu „//” este un comentariu si nu este luat in considerare de catre soft.

// UNCOMMENT ONE AND ONLY ONE OF THESE LINES
   #define TBEAM // TTGO T-Beam 
// #define OLEDV1
// #define OLEDV2 // TTGO LoRa32 
// #define LORAGO


5. Modificati definitia pentru T-Beam, pentru a putea utiliza si display-ul OLED si GPS-ul intern in acelasi timp.

#ifdef TBEAM
  #define ESP32
  #define BLUE
  #define AXP
  #define OLED
  #define OLED_RST           16
  #define OLED_SDA           21
  #define OLED_SCL           22
  #define SCREEN_WIDTH      128
  #define SCREEN_HEIGHT      64
  #define LORA_NSS           18
  #define LORA_RST           14
  #define LORA_DIO0          26
  #define SCK                 5
  #define MISO               19
  #define MOSI               27
  #define GPSSerial     Serial1
  #define GPS_TX             34
  #define GPS_RX             12
#endif


6. Configurati frecventa implicita.

Settings.Frequency = 437.600;



Datele de telemetrie pot fi vizualizate atat pe display-ul OLED, cat si exportate pe o interfata seriala (Bluetooth sau USB) la viteza de 57600 baud.
Pachetele de telemetrie ale balonului sunt intercalate cu cele de pozitie ale GPS-ului intern.

Exemplu de date de pe interfata seriala:
FreqErr=-1.3
PacketRSSI=-89
PacketSNR=7
Message=$$YO3IHG-0,103,07:21:48,44.99630,26.47279,01776,7,202,12,43.3*F3CE
GPS=10:46:01,44.50756,26.01914,80,0,0,0

Receiverul pot fi utilizat de sine statator sau impreuna cu un PC / telefon Android.

Pentru sistemele de operare Windows, Dave Akerman a creat softul "LoRaSerialGateway", cu ajutorul caruia putem realiza o comunicatie seriala bidirectionala cu microcontrollerul ESP32. Intr-un sens pot fi configurati parametrii modulului LoRa, iar in celelalt sens se pot vizualiza datele de pe interfata seriala care sunt urcate apoi in mediul online, pe tracker.habhub.org si ssdv.habhub.org.

Din nefericire, sistemul nu poate afisa sau stoca imaginile SSDV, acestea putand fi vizualizate exclusiv online.


Avantajul acestor receivere este ca sunt foarte compacte, iar in combinatie cu o antena directiva pot fi utilizate pe teren pentru a putea receptiona cu precizie pozitia trackerului dupa aterizare.