STM32整合ATK-01-LORA模块实现定向传输实现三点组网(一主加二从)案例

32 篇文章 12 订阅
21 篇文章 0 订阅
文章讲述了在物联网环境下使用Lora模块进行组网和数据传输的过程,包括正点原子Lora模块的硬件调试挑战,如接线问题和固件更新。作者提到在STM32上整合Lora模块,利用DMA进行串口发送,并展示了如何进行定向传输的配置和测试,强调了发送数据的格式和确认发送成功的困难性。
摘要由CSDN通过智能技术生成

背景

应物联网无网的环境要求,需要使用Lora模块进行组网以此传输数据,本来用了正点原子的Lora模块,以正点的强大资料支持,我本应该非常熟悉这些组网操作了,但硬件调试实在是让我差不多很苦恼,一方面需要不断的去排查接线问题,一方面又要去关注软件代码是否已经发送了数据。

原因:因为用此lora模块发送完数据后,用TTL在桌面串口助手上查看,但它没有回馈,这意味着不知道是否它到底发送是否成功,不知道是否有其他地方被我疏忽了,欢迎同行赐教。

配上正点的lora

接线

这里在我测试的时候,有时成功后过一段时间再次进行测试则又连不上,也许是因为接线的问题(这是硬件调试的通病)。

关于更新固件

解决用上位机设置后丢失保存的问题。

正点原子LORA模块ATK-01固件升级与断电不丢失设置参数_昊月光华的博客-CSDN博客

定向传输

引用正点的文档

1)点对点 1,模块发送时可修改地址和信道,用户可以指定数据发送到任意地址和信道。 2,可以实现组网和中继功能。 发送模块(1 个):地址+信道+数据 接收模块(1 个):数据 点对点(透传):模块地址、信道、速率相同 点对点(定向):模块地址可变、信道可变,速率相同 图 2.4.2.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 D

STM32整合

像精英版,探索版都提供了lora的ATK接口,(这里的ATK-MOUDLE接口对应lora上的MD0和AUX对应的引脚需要拉低)省去了接线的麻烦。

贯彻与大道至简的原则,我没有像正点那样在程序运行过程中去通过AT指令更改LORA的工作模式,能通过先配置再使用再好不过(当做无线串口用是再方便不过的了)

先在一台电脑通过USB转TTL接多个LORA节点做测试:

发送的前3个字节为16进制,这里在调试的时候需要注意。

比如我以三个lora为例(下面分别叫做A,B,C):定向传输信道以不同地址可以不同,速率必须相同

Alora:地址613(16位 0-65535) 信道为15

Blora:地址614(16位 0-65535) 信道为15

Clora:地址615(16位 0-65535) 信道为15(最大信道为32,越好的LORA模块,信道数量越多,受相邻信道干扰的可能性越小!)

A和B发送给C(让其做中心节点)的实例:

C的地址为615 信道为15 其十六进制为 0X02 0X67 0X0F。当让一台电脑接多个LORA节点做测试时,发送配置为16进制(HEX格式发送),每两位为一个字节,所以测试发送的数据必须是偶数。至于为什么我写得如此详细,是因为发送成功才能看到结果,发送失败是没有任何错误回馈的!这为了排查是软件原因还是硬件原因。

Alora ,Blora发送

Clora收到:

STM32测试

配置串口为DMA的发送模式,串口的全局中断,串口DMA发送中断打开。

//定向传输 信道加地址
u8 Rx3sBuf[300]={0X02,0X67,0X0F}; // Rx3发送数据缓存数组
#define LoraData  "{\"data\": \"%s\"}"
//通过Lora发送给巡检中心节点
void SendMessageByUsart3(const char * src){

    char  temp[100]={0};

     u16 len=0;
  
    //清空缓存数组
    memset(Rx3sBuf,0x00,sizeof(Rx3sBuf));
    //设置报文前缀
    Rx3sBuf[0]=0x02;
    Rx3sBuf[1]=0x67;
    Rx3sBuf[2]=0x0F;
       sprintf(temp, LoraData, src);
           len = strlen(temp);
        temp[len++]='\r';
        temp[len++]='\n';
        temp[len]='\0';

       strcat(Rx3sBuf, temp);
      
       HAL_UART_Transmit_DMA(&huart3,Rx3sBuf,len+3);
}

用Cloira用USB转TTL接在电脑上,测试正确、

以前相关

正点原子Lora无线串口的透明传输点对点通信及其注意事项_lora点对点通信_昊月光华的博客-CSDN博客

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值