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:17] – samer | esib_iot_challenge [2017/05/17 10:25] – samer | ||
---|---|---|---|
Line 15: | Line 15: | ||
===== -. Devices ===== | ===== -. Devices ===== | ||
- | ==== -. Autonomo with LoRaBee ==== | ||
- | Starting with the devices in the LoRaWAN platform, we will use an [[http:// | + | ==== -. PC Configuration ==== |
+ | In orde to program the LoRaWAN devices, you should verify | ||
- | In order to configure the Autonomo with LoRaBee device, you should follow these steps: | + | * Arduino IDE |
+ | * LMIC Library | ||
- | - Verify that you have the latest Arduino IDE from [[https:// | ||
- | - Install the board files as noted in [[http:// | ||
- | - Add the following library {{ : | ||
- | |||
- | 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 {{ : | ||
- | <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 the sensors are specified in these declarations (A0 for light sensor, A2 for moisture sensor, and D0 temperature sensor): | ||
- | <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 the network and Adaptive Data Rate (ADR) is activated: | ||
- | <code c++> | ||
- | LoRaBee.initOTA(loraSerial, | ||
- | </ | ||
- | |||
- | 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, | ||
- | </ | ||
==== -. Arduino with Dragino Shield ==== | ==== -. Arduino with Dragino Shield ==== | ||
- | === -. Periodic Message Sending === | ||
- | Devices in the LoRaWAN platform | + | Devices in the LoRaWAN platform |
The pin mapping corresponds to the Dragino electronic schematic: | The pin mapping corresponds to the Dragino electronic schematic: | ||
Line 107: | Line 56: | ||
</ | </ | ||
- | 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 120: | Line 64: | ||
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]# | ||
- | </ | ||
===== -. Backend ===== | ===== -. Backend ===== |
esib_iot_challenge.txt · Last modified: 2021/08/28 09:53 by samer