功耗 | 发射电流 | 133mA(瞬时功耗) |
接收电流 | 11mA | |
休眠电流 | 2uA(LoRa模组深度休眠) | |
最大发射功率 | 22.0dBm(10、13、17、22dBm软件选择) | |
发射长度 | 240Byte(32、64、128、240Byte软件选择) | |
缓存容量 | 1000Byte | |
工作频段 | 850.125~930.125MHz | |
接收灵敏度 | -147dBm@0.3Kbps空中速率 | |
空中速率 | 0.3K~62.5Kbps(可软件选择) | |
通信接口 | UART | |
参考距离 | 5KM(晴朗空旷,天线增益5dBi,天线高度2.5米,空中速率2.4kbps) | |
供电电压 | 5V | |
逻辑电平 | 3.3V | |
工作温度 | -40~85℃ |
序号 | 描述 | |
---|---|---|
1 | SX1262模组 | |
2 | 74HC125V电平转换芯片 | |
3 | CP2102 USB转UART芯片 | |
4 | RPi接口 | |
5 | USB TO UART接口 | |
6 | UART接口方便外接其它MCU | |
7 | SMA天线接口 | |
8 | IPEX天线接口 | |
9 | 指示灯 | RXD/TXD:串口指示灯 |
AUX:辅助指示灯 | ||
PWR:电源指示灯 | ||
10 | UART选择跳帽 | A:USB转串口控制LoRa |
B:树莓派控制LoRa | ||
C:USB转串口访问树莓派 | ||
11 | LoRa模式选择跳线 | 模式0: M0短接,M1短接:传输模式 |
模式1:M0不接,M1短接:WOR模式 | ||
模式2:M0短接,M1不接:配置模式 | ||
模式3:M0不接,M1不接:深度休眠模式 |
1、将M1、M0进行高低电平组合,确定工作模式,其中M1、M0不接跳帽时为高电平,切换工作模式后,若模块空闲,则进入新的工作模式,否则将处理完当前发射接收后再进入新工作模式
2、模式0,用户串口输入数据后,模块启动无线发射,空闲时,无线接收功能打开,接收到数据串口TXD输出
3、模式1,当定义为发射时,发射前自动增加一定时间唤醒码,接收等同于模式0
4、模式2,无线收发功能关闭,用户可以参造寄存器配置设置寄存器
5、模式3,无线收发关闭,进入深度休眠模式,当进入其他工作模式,模块重新配置参数
配置模式(模式2:M0短接,M1不接)下,支持的指令列表如下(设置时,只支持9600,8N1格式),以下数值为16进制
指令功能 | 详细说明 | |||||
---|---|---|---|---|---|---|
设置寄存器 | ||||||
指令格式:C0+起始地址+长度+参数 | ||||||
响应格式:C1+起始地址+长度+参数 | ||||||
例1:配置信道为0x11 | ||||||
指令头 | 起始地址 | 长度 | 参数 | |||
发送: | C0 | 05 | 01 | 11 | ||
返回: | C1 | 05 | 01 | 11 | ||
例2:同时配置模块地址(0x1234)、网络地址(0x00)、串口(9600 8N1)、空速(1.2K) | ||||||
指令头 | 起始地址 | 长度 | 参数 | |||
发送: | C0 | 00 | 04 | 12 34 00 61 | ||
返回: | C1 | 00 | 04 | 12 34 00 61 | ||
读取寄存器 | ||||||
指令格式:C1+起始地址+长度 | ||||||
响应格式:C1+起始地址+长度+参数 | ||||||
例1:读取信道 | ||||||
指令头 | 起始地址 | 长度 | 参数 | |||
发送: | C1 | 05 | 01 | |||
返回: | C1 | 05 | 01 | 11 | ||
例2:同时读取模块地址、网络地址、串口、空速 | ||||||
指令头 | 起始地址 | 长度 | 参数 | |||
发送: | C0 | 00 | 04 | |||
返回: | C1 | 00 | 04 | 12 34 00 61 | ||
设置临时寄存器 | 指令格式:C2+起始地址+长度+参数 | |||||
响应格式:C1+起始地址+长度+参数 | ||||||
例1:配置信道为0x11 | ||||||
指令头 | 起始地址 | 长度 | 参数 | |||
发送: | C2 | 05 | 01 | 11 | ||
返回: | C1 | 05 | 01 | 11 | ||
例2:同时配置模块地址(0x1234)、网络地址(0x00)、串口(9600 8N1)、空速(1.2K) | ||||||
指令头 | 起始地址 | 长度 | 参数 | |||
发送: | C2 | 00 | 04 | 12 34 00 61 | ||
返回: | C1 | 00 | 04 | 12 34 00 61 | ||
无线配置 | ||||||
指令格式:CF+CF+C0+起始地址+长度+参数 | ||||||
响应格式:CF+CF+C1+起始地址+长度+参数 | ||||||
例1:配置信道为0x11 | ||||||
无线指令头 | 指令头 | 起始地址 | 长度 | 参数 | ||
发送: | CF CF | C0 | 05 | 01 | 11 | |
返回: | CF CF | C1 | 05 | 01 | 11 | |
例2:同时配置模块地址(0x1234)、网络地址(0x00)、串口(9600 8N1)、空速(1.2K) | ||||||
无线指令头 | 指令头 | 起始地址 | 长度 | 参数 | ||
发送: | CF CF | C0 | 00 | 04 | 12 34 00 61 | |
返回: | CF CF | C1 | 00 | 04 | 12 34 00 61 | |
格式错误 | 格式错误响应 | |||||
FF FF FF |
注意:
寄存器地址 | 读写 | 名称 | 描述 | 备注 | |||
---|---|---|---|---|---|---|---|
00H | 读/写 | ADDH | ADDH(默认0) | 模块地址高字节和低字节, 注意:当模块地址等于FFFF时,可作为广播和监听地址,此时模块将不再进行地址过滤 | |||
01H | 读/写 | ADDL | ADDL(默认0) | ||||
02H | 读/写 | NETID | NETID(默认0) | 网络地址,用于区分网络,相互通信时,应设置为相同 | |||
03H | 读/写 | REG0 | 7 | 6 | 5 | UART串口速率(bps) | 相互通信的两个模块,串口波特率可以不同,校验方式也可以不同; 当连续发射较大数据包时,用户需要考虑波特率相同带来的数据阻塞,甚至可能丢失;一般建议通信双方波特率相同 |
0 | 0 | 0 | 串口波特率为1200 | ||||
0 | 0 | 1 | 串口波特率为2400 | ||||
0 | 1 | 0 | 串口波特率为4800 | ||||
0 | 1 | 1 | 串波特率为9600(默认) | ||||
1 | 0 | 0 | 串口波特率为19200 | ||||
1 | 0 | 1 | 串口波特率为38400 | ||||
1 | 1 | 0 | 串口波特率为57600 | ||||
1 | 1 | 1 | 串口波特率为115200 | ||||
4 | 3 | 串口校验位 | 通信双方串口模式可以不同 | ||||
0 | 0 | 8N1(默认) | |||||
0 | 1 | 8O1 | |||||
1 | 0 | 8E1 | |||||
0 | 1 | 8N1等于00 | |||||
2 | 1 | 0 | 无线空中速率(bps) | 通信双方空中速率必须相同; 空中速率越高,延迟越小,传输距离越短。 | |||
0 | 0 | 0 | 空中速率0.3 | ||||
0 | 0 | 1 | 空中速率1.2 | ||||
0 | 1 | 0 | 空中速率2.4(默认) | ||||
0 | 1 | 1 | 空中速率4.8K | ||||
1 | 0 | 0 | 空中速率9.6K | ||||
1 | 0 | 1 | 空中速率19.2K | ||||
1 | 1 | 0 | 空中速率38.4K | ||||
1 | 1 | 1 | 空中速率62.5K | ||||
04H | 读/写 | REG0 | 7 | 6 | 分包设定 | 用户发送数据小于分包长度,接收端串口输出呈现为不间断连续输出; 用户发送数据大于分包长度,接收端串口会分包输出。 | |
0 | 0 | 240字节(默认) | |||||
0 | 1 | 128字节 | |||||
1 | 0 | 64字节 | |||||
1 | 1 | 32字节 | |||||
5 | 环境噪音使能 | 启用后,可在传输模式或 WOR 发送模式发送指令 C0 C1 C2 C3读取寄存器; 寄存器 0x00 :当前环境噪声 RSSI; 寄存器 0X01 :上一次接收数据时的 RSSI (当前信道噪声为:dBm =-RSSI/2); 指令格式:C0 C1 C2 C3+起始地址+读取长度; 返回格式:C1 + 地址+读取长度+读取有效值;如: 发送 C0 C1 C2 C3 00 01 返回 C1 00 01 RSSI(地址只能从 00 开始) | |||||
0 | 禁用(默认) | ||||||
1 | 启用 | ||||||
4 | 3 | 2 | 保留 | ||||
1 | 0 | 发射功率 | 功率和电流是非线性关系,最大功率时,电源效率最高; 电流不会随功率降低而同比例降低 | ||||
0 | 0 | 22dBm(默认) | |||||
0 | 1 | 17dBm | |||||
1 | 0 | 13dBm | |||||
1 | 1 | 10dBm | |||||
05H | 读/写 | REG2 | 信道控制(CH)0-83分别代表总共84个信道 | 实际频率= 850.125 + CH *1MHz,默认868.125MHz | |||
06H | 读/写 | REG3 | 7 | 启用RSSI字节 | 启用后,模块收到无线数据,通过串口 TXD 输 出后,将跟随一个 RSSI 强度字节。 | ||
0 | 禁用(默认) | ||||||
1 | 启用 | ||||||
6 | 传输方式 | 定点传输时,模块会将串口数据的前三个字节 识别为:地址高+地址低+信道,并将其作为无线发射目标。 | |||||
0 | 透明传输(默认) | ||||||
1 | 定点传输 | ||||||
5 | 中继功能 | 中继功能启用后,如果目标地址不是模块自身,模块将启动一次转发; 为了防止数据回传,建议和定点模式配合使 用;即:目标地址和源地址不同 | |||||
0 | 禁用中继功能(默认) | ||||||
1 | 启用中继功能 | ||||||
4 | LBT使能 | 启用后,无线数据发射前会进行监听,可以在 一定程度上避开干扰,但可能带来数据延迟; LBT 最大停留时间 2 秒,达到两秒会强制发出 | |||||
0 | 禁用(默认) | ||||||
1 | 启用 | ||||||
3 | WOR模式收发控制 | 仅针对模式 1 有效; WOR 接收方收到无线数据并通过串口输出后, 会等待 1000ms 后才再次进入 WOR,用户可以在 此期间输入串口数据并通过无线返回; 每个串口字节都会刷新 1000ms 时间; 用户必须在 1000ms 内发起第一个字节。 | |||||
0 | WOR发射(默认)模块收发打开,且在发射数据时,加入一定时间的唤醒码 | ||||||
1 | WOR接收方。模块无法发射数据,工作再WOR监听模式,可以节省大量功耗 | ||||||
2 | 1 | 0 | WOR周期 | 仅针对模式 1 有效; 周期 T= (1+WOR)*500ms,最大 4000ms,最 小为 500ms; WOR 监听间隔周期时间越长,平均功耗越低, 但数据延迟越大;收发双方必须一致(非常重要) | |||
0 | 0 | 0 | 500ms | ||||
0 | 0 | 1 | 1000ms | ||||
0 | 1 | 0 | 1500ms | ||||
0 | 1 | 1 | 2000ms | ||||
1 | 0 | 0 | 2500ms | ||||
1 | 0 | 1 | 3000ms | ||||
1 | 1 | 0 | 3500ms | ||||
1 | 1 | 1 | 4000ms | ||||
07H | 写 | CRYPT_H | 密钥高字节(默认0) | 只写,读取返回 0; 用于加密,避免被同类模块截获空中无线数据; 模块内部将使用这两个字节作为计算因子对空 中无线信号进行变换加密处理 | |||
08H | 写 | CRYPT_L | 密钥低字节(默认0) | ||||
80H~86H | 读 | PID | 产品信息7字节 | 产品信息7个字节 |
- mkdir -p ~/RaspberryPi
- wget -P ~/RaspberryPi/ http://www.waveshare.net/w/upload/1/16/SX1262_LoRa_HAT_Code.7z
- sudo apt-get install p7zip
- cd ~/RaspberryPi/
- p7zip --uncompress SX1268_LoRa_HAT_Code.7z
需要安装必要的函数库(python库),否则以下的示例程序可能无法正常工作。(如果是新系统请按照如下进行操作,若已经安装好以下的库可跳过)
安装python库:
- sudo apt-get install python-pip
- sudo pip install RPi.GPIO
- sudo apt-get install python-smbus
- sudo apt-get install python-serial
打开树莓派SERIAL串口
若用户使用SSH登录树莓派终端,请点击我参阅使能树莓派SERIAL串口
- cd ~/RaspberryPi/RaspberryPi/transparent
- sudo python transparent.py BROADCAST_AND_MONITOR
- sudo python transparent.py P2P
中继通信是为实现超远距离通信一种方法,将LoRa模块设置成中继模式,中继模式的LoRa模块地址寄存器只作为NETID转发配对,不再有主动收发功能,也无法低功耗操作
注意:实现中继功能至少需要三个LoRa模块
- cd ~/RaspberryPi/RaspberryPi/relay
- sudo python relay.py
唤醒通信是一种低功耗操作的通信方式,数据接收会延迟,但模块的功耗小,可用于电池供电的应用
- cd ~/RaspberryPi/RaspberryPi/wor
- sudo python wor.py
本例程使用的开发板 Open103C,芯片为STM32F103CBT6,程序是基于HAL库
跳帽连接B,M0、M1跳帽移除改用STM32F103C的GPIO使用,如下图所示
图中GPIO连接接线图为
SX1268 LoRa HAT | STM32F103C |
---|---|
5V | 5V |
GND | GND |
RXD | PA10 |
TXD | PA9 |
M1 | PB15 |
M0 | PB14 |
- #define TRASNSPARENT
- //#define RELAY
- //#define WOR
图中Open103C发送数据时LED1同发送模块的LoRa的LED亮起,但PC端上接收延迟约2S左右才收到数据。