LMIC-node | One example to rule them all

The code is tested on a TTGO T-Beam board v1.0 (with and without display) and a TTGO LoRa32 v2.1.6 with an NEO-6M gps module.
I think all other ESP32 boards in the boards directory equiped with a gps (module) will work if they support the tinygps++ library. You only have to change the TX en RX port definitions in platfomio.ini.

LOL - for various values of “only” - see one of the other threads where that is the exact issue for someone right now!

Hence the extreme importance of a basic readme, however terse, to highlight that with different board revisions comes different pin connections. Otherwise you’ll end up with lots of issues on your repro asking why it doesn’t work.

I know, I know. I’m on holyday now somewhere in Europe and there are a lot of other important things to do now :wink:

FYI:

LMIC-node is currently listed
First in The Top 5 LoRaWAN LMIC Open Source Projects on GitHub.

See: https://awesomeopensource.com/projects/lmic/lorawan

And 10th place in The Top 60 Arduino Lorawan Open Source Projects on Github.

8 Likes

Well deserved - a comprehensive & detailed piece of work!

2 Likes

Hello,
I cannot get this code to work with a heltec wireless stick lite card, are other parameters necessary to modify?

I also copied the keyfiles file

;-------------------------------------------------------------------------------
;
; File: platformio.ini
;
; Function: Project configuration file for LMIC-node.
;
; Copyright: Copyright (c) 2021 Leonel Lopes Parente
;
; License: MIT License. See accompanying LICENSE file.
;
; Author: Leonel Lopes Parente
;
; Description: This is the main configuration file. It contains:
; - Board selector to select your board type
; - Common settings used for all boards
; - Board specific settings that can be altered per board.
;
; For a description of all settings see README.md
;
;-------------------------------------------------------------------------------

; ------------------------------------------------------------------------------
; | Board Selector |
; | |
; | Select your board by uncommenting EXACTLY ONE board-id below. |
; ------------------------------------------------------------------------------

[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

; ------------------------------------------------------------------------------
; | Common Settings |
; | |
; | These settings are shared by all board configurations except for |
; | nodemcuv2 which uses its own monitor_speed setting. |
; ------------------------------------------------------------------------------

[common]

monitor_speed = 115200 ; No need to change this.

build_flags =
-D DO_WORK_INTERVAL_SECONDS=60

; -D ABP_ACTIVATION                ; Use ABP instead of OTAA activation.
;
; -D WAITFOR_SERIAL_SECONDS=10     ; Can be used to override the default value (10).
;                                    Is used only for boards with default set to != 0 in BSF.
;
; -D LMIC_CLOCK_ERROR_PPM=0        ; If not defined defines, otherwise overrides value defined in BSF.
;                                    Is for testing purposes only.
;                                    Do not enable this unless you explicitly know what you are doing.
;
; -D STM32_POST_INITSERIAL_DELAY_MS=1500  ; Workaround for STM32 boards. Can be used 
;                                           to override value (milliseconds) in BSF.

lib_deps =
olikraus/U8g2 ; OLED display library
lnlp/EasyLed ; LED library
; ███ Add additional libraries for User Code below this line ███

; --------------------------------------------------
; | Shortcuts to enable quick and easy changes |
; --------------------------------------------------

[pico]
upload_port = E: ; For Raspberry Pi Pico.
; Operating system and hardware dependent.
; Placed here so it can be easily changed.
; See section [env:pico] below for more information.

; --------------------------------------------------
; | MCCI LoRaWAN LMIC library specific settings |
; --------------------------------------------------

[mcci_lmic]
; LMIC-node was tested with MCCI LoRaWAN LMIC library v3.3.0 and v4.0.0.
; Some changes have been announced for future versions of the MCCI library
; which may be incompatible with LMIC-node. In case of problems just
; use mcci-catena/MCCI LoRaWAN LMIC library@4.0.0 below which will
; explicitly use v4.0.0 of the library.
; Perform ‘PlatformIO: Clean’ after changing library version and
; in case of issues remove the old version from .pio/libdeps/*.

; Note: LMIC_PRINTF_TO is defined for each board separately
; in the board specific sections. Don’t define it in this section.

lib_deps =
; Only ONE of below LMIC libraries should be enabled.
mcci-catena/MCCI LoRaWAN LMIC library ; MCCI LMIC library (latest release)
; mcci-catena/MCCI LoRaWAN LMIC library@4.0.0 ; MCCI LMIC library v4.0.0

build_flags =
; Use platformio.ini for settings instead lmic_project_config.h.
-D ARDUINO_LMIC_PROJECT_CONFIG_H_SUPPRESS

; Ping and beacons not supported for class A, disable to save memory.
-D DISABLE_PING
-D DISABLE_BEACONS

; -D LMIC_DEBUG_LEVEL=1            ; 0, 1 or 2

; -D CFG_sx1272_radio=1            ; Use for SX1272 radio
-D CFG_sx1276_radio=1              ; Use for SX1276 radio
-D USE_ORIGINAL_AES                ; Faster but larger, see docs
; -D LMIC_USE_INTERRUPTS           ; Not tested or supported on many platforms
; -D LMIC_ENABLE_DeviceTimeReq=1   ; Network time support

; --- Regional settings -----
; Enable only one of the following regions:    
; -D CFG_as923=1
; -D CFG_as923jp=1   
; -D CFG_au915=1
; -D CFG_cn490=1                   ; Not yet supported
; -D CFG_cn783=1                   ; Not yet supported
; -D CFG_eu433=1                   ; Not yet supported
-D CFG_eu868=1
; -D CFG_in866=1
; -D CFG_kr920=1
; -D CFG_us915=1

; --------------------------------------------------
; | IBM LMIC framework library specific settings |
; --------------------------------------------------

[classic_lmic]
; IMPORTANT:
; This library was recently DEPRECATED and is no longer maintained.
; It is not fully LoRaWAN compliant (e.g. in handling of MAC commands)
; and is therefore less suitable for use with The Things Network V3.
;
; Region, radio and debug settings CANNOT be changed in platformio.ini.
; They must be configured in file: config.h in the following location:
; .pio/libdeps//IBM LMIC framework/src/lmic
;
; When making changes to config.h:
; CONFIG.H MUST BE CHANGED FOR EACH BOARD SEPARATELY!
; (By default libraries are installed per project per build config/board.)

lib_deps =
matthijskooijman/IBM LMIC framework ; [Deprecated] Classic LMIC library

build_flags =
; DEFAULT VALUES defined in config.h:
; CFG_sx1276_radio 1
; CFG_eu868 1
; LMIC_DEBUG_LEVEL 0

; Ping and beacons not supported for class A, disable to save memory.
-D DISABLE_PING
-D DISABLE_BEACONS

; ------------------------------------------------------------------------------
; | LoRa development boards with integrated LoRa support |
; | |
; | Some but not all of these boards have an onboard display. |
; | Some boards require additional wiring that needs to be manually added. |
; | Check the Board Support Files in the boards folder for information. |
; ------------------------------------------------------------------------------

What have you tried?

What output does your serial monitor show?

You copied the file? Or did you create a new file with the as in step “3.12 lorawan-keys.h” and inserted your keys in it?

yes I created a new file with my keys
lorawan-keys.h

— Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
— More details at Redirecting...
— Miniterm on COM4 115200,8,N,1 —
— Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H —

LMIC-node

Device-id: wireless-sticklt
LMIC library: MCCI
Activation: OTAA
Interval: 60 seconds

000000002811: Event: EV_JOINING

000000002849: doWork job started
000000497731: Event: EV_TXSTART
000000890874: Event: EV_JOIN_TXCOMPLETE

000003752849: doWork job started
000004647767: Event: EV_TXSTART
000005040899: Event: EV_JOIN_TXCOMPLETE

000007502849: doWork job started
000008901704: Event: EV_TXSTART
000009294838: Event: EV_JOIN_TXCOMPLETE

What do you see in your application console?

Device-id: wireless-sticklt
LMIC library: MCCI
Activation: OTAA
Interval: 60 seconds

000000002811: Event: EV_JOINING

000000002849: doWork job started
000000497731: Event: EV_TXSTART
000000890874: Event: EV_JOIN_TXCOMPLETE

000003752849: doWork job started
000004647767: Event: EV_TXSTART
000005040899: Event: EV_JOIN_TXCOMPLETE

000007502849: doWork job started
000008901704: Event: EV_TXSTART
000009294838: Event: EV_JOIN_TXCOMPLETE

What do you see in your TTN application console?

image

only creat device
Capture d’écran 2022-01-06 143402

There are 4 things to check on LMIC-node

  1. Comment <platformio.ini board selector guard> Comment this line and uncomment one board-id below: out and uncomment your board.

image

  1. Check ABP or OTAA (below is for OTAA)

image

  1. Check the regional settings.

image

  1. Creating the keys file and check if your keys are in the correct order (MSB or LSB)

image

And also check on you End devise under general settings → Network layer

image

1
2
3
4
5
6

i think all is good but the device don’t connect

Few more.

1.What region are you in?
2. How far away is your gateway? (If you are in the same room the move your gate way or node and get at least 5m and a brick wall in between the two)

French

1 Like

So you should be -D CFG_eu868=1

I moved the gateway to another room and still no connection. While a device with an RN2483 works correctly

1 Like