/ _____) _ | |
( (____ _____ ____ _| |_ _____ ____| |__
\____ \| ___ | (_ _) ___ |/ ___) _ \
_____) ) ____| | | || |_| ____( (___| | | |
(______/|_____)_|_|_| \__)_____)\____)_| |_|
(C)2013 Semtech
- Introduction
The aim of this project is to show an example of the LoRaMac endpoint firmware implementation.
REMARK 1: Currently only devices of Class A are supported.
REMARK 2: The SX1276 device is not yet supported.
- System schematic and definitions
The available supported hardware platforms schematics and LoRaMac specification can be found in the Doc directory.
- Acknowledgements
The mbed (https://mbed.org/) project was used at the beginning as source of inspiration.
- Dependencies
This program uses the AES algorithm implementation (http://www.gladman.me.uk/) by Brian Gladman.
This program uses the CMAC algorithm implementation (http://www.cse.chalmers.se/research/group/dcs/masters/contikisec/) by Lander Casado, Philippas Tsigas.
This program depends on specific hardware platforms. Currently the supported platforms are:
- Bleeper
MCU : STM32L151RD - 384K FLASH, 48K RAM, Timers, SPI, I2C,
USART,
USB 2.0 full-speed device/host/OTG controller,
DAC, ADC, DMA
RADIO : SX1272
ANTENNA : Connector for external antenna
BUTTONS : 1 Reset, 16 position encoder
LEDS : 3
SENSORS : Temperature
GPS : Possible through pin header GPS module connection
SDCARD : Yes
EXTENSION HEADER : Yes, 12 pins
REMARK : None.
- LoRaMote-eu868
MCU : STM32L151CB - 128K FLASH, 10K RAM, Timers, SPI, I2C,
USART,
USB 2.0 full-speed device/host/OTG controller,
DAC, ADC, DMA
RADIO : SX1272
ANTENNA : Printed circuit antenna
BUTTONS : No
LEDS : 3
SENSORS : Proximity, Magnetic, 3 axis Accelerometer, Pressure,
Temperature
GPS : Yes, UP501 module
SDCARD : No
EXTENSION HEADER : Yes, 20 pins
REMARK : The MCU and Radio are on an IMST iM880A module
- SK-iM880A ( IMST starter kit )
MCU : STM32L151CB - 128K FLASH, 10K RAM, Timers, SPI, I2C,
USART,
USB 2.0 full-speed device/host/OTG controller,
DAC, ADC, DMA
RADIO : SX1272
ANTENNA : Connector for external antenna
BUTTONS : 1 Reset, 3 buttons + 2 DIP-Switch
LEDS : 3
SENSORS : Potentiometer
GPS : Possible through pin header GPS module connection
SDCARD : No
EXTENSION HEADER : Yes, all IMST iM880A module pins
REMARK : None
- Usage
Projects for Ride7 and Keil Integrated Development Environments are available.
- Changelog
2014-04-07, v2.2
- General
-
Added IMST SK-iM880A starter kit board support to the project.
- The application payload for the SK-iM880A platform is as follows:
LoRaMac port 3:
{ 0x00/0x01, 0x00, 0x00, 0x00 } ---------- ----- ---------- | | | LED POTI VDD
-
Ping-Pong applications have been split per supported board.
-
Corrected the SX1272 output power management. Added a variable to store the current Radio channel. Added missing FSK bit definition.
-
Made fifo functions coding style coherent with the project.
-
UART driver is now independent of the used MCU
-
2014-03-28, v2.1
-
General
- The timers and RTC management has been rewritten.
- Improved the UART and UP501 GPS drivers.
- Corrected GPIO pin names management.
- Corrected the antenna switch management in the SX1272 driver.
- Added to the radio driver the possibility to choose the preamble length and rxSingle symbol timeout in reception.
- Added Hex coder selector driver for the Bleeper board.
- Changed copyright Unicode character to (C) in all source files.
-
LoRaMac
- MAC commands implemented
- LinkCheckReq YES
- LinkCheckAns YES
- LinkADRReq YES
- LinkADRAns YES
- DevStatusReq YES
- DevStatusAns YES
- JoinReq YES
- JoinAccept YES
- Added acknowledgements retries management. Split the LoRaMacSendOnChannel function in LoRaMacPrepareFrame and LoRaMacSendFrameOnChannel. LoRaMacSendOnChannel now calls the 2 newly defined functions.
**WARNING**: By default the acknowledgement retries specific code isn't enabled. The current http://iot.semtech.com server version doesn't support it.
- Corrected issues on JoinRequest and JoinAccept MAC commands. Added LORAMAC_EVENT_INFO_STATUS_MAC_ERROR event info status.
- MAC commands implemented
2014-02-21, v2.0
- General
- The LoRaMac applications now sends the LED status plus the sensors values.
For the LoRaMote platform the application also sends the GPS coordinates.
-
The application payload for the Bleeper platform is as follows:
LoRaMac port 1:
{ 0x00/0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } ---------- ---------- ---------- ---------- ---- | | | | | LED PRESSURE TEMPERATURE ALTITUDE BATTERY (barometric)
-
The application payload for the LoRaMote platform is as follows:
LoRaMac port 2:
{ 0x00/0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } ---------- ---------- ---------- ---------- ---- ---------------- ---------------- ---------- | | | | | | | | LED PRESSURE TEMPERATURE ALTITUDE BATTERY LATITUDE LONGITUDE ALTITUDE (barometric) (gps)
-
- Adapted applications to the new MAC layer API.
- Added sensors drivers implementation.
- Corrected new or known issues.
- The LoRaMac applications now sends the LED status plus the sensors values.
For the LoRaMote platform the application also sends the GPS coordinates.
- LoRaMac
- MAC commands implemented
- LinkCheckReq YES
- LinkCheckAns YES
- LinkADRReq YES
- LinkADRAns YES
- DevStatusReq YES
- DevStatusAns YES
- JoinReq YES (Not tested)
- JoinAccept YES (Not tested)
- New MAC layer application API implementation.
- MAC commands implemented
- Timers and RTC.
- Still some issues. They will be corrected on next revisions of the firmware.
2014-01-24, v1.1
- LoRaMac
-
MAC commands implemented
- LinkCheckReq NO
- LinkCheckAns NO
- LinkADRReq YES
- LinkADRAns YES
- DevStatusReq YES
- DevStatusAns YES
-
Implemented an application LED control If the server sends on port 1 an application payload of one byte with the following contents:
0: LED off 1: LED on
The node transmits periodically on port 1 the LED status on 1st byte and the message "Hello World!!!!" the array looks like:
{ 0, 'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd', '!', '!', '!', '!' }
-
- Timers and RTC.
- Corrected issues existing in the previous version
- Known bugs are:
- There is an issue when launching an asynchronous Timer. Will be solved in a future version
2014-01-20, v1.1.RC1
-
Added Doc directory. The directory contains:
- LoRa MAC specification
- Bleeper board schematic
-
LoRaMac has been updated according to Release1 of the specification. Main changes are:
- MAC API changed.
- Frame format.
- ClassA first ADR implementation.
- MAC commands implemented
- LinkCheckReq NO
- LinkCheckAns NO
- LinkADRReq YES
- LinkADRAns NO
- DevStatusReq NO
- DevStatusAns NO
-
Timers and RTC rewriting. Known bugs are:
- The Radio wakeup time is taken in account for all timings.
- When opening the second reception window the microcontroller sometimes doesn't enter in low power mode.
2013-11-28, v1.0
- Initial version of the LoRa MAC node firmware implementation.