Table des matières

Réalisation d'un tracker LoRaWAN

Objectifs

Réaliser un dispositif portable émettant des messages LoRa à notre gateway TTN. Ces messages contiendront les coordonées GPS de l'émetteur. En nous promenant avec le tracker nous pourrons cartographier la qualité du signal LoRa.

Challenges

Cablage

J'ai envie de continuer à bricoler avec les ESP32, donc malgré que la Chistera Pi soit un shield Raspberry Pi, je vais la piloter avec un ESP32.

Le RFM95 de la Chistera Pi

cf La Chistera Pi

Nous avons besoin d'alimenter le shield grace au pins GND et 3.3V.

Nous avons besoin du port SPI qui est composé des 4 pins MOSI MISO SCLK et SS, pour communiquer avec le circuit.

La bibliothèque Arduino LMIC que nous utiliserons pour piloter le circuit utilise également les ports DIO0 DIO1 et DIO2 (Digital Input Output). Elle utilise également le pin RST pour s'assurer que le circuit est toujours dans un état consistent.

Ecran TFT 240x240 px ST7789

Je n'ai pas réussi à driver correctement les 2 modules (lora et écran) sur le meme port SPI, donc j'ai déplacé l'écran sur le port HSPI.

Groove GPS

Le module Groove GPS communique avec un port serie asynchrone. cf : http://wiki.seeedstudio.com/Grove-GPS/

Programmation

Arduino-LMIC

Configuration du cablage :

const lmic_pinmap lmic_pins = {
    .nss = 5,
    .rxtx = LMIC_UNUSED_PIN,
    .rst = 4,
    .dio = {21, 26, 27},
    // optional: set polarity of rxtx pin.
    .rxtx_rx_active = 0,
    // optional: set RSSI cal for listen-before-talk
    // this value is in dB, and is added to RSSI
    // measured prior to decision.
    // Must include noise guardband! Ignored in US,
    // EU, IN, other markets where LBT is not required.
    .rssi_cal = 0,
    // optional: override LMIC_SPI_FREQ if non-zero
    .spi_freq = 0,
};

Attention, il faut appeler SPI.begin() en fournissant le cablage du SPI pour le module RFM95. Le moment opportun est lors du setup() du code arduino.

    // Configure SPI
    SPI.begin(18, 23, 19, 5);

Pseudo code

  1. Boot
  2. Affichage du dernier évenement MAC (LoRaWAN) : néant et du statut GPS : “acquisition en cours …”
  3. Boucle infini
    1. Acquisition des coordonnées GPS / Attente de coordonnées valides
    2. Scheduling d'un envoie d'une payload CayenneLPP contenant les coordonnées GPS au maximum une fois par minute
    3. Affichage des coordonnées GPS + affichage du dernier evenement MAC (LoRaWAN) retourné par LMIC

Problèmes

Pour le moment je n'ai pas réussi à convenablement interfacer l'écran et le module lora sur le même port SPI. Soit le code du module LoRa crash, soit l'écran crash, mais je n'arrive pas à faire cohabiter les 2 devices sur le même port SPI. J'ai tenté de changer la librairie utilisé pour l'écran.
De plus, j'étais incapable d'utiliser la librairie Adafruit avec un port SPI hardware. Seul le SPI software fonctionnait. Je l'ai donc remplacé par la lib de Bodmer TFT-eSPI qui est capable de driver beaucoup d'écrans différents et est conçu pour fonctionner avec l'ESP.
Même avec cette nouvelle librairie, je n'arrive toujours pas à faire cohabiter les 2 devices. Je pense donc changer mon cablage pour utiliser les 2 SPI hardware disponible sur l'ESP32. J'ai tenté plusieurs tweek sans succès :

Il est possible que ce ne soit pas mon utilisation qui pose problème, mais les drivers eux même qui ne permettent pas de passer un port SPI pour coordonner son utilisation.

Configuration TTN

Notes

Ressources