STM32应用-5-LORA模块测试
2018-11-14 13:56:05 book_drabit 阅读数 3532 收藏
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/book_drabit/article/details/84063423
在一个物品定位项目中,需要用Lora实现物品定位功能。此项目没有选择NBIOT因为客户对于NB需要SIM卡,以及NB的成本并不满意,因此选择更低成本,且无需SIM卡的LORA方式。
硬件连接
其中,Lora模块的管脚连接方式如下:
序号 | 引脚 | 引脚方向 | 备注 |
1 | M0 | 输入(不可悬空) | 和M1配合,决定模块的工作模式(极弱上拉,如不使用可接地) |
2 | M1 | 输入(不可悬空) | 和M0配合,决定模块的工作模式(极弱上拉,如不使用可接地) |
3 | RXD | 输入 | TTL串口输入,连接到外部TXD引脚(可配置为漏极开路或上拉输入,详见手册) |
4 | TXD | 输出 | TTL串口输出,连接到外部RXD引脚(可配置为漏极开路或推挽输出,详见手册) |
5 | AUX | 输出(可悬空) | 指示模块工作状态,用户外部唤醒MCU,上电自检初始化期间输出低电平 |
6 | VCC | 模块电源正参考 | |
7 | GND | 模块地线 | |
8 | 固定孔 | 固定孔 | |
9 | 固定孔 | 固定孔 | |
10 | 固定孔 | 固定孔 |
采用杜邦线和USB-TTL模块,给LORA供电。需要注意的是,USB-TTL中, VCC和3V3用跳线帽相连接,确保VCC输出为3V3.
测试时,先采用模式0,进行测试。
重新采用带有电源的USB TTL,才能够正确使用。
定点模式验证
透传模式无需赘述,接下来重点测试和验证定点模式 。定点模式设置中,1,2 BYTE为模块地址,地址范围为0~65535,其中65535为广播地址。
第3个BYTE为信道
第5个参数为传输模式,其中C4对应的是定点模式。
定点模式时,两个信道最好选择不同,避免同时发射时,相互干扰。
设备1:自身地址0001,发射地址0002 , 发射信道02, 发射内容aabbcc
设备2:自身地址0002, 发射地址0001, 发射信道01, 发射内容aabb3f
可以看到,设备1和设备2发生了定点通信。注意:收发信道通常不同,以避免收发发生冲突
定点模式之广播地址发送普通地址接受
模块1配置为地址1,信道1,模块2配置为地址2,信道2
模块1发送FFFF02AABB3F,也就是向信道2广播,这时,模块2能够接收到广播消息
定点模式之普通发送广播接收
模块1的地址修改为FFFF,信道为01, 模块2地址为0002,信道为2,模块2发送普通消息001101aabbcc,这时模块1由于为广播地址,因此可以接受数据。
模块配置如上。
模块2往任意地址发送,模块1由于位于广播地址,可以成功接受。
待机功耗
模式0下,待机功耗为14.5mA,不算低。如果用5000mAH电池,预计待机仅仅为13天。因此,应该不会长期工作在模式0下。
Lora模块功能调试
通过串口调试透传功能
1. 模式:J6, J7跳线帽不接,设定M1和M0为1,工作在读取参数模式;
2. 供电: 用STLINK供电3.3V;
3. 串口: USB串口分别连接LORA_RXD和LORA_TXD;
4. 读取参数测试:通过读取参数,验证模块是否工作正常;
模块读取参数正常
读取的默认参数为0x00 0x00 0x1a 0x17 0x44,对应描述如下:
BYT1, BYTE2: 0x00 0x00 模块默认地址;
BYTE3: 0x1A:模块串口为8N1模式,波特率9600, 空中速率2.4K
BYTE4: 0X17:频率设置
例如410+0x17(23) = 433MHz,表示通信频率为433MHz
BYTE5:0X44:配置位,具体配置如下:
5. 模块2上电,采用同样配置,读取参数,以便验证模块是否正常上电工作;
6. 模块1,2插上跳线帽,进入透传模式(备注:模式切换无需重启),然后通过串口,相互发送数据,这时,可以发现能够正常互传数据。
7. 再次进入配置模式,测试串口命令读取参数,为后续MCU开发进行测试准备
7.1 发送C1C1C1,模块返回C0 00 00 1A 17 44
C1命令用来读取参数
注意:这里不能选择发送新行,收发采用16进制方式;
7.2 发送C0+5BYTE工作参数,其参数为:00 00 1A 18 44,注意,这里修改了频率信息
再次用C1命令进行查询,发现频率参数已经发生了变化。
如果把C0 00 00 1A 18 44修改为C2 00 00 1A 18 44,也就是命令字从C0修改为C2,则参数掉电不会保存(实测有效)
7.3读取版本信息(C3C3C3),此功能也可用作设备上电测试。返回版本为C324414,其中C3为包头,324414为版本号
7.4模块复位(C4C4C4),此功能可用于模块复位。此命令下,模块并无返回值。
定点模式
定点模式下,发送端可以指定接收端的地址,接收端接收到地址后,才会被唤醒。 在模式0或者模式1中,模块都可以工作在定点模式。下面首先测试模式0的定点模式,然后再测试模式1下的定点模式;
1. 通过串口,设置Lora模块2参数为C0 00 02 1A 02 C4,注意:C0表示参数设置掉电保存,0002表示模块地址,1A为默认参数,通常无需修改,02为信道,C4表示定点模式。对应参数含义如下:
2. 设置Lora模块1参数为地址 0001, 信道1,传输方式定点,其他不变;
3. Lora模块1向Lora模块2发送数据,Lora模块2能够接收到数据,同样,Lora模块2向Lora模块1发送数据,Lora模块1能够接收到数据。
4.Lora模块1工作在唤醒模式,Lora模块2工作在省电模式,进一步测试,模块2能够接收到模块1发送的数据。(注意:在模式切换时,有时候会发生模式无法切换的情况,比如:模块2可能会接收不到数据,这时候,只需要将模块2重启,即可顺利接受。)
物品管理系统设计思路
1. Lora设备端,上电时,读取跳线帽的地址,并配置到Lora模块中;
2. Lora设备端MCU进入休眠状态(standby),Lora进入模式2(省电模式)
3. Lora模块接收到信号后,通过AUX管脚,唤醒MCU
4. MCU唤醒后,回传信号回到网关(模式0),网关再次确认发送;
5. MCU启动报警,并保持在工作状态;
6. 网关发送停止报警信号,MCU停止报警,并再次进入休眠状态;
由于Lora需要进行双向发送,因此Lora始终工作在模式0中;
网关的基本逻辑如下:
1. Lora网关接收到寻找命令后,发送Lora信号,唤醒对应设备(地址+信道);
2. Lora网关接收到对应设备的信号后,确保对应设备在线;
3. Lora网关再次发送信号,激发设备报警;
4. 设备报警后,发送确认信号;
5. Lora网关接收到停止报警命令,则发送停止报警信号,并等待确认。
以上的设计逻辑中,全部信号采用确认方式,以增强系统的稳定性。
实际设计过程中,当然还需要做诸多修改。例如:如何改善发送,接受的逻辑,增强系统效率?如何定期发送唤醒信号,确保设备和网关之间的连接?如何合理切换不同的模式,以便降低功耗?这些设计细节,都需要在实际设计中,一一完成。