Lora模块使用方法_ 2019.10.31


背景:显示板第9板, 改进、打板、焊接、修改程序, 发现LORA模块不能接收, 重新查看LORA资料, 发觉之前刨得很熟, 调试了半个月的老朋友变陌生人了, 得重新熟悉.  归结原因, 是之前没整理好资料, 以使后来方便迅速翻查熟悉。

以后每个知识点都得按以下步骤做笔记:

  • 概况
  • 参数解释
  • 应用实例
  • 调试经历

无线数传 (正点原子LORA模块)

使用了原子哥家的LORA模块.并打了个小板配合调试.

优点:  USART接口,  收发简单, DMA接收特省事

缺点:  速度慢. 速度慢. 速度慢!  使用逻辑分析仪观察, 每1ms只收发1字节数据(86us), 其余900us是空白的!!!!!! 另发送时, 数据不满足一包(56个字节)时, 会等待80ms才开始发送. 接收时, 也会有20ms等待时间!!!!!

期望未来有空闲时,  研究一下其它LORA模块的SPI接口.


统一工作中参数: 

波特率:      115200                                  C板 模块地址:  1

校验位:      无                                          D板 模块地址:  2

空中速率:  19.2K                                     V板 模块地址:  3

休眠时间:  1S

信道:          5

发射功率:   20dBm


三种传输模式, 配合使用, 可以完成各种发送和接收工作.

1: 透明传输相同地址 、 相同信道

参数: A\B 地址一样,  信道一样, 速率一样

A发送:  AA BB CC DD EE 

B收到:  AA BB CC DD EE。

用户数据可以是字符或 16进制数据形式)


2: 定向传输: 指定地址 、指定信道 

发送格式: 高位地址+ 低位地址+ 信道+ 用户数据。

A设备, 地址:0x1400,信道:0x17, 23 信道 、433Mhz

B设备, 地址:0x1234,信道: 0x10,16 信道、 426Mhz

A发送:12 34 10 AA BB CC,其中 1234 为模块 B 的地址,10 为信道,

B收到: AA BB CC。


3:广播与数据监听:

地址: 0xFFFF

发送: 可以被相同信道上任意地址的模块收到

接收: 可以接收相同信道上任意地址模块发送的数据


编程要点:

原子哥的东西大部分是很好的,不过多细致的事物也有BUG~.   MLGB,在LORA示例代码中功能各种啰嗦,文档也有好几个点没说明白,Q群群主也不太搭理的.害得调试时花了不了功夫,从8月份断断续续,到现在11月初,才明白如何用代码配置参数.

  • 进入配置模式,MD0=1,AUX=0
  • 命令间延时>80ms,每个命令间要延时,应该是用于确定'包'的完整,试过60ms配置失败,90ms成功
  • 命令字符串须以 "\r\n" 结尾,这个真的是坑吖,在几个说明文档中都没提及,几经摸索才在示例代码中发现规律.
// 代码已调试正常使用, 原创版权, 随便复制, 不谢~~~

void vLora_Set(void)
{   
    char t = 110;                 // 延时时间,试过60ms失败
                                              
    vDelay_ms(t);        
    while(  (LORA_AUX_GPIOx ->IDR & LORA_AUX_PINx)!=0);     // 等待AUX为0,即非工作状态
    
    vMD0(1);                                   // 配置模式,MD0=1,AUX=0
    vSys_SetGPIO(LORA_AUX_GPIOx ,LORA_AUX_PINx ,G_MODE_OUT  ,G_OTYPE_PP ,G_OSPEED_50M ,G_PUPD_DOWN ,0);
    vAUX(0);     
                 
    vDelay_ms(t);   
    vLora_SendString("AT+WLRATE=5,5\r\n");     // 信道\速率  (0-31,410Mhz-441Mhz)     4:9.6Kbps  5:19.2Kbps(默认) 
    
    vDelay_ms(t);  
    vLora_SendString("AT+UART=7,0\r\n"  );     // 115200 无校检位
    
    vDelay_ms(t);  
    vLora_SendString("AT+WLTIME=0\r\n" );      // 体眠时间     0:1秒(默)  1:2秒
   
    vDelay_ms(t);  
    vLora_SendString("AT+TPOWER=3\r\n" );      // 发射功率   0:11dbm   1:14dbm  2:17dbm  3:20dbm(默认)
    
    vDelay_ms(t);  
    vLora_SendString("AT+CWMODE=0\r\n" );      // 工作模式   0:一般(默) 1:唤醒    2:省电    3:信号强度
    
    vDelay_ms(t);  
    vLora_SendString("AT+TMODE=0\r\n");        // 发送状态     0:透明(默) 1:定向
    
    vDelay_ms(t);  
    vLora_SendString("AT+ADDR=00,01\r\n" );   // 模块地址  16进制,高低位
    
    vDelay_ms(t);       
    vMD0(0);                                   // 退出配置模式, MDO=0,AUX=0
    vSys_SetGPIO(LORA_AUX_GPIOx ,LORA_AUX_PINx ,G_MODE_IN ,G_OTYPE_PP ,G_OSPEED_50M ,G_PUPD_DOWN ,0);   
    vDelay_ms(t);         
}
发布了44 篇原创文章 · 获赞 20 · 访问量 9543

猜你喜欢

转载自blog.csdn.net/zhouml_msn/article/details/102842643