Schritt-für-Schritt: RAK 831 LoRa Gateway auf Raspberry Pi 3 deployen
Dieses Projekt führt Sie durch alle Schritte, um Ihr RAK 831 LoRa Gateway Modul mit WiFi als Backhaul zum Laufen zu bringen.
Story
Einführung
Diese Schritt-für-Schritt-Anleitung richtet sich an Entwickler, die ihr eigenes LoRa Gateway mit dem großartigen RAK831 LoRa Radio Front-End Modul von RAK Wireless entwickeln wollen. Der Guide setzt grundlegendes Wissen über das Raspberry Pi Ökosystem, Hardware und zugehöriges Debian OS voraus. Auch Grundwissen zu GPIO und Peripherie des Raspberry Pi wird vorausgesetzt. Also los:
Was ist LoRa?
LoRa Alliance™ Technology. LoRaWAN™ ist eine Low Power Wide Area Network (LPWAN) Spezifikation für drahtlose, batteriebetriebene Things in regionalen, nationalen oder globalen Netzen. LoRaWAN adressiert Kernanforderungen des IoT wie sichere bidirektionale Kommunikation, Mobilität und Lokalisierungsdienste.
Das obige Diagramm zeigt die verschiedenen Teile der LoRa Wireless Architektur. Einige wichtige Teile kurz erklärt:
Schlüssel-Features von LoRa Technologie und LoRaWAN Protokoll
- GEOLOCATION: Ermöglicht GPS-freies, stromsparendes Tracking
- LOW COST: Senkt Kosten dreifach: Infrastruktur-Investition, Betriebskosten, End-Node-Sensoren
- STANDARDIZED: Verbesserte globale Interoperabilität beschleunigt Adoption und Rollout
- LOW POWER: Protokoll für minimalen Stromverbrauch, Batterielebensdauer bis 20 Jahre
- LONG RANGE: Einzelne Basisstation bietet tiefe Penetration in dichtem Urban/Indoor, plus ländliche Gebiete bis 30 Meilen
- SECURE: Eingebettete Ende-zu-Ende AES128 Verschlüsselung
- HIGH CAPACITY: Millionen Messages pro Basisstation, ideal für öffentliche Netzbetreiber
Der RAK 831 ist ein LoRa Radio Frontend; er empfängt eingehende LoRa Datenpakete und leitet sie an Aggregator-Management-Software/Hardware-Host weiter. Er kann auch LoRa Datenpakete basierend auf Host-Request senden. In unserem Fall ist ein Raspberry Pi 3 der Host-Controller für das RAK 831 Frontend.
Backhaul wählen
Was ist Backhaul? Backhaul bezeichnet, wie der Raspberry Pi mit dem Internet verbunden wird. Dieser Guide fokussiert WiFi als Backhaul, Sie könnten auch Ethernet oder 3G/4G nutzen. Falls Ethernet nah am Gateway verfügbar, bevorzugen Sie es gegenüber WiFi oder 3G/4G. Zusätzliche Funksignale im Gehäuse verursachen Rauschen. Software kann rauschende Umgebung handhaben, aber weniger Rauschen ist besser. Mit Power-over-Ethernet Verkabelung bis zum Gateway minimieren.
Falls WiFi statt Ethernet: Dongle mit externer Antenne nutzen und Antenne außerhalb Gehäuse platzieren für weniger internes Rauschen.
Hardware einrichten
Bevor wir etwas verbinden und einschalten, folgende Konfigurationen auf Raspberry Pi und RAK 831 Modul erledigen:
RASPBERRY PI
- Raspberry Pi 3 Board besorgen und 8 GB micro SD Karte mit Raspbian Software bereitstellen. Auch NOOBS SD-Karte mit vorinstallierter Software möglich. Zum Flashen des OS auf SD-Karte Anleitung hier folgen: https://www.raspberrypi.org/learning/hardware-guide/
- Raspberry Pi an 5 V 2 Amp Netzteil anschließen. SEHR WICHTIG. LoRa Modul kann 700 mA Peak bei aktiven Wireless-Transaktionen ziehen – gutes Netzteil für Pi sicherstellen.
RAK 831:
- Bevor Sie Board überhaupt mit Strom versorgen: Antennen aus Kit an Antennen-Schraubterminal anschließen. ESSENTIELL.
Verbindungsdetails
Tabelle zur Verbindung des RAK831 Moduls mit Raspberry Pi:
RPi v3 zu RAK 831 Pin-Verbindung. RAK 831 Silkscreen Map zu RAK 831 Pins.
Für Raspberry Pi Pin-Layout: https://www.raspberrypi.org/documentation/usage/gpio/
Hinweise:
- Reset-Pin kann an beliebigen GPIO des Raspberry Pi 3 angeschlossen werden.
- Essentiell: Stromversorgungs-Pins korrekt verbinden, um RAK 831 Board nicht zu beschädigen.
SPI aktivieren
SPI-Peripherie ist standardmäßig nicht aktiv. Zum Aktivieren:
sudo raspi-configausführen.- Pfeil-runter zu 9 Advanced Options
- Pfeil-runter zu A6 SPI.
- SPI aktivieren mit yes.
- Auch yes für automatisches Laden des Kernel-Moduls.
- Rechter Pfeil zu <Finish>.
- yes für Reboot.
System rebootet. Beim Hochfahren einloggen und Befehl eingeben:
ls /dev/*spi*
Pi sollte antworten:
/dev/spidev0.0 /dev/spidev0.1
Diese repräsentieren SPI-Geräte auf Chip-Enable-Pins 0 und 1. Hardwired im Pi. Normalerweise max. zwei Peripherie, aber Daisy-Chaining möglich.
Board mit Strom versorgen
Wie bei Wireless-Projekten üblich, benötigen sie mehr Strom als Host-Board via Supply-Pins liefern kann. Zwei Schemata:
- 5 V Rail vom Raspberry Pi speisen
- 5 V Rail auf Raspberry Pi und RAK831 separat speisen
Software-Installation
Auf Raspberry Pi folgende Schritte für essenzielle Software:
- SPI aktivieren:
sudo raspi-config(Interfacing Options → P4 SPI) und Filesystem erweitern (Advanced Options → A1 Expand Filesystem). - Git sicherstellen:
sudo apt-get update && sudo apt-get upgrade && sudo apt-get install git - WiFi-Verbindung auf Pi verwalten
- WiFi-Credentials konfigurieren (Details siehe Link)
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Folgenden Block am Dateiende einfügen, SSID und Passwort an Ihr Netzwerk anpassen:
network={
ssid="The_SSID_of_your_wifi"
psk="Your_wifi_password"
}
- Installer klonen und Installation starten
$ git clone -b spi https://github.com/ttn-zh/ic880a-gateway.git ~/ic880a-gateway $ cd ~/ic880a-gateway $ sudo ./install.sh spi
- Installationsschritt fragt nach Remote-Konfiguration.
yoderyeseingeben und fortfahren. Zu Beginn der Kommandozeilen-Installation zeigt Skript Gateway EUI – NOTIEREN SIE ES! - Falls Remote-Konfiguration gewünscht: JSON-Datei namens Gateway EUI (z. B. B827EBFFFE7B80CD.json) im Gateway Remote Config Repository erstellen: https://github.com/ttn-zh/gateway-remote-config. Repo forken,
.json mit korrekter Config hinzufügen, Commit, Pull Request an Master-Repo senden. Datei sollte am nächsten Tag im Repo erscheinen. Beispiel-JSON unten.
{
"gateway_conf": {
"gateway_ID": "die id wie bei install.sh Konsolen-Output notiert",
"servers": [{
"server_address": "router für Verbindung",
"serv_port_up": 1700,
"serv_port_down": 1700,
"serv_enabled": true
}],
"ref_latitude": "lat des rak 831 gateway",
"ref_longitude": "long des rak 831 gateway",
"ref_altitude": 40,
"contact_email": "Kontakt-E-Mail des Gateway-Besitzers",
"description": "kurze Beschreibung"
}
}
Hinweis: Gültige Router Liste hier: https://www.thethingsnetwork.org/wiki/Backend/Connect/Gateway
- Standardmäßig ändert Installer Hostname des Raspberry Pi zu
ttn-gateway(Kollisionsvermeidung mit anderen Pis im Netz). In Non-Remote-Konfiguration überschreibbar. - HURRA – Ihr Gateway sollte jetzt funktionieren. Nächsten Tag Gateway neustarten für JSON-Download auf RPi3.
global_config.jsonanpassen gemäß: https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json- Für
mp_pkt_fwdstatt altem Poly Packet Forwarder: https://github.com/kersing/packet_forwarder/tree/master/mp_pkt_fwd. Anleitung befolgen.global_conf.jsonim Projekt-Root bearbeiten (wichtige Sections unten beschrieben) und nach Kompilierung in bin-Ordner kopieren.
Konfigurierbare Entitäten in global_conf.json
global_conf.json liegt in ./bin/global_conf.json ab Projekt-Basis nach Install-Skript. Liste einiger Entitäten, die Sie für Ihre Gateway-Konfiguration anpassen möchten:
radio_0oderradio_1Konfiguration, besonders Frequency Parameter und Min/Max Frequency Sweep Parameter.gateway_confSektion. Besonders Gateway ID oder EUI Ihres Gateways.- Server Up/Down Port in gleichem gateway_conf Objekt junto mit Ihrem TTN Server Address oder eigener Applikation-Server Address falls verfügbar.
Board zurücksetzen
Bei jedem Raspberry Pi Start ist es gute Praxis, angehängtes RAK831 LoRa Modul zurückzusetzen. Zwei Wege:
- Via Shell Script: Kleines Shell-Skript zum Reset des RAK831 vor LoRa-Treiber-Zugriff. Inhalt Beispiel (GPIO 17 / Pin 11 mit RAK831 Reset-Pin verbunden):
#!/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
In Dateirak831_reset.shspeichern. Nach jedem Boot einmal aufrufen für sauberen Concentrator-IC-State. - Via WiringPi: C-Tool für Raspberry Pi zum Reset des RAK831. Bibliothek
wiringPifür GPIO Low-Level Details. Download: https://wiringpi.com. Installation/Usage dort nachlesen.RAK831_reset.cBeispiel:
#include
#include
#define GPIO_RESET_PIN 0 // wiringPi Mapping!
int main() {
wiringPiSetup();
pinMode(GPIO_RESET_PIN, OUTPUT);
digitalWrite(GPIO_RESET_PIN, HIGH);
sleep(5);
digitalWrite(GPIO_RESET_PIN, LOW);
return;
}
Nach jedem Boot einmal aufrufen. Kompilieren:gcc -Wall -o blink blink.c -lwiringPi, ausführen:sudo ./blink
Gateway im TTN Netzwerk registrieren
Damit Nodes Daten in Cloud senden können, bietet TheThingsNetwork Cloud-Service zum Parsen und Speichern von LoRa Node Daten via LoRa Gateway.
Read More Detail: Getting started with the RAK 831 Lora Gateway and RPi3
Herstellungsprozess
- Raumeffizient Temperaturen mit Raspberry Pi und Nagios überwachen
- Home Energy Centre: Solar PV, Thermische Panels & Raumtemperaturen mit Raspberry Pi & Moteino überwachen
- Sensordaten in Raspberry Pi integrieren: GPS & MPU-9150 Hands-On Guide
- 433 MHz Smart-Home-Controller mit Sensorflare und Raspberry Pi selbst bauen
- Echtzeit Pan/Tilt Gesichtstracking auf Raspberry Pi – Praktischer Leitfaden
- Automatisiertes Aeroponik-System mit Raspberry Pi und Feuchtigkeitssensor bauen
- Acconeer A111 Pulsradar mit Raspberry Pi integrieren: Praktischer Leitfaden
- TJBot starten: Bauen, konfigurieren und per Sprache steuern
- NanoPi K1 Plus für 35 $: Raspberry-Pi-ähnliches SBC mit 2 GB RAM, Allwinner H5 CPU, HDMI, Gigabit Ethernet
- Low-Cost LoRa Single-Channel Gateway mit Raspberry Pi selbst bauen