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.

miercuri, 15 iulie 2020

LoRa Gateway

Receptia baloanelor lansate de amatori, utilizand standardul LoRa, poate fi facuta cu asa numitul "LoRa Gateway". Pentru constructia acestuia sunt necesare un Raspberry Pi, un modul LoRa si o conexiune la internet.


Pe piata exista deja diverse placi cu module LoRa, atat pentru Raspberry Pi Zero, cat si pentru Pi 4. Datorita dimensiunilor reduse, am achizitionat o placa pentru Pi Zero de la Uputronics din UK.

Atat procesul de instalare, cat si modul de configurare sunt descrise pe site-ul lui Dave Akerman (M0RPI) si pe github.



Pentru a instala LoRa Gateway pe Raspberry Pi trebuie sa avem sistemul de operare Raspbian instalat in prealabil, interfata grafica fiind optionala. Mai jos puteti gasi comenzile pentru Consola/SSH.

1. Activare interfata SPI

sudo raspi-config
5 Interfacing Options -> P4 SPI
7 Advanced Options -> A1 Expand Filesystem
reboot


2. Instalare WiringPi

  •  Raspberry Pi Zero/3:
sudo apt-get install wiringpi

  • Raspberry Pi 4:
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v


3. Instalare SSDV

cd ~
git clone https://github.com/fsphil/ssdv.git
cd ssdv
sudo make install


4. Instalare librarii

sudo apt-get install libcurl4-openssl-dev
sudo apt-get install libncurses5-dev


5. Instalare LoRa Gateway

cd ~
git clone https://github.com/PiInTheSky/lora-gateway.git
cd lora-gateway
make


6. Redenumiti "gateway-sample.txt" in "gateway.txt".

cd ~
cd lora-gateway
mv gateway-sample.txt gateway.txt


7. Editati si salvati fisierul de configurare.

nano /home/pi/lora-gateway/gateway.txt
CTRL+X
Y
ENTER
reboot


8. Start gateway

cd lora-gateway
sudo ./gateway



Exemplu de configurare:

##### Your details #####

tracker=YO3IHG
Latitude=44.xxxxxx
Longitude=26.xxxxxx
Radio=LoRa
Antenna=GP


##### Config Options #####

EnableHabitat=Y
EnableSSDV=Y
JPGFolder=ssdv
LogTelemetry=Y
LogPackets=Y
CallingTimeout=60
#ServerPort=6004
#SMSFolder=./
EnableDev=N

NetworkLED=0
InternetLED=24
#ActivityLED_0=21
ActivityLED_1=25

##### Config CE0 #####
##### Uputronics module #####

frequency_0=437.600
mode_0=1
AFC_0=Y
#bandwidth_0=125K
#implicit_0=0
#coding_0=5
#sf_0=8
#lowopt_0=0
#power_0=255
DIO0_0=6
DIO5_0=5
#UplinkTime_0=2
#UplinkCycle_0=60


##### Config CE1 #####
##### YO3ICT module #####

frequency_1=437.600
mode_1=1
AFC_1=Y
#bandwidth_1=20K8
#implicit_1=0
#coding_1=5
#sf_1=8
#lowopt_1=0
#power_1=255
DIO0_1=23
DIO5_1=29
#UplinkTime_1=5
#UplinkCycle_1=60



Datele de telemetrie receptionate sunt afisate direct in terminal, iar imaginile in format SSDV sunt salvate intr-un folder predefinit (home/pi/lora-gateway/ssdv). Conexiunea la internet este necesara pentru a putea urca datele de telemetrie pe trackere online, de exemplu tracker.habhub.org. Imaginile SSDV pot fi gasite pe ssdv.habhub.org.
Gateway-urile pot fi instalate atat in locatii fixe, cat si in masinile de urmarire a baloanelor.