Stap-voor-stap Handleiding om een RAK 831 LoRa-gateway op Raspberry Pi 3 te Deployen
Dit project neemt je mee door alle stappen die nodig zijn om je RAK 831 LoRa-gatewaymodule operationeel te krijgen met WiFi als backhaul.
Verhaal
Inleiding
Deze stap-voor-stap handleiding is gericht op ontwikkelaars die hun eigen LoRa-gateway willen ontwikkelen met de geweldige RAK831 LoRa-radio-front-end-module van RAK Wireless. De handleiding veronderstelt basiskennis van het Raspberry Pi-ecosysteem, de hardware en het bijbehorende Debian OS. Ook basiskennis van GPIO en periferie op de Raspberry Pi wordt verondersteld. Laten we beginnen:
Wat is LoRa?
LoRa Alliance™ Technologie. LoRaWAN™ is een Low Power Wide Area Network (LPWAN)-specificatie bedoeld voor draadloze, batterij-aangedreven Things in een regionale, nationale of wereldwijde netwerk. LoRaWAN richt zich op kernvereisten van Internet of Things zoals veilige bidirectionele communicatie, mobiliteit en lokalisatieservices.
Het bovenstaande diagram toont de verschillende onderdelen van de LoRa-draadloze architectuur. Enkele belangrijke onderdelen worden hieronder kort uitgelegd:
Belangrijkste Kenmerken van LoRa-technologie en het LoRaWAN-protocol
- GEOLOCATIE: GPS-vrije, laag-energie tracking-toepassingen
- LAAG KOSTEN: Kostenverlaging op drie manieren: infrastructuurinvestering, operationele kosten en end-node sensoren
- GESTANDAARDISEERD: Verbeterde wereldwijde interoperabiliteit versnelt adoptie en roll-out van LoRaWAN-gebaseerde netwerken en IoT-toepassingen
- LAAG VERBRUIK: Protocol ontworpen voor laag stroomverbruik, batterijlevensduur tot 20 jaar
- LANGE AFSTAND: Enkel basisstation biedt diepe penetratie in stedelijke/indoor-gebieden, plus connectiviteit tot 30 mijl in landelijke gebieden
- VEILIG: Ingebedde end-to-end AES128-encryptie
- HOGE CAPACITEIT: Ondersteunt miljoenen berichten per basisstation, ideaal voor publieke netwerkoperators die veel klanten bedienen
De RAK 831 is een LoRa-radio-frontend; d.w.z. het fungeert als ontvanger van binnenkomende LoRa-datapakketten en stuurt ze door naar een aggregator-management-software/hardware-host. Het kan ook LoRa-datapakketten zenden op verzoek van de host-board. In ons geval is een Raspberry Pi 3 het host-board dat de RAK 831-frontend stuurt.
De backhaul kiezen
Wat is een backhaul? Backhaul verwijst naar hoe de Raspberry Pi met internet verbonden zal worden. Deze handleiding focust op WiFi als backhaul, maar je kunt ook Ethernet of 3G/4G gebruiken. Als je Ethernet beschikbaar hebt bij de gateway, kies dat dan boven WiFi of 3G/4G. Dit omdat een extra radiosignaal binnen de behuizing ruis veroorzaakt. De software kan de ruisige omgeving aan, dus het is geen groot probleem, maar hoe minder ruis, hoe beter. Je kunt deze keuze combineren met Power-over-Ethernet om de kabeling tot aan de gateway te minimaliseren.
Aan de andere kant, als je voor WiFi kiest in plaats van Ethernet, probeer dan een dongle met externe antenne te gebruiken en plaats de antenne buiten de behuizing om minder ruis binnen de doos te hebben.
Hardware instellen:
Voordat we iets aansluiten en aanzetten, laten we de volgende configuraties op de Raspberry Pi en de RAK 831-module doen:
RASPBERRY PI
- Krijg het Raspberry Pi 3-board en een 8 GB microSD-kaart klaar met de Raspbian-software. Je kunt zelfs een NOOBS-SD-kaart kopen met de software pre-loaded. Over het flashen van de OS op de SD-kaart, volg de instructies hier: https://www.raspberrypi.org/learning/hardware-guide/
- Sluit de Raspberry Pi aan op een 5 V 2 A voeding. DIT IS HEEL BELANGRIJK. De LoRa-module kan 700 mA piek trekken tijdens actieve draadloze transacties, dus zorg voor een goede voeding voor de Raspberry Pi.
RAK 831:
- Voordat je het bord ook maar aan de stroom zet, haal de antennes die in je kit zaten en sluit ze aan op de antenne-schroefklem. DIT IS ESSENTIEEL.
Verbindingsdetails:
Hier is een tabel die laat zien hoe je de RAK831-module met de Raspberry Pi verbindt:
rpi v3 to rak 831 pin connection De RAK 831 silk-screen-map naar de RAK 831-pinnen.
rak 831 silk screen map to the rak 831 pins
Voor het begrijpen van de Raspberry Pi-pinlayout, ga naar: https://www.raspberrypi.org/documentation/usage/gpio/ voor details.
Opmerkingen:
- De reset-pin kan aan elke GPIO op de Raspberry Pi 3 worden aangesloten.
- Het is essentieel om zeker te zijn dat je de voedingspinnen correct aansluit om schade aan de RAK 831-board te voorkomen.
SPI inschakelen:
De SPI-periferie staat standaard uit. Om het in te schakelen, doe het volgende:
- Voer
sudo raspi-configuit. - Gebruik de pijltje-omlaag om 9 Advanced Options te selecteren.
- Pijltje-omlaag naar A6 SPI.
- Selecteer yes wanneer gevraagd wordt om SPI in te schakelen.
- Selecteer ook yes voor automatisch laden van de kernel-module.
- Gebruik de pijltje-rechts om de <Finish>-knop te selecteren.
- Selecteer yes wanneer gevraagd wordt om te herstarten.
Het systeem herstart. Wanneer het weer opkomt, log in en voer het volgende commando in:
>ls /dev/*spi*
De Pi zou moeten reageren met:
/dev/spidev0.0 /dev/spidev0.1
Deze vertegenwoordigen SPI-apparaten op chip-enable-pinnen 0 en 1 respectievelijk. Deze pinnen zijn hardwired binnen de Pi. Normaal gesproken betekent dit dat de interface maximaal twee periferieën ondersteunt, maar er zijn gevallen waarin meerdere apparaten daisy-chained kunnen worden, met een enkele chip-enable-signaal gedeeld.
Stroomvoorziening aan het bord:
Zoals bij elk draadloos project, hebben ze meer stroom nodig dan het host-board via de voedingspinnen kan levereren. De twee schema's hieronder opsommen hoe je de RAK 831 en Raspberry Pi 3 kunt voeden:
- De 5 V-rail voeden vanuit de Raspberry Pi
- De 5 V-rail op de Raspberry Pi en RAK831 apart voeden
Software-installatie:
Op de Raspberry Pi voeren we de volgende stappen uit om de essentiële software te installeren:
- SPI inschakelen:
Gebruik de raspi-config-utility om SPI in te schakelen ([5] Interfacing options → P4 SPI) en ook het bestandssysteem uit te breiden ([7] Advanced options → A1 Expand filesystem):
$ sudo raspi-config
- Zorg dat git geïnstalleerd is
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install git
- Je WiFi-verbinding op de Raspberry Pi beheren
- WiFi-credentials configureren (zie hier voor extra details)
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
En voeg het volgende blok toe aan het einde van het bestand, vervang SSID en wachtwoord zodat ze overeenkomen met je netwerk:
network={
ssid="The_SSID_of_your_wifi"
psk="Your_wifi_password"
}
- De installer klonen en de installatie starten
$ git clone -b spi https://github.com/ttn-zh/ic880a-gateway.git ~/ic880a-gateway
$ cd ~/ic880a-gateway
$ sudo ./install.sh spi
- De installatiestap zal vragen of je remote-configuratie wilt inschakelen. Type ‘y’ of ‘yes’ en ga door met de installatie. Aan het begin van de commandoregel-installatie toont het script de gateway EUI die belangrijk is voor de volgende staps. NOTEER HET OP!
- Als je de remote-configuratieoptie wilt gebruiken, zorg er dan voor dat je een JSON-bestand hebt aangemaakt met de naam van je gateway EUI (bijv. B827EBFFFE7B80CD.json) in de Gateway Remote Config repository hier: https://github.com/ttn-zh/gateway-remote-config. Fork de repo, voeg je
.json-bestand toe met de juiste configuratie en commit de geforkte repo. Zodra gedaan, stuur een pull request naar de master-repo en het bestand zou de volgende dag in de repo moeten verschijnen. Een voorbeeld-json wordt hieronder getoond:
{
"gateway_conf": {
"gateway_ID": "de id die je noteerde in de install.sh console output",
"servers": [
{
"server_address": "de router waar je mee wilt verbinden",
"serv_port_up": 1700,
"serv_port_down": 1700,
"serv_enabled": true
}
],
"ref_latitude": "de lat van de rak 831-gateway",
"ref_longitude": "de long van de rak 831-gateway",
"ref_altitude": 40,
"contact_email": "contact e-mail van de gateway-eigenaar",
"description": "een korte beschrijving"
}
}
Let op:
Voor een lijst met geldige routers, check de link hier: https://www.thethingsnetwork.org/wiki/Backend/Connect/Gateway
- Standaard verandert de installer de hostname van je Raspberry Pi in ttn-gateway (om botsingen met andere Raspberry Pi's in je netwerk te voorkomen). Je kunt dit overschrijven in non-remote-configuratiemodus.
- HURRAY je gateway zou nu moeten werken. Zorg dat je de gateway de volgende dag herstart voor je json-bestand om proper te worden gedownload naar de RPi3.
- Let op dat de global_config.json in aangepast moet worden volgens:
https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json
Voor diegenen die de mp_pkt_fwd willen gebruiken in plaats van de oude poly-packet-forwarder, hoor hier en installeer met de meegeleverde instructies:
https://github.com/kersing/packet_forwarder/tree/master/mp_pkt_fwd. Opnieuw kun je het global_conf.json-bestand in de root van het project zien, zorg ervoor dat je het bewerkt (belangrijke secties hieronder beschreven) en kopieer hetzelfde naar de bin-map na compilatie.
Enkele configureerbare entiteiten in de global_conf.json:
Het global_conf.json-bestand kan gevonden worden in ./bin/global_conf.json vanaf de basis van je projectdirectory na het draaien van het installatiescript. Hier is een lijst van enkele entiteiten die je misschien wilt bewerken in het global_conf.json-bestand voor je specifieke gateway-configuratie:
- “radio_0” of “radio_1” configuratie, met name de Frequency-parameter en de min en max frequency sweep-parameters.
- “gateway_conf” sectie. Vooral de gateway ID of de EUI van je gateway.
- Server up en down poort in hetzelfde gateway_conf-object samen met je TTN-serveradres of het adres van je eigen applicatieserver als die beschikbaar is.
Het bord resetten:
Wanneer we de Raspberry Pi starten, is het een goede gewoonte om de aangesloten RAK831 LoRa-module te resetten. Er zijn twee manieren om dit te doen:
- Via Shell-script:
Een klein shell-script kan geschreven worden om de RAK831 te resetten voordat de LoRa-driver toegang krijgt tot de hardware. De inhoud van het shell-script kan er als volgt uitzien (veronderstellend dat GPIO 17 (pin 11) van de Raspberry Pi verbonden is met de reset-pin van de RAK831):
#!/bin/bash
echo “17” > /sys/class/gpio/export
echo “out” > /sys/class/gpio/gpio17/direction
echo “1” > /sys/class/gpio/gpio17/value
sleep 5
echo “0” > /sys/class/gpio/gpio17/value
sleep 1
echo “0” > /sys/class/gpio/gpio17/value
Deze regels kunnen opgeslagen worden in een bestand genaamd “rak831_reset.sh”. De gebruiker moet dit script één keer na elke opstart aanroepen om de concentrator-IC in een schone staat te krijgen.
- Via Wiring Pi:
Als het host-systeem een Raspberry Pi is, kan de gebruiker een klein C-tool schrijven om de RAK831 te resetten. Om toegang te krijgen tot de GPIO-pinnen van de Raspberry Pi is er een bibliotheek genaamd “wiringPi” die de low-level details regelt. De bibliotheek kan gedownload worden van https://wiringpi.com. Raadpleeg deze site voor installatie- en gebruiksinstructies. De inhoud van het RAK831_reset.c-bestand kan er als volgt uitzien:
#include
#include
#define GPIO_RESET_PIN 0 // zie wiringPi mapping!
int main() {
wiringPiSetup();
pinMode(GPIO_RESET_PIN, OUTPUT);
digitalWrite(GPIO_RESET_PIN, HIGH);
sleep(5);
digitalWrite(GPIO_RESET_PIN, LOW);
return;
}
De gebruiker moet deze tool één keer na elke opstart aanroepen om de concentrator-IC in een schone staat te krijgen.
gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink
De gateway registreren op het TTN-netwerk:
Om je nodes data naar de cloud te laten sturen, biedt TheThingsNetwork een cloud-service om de data die door LoRa-nodes via een LoRa-gateway wordt verzonden, te parsen en op te slaan.
Lees Meer Details: Getting started with the RAK 831 Lora Gateway and RPi3
Productieproces
- Efficiënt Kamertemperaturen Monitoren Met Raspberry Pi En Nagios
- Home Energy Centre: Zonnepanelen, thermische panelen en kamertemperaturen monitoren met Raspberry Pi en Moteino
- Sensordata integreren in een Raspberry Pi: Een praktische gids
- Een 433 MHz Slimme Huiscounter Bouwen met Sensorflare en Raspberry Pi
- Real-time Pan/Tilt gezichtsvolging op een Raspberry Pi – Praktische Gids
- Een geautomatiseerd aeroponisch systeem bouwen met Raspberry Pi en vochtigheidssensor
- De Acconeer A111 gepulste radar integreren met een Raspberry Pi: Een praktische gids
- Aan de slag met TJBot: Bouw, Configureer en Stem-bedien Je Eigen AI-robot
- $35 NanoPi K1 Plus: Raspberry Pi-achtige SBC met 2 GB RAM, Allwinner H5 CPU, HDMI, Gigabit Ethernet – ideaal voor kiosks, mediacenters en DIY-projecten
- Een Goedkope LoRa Single-Channel Gateway Bouwen met Raspberry Pi
- Bouw een LoRa Gateway met de RAK831 Module op Raspberry Pi 3 – Stap-voor-Stap Gids