Got examples/join working
This commit is contained in:
parent
fab63d4796
commit
baf7df4a54
65
README.md
65
README.md
@ -1,7 +1,6 @@
|
||||
# lmic-rpi-lora-gps-hat
|
||||
|
||||
|
||||
# 2017-04-12 WORK UNDER CONSTRUCTION - DO NOT CLONE OR DOWNLOAD
|
||||
# 2017-04-12 WORK UNDER CONSTRUCTION
|
||||
|
||||
Hardware Abstraction Layer (HAL) for IBM's LMIC 1.6 communication stack
|
||||
targeted to RPi and Dragino LoRA/GPS HAT.
|
||||
@ -34,7 +33,7 @@ the BSD License.
|
||||
## Example "hello"
|
||||
Directory: /examples/hello
|
||||
|
||||
Modifications neccessary: None
|
||||
Modifications necessary: None
|
||||
|
||||
This example does not use radio, it just periodically logs a counter value.
|
||||
Can be used to checked if the timer implementation on RPi works as expected.
|
||||
@ -66,3 +65,63 @@ Possible output:
|
||||
|
||||
000003034 Debug: Label 'cnt = ' value 0x3
|
||||
|
||||
## Example "join"
|
||||
Directory: /examples/join
|
||||
|
||||
Modifications necessary:
|
||||
|
||||
File /examples/join/main.c:
|
||||
|
||||
* Adapt "application router ID (LSBF)" according for your network infrastructure.
|
||||
In case of The Things Network, this is the "Application EUI" of the application
|
||||
created in the TTN console. Double check that you use the LSB (least significant
|
||||
byte first) notation of the Application EUI.
|
||||
|
||||
* Adapt "unique device ID (LSBF)" according for your network infrastructure.
|
||||
In case of The Things Network, you need to register a new device using TTN console.
|
||||
Copy this "Device EUI" from the console and make sure you use the LSB notation.
|
||||
|
||||
* Adapt "device-specific AES key (derived from device EUI)".
|
||||
This is the secret shared between your device and The Things Network. In TTN
|
||||
terms this is known as "(LoRa) App Key".
|
||||
Copy this 16 bytes and stick to MSB notation (Most significant byte first)
|
||||
|
||||
File /lmic/lmic.c:
|
||||
|
||||
The LMIC 1.6 stack randomly chooses one of six frequencies to send the "join" message
|
||||
to the network. Tesing with a Kerlink IoT Station, only the following frequencies
|
||||
worked: 868.1 868.3 868.5 MHz
|
||||
The following default frequency did not work: 864.1 864.3 864.5
|
||||
For this reason, I modified the code to only randomly choose between the three
|
||||
working join frequencies.
|
||||
|
||||
|
||||
This example verifies that the radio is working and that the node settings are
|
||||
correct and match your network infrastructure. It uses OTAA (Over the Air Activiation)
|
||||
to register the node. Note that this example _won't_
|
||||
work with a Single Channel Gateway.
|
||||
|
||||
cd examples/join
|
||||
make clean
|
||||
make
|
||||
sudo ./build/join.out
|
||||
|
||||
Possible outpout:
|
||||
|
||||
000000000 HAL: Initializing ...
|
||||
000000001 HAL: Set radio RST pin to 0x00
|
||||
000000002 HAL: Wait until 000000002 ms
|
||||
000000003 HAL: Set radio RST pin to 0x02
|
||||
000000003 HAL: Wait until 000000008 ms
|
||||
000000008 HAL: Receiving ...
|
||||
000000020 Debug: Initializing
|
||||
000000020 Debug: JOINING
|
||||
000002625 Debug: EV_TXSTART
|
||||
000002626 HAL: Sending ...
|
||||
000007689 HAL: Receiving ...
|
||||
000007689 HAL: Wait until 000007690 ms
|
||||
000007762 Debug: JOINED
|
||||
|
||||
What can be seen is that after sending the "join" message, the LMIC stack waits
|
||||
5 seconds for the receive window and receives the acknowledgement from the LoRa gateway.
|
||||
|
||||
|
@ -33,13 +33,13 @@
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
// application router ID (LSBF)
|
||||
static const u1_t APPEUI[8] = { 0x02, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xFF, 0xC0 };
|
||||
static const u1_t APPEUI[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
|
||||
// unique device ID (LSBF)
|
||||
static const u1_t DEVEUI[8] = { 0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF };
|
||||
static const u1_t DEVEUI[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
|
||||
// device-specific AES key (derived from device EUI)
|
||||
static const u1_t DEVKEY[16] = { 0xAB, 0x89, 0xEF, 0xCD, 0x23, 0x01, 0x67, 0x45, 0x54, 0x76, 0x10, 0x32, 0xDC, 0xFE, 0x98, 0xBA };
|
||||
static const u1_t DEVKEY[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
|
||||
|
||||
|
||||
//////////////////////////////////////////////////
|
||||
|
17
lmic/lmic.c
17
lmic/lmic.c
@ -697,6 +697,23 @@ static void initJoinLoop (void) {
|
||||
LMIC.txChnl = 0;
|
||||
#else
|
||||
LMIC.txChnl = os_getRndU1() % 6;
|
||||
|
||||
// 2017-04-12 Wolfgang Klenk
|
||||
// Instead to choose a random frequence for joining the network,
|
||||
// you can use a fixed frequency.
|
||||
// LMIC.txChnl = 0; // EU868: 868.1 MHz
|
||||
// LMIC.txChnl = 2; // EU868: 868.3 MHz
|
||||
// LMIC.txChnl = 4; // EU868: 868.5 MHz
|
||||
// LMIC.txChnl = 1; // EU868: 864.1 MHz -- Seems not to work with Kerlink IoT Station
|
||||
// LMIC.txChnl = 3; // EU868: 864.3 MHz -- Seems not to work with Kerlink IoT Station
|
||||
// LMIC.txChnl = 5; // EU868: 864.5 MHz -- Seems not to work with Kerlink IoT Station
|
||||
|
||||
// 2017-04-12 Wolfgang Klenk
|
||||
// Workaround for Kerlink IoT Station Join Frequencies
|
||||
if (LMIC.txChnl == 1) LMIC.txChnl = 0;
|
||||
if (LMIC.txChnl == 3) LMIC.txChnl = 2;
|
||||
if (LMIC.txChnl == 5) LMIC.txChnl = 4;
|
||||
|
||||
#endif
|
||||
LMIC.adrTxPow = 14;
|
||||
setDrJoin(DRCHG_SET, DR_SF7);
|
||||
|
2223
lmic/lmic.c.original
Normal file
2223
lmic/lmic.c.original
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user