【HD-RK3576-PI】LoRa无线串口模块
HD-RK3576-PI 凭借其强大的RK3576 SoC、丰富的外设接口和出色的多媒体处理能力,是构建智能网关、边缘计算节点的理想选择。而 EWM220M-400T22S 模块则提供了高达22dBm的发射功率、优秀的抗干扰能力和数公里的远距离通信能力,非常适合在复杂环境下的物联网应用。
本文将详细介绍硬件连接、关键GPIO引脚控制(M0, M1, AUX, RST)、Linux系统下的初始化脚本以及最终通过UART进行数据通信的完整流程。
一、 硬件介绍与连接
1. 核心设备
- HD-RK3576-PI: 主控平台。
- EWM220M-400T22S: 工作频段通常为410-441MHz或470-510MHz(具体看型号后缀),支持多种工作模式,通过M0/M1引脚切换,AUX用于状态指示,RST用于复位。
2. 原理图以及引脚定义
引脚定义与连线
HD-RK3576-PI GPIO | EWM220M-400T22S 引脚 | 功能说明 |
---|---|---|
UART1_TX | RXD | HD-RK3576-PI 发送数据到 LoRa 模块 |
UART1_RX | TXD | HD-RK3576-PI 接收来自 LoRa 模块的数据 |
GPIO1_A3 (gpio35) | M0 | 模式选择位0 |
GPIO1_A2 (gpio34) | M1 | 模式选择位1 |
GPIO1_A1 (gpio33) | AUX | 辅助状态输出(模块忙/空闲) |
GPIO1_A0 (gpio32) | RST | 复位引脚(低电平有效) |
GND | GND | 共地 |
3.3V | VCC | 为 LoRa 模块供电 |
二、 软件配置:初始化GPIO与模块
EWM220M-400T22S 的工作模式由 M0
和 M1
引脚的电平组合决定。AUX
引脚在模块接收或发送数据时会拉低,可用于软件流控或状态检测。RST
引脚用于重启模块。
我们将其设置为 模式0(一般模式/透传模式):
M1 | M0 | 工作模式 |
---|---|---|
0 | 0 | 模式0:一般模式(默认) - 上电即开始无线通信,适合点对点/点对多点透传 |
0 | 1 | 模式1:唤醒模式 |
1 | 0 | 模式2:功率休眠模式 |
1 | 1 | 模式3:参数设置模式 |
我们使用 Linux 的 sysfs
接口来控制这些 GPIO。
#!/bin/bash# EWM220M-400T22S GPIO 控制脚本 for HD-RK3576-PI
# 使用 sysfs 接口控制 GPIO# 定义 GPIO 编号 (根据您提供的信息)
RST_PIN=32
M1_PIN=34
M0_PIN=35
AUX_PIN=33echo "Initializing EWM220M-400T22S LoRa Module..."# --- 1. 处理 RST (Reset) 引脚 ---
echo "Resetting LoRa module..."
# 导出 RST GPIO
echo $RST_PIN > /sys/class/gpio/export 2>/dev/null || echo "GPIO $RST_PIN may already be exported"
# 设置为输出
echo out > /sys/class/gpio/gpio${RST_PIN}/direction
# 拉低复位 (低电平有效)
echo 0 > /sys/class/gpio/gpio${RST_PIN}/value
sleep 1 # 保持低电平至少10ms,这里给足1秒确保可靠复位
# 释放复位,拉高
echo 1 > /sys/class/gpio/gpio${RST_PIN}/value
echo "Reset complete."# --- 2. 设置工作模式为 模式0 (M0=0, M1=0) ---
echo "Setting mode to Mode 0 (Transparent Transmission)..."# M1 引脚 (gpio34)
echo $M1_PIN > /sys/class/gpio/export 2>/dev/null || echo "GPIO $M1_PIN may already be exported"
echo out > /sys/class/gpio/gpio${M1_PIN}/direction
echo 0 > /sys/class/gpio/gpio${M1_PIN}/value # M1 = 0# M0 引脚 (gpio35)
echo $M0_PIN > /sys/class/gpio/export 2>/dev/null || echo "GPIO $M0_PIN may already be exported"
echo out > /sys/class/gpio/gpio${M0_PIN}/direction
echo 0 > /sys/class/gpio/gpio${M0_PIN}/value # M0 = 0echo "Mode set to Mode 0."# --- 3. 配置 AUX 引脚 ---
echo "Configuring AUX pin..."# AUX 引脚 (gpio33),作为输入,但我们可以先设为输出并拉高以确认连接
echo $AUX_PIN > /sys/class/gpio/export 2>/dev/null || echo "GPIO $AUX_PIN may already be exported"
echo out > /sys/class/gpio/gpio${AUX_PIN}/direction
echo 1 > /sys/class/gpio/gpio${AUX_PIN}/value # 拉高,通常不影响模块工作,可用于测试线路# 注意:在实际通信中,AUX 是模块的输出。如果你想在程序中读取AUX状态,
# 应该在需要时将其方向改为 'in',然后读取 value。
# echo in > /sys/class/gpio/gpio${AUX_PIN}/direction
# current_state=$(cat /sys/class/gpio/gpio${AUX_PIN}/value)echo "AUX configured."
echo "Initialization DONE! Module is ready for UART communication on UART1."
赋予脚本执行权限并运行
chmod +x lora_init.sh
sudo ./lora_init.sh
三、 串口通信测试
完成GPIO初始化后,EWM220M-400T22S 即进入模式0(透传模式)。此时,你无需修改任何模块内部参数(除非你需要更改波特率、空中速率等),使用默认配置,两个模块可以直接通过UART1进行数据透传。
模块1收:
cat /dev/ttyS1
模块2发:
echo "Hello HD-RK3576-PI" > /dev/ttyS1
更多Lora操作配置,可以参考官方手册https://www.ebyte.com/downpdf/2414.html