跳转至

Lora 通信 - 基于正点原子 ATK-LORA-01 模块

ATK-LORA-01 一款体积小、微功率、低功耗、高性能远距离 LORA 无线串口模块。模块设计是采用高效的 ISM 频段射频 SX1278 扩频芯片,模块的工作频率在 410Mhz~441Mhz,以 1Mhz 频率为步进信道,共 32 个信道。可通过 AT 指令在线修改串口速率,发射功率,空中速率,工作模式等各种参数,并且支持固件升级功能。

模块基本参数

  • 工作频率:410-441 MHz,32 个信道
  • 工业频段:出厂默认 433Mhz 免申请频段
  • 无线速率:6 级可调(0.3、1.2、2.4、4.8、9.6、19.2Kbps)
  • 通信方式:串口 TTL,UART 串口,8N1、8E1、8O1,从 1200-115200 共 8 种波特率(默认 9600、8N1)
  • 发射功率:100mW(20dB),4 级可调(0-3),每一级增减约 3dBm
  • 工作电压:3.3-5V
  • 工作电流:2.3uA-118mA
    • 发射:118ma(20dbm 100mw 电压 5V)
    • 接收:17ma(模式 0、模式 1),最低约 2.3uA(模式 2+2S 唤醒)
  • 工作温度:-40~85℃
  • 接收灵敏度达-136dBm,传输距离 3000 米
  • 双 512 环形 FIFO

接口定义

名称 IO 模式 说明
MD0 输入 配置进入参数配置;上电时与 AUX 引脚配合进入固件升级模式
AUX ① 输出;② 输入 ① 用于指示模块工作状态,用户唤醒外部 MCU;② 上电时与 MD0 引脚配合进入固件升级模式
RXD 输入 TTL 串口输入,连接到外部 TXD 输出引脚
TXD 输出 TTL 串口输出,连接到外部 RXD 输入引脚
GND 接地
VCC DC3.3~5V 电源输入

注意事项:

  1. 模块的引脚电平是 3.3V,与 5V 的单片机通信需要做电平转换适配
  2. 无线串口模块为 TTL 电平,请与 TTL 电平的 MCU 进行连接

模式配置

MD0 与 AUX 引脚有两个功能,根据两者配合进入不同状态。模块在初次上电时,AUX 引脚为输入状态模式,若 MD0 与 AUX 引脚同时接入 3.3V TTL 高电平,并且保持 1 秒时间(引脚电平不变),则模块会进入固件升级模式,等待固件升级。否则进入无线通信模式(AUX 引脚会变回输出状态模式,用于指示模块的工作状态)

MD0、AUX 引脚内部下拉,悬空为低电平。拉高为 3.3V TTL 高电平

功能 介绍 进入方法
配置功能 模块参数配置(AT 指令) 上电后,AUX 悬空,MD0 拉高
通信功能 用于无线通信 上电后,AUX 悬空,MD0 悬空
固件升级功能 用于固件升级 上电后,AUX 拉高,MD0 拉高,保持 1s

无线通信模式下,AUX 引脚为输出,用于指示模块的工作状态。

功能配置

在“配置功能”下,串口需设置 ASDASD:波特率“115200”、停止位“1”、数据位“8”、奇偶校验位“无”,通过 AT 指令设置模块的工作参数。通过配置软件,参考以下 AT 指令表:

指令 作用
AT 测试模块响应情况
AT+MODEL? 查询设备型号
AT+CGMR? 获取软件版本号
AT+UPDATE 查询设备是否处于固件升级模式
ATE1 指令回显
ATE0 指令不回显
AT+RESET 模块复位(重启)
AT+DEFAULT 恢复出厂设置
AT+FLASH= 参数保存
AT+ADDR=? 查询设备配置地址范围
AT+ADDR? 查询设备地址
AT+ADDR= 配置设备地址
AT+TPOWER=? 查询发射功率配置范围
AT+TPOWER? 查询发射功率
AT+TPOWER= 配置发射功率
AT+CWMODE=? 查询配置工作模式范围
AT+CWMODE? 查询工作模式
AT+CWMODE= 配置工作模式
AT+TMODE=? 查询配置发送状态范围
AT+TMODE? 查询发送状态
AT+TMODE= 配置发送状态
AT+WLRATE=? 查询无线速率和信道配置范围
AT+WLRATE? 查询无线速率和信道
AT+WLRATE= 配置无线速率和信道
AT+WLTIME=? 查询配置休眠时间范围
AT+WLTIME? 查询休眠时间
AT+WLTIME= 配置休眠时间
AT+UART=? 查询串口配置范围
AT+UART? 查询串口配置
AT+UART= 配置串口

当退出配置功能(MD0=0),模块会重新配置参数,在配置过程中,AUX 保持高电平,完成后输出低电平,模块返回空闲状态。

休眠时间

休眠时间对接收方来说是监听间隔的时间;对发射方来说,是持续发射唤醒码的时间。当模块工作模式在“唤醒模式”时,会在用户数据前自动添加配置休眠时间的唤醒码,当模块工作模式在“省电模式”时,以配置的休眠时间为监听间隔的时间。

设备模式

一般模式(模式 0)

  • 发射:模块接收来自串口的用户数据,模块发射无线数据包长度为 58 字节,当用户输入数据达到 58 字节时,模块将启动无线发射,此时用户可以继续输入需要发射的数据,当用户需要传输的字节小于 58 字节时,模块等待 1 个字节时间,若无用户数据继续输入则认为数据终止,此时模块将所有数据都包经无线发出,当模块开始发送第一包用户数据时,AUX 引脚将输出高电平,当模块把所有数据通过 RF 芯片并启动发射后,AUX 输出低电平。此时表明最后一包无线数据已经发射完毕,用户可以继续输入长达 512 字节的数据,通过一般模式 发出的数据包,只能被处于一般模式、唤醒模式的接收模块收到。
  • 接收:模块一直打开无线接收功能,可以接收来自一般模式、唤醒模式发出的数据包。收到数据包后,模块 AUX 输出高电平,2-3ms 延迟后,开始将无线数据通过串口 TXD 引脚发出,所有无线数据都通过串口输出后,模块将 AUX 引脚输出低电平。

唤醒模式(模式 1)

  • 发射:模块启动数据包发射的条件与 AUX 功能等于一般模式,唯一不同的是:模块会在每个数据包前自动添加唤醒码(休眠时间),唤醒码的长度取决于用户参数中设置的休眠时间。唤醒码的目的是用于唤醒工作省电模式的接收模块。所以,唤醒模式发射的数据可以被一般模式、1、2 接收到。
  • 接收:与一般模式相同。

省电模式(模式 2)

  • 发射:模块处于休眠状态,串口将关闭,无法接收来自外部 MCU 的串口数据,所以该模式不具有无线发射的功能。
  • 接收:在省电模式下,要求发射方必须工作在唤醒模式,无线模块定时监听唤醒码,一旦收到有效的唤醒码后,模块将持续处于接收状态,在等待整个有效数据包接收接收完毕,然后模块将 AUX 输出高电平,并延迟 2-3ms 后,打开串口将收到的无线数据通过 TXD 发出,完毕后将 AUX 输出低电平。无线模块将继续进制“休眠-监听”的工作状态,通过设置不同的唤醒时间,模块具有不同的接收响应延迟和功耗,用户需要在通讯延迟时间和平均功耗之间取得一个平衡点。

信号强度模式(模式 3)

信号强度模式可查看通讯双方的信号强度,评估双方的通信质量提供参考。

  • 发射:与一般模式相同。
  • 接收:输出信号强度的信息。

SNR:信噪比(越大越稳定),RSSI:接收信号的强度指示(越大越稳定)

通信方式

  • 透明传输:例如 A 设备发 5 字节数据 AA BB CC DD EE 到 B 设备,B 设备就收到数据 AA BB CC DD EE。(透明传输,针对设备相同地址、相同的通信信道之间通信,用户数据可以是字符或 16 进制数据形式)。
    • 点对点
    • 点对多
    • 广播监听
  • 定向传输:例如 A 设备(地址为:0x1400,信道为 0x17(23 信道 433Mhz))需要向 B 设备(地址为 0x1234,信道为 0x10(16 信道、426Mhz))发送数据 AA BB CC,其通信格式为:12 34 10 AA BB CC,其中 1234 为模块 B 的地址,10 为信道,则模块 B 可以收到 AA BB CC。同理,如果 B 设备需要向 A 设备发送数据 AA BB CC,其通信格式为:14 00 17 AA BB CC,则 A 设备可以收到 AA BB CC。(定向传输,可实现设备间地址和通信信道不同之间通信,数据格式为 16 进制,发送格式:高位地址+低位地址+信道+用户数据)。
    • 点对多
    • 广播监听

广播与数据监听:将模块地址设置为 0xFFFF,可以监听相同信道上的所有模块的数据传输;发送的数据,可以被相同信道上任意地址的模块收到,从而起到广播和监听的作用。

透明传输方式

点对点

  • 地址相同、信道相同、无线速率(非串口波特率)相同的两个模块,一个模块发送,另外一个模块接收(必须是:一个发,一个收)。
  • 每个模块都可以做发送/接收。
  • 数据完全透明,所发即所得。
发送模块 接收模块
个数 1 1
传输内容 数据 数据

例如:

设备 A、B 地址都为 0x1234,信道都为 0x12,速率相同。
设备 A 发送:AA BB CC DD
设备 B 接收:AA BB CC DD

透传的方式很简单,把 Lora 模块当串口用就行,设备 A 通过串口发数据,设备 B 就可以从串口接收到,反之如此。

点对多

  • 地址相同、信道相同、无线速率(非串口波特率)相同的模块,任意一个模块发送,其他模块都可以接收到。
  • 每个模块都可以做发送/接收.
  • 数据完全透明,所发即所得。
发送模块 接收模块
个数 1 N
传输内容 数据 数据

与点对点的区别是,接收模块可以多个。

例如: 设备 A~F 地址为 0x1234,信道为 0x12,速率相同。
设备 A 发送:AA BB CC DD
设备 B~F 接收:AA BB CC DD

广播监听

  • 模块地址为 0xFFFF,则该模块处于广播监听模式,发送的数据可以被相同速率和信道的其他所有模块接收到(广播);同时,可以监听相同速率和信道上所有模块的数据传输(监听)。
  • 广播监听无需地址相同。
发送模块 接收模块
个数 1 N
传输内容 数据 数据

与点对多的区别是,地址可以不同。

例如: 设备 A 地址为 0xFFFF,设备 B~F 地址不全部一样,设备 B 与 C 地址为 0x1234,设备 D、E、F 地址为 0x5678。设备 A~F 速率全部相同。
广播:
设备 A 广播:AA BB CC DD
设备 B~F 接收:AA BB CC DD
监听:
设备 B 向 C 发送:AA BB CC DD
设备 A 监听:AA BB CC DD
设备 D 向 E、F 发送:11 22 33 44
设备 A 监听:11 22 33 44

定向传输方式

点对点

  • 模块发送时可修改地址和信道,用户可以指定数据发送到任意地址和信道。
  • 可以实现组网和中继功能。
发送模块 接收模块
个数 1 1
传输内容 地址+信道+数据 数据

与点对点透传的区别是,模块地址可变,信道可变,但速率仍然相同。

例如:
设备 A 地址 0X1234,信道 0X17;
设备 B 地址 0xABCD,信道 0X01;
设备 C 地址 0X1256,信道 0x13。

设备 A 发送:AB CD 01 AA BB CC DD
设备 B 接收:AA BB CC DD
设备 C 接收:无

设备 A 发送:12 56 13 AA BB CC DD
设备 B 接收:无
设备 C 接收:AA BB CC DD

无代码测试

准备 2 个 USB 转 TTL,2 个 LoRa 模块。分别接在 USB 转 TTL 上(电源、共地、TX/RX 对接),将两个 LoRa 的 MD0 接 VCC 后,插入电脑 USB,打开配置软件,配置以下参数:

设备 A:

  • 一般模式
  • 定向传输
  • 波特率:115200(必须是 115200)
  • 校验位:无
  • 空中速率:19.2k
  • 休眠时间:1s
  • 模块地址:0
  • 通信信道:0
  • 发射功率:20dBm

设备 B:

  • 一般模式
  • 定向传输
  • 波特率:115200(必须是 115200)
  • 校验位:无
  • 空中速率:19.2k
  • 休眠时间:1s
  • 模块地址:65534
  • 通信信道:10
  • 发射功率:20dBm

配置后,点击 保存配置拔掉 MD0 再断电

将两个模块重新上电,打开配置软件,收发都勾选 HEX(16 进制)

在 A 的发送区填入 FF FE 0A 11 12 13 14,点击发送,就能在 B 的接收区收到 11 12 13 14 了;或者在 B 的发送区填入 00 00 00 11 12 13,就能在 A 的接收区收到 11 12 13 了。

其中,FF FE 是 B 地址 65534 的 16 进制数,信道是 10(16 进制数就是 0A),发送的内容数据是 11 12 13 14。同理,B 发出的数据包含 A 的地址 00 00,信道 00,内容 11 12 13。发送数据的格式是 高位地址 + 低位地址 + 信道 + 用户数据

使用代码测试

点对点定传仅仅是比点对点透传多了地址字节。可以这样定义:

main.c
/* USER CODE BEGIN PV */
uint8_t B_Addr[2] = { 0xFF, 0xFE };
uint8_t B_Chan[1] = { 0x0A };
/* USER CODE END PV */

配置了串口的代码(HAL 库环境)后,在每次发送数据之前发送地址字节:

main.c
HAL_UART_Transmit(&huart1, B_Addr, 2, 0xFFFF);
HAL_UART_Transmit(&huart1, B_Chan, 1, 0xFFFF);

这样,接收的设备(B 设备)就能接收到 A 发出的一帧数据(不含地址字节)。

广播监听

  • 模块地址为 0xFFFF,则该模块处于广播监听模式,发送的数据可以被具有相同速率和信道的其他所有模块接收到(广播);同时,可以监听相同速率和信道上所有模块的数据传输(监听);
  • 广播监听无需地址相同。
  • 信道地址可设置。当地址为 0xFFFF 时,为广播模式;为其他时,为定向传输模式。
发送模块 接收模块
个数 1 N
传输内容 0xFFFF+信道+数据 数据

例如:

设备 A 地址 0xFFFF 信道 0x12;
设备 B、C 地址 0x1234,信道 0x13;
设备 D 地址 0xAB00,信道 0x01;
设备 E 地址 0xAB01,信道 0x12;
设备 F 地址 0xAB02,信道 0x12;

设备 A 广播:FF FF 13 AA BB CC DD
设备 B、C 接收:AA BB CC DD

设备 A 发送:AB 00 01 11 22 33 44
只有设备 D 接收:11 22 33 44

设备 E 发送:AB 02 12 66 77 88 99
设备 F 接收:66 77 88 99
设备 A 监听:66 77 88 99

参考与致谢

原文地址:https://wiki-power.com/
本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。