STM32应用-5-LORA模块测试

在一个物品定位项目中,需要用Lora实现物品定位功能。此项目没有选择NBIOT因为客户对于NB需要SIM卡,以及NB的成本并不满意,因此选择更低成本,且无需SIM卡的LORA方式。

硬件连接

STM32应用-5-LORA模块测试_第1张图片

其中,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.

 STM32应用-5-LORA模块测试_第2张图片

测试时,先采用模式0,进行测试。 

重新采用带有电源的USB TTL,才能够正确使用。

定点模式验证

透传模式无需赘述,接下来重点测试和验证定点模式 。定点模式设置中,1,2 BYTE为模块地址,地址范围为0~65535,其中65535为广播地址。

第3个BYTE为信道

第5个参数为传输模式,其中C4对应的是定点模式。

 

STM32应用-5-LORA模块测试_第3张图片

定点模式时,两个信道最好选择不同,避免同时发射时,相互干扰。

设备1:自身地址0001,发射地址0002 , 发射信道02, 发射内容aabbcc

STM32应用-5-LORA模块测试_第4张图片

设备2:自身地址0002, 发射地址0001, 发射信道01, 发射内容aabb3f

STM32应用-5-LORA模块测试_第5张图片

可以看到,设备1和设备2发生了定点通信。注意:收发信道通常不同,以避免收发发生冲突

定点模式之广播地址发送普通地址接受

模块1配置为地址1,信道1,模块2配置为地址2,信道2

模块1发送FFFF02AABB3F,也就是向信道2广播,这时,模块2能够接收到广播消息

STM32应用-5-LORA模块测试_第6张图片

定点模式之普通发送广播接收

模块1的地址修改为FFFF,信道为01, 模块2地址为0002,信道为2,模块2发送普通消息001101aabbcc,这时模块1由于为广播地址,因此可以接受数据。

STM32应用-5-LORA模块测试_第7张图片

 模块配置如上。

模块2往任意地址发送,模块1由于位于广播地址,可以成功接受。

STM32应用-5-LORA模块测试_第8张图片

待机功耗

模式0下,待机功耗为14.5mA,不算低。如果用5000mAH电池,预计待机仅仅为13天。因此,应该不会长期工作在模式0下。

STM32应用-5-LORA模块测试_第9张图片

Lora模块功能调试

通过串口调试透传功能

1. 模式:J6, J7跳线帽不接,设定M1和M0为1,工作在读取参数模式;

2. 供电: 用STLINK供电3.3V;

3. 串口: USB串口分别连接LORA_RXD和LORA_TXD;

4. 读取参数测试:通过读取参数,验证模块是否工作正常;

模块读取参数正常

STM32应用-5-LORA模块测试_第10张图片

读取的默认参数为0x00 0x00 0x1a 0x17 0x44,对应描述如下:

BYT1, BYTE2: 0x00 0x00  模块默认地址;

BYTE3: 0x1A:模块串口为8N1模式,波特率9600, 空中速率2.4K

STM32应用-5-LORA模块测试_第11张图片

BYTE4: 0X17:频率设置

例如410+0x17(23) = 433MHz,表示通信频率为433MHz

 BYTE5:0X44:配置位,具体配置如下:

STM32应用-5-LORA模块测试_第12张图片

5. 模块2上电,采用同样配置,读取参数,以便验证模块是否正常上电工作;

6. 模块1,2插上跳线帽,进入透传模式(备注:模式切换无需重启),然后通过串口,相互发送数据,这时,可以发现能够正常互传数据。

STM32应用-5-LORA模块测试_第13张图片

7. 再次进入配置模式,测试串口命令读取参数,为后续MCU开发进行测试准备

7.1 发送C1C1C1,模块返回C0 00 00 1A 17 44

C1命令用来读取参数

STM32应用-5-LORA模块测试_第14张图片

注意:这里不能选择发送新行,收发采用16进制方式; 

7.2 发送C0+5BYTE工作参数,其参数为:00 00 1A 18 44,注意,这里修改了频率信息

STM32应用-5-LORA模块测试_第15张图片

再次用C1命令进行查询,发现频率参数已经发生了变化。

STM32应用-5-LORA模块测试_第16张图片 

如果把C0 00 00 1A 18 44修改为C2 00 00 1A 18 44,也就是命令字从C0修改为C2,则参数掉电不会保存(实测有效)

7.3读取版本信息(C3C3C3),此功能也可用作设备上电测试。返回版本为C324414,其中C3为包头,324414为版本号

STM32应用-5-LORA模块测试_第17张图片

7.4模块复位(C4C4C4),此功能可用于模块复位。此命令下,模块并无返回值。 

定点模式

定点模式下,发送端可以指定接收端的地址,接收端接收到地址后,才会被唤醒。 在模式0或者模式1中,模块都可以工作在定点模式。下面首先测试模式0的定点模式,然后再测试模式1下的定点模式;

1. 通过串口,设置Lora模块2参数为C0 00 02 1A 02 C4,注意:C0表示参数设置掉电保存,0002表示模块地址,1A为默认参数,通常无需修改,02为信道,C4表示定点模式。对应参数含义如下:

STM32应用-5-LORA模块测试_第18张图片

2. 设置Lora模块1参数为地址 0001, 信道1,传输方式定点,其他不变;

STM32应用-5-LORA模块测试_第19张图片

3.  Lora模块1向Lora模块2发送数据,Lora模块2能够接收到数据,同样,Lora模块2向Lora模块1发送数据,Lora模块1能够接收到数据。

STM32应用-5-LORA模块测试_第20张图片STM32应用-5-LORA模块测试_第21张图片

4.Lora模块1工作在唤醒模式,Lora模块2工作在省电模式,进一步测试,模块2能够接收到模块1发送的数据。(注意:在模式切换时,有时候会发生模式无法切换的情况,比如:模块2可能会接收不到数据,这时候,只需要将模块2重启,即可顺利接受。)

STM32应用-5-LORA模块测试_第22张图片

 

物品管理系统设计思路

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网关接收到停止报警命令,则发送停止报警信号,并等待确认。

以上的设计逻辑中,全部信号采用确认方式,以增强系统的稳定性。

 

实际设计过程中,当然还需要做诸多修改。例如:如何改善发送,接受的逻辑,增强系统效率?如何定期发送唤醒信号,确保设备和网关之间的连接?如何合理切换不同的模式,以便降低功耗?这些设计细节,都需要在实际设计中,一一完成。

你可能感兴趣的:(STM32应用-5-LORA模块测试)