esib_iot_challenge
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
esib_iot_challenge [2017/05/17 09:16] – samer | esib_iot_challenge [2017/05/17 15:27] – [2. Devices] samer | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== ESIB IoT Challenge ====== | ====== ESIB IoT Challenge ====== | ||
- | Welcome to the ESIB IoT Challenge. In this challenge, you will designing and prototyping the first IoT services based on a LoRaWAN network. | + | Welcome to the ESIB IoT Challenge. In this challenge, you will be designing and prototyping the first IoT services based on a LoRaWAN network. |
===== -. What is a LoRaWAN Platform? ===== | ===== -. What is a LoRaWAN Platform? ===== | ||
- | Here below you can find a detailed description of the experimental platform implementing an end-to-end LoRaWAN solution. The platform consists of the following elements: | + | During this challenge, |
* Devices that communicate to one or more gateways via a wireless interface using single hop LoRa and implementing the LoRaWAN protocol. These devices are physically connected to sensors that generate data. | * Devices that communicate to one or more gateways via a wireless interface using single hop LoRa and implementing the LoRaWAN protocol. These devices are physically connected to sensors that generate data. | ||
Line 13: | Line 13: | ||
[{{ : | [{{ : | ||
+ | |||
+ | <WRAP center help 100%> | ||
+ | * Where is the LoRa modulation implemented on the platform? | ||
+ | * What are the advantages of the LoRa modulation? | ||
+ | * How LoRa is compatible with LPWAN requirements and constraints? | ||
+ | * What is LoRaWAN? What is the difference between LoRaWAN and LoRa? | ||
+ | * Where is LoRaWAN implemented in the platform? | ||
+ | * Where does the IP layer start in the platform? Comment your answer considering the trends in IoT. | ||
+ | * Illustrate the protocol stacks on the LoRaWAN platform. | ||
+ | </ | ||
===== -. Devices ===== | ===== -. Devices ===== | ||
- | ==== -. Autonomo with LoRaBee ==== | ||
- | Starting with the devices | + | Devices |
- | In order to configure | + | Start by verifying |
- | - Verify that you have the latest Arduino IDE from [[https:// | + | <WRAP left round help 10%> |
- | - Install the board files as noted in [[http:// | + | help box |
- | - Add the following library {{ : | + | </WRAP> |
- | Now you are ready to write a sketch for the device. Here is one example sketch {{ : | ||
- | In this part, you should put the keys for Over-The-Air Activation (OTAA) as explained in the {{ : | + | Download |
- | <code c++> | + | |
- | // USE YOUR OWN KEYS! | + | |
- | const uint8_t devEUI[8] = | + | |
- | { }; | + | |
- | + | ||
- | // USE YOUR OWN KEYS! | + | |
- | const uint8_t appEUI[8] = | + | |
- | { }; | + | |
- | + | ||
- | const uint8_t appKey[16] = | + | |
- | { }; | + | |
- | </ | + | |
- | The pins for connecting | + | You can download |
- | <code c++> | + | |
- | int light_pin = A0; | + | |
- | int moisture_pin = A2; | + | |
- | int temperature_pin = 0; | + | |
- | int temperature_vcc_pin = 1; | + | |
- | int moisture_vcc_pin = 8; | + | |
- | int moisture_gnd_pin = 7; | + | |
- | </ | + | |
- | The OTAA method is used for joining | + | Verify that you have the latest Arduino IDE from https://www.arduino.cc/ |
- | <code c++> | + | Install the board files as noted in http:// |
- | LoRaBee.initOTA(loraSerial, | + | Add the following library sodaq_rn2483_2.zip to your Arduino IDE as explained |
- | </code> | + | |
- | + | ||
- | Eight different sub channels are activated with data rate ranges from 0 to 5: | + | |
- | <code c++> | + | |
- | LoRaBee.configChFreq(0, | + | |
- | LoRaBee.configChFreq(1, | + | |
- | LoRaBee.configChFreq(2, | + | |
- | LoRaBee.configChFreq(3, | + | |
- | LoRaBee.configChFreq(4, | + | |
- | LoRaBee.configChFreq(5, | + | |
- | LoRaBee.configChFreq(6, | + | |
- | LoRaBee.configChFreq(7, | + | |
- | </ | + | |
- | + | ||
- | Finally, the message containing the sensor values is sent in an unconfirmed uplink message: | + | |
- | <code c++> | + | |
- | LoRaBee.send(1, (uint8_t*)message.c_str(), message.length()) | + | |
- | </code> | + | |
- | ==== -. Arduino with Dragino Shield ==== | + | |
- | === -. Periodic Message Sending === | + | |
- | Devices in the LoRaWAN | + | In order to program |
+ | * Arduino IDE | ||
+ | * LMIC Library | ||
+ | * | ||
The pin mapping corresponds to the Dragino electronic schematic: | The pin mapping corresponds to the Dragino electronic schematic: | ||
<code c++> | <code c++> | ||
Line 106: | Line 77: | ||
</ | </ | ||
- | The message containing the sensor values is transmitted on one of the radio channels | + | The message containing the sensor values is transmitted on one of the radio channels: |
<code c++> | <code c++> | ||
LMIC_setTxData2(1, | LMIC_setTxData2(1, | ||
- | </ | ||
- | |||
- | The adaptive data rate is not supported, and the spreading factor is configured as follows: | ||
- | <code c++> | ||
- | LMIC_setDrTxpow(DR_SF7, | ||
</ | </ | ||
Line 119: | Line 85: | ||
You can also find another example of sketch to download: {{ : | You can also find another example of sketch to download: {{ : | ||
- | ===== -. Gateways ===== | ||
- | ==== -. Single Channel Gateway ==== | ||
- | |||
- | The single channel gateway includes a LoRa transmission module (Dragino Shield) connected to a Raspberry Pi (2 or 3) as shown in Figure 2. Communication between the two modules is done over an SPI interface. | ||
- | |||
- | [{{ : | ||
- | |||
- | In order to assemble the gateway, start by making the wire connections: | ||
- | [{{ : | ||
- | [{{ : | ||
- | |||
- | Connect the Raspberry Pi to the Internet and install the packet forwarding software. The source code of the single channel packet forwarder is available on: [[https:// | ||
- | * Enable SPI on the Raspberry Pi using raspi-config | ||
- | * Download and unzip the source code: | ||
- | |||
- | <code bash> | ||
- | wget https:// | ||
- | unzip master.zip | ||
- | </ | ||
- | |||
- | * Install the wiring library: | ||
- | |||
- | <code bash> | ||
- | apt-get update | ||
- | apt-get install wiring | ||
- | </ | ||
- | |||
- | Compile the packet forwarder: | ||
- | <code bash> | ||
- | make all | ||
- | </ | ||
- | |||
- | For gcc version 4.6.3, a compilation error results in the following warning '' | ||
- | < | ||
- | CFLAGS = -std=c++0x -c -Wall -I include/ | ||
- | </ | ||
- | |||
- | Now, you need to configure the single channel packet forwarder. This is done in the {{ : | ||
- | |||
- | Finally, you can run the packet forwarder as root! | ||
- | |||
- | <code bash> | ||
- | nohup ./ | ||
- | </ | ||
- | ==== -. Kerlink IoT Station ==== | ||
- | |||
- | < | ||
- | # activates eth0 at startup | ||
- | ETHERNET=yes | ||
- | # claims dhcp request on eth0 | ||
- | ETHDHCP=yes | ||
- | |||
- | # Selector operator APN | ||
- | GPRSAPN=gprs.touch.com.lb | ||
- | # Enter pin code if activated | ||
- | GPRSPIN=0000 | ||
- | # Update / | ||
- | GPRSDNS=yes | ||
- | # PAP authentication | ||
- | GPRSUSER= | ||
- | GPRSPASSWORD= | ||
- | |||
- | # Bearers priority order | ||
- | # | ||
- | BEARERS_PRIORITY=" | ||
- | </ | ||
- | |||
- | < | ||
- | ./ | ||
- | </ | ||
- | |||
- | < | ||
- | 3270 root 2548 S /bin/sh ./ | ||
- | 3288 root 34908 S ./ | ||
- | </ | ||
- | |||
- | < | ||
- | / | ||
- | |||
- | [root@Wirgrid_0b03008c demo_gps_loramote]# | ||
- | pppd (pid 5273) is running... | ||
- | Session: Rx=58, Tx=163 | ||
- | Globals: Rx=1130457, Tx=1195592 | ||
- | Sum: | ||
- | [root@Wirgrid_0b03008c demo_gps_loramote]# | ||
- | </ | ||
+ | <WRAP center help 100%> | ||
+ | * OTAA | ||
+ | * ID | ||
+ | * Security | ||
+ | </ | ||
===== -. Backend ===== | ===== -. Backend ===== | ||
- | ==== -. Loraserver ==== | ||
- | |||
The Loraserver has a web interface for configuring the applications and devices on the platform. Full details for installing the software are provided on [[https:// | The Loraserver has a web interface for configuring the applications and devices on the platform. Full details for installing the software are provided on [[https:// | ||
Line 221: | Line 104: | ||
In order to enable OTAA join method, you have to make sure that the '' | In order to enable OTAA join method, you have to make sure that the '' | ||
- | |||
- | |||
- | ==== -. The Things Network ==== | ||
===== -. Applications ===== | ===== -. Applications ===== |
esib_iot_challenge.txt · Last modified: 2021/08/28 09:53 by samer