A very easy to understand LoRaWAN-node code.

Dependencies:   LoRaWAN-lib SX1272Lib X_NUCLEO_IKS01A1 mbed

Important parameters:

• In comissioning.h: DevEUI, AppEUI, AppKEY, DevADR, NwksKEY, AppsKEY, OTAA and public network. Frequency and channel block to use, confirmed or unconfirmed messages, app port, app data size and OTAA and Tx duty cycles.

• In LoRaMac.h: Maximum payload and MAC commands length, receive delays, max FCNT, adr ack limit, timeout and delay, max ack retries, rssi threshold and sync words.

• In LoRaMac.cpp: Maximum payload, MAC commands and FRMpayload length.

• In LoRaMac-board.h: Tx power, data rates and band settings.

NOTE: Please refer to LoRaWAN regional parameters (page 12 for US band) to know which parameters you can modify.

Committer:
dgabino
Date:
Tue Apr 03 17:09:34 2018 +0000
Revision:
0:60ff878b27b8
A simpler way to customize your LoRaWAN payload

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dgabino 0:60ff878b27b8 1 /*
dgabino 0:60ff878b27b8 2 / _____) _ | |
dgabino 0:60ff878b27b8 3 ( (____ _____ ____ _| |_ _____ ____| |__
dgabino 0:60ff878b27b8 4 \____ \| ___ | (_ _) ___ |/ ___) _ \
dgabino 0:60ff878b27b8 5 _____) ) ____| | | || |_| ____( (___| | | |
dgabino 0:60ff878b27b8 6 (______/|_____)_|_|_| \__)_____)\____)_| |_|
dgabino 0:60ff878b27b8 7 (C)2015 Semtech
dgabino 0:60ff878b27b8 8
dgabino 0:60ff878b27b8 9 Description: End device comissioning and comunication parameters
dgabino 0:60ff878b27b8 10
dgabino 0:60ff878b27b8 11 License: Revised BSD License, see LICENSE.TXT file include in the project
dgabino 0:60ff878b27b8 12
dgabino 0:60ff878b27b8 13 Maintainer: Miguel Luis and Gregory Cristian
dgabino 0:60ff878b27b8 14 */
dgabino 0:60ff878b27b8 15 #include "board.h"
dgabino 0:60ff878b27b8 16
dgabino 0:60ff878b27b8 17 //********************************************************************* COMISSIONING PARAMETERS ************************************************************************
dgabino 0:60ff878b27b8 18
dgabino 0:60ff878b27b8 19 #ifndef __LORA_COMISSIONING_H__
dgabino 0:60ff878b27b8 20 #define __LORA_COMISSIONING_H__
dgabino 0:60ff878b27b8 21
dgabino 0:60ff878b27b8 22 /*!
dgabino 0:60ff878b27b8 23 * When set to 1 the application uses the Over-the-Air activation procedure
dgabino 0:60ff878b27b8 24 * When set to 0 the application uses the Personalization activation procedure
dgabino 0:60ff878b27b8 25 */
dgabino 0:60ff878b27b8 26 #define OVER_THE_AIR_ACTIVATION 1
dgabino 0:60ff878b27b8 27
dgabino 0:60ff878b27b8 28 /*!
dgabino 0:60ff878b27b8 29 * Indicates if the end-device is to be connected to a private or public network
dgabino 0:60ff878b27b8 30 */
dgabino 0:60ff878b27b8 31 #define LORAWAN_PUBLIC_NETWORK true
dgabino 0:60ff878b27b8 32
dgabino 0:60ff878b27b8 33 #if( OVER_THE_AIR_ACTIVATION != 0 )
dgabino 0:60ff878b27b8 34
dgabino 0:60ff878b27b8 35 /*!
dgabino 0:60ff878b27b8 36 * Mote device IEEE OUI (big endian)
dgabino 0:60ff878b27b8 37 * \remark This is unique to a company or organization
dgabino 0:60ff878b27b8 38 */
dgabino 0:60ff878b27b8 39 #define IEEE_OUI 0x4f, 0x72, 0x62
dgabino 0:60ff878b27b8 40
dgabino 0:60ff878b27b8 41 /*!
dgabino 0:60ff878b27b8 42 * Mote device IEEE EUI (big endian)
dgabino 0:60ff878b27b8 43 *
dgabino 0:60ff878b27b8 44 * \remark In this application, if the last 4 bytes are all 0, then the 32 bit address is automatically generated using a pseudo random generator seeded with a value derived from BoardUniqueId value
dgabino 0:60ff878b27b8 45 * If provided by user, e.g. {IEEE_OUI, 0x00, 0x00, 0x00, 0xFF, 0x01}, then this value is used by the application. *0x69, 0x00, 0xab, 0xcd, 0xaa
dgabino 0:60ff878b27b8 46 */
dgabino 0:60ff878b27b8 47 #define LORAWAN_DEVICE_EUI { IEEE_OUI, 0x69, 0x00, 0xab, 0xcd, 0xff }
dgabino 0:60ff878b27b8 48
dgabino 0:60ff878b27b8 49 /*!
dgabino 0:60ff878b27b8 50 * Application IEEE EUI (big endian)
dgabino 0:60ff878b27b8 51 */
dgabino 0:60ff878b27b8 52 #define LORAWAN_APPLICATION_EUI { 0x70, 0xb3, 0xd5, 0x7e, 0xd0, 0x00, 0x96, 0x4b} //0x70, 0xb3, 0xd5, 0x7e, 0xd0, 0x00, 0x96, 0x4b for TTN server
dgabino 0:60ff878b27b8 53 //0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 for semtech NA server
dgabino 0:60ff878b27b8 54 /*!
dgabino 0:60ff878b27b8 55 * AES encryption/decryption cipher application key
dgabino 0:60ff878b27b8 56 */
dgabino 0:60ff878b27b8 57 #define LORAWAN_APPLICATION_KEY { 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff }
dgabino 0:60ff878b27b8 58
dgabino 0:60ff878b27b8 59 #else
dgabino 0:60ff878b27b8 60
dgabino 0:60ff878b27b8 61 /*!
dgabino 0:60ff878b27b8 62 * Device address on the network (big endian)
dgabino 0:60ff878b27b8 63 *
dgabino 0:60ff878b27b8 64 * \remark In this application, if the value is 0, then the address is automatically generated using a pseudo random generator seeded with a value derived from BoardUniqueId value
dgabino 0:60ff878b27b8 65 * If provided by user, e.g. 0x78563412, then this value is used by the application
dgabino 0:60ff878b27b8 66 */
dgabino 0:60ff878b27b8 67 #define LORAWAN_DEVICE_ADDRESS ( uint32_t )0x0
dgabino 0:60ff878b27b8 68
dgabino 0:60ff878b27b8 69 /*!
dgabino 0:60ff878b27b8 70 * AES encryption/decryption cipher network session key
dgabino 0:60ff878b27b8 71 */
dgabino 0:60ff878b27b8 72 #define LORAWAN_NWKSKEY { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C }
dgabino 0:60ff878b27b8 73
dgabino 0:60ff878b27b8 74 /*!
dgabino 0:60ff878b27b8 75 * AES encryption/decryption cipher application session key
dgabino 0:60ff878b27b8 76 */
dgabino 0:60ff878b27b8 77 #define LORAWAN_APPSKEY { 0x2B, 0x7E, 0x15, 0x16, 0x28, 0xAE, 0xD2, 0xA6, 0xAB, 0xF7, 0x15, 0x88, 0x09, 0xCF, 0x4F, 0x3C }
dgabino 0:60ff878b27b8 78
dgabino 0:60ff878b27b8 79 #endif
dgabino 0:60ff878b27b8 80
dgabino 0:60ff878b27b8 81 #endif // __LORA_COMISSIONING_H__
dgabino 0:60ff878b27b8 82
dgabino 0:60ff878b27b8 83
dgabino 0:60ff878b27b8 84 //********************************************************************* COMUNICATION PARAMETERS ************************************************************************
dgabino 0:60ff878b27b8 85
dgabino 0:60ff878b27b8 86 #ifndef __LORA_CONFIG_H__
dgabino 0:60ff878b27b8 87 #define __LORA_CONFIG_H__
dgabino 0:60ff878b27b8 88
dgabino 0:60ff878b27b8 89 /*!
dgabino 0:60ff878b27b8 90 * Configure End-Device to use 8-channels corresponding to Block A
dgabino 0:60ff878b27b8 91 * Comment/Uncomment to disable/enable Hybrid mode
dgabino 0:60ff878b27b8 92 */
dgabino 0:60ff878b27b8 93 #define USE_BAND_915_HYBRID
dgabino 0:60ff878b27b8 94
dgabino 0:60ff878b27b8 95 #ifndef USE_BAND_915_HYBRID
dgabino 0:60ff878b27b8 96 /*!
dgabino 0:60ff878b27b8 97 * Configure End-Device to use 64-channels across to Block A thru Block H
dgabino 0:60ff878b27b8 98 */
dgabino 0:60ff878b27b8 99 #define USE_BAND_915
dgabino 0:60ff878b27b8 100
dgabino 0:60ff878b27b8 101 #else
dgabino 0:60ff878b27b8 102
dgabino 0:60ff878b27b8 103 // define channel block: e.g. USE_BAND_915_HYBRID_BLOCK_A, USE_BAND_915_HYBRID_BLOCK_B ... USE_BAND_915_HYBRID_BLOCK_H etc.
dgabino 0:60ff878b27b8 104 #define USE_BAND_915_HYBRID_BLOCK_A
dgabino 0:60ff878b27b8 105
dgabino 0:60ff878b27b8 106 #endif
dgabino 0:60ff878b27b8 107
dgabino 0:60ff878b27b8 108 /*!
dgabino 0:60ff878b27b8 109 * Join requests trials periodicity(+12s). It is the time between RX1/RX2 and next TX
dgabino 0:60ff878b27b8 110 */
dgabino 0:60ff878b27b8 111 #define OVER_THE_AIR_ACTIVATION_DUTYCYCLE 5000000 // value in us
dgabino 0:60ff878b27b8 112
dgabino 0:60ff878b27b8 113 /*!
dgabino 0:60ff878b27b8 114 * Defines the application data transmission periodicity. It is the time between RX1/RX2 and next TX
dgabino 0:60ff878b27b8 115 */
dgabino 0:60ff878b27b8 116 #define APP_TX_DUTYCYCLE 25000000 // value in us
dgabino 0:60ff878b27b8 117
dgabino 0:60ff878b27b8 118 /*!
dgabino 0:60ff878b27b8 119 * Defines the randomness in the dutycycle.
dgabino 0:60ff878b27b8 120 */
dgabino 0:60ff878b27b8 121 #define APP_TX_DUTYCYCLE_RND 3000000
dgabino 0:60ff878b27b8 122
dgabino 0:60ff878b27b8 123 /*!
dgabino 0:60ff878b27b8 124 * LoRaWAN confirmed messages
dgabino 0:60ff878b27b8 125 * \remark 1 : Confirmed messages enabled. Must receive ACK from network server
dgabino 0:60ff878b27b8 126 0 : Confirmed messages disabled.
dgabino 0:60ff878b27b8 127 */
dgabino 0:60ff878b27b8 128 #define LORAWAN_CONFIRMED_MSG_ON 0
dgabino 0:60ff878b27b8 129
dgabino 0:60ff878b27b8 130 /*!
dgabino 0:60ff878b27b8 131 * LoRaWAN Adaptive Data Rate
dgabino 0:60ff878b27b8 132 *
dgabino 0:60ff878b27b8 133 * \remark Please note that when ADR is enabled the end-device uses default datarate of DR_0
dgabino 0:60ff878b27b8 134 */
dgabino 0:60ff878b27b8 135 #define LORAWAN_ADR_ON 0
dgabino 0:60ff878b27b8 136
dgabino 0:60ff878b27b8 137 /*!
dgabino 0:60ff878b27b8 138 * Default mote datarate
dgabino 0:60ff878b27b8 139 * \remark DR_0 : 980 bps; DR_1 : 1760 bps; DR_2 : 3125 bps; DR_3 : 5470 bps; DR_4 : 12500 bps
dgabino 0:60ff878b27b8 140 */
dgabino 0:60ff878b27b8 141 #define LORAWAN_DEFAULT_DATARATE DR_0
dgabino 0:60ff878b27b8 142
dgabino 0:60ff878b27b8 143 /*!
dgabino 0:60ff878b27b8 144 * LoRaWAN application port
dgabino 0:60ff878b27b8 145 */
dgabino 0:60ff878b27b8 146 #define LORAWAN_APP_PORT 5
dgabino 0:60ff878b27b8 147
dgabino 0:60ff878b27b8 148 /*!
dgabino 0:60ff878b27b8 149 * LoRaWAN User defined Tx Power
dgabino 0:60ff878b27b8 150 *
dgabino 0:60ff878b27b8 151 * \remark The Tx power level is set as TX_POWER_P_DBM, where 10 <= P <= 30 and P is even value { i.e. P = 10, 12, 14 ... 28 or 30 }
dgabino 0:60ff878b27b8 152 */
dgabino 0:60ff878b27b8 153 #define LORAWAN_TX_POWER TX_POWER_10_DBM
dgabino 0:60ff878b27b8 154
dgabino 0:60ff878b27b8 155
dgabino 0:60ff878b27b8 156 #define LORAWAN_APP_DATA_SIZE 11
dgabino 0:60ff878b27b8 157
dgabino 0:60ff878b27b8 158 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
dgabino 0:60ff878b27b8 159
dgabino 0:60ff878b27b8 160 #define USE_IKS01A1_SENSOR
dgabino 0:60ff878b27b8 161
dgabino 0:60ff878b27b8 162 #endif // __LORA_CONFIG_H__
dgabino 0:60ff878b27b8 163