Skip to main content

LoRaWAN® 网关模块 WM1302

pir

pir

LoRaWAN® 是 LoRa Alliance® 的授权商标。 LoRa® 标识是 Semtech Corporation 或其子公司的商标。

note

我们最近发布了基于 Wio-E5 模块的 Wio-E5 系列。

点击这里了解 LoRa-E5 家族的新成员,从 Wio-E5 Module Grove 模块迷你开发板开发套件

要了解更多关于使用 STM32Cube MCU Package for STM32WL series(SDK) 创建 LoRaWAN® 终端节点、加入并向 LoRaWAN® 网络发送数据的信息,请阅读迷你开发板开发套件的 wiki 页面。

note

WM1302 模块提供两种不同的接口版本。SPI 版本是目前的主流选择。如果您偏好 USB 版本,硬件修改需要对原始官方固件进行某些调整才能使模块正常工作。更多详情请参考 FAQ 部分。

WM1302 模块是新一代 mini-PCIe 外形规格的 LoRaWAN® 网关模块。基于 Semtech® SX1302 基带 LoRaWAN® 芯片,WM1302 为网关产品释放了更大的长距离无线传输潜力。与之前的 SX1301 和 SX1308 LoRa® 芯片相比,它具有更高的灵敏度、更低的功耗和更低的工作温度。

WM1302 LoRaWAN® 网关模块在 US915 和 EU868 频段上都有 SPI 和 USB 版本,让您可以选择广泛的 LoRaWAN® 频率计划选项,包括 EU868、US915、AS923、AS920、AU915、KR920 和 IN865。

WM1302 模块已通过 CE、FCC 和 Telec 认证,有助于简化 LoRaWAN® 网关设备的开发和认证过程。

WM1302 专为 M2M 和 IoT 应用而设计,可广泛应用于支持 LPWAN 网关的场景。它将是您显著降低开发 LoRa® 网关设备(包括 LoRaWAN® 网关、热点等)的技术难度和时间消耗的完美选择。

特性

  • 采用 Semtech® SX1302 基带 LoRa® 芯片,极低功耗和高性能。
  • 标准 52 针金手指的 Mini-PCIe 外形规格,易于与各种网关设备集成。
  • 超低工作温度,无需额外散热,减小 LoRaWAN® 网关的尺寸。
  • 高灵敏度,配合 SX1250 TX/RX 前端可达 -139 dBm @SF12;TX 功率在 @3.3V 时可达 26 dBm。
  • 通过 CE、FCC 和 TELEC 认证。简化最终产品认证过程。

硬件概述

原理图

pir

引脚图

pir

pir


Raspberry Pi 引脚映射

40 Pin No.(BOARD#)Raspberry Pi GPIO(BCM#)WM1302 Pi HAT Pinout
13.3VNC
25V5V
3GPIO 2I2C_SDA
45V5V
5GPIO 3I2C_SCL
6GNDGND
7GPIO 4NC
8GPIO 14GPS_RXD
9GNDGND
10GPIO 15GPS_TXD
11GPIO 17SX1302_RESET
SPI 版本:高电平有效
USB 版本:低电平有效
12GPIO 18SX1262_BUSY
13GPIO 27NC
14GNDGND
15GPIO 22NC
16GPIO 23SX1262_DIO1
173.3VNC
18GPIO 24SX1262_DIO2
19GPIO 10SPI_MOSI
20GNDGND
21GPIO 9SPI_MISO
22GPIO 25GPS_RST
23GPIO 11SPI_SCK
24GPIO 8SX1302_CS
25GNDGND
26GPIO 7NC
27GPIO 0I2C_SDA(EEPROM)
28GPIO 1I2C_SCL(EEPROM)
29GPIO 5SX1262_RST
30GNDGND
31GPIO 6SX1262_CS
32GPIO 12GPS_WAKE_UP
33GPIO 13NC
34GNDGND
35GPIO 19NC
36GPIO 16NC
37GPIO 26NC
38GPIO 20NC
39GNDGND
40GPIO 21NC

规格参数

区域EU868US915
频率863-870MHz902-928MHz
灵敏度-125dBm @125K/SF7
-139dBm @125K/SF12
-125dBm @125K/SF7
-139dBm @125K/SF12
TX 功率26 dBm(3.3V 电源供电)25 dBm(3.3V 电源供电)
LED电源:绿色 配置:红色 TX:绿色 RX:蓝色
外形规格Mini PCIe,52 针金手指
功耗(SPI 版本)待机:7.5 mA
TX 最大功率:415 mA
RX:40 mA
功耗(USB 版本)待机:20 mA
TX 最大功率:425 mA
RX:53 mA
LBT(先听后说)支持
天线连接器U.FL
工作温度-40°C 至 85°C
尺寸30 mm(宽)× 50.95 mm(长)
认证CE

应用

  • LPWAN 网关设备开发

  • 任何长距离无线通信应用开发

  • LoRa® 和 LoRaWAN® 应用学习和研究

尺寸

pir

入门指南

SPI 版本和 USB 版本的区别

对于 WM1302 LoRaWAN® 网关模块 SPI 版本,Semtech SX1302 和 SX126x 芯片通过相同的 SPI 总线连接到 Raspberry Pi,使用不同的片选(CS)引脚。

对于 WM1302 LoRaWAN® 网关模块 USB 版本,Semtech SX1302 和 SX126x 芯片连接到 STM32L4 MCU,这个出厂预编程的 MCU 将作为 USB 设备工作,成为 Raspberry Pi 和 SX1302/SX126x 之间的桥梁。

WM1302 快速入门

所需硬件

  • WM1302 LoRaWAN® 网关模块

  • 带有 40 针 GPIO 接头的 Raspberry Pi 开发板(例如 Raspberry Pi 4B 或 Raspberry 3B+)

  • 适用于 Raspberry Pi 的 WM1302 Pi Hat

  • Raspberry Pi 电源适配器

  • 一个 LoRa® 天线

  • 一张 8G 或更大的 SD 卡和读卡器

  • 如果使用 WM1302 LoRaWAN® 网关模块 USB 版本,需要一根 Type C USB 线

所需软件


步骤 1. 安装 WM1302 Raspberry Pi Hat 并安装 WM1302 模块

首先关闭 Raspberry Pi 电源,按照下图将 WM1302 模块插入 Pi Hat 并用螺丝固定。

pir

步骤 2. 启用 Raspbian I2C 和 SPI 接口

WM1302 模块通过 SPI 和 I2C 接口与 Raspberry Pi 通信。但这两个接口在 Raspbian 中默认未启用,因此开发者需要在使用 WM1302 之前启用它们。这里,我们介绍一种命令行方式来启用 SPI 和 I2C 接口。

首先,通过 SSH 登录 Raspberry Pi 或使用显示器(不要使用串行控制台,因为 Pi Hat 上的 GPS 模块占用了 Pi 的硬件 UART 引脚),然后在命令行中输入 sudo raspi-config 打开 Raspberry Pi 软件配置工具:

sudo raspi-config

pir

  1. 选择 Interface Options

  2. 选择 SPI,然后选择 Yes 启用它

  3. 选择 I2C,然后选择 Yes 启用它

  4. 选择 Serial Port,然后对"Would you like a login shell..."选择 No,对"Would you like the serial port hardware..."选择 Yes

  5. 完成后,请重启 Raspberry Pi 以确保这些设置生效。

步骤 3. 获取并编译 SX1302 源代码

现在让我们安装 git 并从 github 下载 sx1302_hal(SX1302 LoRa 网关的库和程序):

sudo apt update
sudo apt install -y git
cd ~
git clone https://github.com/Lora-net/sx1302_hal

移动到 sx1302_hal 文件夹并编译所有内容:

cd ~/sx1302_hal
make

步骤 4. 运行 Semtech SX1302 数据包转发器

reset_lgw.sh 复制到 packet_forwarder 文件夹,并使用文本编辑器 nano 修改 reset_lgw.sh 脚本中 SX1302 和 SX1261 的 reset pin

cp tools/reset_lgw.sh packet_forwarder/
cd packet_forwarder
nano tools/reset_lgw.sh

您将看到默认的 reset pin 如下:

# GPIO mapping has to be adapted with HW
#

SX1302_RESET_PIN=23 # SX1302 reset
SX1302_POWER_EN_PIN=18 # SX1302 power enable
SX1261_RESET_PIN=22 # SX1261 reset (LBT / Spectral Scan)
AD5338R_RESET_PIN=13 # AD5338R reset (full-duplex CN490 reference design)

这里我们使用 cat /sys/kernel/debug/gpio 命令,这是内核 debugfs 文件系统提供的调试接口。它主要用于监控 Raspberry Pi 上所有 GPIO 引脚的实时状态。

gpiochip0 是我们真正感兴趣的:WM1302 模块通过 Pi HAT 的 40 针接头连接到 Raspberry Pi,所有这些都由这个控制器管理。

pi@raspberrypi:~/sx1302_hal/packet_forwarder $ cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 571-624, parent: platform/1f000d0000.gpio, pinctrl-rp1:
gpio-571 (ID_SDA )
gpio-572 (ID_SCL )
gpio-573 (GPIO2 )
gpio-574 (GPIO3 )
gpio-575 (GPIO4 )
gpio-576 (GPIO5 )
gpio-577 (GPIO6 )
gpio-578 (GPIO7 |spi0 CS1 ) out hi ACTIVE LOW
gpio-579 (GPIO8 |spi0 CS0 ) out hi ACTIVE LOW
gpio-580 (GPIO9 )
gpio-581 (GPIO10 )
gpio-582 (GPIO11 )
gpio-583 (GPIO12 )
gpio-584 (GPIO13 )
gpio-585 (GPIO14 )
gpio-586 (GPIO15 )
gpio-587 (GPIO16 )
gpio-588 (GPIO17 )
gpio-589 (GPIO18 )
gpio-590 (GPIO19 )
gpio-591 (GPIO20 )
gpio-592 (GPIO21 )
gpio-593 (GPIO22 )
gpio-594 (GPIO23 )
gpio-595 (GPIO24 )
gpio-596 (GPIO25 )
gpio-597 (GPIO26 )
gpio-598 (GPIO27 )
gpio-599 (PCIE_RP1_WAKE )
gpio-600 (FAN_TACH )
gpio-601 (HOST_SDA )
gpio-602 (HOST_SCL )
gpio-603 (ETH_RST_N |phy-reset ) out hi ACTIVE LOW
gpio-604 (- )
gpio-605 (CD0_IO0_MICCLK |cam0_reg ) out lo
gpio-606 (CD0_IO0_MICDAT0 )
gpio-607 (RP1_PCIE_CLKREQ_N )
gpio-608 (- )
gpio-609 (CD0_SDA )
gpio-610 (CD0_SCL )
gpio-611 (CD1_SDA )
gpio-612 (CD1_SCL )
gpio-613 (USB_VBUS_EN )
gpio-614 (USB_OC_N )
gpio-615 (RP1_STAT_LED |PWR ) out hi ACTIVE LOW
gpio-616 (FAN_PWM )
gpio-617 (CD1_IO0_MICCLK |cam1_reg ) out lo
gpio-618 (2712_WAKE )
gpio-619 (CD1_IO1_MICDAT1 )
gpio-620 (EN_MAX_USB_CUR )
gpio-621 (- )
gpio-622 (- )
gpio-623 (- )
gpio-624 (- )

如果您的系统没有自动挂载 debugfs,您必须首先手动挂载它:

sudo mount -t debugfs none /sys/kernel/debug

根据这些信息,我们可以找出 GPIO 引脚 gpio-588, gpio-589, gpio-576 与其对应的物理引脚索引 (GPIO17), (GPIO18), (GPIO5) 之间的关系。

note

请参考 Raspberry Pi 引脚映射 表获取完整的 GPIO 引脚映射。

根据我们获得的 GPIO 信息修改 SX1302_RESET_PINSX1302_POWER_EN_PINSX1261_RESET_PIN,如下所示:

# GPIO mapping has to be adapted with HW
#

SX1302_RESET_PIN=588 # SX1302 reset
SX1302_POWER_EN_PIN=589 # SX1302 power enable
SX1261_RESET_PIN=576 # SX1261 reset (LBT / Spectral Scan)
AD5338R_RESET_PIN=13 # AD5338R reset (full-duplex CN490 reference design)

CTRL + x,然后按 yEnter 保存这些更改并关闭文本编辑器。


您也可以参考下面的完整脚本:

reset_lgw.sh
#!/bin/sh

# This script is intended to be used on SX1302 CoreCell platform, it performs
# the following actions:
# - export/unpexort GPIO23 and GPIO18 used to reset the SX1302 chip and to enable the LDOs
# - export/unexport GPIO22 used to reset the optional SX1261 radio used for LBT/Spectral Scan
#
# Usage examples:
# ./reset_lgw.sh stop
# ./reset_lgw.sh start

# GPIO mapping has to be adapted with HW
#

SX1302_RESET_PIN=588 # SX1302 reset
SX1302_POWER_EN_PIN=589 # SX1302 power enable
SX1261_RESET_PIN=576 # SX1261 reset (LBT / Spectral Scan)
AD5338R_RESET_PIN=13 # AD5338R reset (full-duplex CN490 reference design)

WAIT_GPIO() {
sleep 0.1
}

init() {
# setup GPIOs
echo "$SX1302_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO
echo "$SX1261_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO
echo "$SX1302_POWER_EN_PIN" > /sys/class/gpio/export; WAIT_GPIO
echo "$AD5338R_RESET_PIN" > /sys/class/gpio/export; WAIT_GPIO

# set GPIOs as output
echo "out" > /sys/class/gpio/gpio$SX1302_RESET_PIN/direction; WAIT_GPIO
echo "out" > /sys/class/gpio/gpio$SX1261_RESET_PIN/direction; WAIT_GPIO
echo "out" > /sys/class/gpio/gpio$SX1302_POWER_EN_PIN/direction; WAIT_GPIO
echo "out" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/direction; WAIT_GPIO
}

reset() {
echo "CoreCell reset through GPIO$SX1302_RESET_PIN..."
echo "SX1261 reset through GPIO$SX1302_RESET_PIN..."
echo "CoreCell power enable through GPIO$SX1302_POWER_EN_PIN..."
echo "CoreCell ADC reset through GPIO$AD5338R_RESET_PIN..."

# write output for SX1302 CoreCell power_enable and reset
echo "1" > /sys/class/gpio/gpio$SX1302_POWER_EN_PIN/value; WAIT_GPIO

echo "1" > /sys/class/gpio/gpio$SX1302_RESET_PIN/value; WAIT_GPIO
echo "0" > /sys/class/gpio/gpio$SX1302_RESET_PIN/value; WAIT_GPIO

echo "0" > /sys/class/gpio/gpio$SX1261_RESET_PIN/value; WAIT_GPIO
echo "1" > /sys/class/gpio/gpio$SX1261_RESET_PIN/value; WAIT_GPIO

echo "0" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/value; WAIT_GPIO
echo "1" > /sys/class/gpio/gpio$AD5338R_RESET_PIN/value; WAIT_GPIO
}

term() {
# cleanup all GPIOs
if [ -d /sys/class/gpio/gpio$SX1302_RESET_PIN ]
then
echo "$SX1302_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
if [ -d /sys/class/gpio/gpio$SX1261_RESET_PIN ]
then
echo "$SX1261_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
if [ -d /sys/class/gpio/gpio$SX1302_POWER_EN_PIN ]
then
echo "$SX1302_POWER_EN_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
if [ -d /sys/class/gpio/gpio$AD5338R_RESET_PIN ]
then
echo "$AD5338R_RESET_PIN" > /sys/class/gpio/unexport; WAIT_GPIO
fi
}

case "$1" in
start)
term # just in case
init
reset
;;
stop)
reset
term
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac

exit 0


根据您使用的模块,在相应的 global_conf.json.sx1250.xxxxx 中选择您首选的 LoRaWAN 网络服务器 server_address 和网关 EUI gateway_ID,并将 up/down port 修改为 1700。然后运行以下代码启动集中器:

cd ~/sx1302_hal/packet_forwarder

# Please select one of the following comands based on your module
# for WM1302 LoRaWAN Gateway Module (SPI) - EU868
./lora_pkt_fwd -c global_conf.json.sx1250.EU868

# for WM1302 LoRaWAN Gateway Module (SPI) - US915
./lora_pkt_fwd -c global_conf.json.sx1250.US915

现在,数据包转发器能够正确运行。要成功将数据转发到我们的 LoRaWAN 网络服务器(例如 TTN 或 ChripStack),我们仍需要在服务器端进行一些配置。

为此,我们需要首先将刚刚构建的 Raspberry Pi 网关注册到我们的 LoRa 网络服务器。以 TTN 为例,登录 TTN 控制台,点击左侧面板上的 Gateways 按钮,然后点击 Register gateway。填写 Gateway EUIGateway Server addressFrequency plan,其他选项保持默认设置。

  • Gateway EUI: 您网关的 64 位唯一标识符。

  • Gateway Server address: 部署网络服务器的集群的 URL(例如 eu1.cloud.thethings.network)。

  • Frequency plan: 根据您的地区配置相应的频率计划。欧洲使用 Europe 863-870 MHz (SF9 for RX2-recommended),美国使用 United States 902-928 MHz, FSB 2

pir


成功注册网关后,按 CTRL + c 停止 lora_pkt_fwd,然后编辑并检查 global_conf.json.sx1250.xxxx 配置文件,确保 "gateway_ID""server_address" 条目与 LNS 中的设置完全匹配。

    ...
"gateway_conf": {
"gateway_ID": "AA555A0000000000",
/* change with default server address/ports */
"server_address": "eu1.cloud.thethings.network",
"serv_port_up": 1700,
"serv_port_down": 1700,
...

使用命令 ./lora_pkt_fwd -c global_conf.json.sx1250.xxxxx 重启 lora_pkt_fwd,您应该能够发现您的 Raspberry Pi 网关已连接到 TTN。

常见问题

为什么即使所有设置都正确,我的设备也无法加入网络服务器?

我们观察到某些模块(WM1302-US915 USB 版本)可能由于硬件差异而无法正确传输下行数据包。要解决此问题,请将宏 TX_JIT_DELAY(您可以在 /sx1302_hal/packet_forwarder/src/jitqueue.c 中找到此宏)的值从 40000 修改为 120000,并重新编译 sx1302_hal。

资源

认证

技术支持与产品讨论

请将任何技术问题提交到我们的论坛

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...