Passer au contenu principal

LMIC Node (ESP32/SAMD21/STM32)

LMIC Node / Platformio / TTgo LoRa v1

LMIC-Node est un exemple d'application LoRaWAN pour un node sur le réseau The Thing Network.
Elle a la capacité de fonctionner sans modifications sur pas mal de cartes (esp32/SAMD21/STM32)

  • Envoie des messages en uplink,
  • Réception des messages en downlink.
  • Information de debug

Par défaut, l'application envoie à la passerelle un compteur en 4 bytes.

Bibliothèques utilisés : https://github.com/mcci-catena/arduino-lmic
Version de LoRaWan : 1.0.3

La V.1.1 n'est pas compatible pour le moment car il n'y pas la structure de clé séparé défini dans celle-ci
voir https://github.com/mcci-catena/arduino-lmic#features

Télécharger LMIC-node

https://github.com/lnlp/LMIC-node

PinOut LolinD32

  • NSS : 27
  • RST : 32
  • DIO0 : 33
  • DIO1 : 34
  • SCK : SCK
  • MOSI: MOSI
  • MISO : MISO

Paramétrages sur The Thing Network

A l'exception de ces paramètres, vous pouvez tous laisser par défaut.

image-1635243001681.png

Téléversement sur Platformio

Platformio va de lui-même télécharger les bibliothèques manquantes, il suffit d'ouvrir le dossier contenant le code.
Il faut toutefois modifier deux fichiers (les clés LoRaWAN et la carte utilisée dans platformio.ini)

DEVUI doit être en LSB
AppKey doit être e MSB
AppEUI : à zéro voir : https://www.thethingsindustries.com/docs/devices/adding-devices/

Enter a JoinEUI/AppEUI if provided by your manufacturer. If your device is programmable, you may use the Fill with zeros button, and then program the same JoinEUI/AppEUI (0000000000000000) in the device.

image-1635406606687.png

keyfiles/lorawankeys.h (à créer à partir de lorawan-keys_example.h)

#define OTAA_DEVEUI 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX

// Application Identifier (u1_t[8]) in lsb format
#define OTAA_APPEUI 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

// Application Key (u1_t[16]) in msb format
#define OTAA_APPKEY 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX, 0xXX

platformio.ini

[platformio]
default_envs = 
    ;<platformio.ini board selector guard> Comment this line and uncomment one board-id below:

    ; LoRa development boards with integrated LoRa support:

    ; Board-id                            Board name
    ;---------                            ----------
    ; adafruit_feather_m0_lora          ; Adafruit Feather M0 LoRa
    ; disco_l072cz_lrwan1               ; Discovery B-L072Z-LRWAN1
    ; heltec_wifi_lora_32_v2            ; Heltec Wifi LoRa 32 V2
    ; heltec_wifi_lora_32               ; Heltec Wifi LoRa 32
    ; heltec_wireless_stick_lite        ; Heltec Wireless Stick Lite
    ; heltec_wireless_stick             ; Heltec Wireless Stick
    ; lopy4                             ; Pycom Lopy4
    ; lora32u4II                        ; BSFrance LoRa32u4 II v1.0, v1.1, v1.2, v1.3
    ttgo_lora32_v1                    ; TTGO LoRa32 v1.3
    ; ttgo_lora32_v2                    ; TTGO LoRa32 v2.0
    ; ttgo_lora32_v21                   ; TTGO LoRa32 v2.1.6
    ; ttgo_t_beam                       ; TTGO T-Beam v0.5, v0.6, v0.7
    ; ttgo_t_beam_v1                    ; TTGO T-Beam v1.0, v1.1

    ; Development boards that require an external SPI LoRa module:

    ; Board-id                            Board name
    ;---------                            ----------
    ; adafruit_qt_py_m0                 ; Adafruit QT Py    
    ; blackpill_f103c8_128k             ; Black Pill 128k
    ; blackpill_f103c8                  ; Black Pill  64k
    ; bluepill_f103c8_128k              ; Blue Pill 128k
    ; bluepill_f103c8                   ; Blue Pill  64k
    ; lolin_d32_pro                     ; Lolin D32 Pro
    ; lolin_d32                         ; Lolin D32
    ; lolin32                           ; Lolin32
    ; nodemcu_32s                       ; NodeMCU-32S
    ; nodemcuv2                         ; NodeMCU V2
    ; pico                              ; Raspberry Pi Pico
    ; pro8mhzatmega328                  ; Arduino Pro Mini 3.3V 8Mhz
    ; samd21_m0_mini                    ; SAMD21 M0-Mini
    ; teensylc                          ; Teensy LC

Modification du code

Voici les parties du code, modifiable pour ajouter ces fonctionnalités, elles sont balisés par ce commentaire

image-1635407488486.png

  • Au début du code pour ajouter les bibliothèques
  • Dans la fonction processWork() pour la lecture des capteurs
  • Dans la fonction setup() après initLmic(); pour initialiser les capteurs