调试正点原子Lora模块记录

调试正点原子Lora模块记录

买的是排针版ATK-LORA-V2.0

下载原子哥的官方资料,里面有上位机调试软件和使用文档。用usb-ttl连接Lora和电脑打开调试软件进行调试,

在“参数配置”下, 模块必须工作在“配置功能”(AUX=0 空闲状态,MD0=1 进入此功能)。

在“固件升级”,模 块必须工作在“固件升级功能”,

无线收发数据,模块必须工作在 “通信功能”(AUX=0 空闲状态,MD0=0 进入此功能)。

也就是说配置参数的时候MD0连接3.3V高电平置1,透传时置0,悬空即低电平0。

透传

点对点:

双方的参数必须一致,信道和地址完全一样,MD0置0.

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

点对多:

所有参与通信的对象参数必须一致,

任意一对象发送数据,信道和地址一致均可以收到消息。可以充当发射和接收端

广播监听:

选A设备作为广播设备,地址改为0xffff(广播地址),即可监听和发送数据给同信道和同速率的所有数据(地址可以不同),现B设备地址为110,C设备为111,A发送数据123,BC设备均可收到123,B设备发送321,只有A设备能收到321,C设备发送456,也只有A设备能收到456

定向

点对点:

发送方要勾选Hex选项,接收方勾选Hex,这样才能发送成功

广播监听:

 

 

代码测试

先用STM32F1RCT6来做测试,原子哥的lora代码过于丰富,我没用,就做简单的测试,拿原子哥的串口程序直接修改。

透明传输

lora.h

#ifndef __LORA_H
#define __LORA_H

#include "sys.h"


#endif

#define MD0_PORT GPIOA
#define MD0_PIN GPIO_Pin_1

#define MD0_SET()  GPIO_SetBits(MD0_PORT,MD0_PIN)
#define MD0_RES()  GPIO_ResetBits(MD0_PORT,MD0_PIN)


 


void lora_init(void);

lora.c

#include "lora.h"
#include "delay.h"
#include "uart2.h"

void lora_init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; //
    GPIO_Init(GPIOA,&GPIO_InitStructure);
    
    MD0_SET();
    delay_ms(100);
    u2_printf("AT+ADDR=ff,ff\r\n"); //AT地址,0xffff为广播地址,发送完指令后延时一会,具体能多小的延时没测试。
    delay_ms(100);
    u2_printf("AT+TMODE=0\r\n"); //选择发送状态,TMODE=0位透明传输。
    delay_ms(100);
    MD0_RES();
    delay_ms(80);
}

 

main.c

#include "stm32f10x.h"
#include "lora.h"
#include "uart2.h"

 
 


int main(void)
{    
    delay_init();
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    uart2_Init(115200);
    lora_init();    
    while(1)
    {
        delay_ms(100);
        u2_printf("ffff113333\r\n");
//        USART_SendData(USART2,0x00);
//        delay_ms(1);
//        USART_SendData(USART2,0x00);
//        delay_ms(1);
//        USART_SendData(USART2,0x11);
//        delay_ms(1);
//        USART_SendData(USART2,0x33);
//        delay_ms(1);
        //USART_ReceiveData(USART2);
        
//        USART2->DR = (0x00 & (uint16_t)0x01FF);
//        delay_ms(1);
//        USART2->DR = (0x00 & (uint16_t)0x01FF);
//        delay_ms(1);
//        USART2->DR = (0x11 & (uint16_t)0x01FF);
//        delay_ms(1);
//        USART2->DR = (0xff & (uint16_t)0x01FF);
//        delay_ms(1);
        
    }
}
 

一旦主lora设备地址为广播地址,并且发送状态为透明传输,那么处于同一信道和同速率的其他lora设备,都能同时受到主lora设备发过来的广播信息,无论是处于定向还是透传的从设备都能收到数据。

定向传输

需要修改的地方不多。

在Lora.c文件修改u2_printf("AT+TMODE=1\r\n"); 即可

主函数里面:

        USART2->DR = (0x00 & (uint16_t)0x01FF);
        delay_ms(1);
        USART2->DR = (0x00 & (uint16_t)0x01FF);
        delay_ms(1);
        USART2->DR = (0x11 & (uint16_t)0x01FF);
        delay_ms(1);
        USART2->DR = (0xff & (uint16_t)0x01FF);
        delay_ms(1);

    

 

        USART_SendData(USART2,0x00);
        delay_ms(1);
        USART_SendData(USART2,0x00);
        delay_ms(1);
        USART_SendData(USART2,0x11);
        delay_ms(1);
        USART_SendData(USART2,0x33);
        delay_ms(1);

这两段代码等价的。定向传输数据FF到地址是0000,信道17的lora设备

可以看到收到主lora设备发来的ff数据。

要注意的是定向传输只能发送16进制数据,所以发送字符串是不行的。同时操作DR寄存器的时候,由于一次性只能8位数据,所以16位地址+4位信道+数据,需要每8位延时1ms的时间。

 

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
正点原子LORA模块是一种无线通信模块,主要用于远距离低功耗通信。下面是正点原子LORA模块的使用步骤: 1. 硬件连接:将LORA模块通过杜邦线连接到开发板或者其他控制器上。通常需要连接VCC、GND、TXD、RXD等引脚。 2. 编程设置:在程序中引入LORA模块的库文件,然后通过编程进行设置。首先,需要设置LORA模式为接收模式或发送模式。通过设置工作频率、信道、传输速率等参数,以满足通信需求。根据具体情况,还可以设置接收或发送缓冲区的大小。 3. 发送数据:在发送模式下,将要发送的数据写入发送缓冲区,然后调用相应的发送函数将数据发送出去。在发送完成后可以等待接收确认信号或者直接发送下一条数据。 4. 接收数据:在接收模式下,LORA模块会不断监听信道上的数据。当接收到数据时,将数据读取到接收缓冲区中。然后,可以对接收到的数据进行处理,比如解析数据包、进行数据验证等操作。 5. 错误处理:在使用LORA模块时,需要注意错误的处理。比如,当发送数据失败时,可以根据错误码进行错误处理,比如重新发送数据或者进行其他操作。 需要注意的是,LORA模块的使用还需要根据具体的开发板或者控制器进行适配和调试。通常情况下,还需要了解LORA模块的具体功能和操作说明,以便更好地使用和调试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值