树莓派 3 部署 RAK 831 LoRa 网关分步指南
本项目带您完成所有步骤,让 RAK 831 LoRa 网关模块配合 Wi-Fi 回程上线运行。
项目背景
简介
本分步指南面向想自建 LoRa 网关的开发者,使用 RAK Wireless 的 RAK831 LoRa 射频前端模块。假读者具备树莓派生态、硬件与 Debian OS 基础,并了解树莓派 GPIO 与外设。开始吧:
什么是 LoRa?
LoRa Alliance™ Technology. LoRaWAN™ 是面向区域、国家或全球网络的低功耗广域网 (LPWAN) 规范,服务于无线电池供电设备。LoRaWAN 针对物联网关键需求:安全双向通信、移动性与定位服务。
上图展示 LoRa 无线架构各部分。关键组件简述如下:
LoRa 技术与 LoRaWAN 协议关键特性
· 定位:实现无 GPS、低功耗追踪应用
· 低成本:基建投入、运营开销、终端传感器三方面降本
· 标准化:全球互操作性加速 LoRaWAN 网络与 IoT 应用落地
· 低功耗:协议专为低功耗设计,电池寿命可达 20 年
· 远距离:单基站深度覆盖密集城区/室内,连接农村最远 30 英里
· 安全:嵌入端到端 AES128 加密
· 高容量:单基站支撑百万级消息,适配公网运营商多客户场景
RAK 831 为 LoRa 射频前端;即接收 LoRa 数据包并转发至聚合管理软/硬件宿主,也可按宿主板请求发送 LoRa 数据包。本例中树莓派 3 为控制 RAK 831 前端的宿主板。
选择回程方式
什么是回程?指树莓派如何接入互联网。本指南聚焦 Wi-Fi 回程,也可用以太网或 3G/4G。若网关附近有有线网络,优先用以太网——机箱内额外无线电信号会引入噪声。软件能应对噪声环境,非大问题,但越安静越好。可结合 PoE 减少布线。
若选 Wi-Fi 而非以太网,请用外置天线网卡并将天线引出机箱外,减少箱内噪声。
硬件搭建
连接前先完成树莓派与 RAK 831 模块以下配置:
树莓派
1) 准备树莓派 3 板卡与 8GB microSD 卡刷好 Raspbian。可买预装 NOOBS 的卡。烧录 OS 方法见:https://www.raspberrypi.org/learning/hardware-guide/
2) 接 5V 2A 电源。**极其重要**。LoRa 模块无线收发峰值电流达 700mA,需优质电源适配器。
RAK 831:
1) 上电前务必连接套件附带天线至天线螺纹端子。**必须**。
连接详情:
下表展示 RAK831 模块与树莓派连接方式:
rpi v3 to rak 831 pin connection
RAK 831 丝印对应引脚映射。
rak 831 silk screen map to the rak 831 pins
树莓派引脚布局详见:https://www.raspberrypi.org/documentation/usage/gpio/
注意:
- 复位引脚可接树莓派 3 任意 GPIO。
- 务必正确连接电源引脚,避免损坏 RAK 831 板卡。
启用 SPI
SPI 外设默认关闭。启用步骤:
- 运行 sudo raspi-config。
- 下箭头选 9 Advanced Options
- 下箭头至 A6 SPI。
- 询问启用 SPI 时选 yes,
- 询问自动加载内核模块也选 yes。
- 右箭头选
按钮。
- 询问重启选 yes。
重启后登录并执行:
>ls /dev/*spi*
树莓派应返回:
/dev/spidev0.0 /dev/spidev0.1
分别代表片选引脚 0 与 1 上的 SPI 设备。这些引脚在 Pi 内部硬连线。通常意味接口最多支持两个外设,但也可菊花链共享单片选信号。
为板卡供电
无线项目往往需比宿主板供电引脚更大功率。两种供电方案:
1) 从树莓派 5V 供电轨取电
2) 树莓派与 RAK831 5V 供电轨分离供电
软件安装
树莓派执行以下步骤安装核心软件:
- 启用 SPI:
用 raspi-config 启用 SPI ([5] Interfacing options -> P4 SPI) 并扩展文件系统 ([7] Advanced options -> A1 Expand filesystem):
$ sudo raspi-config
- 确保 git 已装
Sudo apt-get update
Sudo apt-get upgrade
Sudo apt-get install git
- 管理树莓派 Wi-Fi 连接
- 配置 Wi-Fi 凭据 (详见此处)
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
文件末尾添加以下块,替换 SSID 与密码匹配您的网络:
network={
ssid=“The_SSID_of_your_wifi”
psk=“Your_wifi_password”
}
- 克隆安装器并开始安装
$ git clone -b spi https://github.com/ttn-zh/ic880a-gateway.git ~/ic880a-gateway
$cd ~/ic880a-gateway
$ sudo ./install.sh spi
- 安装步骤会询问是否启用远程配置。输入 ‘y’ 或 ‘yes’ 继续。安装开始时控制台会显示网关 EUI,这对后续步骤至关重要。**记下来!**
- 若需远程配置,请确保在 Gateway Remote Config 仓库创建以网关 EUI 命名的 JSON 文件 (如 B827EBFFFE7B80CD.json):https://github.com/ttn-zh/gateway-remote-config。Fork 仓库,添加正确配置的
.json 并提交 PR。合并后次日文件将出现在主仓库。示例 JSON 如下:
{
“gateway_conf”: {
“gateway_ID”: “install.sh 控制台输出的 id”,
“servers”: [
{
“server_address”: “目标路由器地址”,
“serv_port_up”: 1700,
“serv_port_down”: 1700,
“serv_enabled”: true
}
],
“ref_latitude”: rak 831 网关纬度,
“ref_longitude”: rak 831 网关经度,
“ref_altitude”: 40,
“contact_email”: “网关所有者联系邮箱”,
“description”: “简短描述”
}
}
注意:
有效路由器列表见:https://www.thethingsnetwork.org/wiki/Backend/Connect/Gateway
- 安装程序默认将树莓派主机名改为 ttn-gateway (避免网络中多 Pi 冲突)。非远程配置模式下可覆盖。
- 万岁!您的网关现应工作。次日重启网关以确保 JSON 文件正确下载至 RPi3。
- 需按以下调整 global_config.json:
https://github.com/TheThingsNetwork/gateway-conf/blob/master/US-global_conf.json
若想用 mp_pkt_fwd 替代旧版 poly packet forwarder,见此处安装:https://github.com/kersing/packet_forwarder/tree/master/mp_pkt_fwd。同样需编辑项目根目录 global_conf.json 关键段并复制至编译后 bin 目录。
global_conf.json 可配置项
安装脚本运行后,global_conf.json 位于项目目录下 ./bin/global_conf.json。以下为针对特定网关配置可能需编辑的实体:
1) “radio_0” 或 “radio_1” 配置,特别是频率参数及最小/最大扫频参数。
2) “gateway_conf” 部分,特别是网关 ID 或 EUI。
3) gateway_conf 中的服务器上下行端口及您的 TTN 服务器地址或自有应用服务器地址。
复位板卡
每次启动树莓派时,最好复位连接的 RAK831 LoRa 模块。两种方式:
- Shell 脚本:
编写小脚本在 LoRa 驱动访问硬件前复位 RAK831。假设树莓派 GPIO 17 (引脚 11) 连接 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
存为 “rak831_reset.sh”。每次开机后必须调用一次以使聚焦器 IC 进入干净状态。
- WiringPi 方式:
宿主为树莓派时可写 C 小工具复位 RAK831。用 “wiringPi” 库处理 GPIO 底层细节。库下载地址:https://wiringpi.com。请参考该站安装与使用说明。RAK831_reset.c 内容示例:
#include
#include
#define GPIO_RESET_PIN 0 // 见 wiringPi 映射!
int main() {
wiringPiSetup();
pinMode(GPIO_RESET_PIN, OUTPUT);
digitalWrite(GPIO_RESET_PIN, HIGH);
sleep(5);
digitalWrite(GPIO_RESET_PIN, LOW);
return;
}
每次开机后调用一次此工具使聚焦器 IC 进入干净状态。
gcc -Wall -o blink blink.c -lwiringPi
sudo ./blink
向 TTN 网络注册网关
要让节点数据上云,TheThingsNetwork 提供云服务解析存储 LoRa 节点经 LoRa 网关发送的数据
Read More Detail :Getting started with the RAK 831 Lora Gateway and RPi3
制造工艺
- 树莓派+Nagios高效监控机房温度
- 家庭能源中心:树莓派与 Moteino 监测光伏、光热与室温
- 树莓派传感器数据融合实战:GPS 与 MPU‑9150 IMU 的 I²C 与 UART 接入
- 基于 Sensorflare 与树莓派的 433 MHz 智能家居控制器构建指南
- 树莓派实时人脸追踪云台:OpenCV + 舵机 + ServoBlaster 实战
- 树莓派自动化气雾栽培系统:湿度传感器智能控制
- 将 Acconeer A111 脉冲雷达与树莓派集成:实用指南
- TJBot 入门指南:构建、配置与语音控制您的 AI 机器人
- 35 美元 NanoPi K1 Plus:类树莓派 SBC,2GB 内存、Allwinner H5 CPU、HDMI、千兆网口——适配信息亭、媒体中心与 DIY 项目
- 树莓派自制低成本 LoRa 单信道网关:全流程指南
- 基于 RAK831 模块与树莓派 3 构建 LoRa 网关:分步指南
- 树莓派与Python构建机器人:完整指南