调试正点原子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
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
正点原子LoRa开发是一种利用正点原子公司推出的开发板和LoRa通信技术进行物联网设备开发的方法。LoRa(Long Range)是一种低功耗广域网技术,可以在广阔范围内进行远程通信。正点原子公司为开发人员提供了便捷的开发工具和文档,使得LoRa开发变得简单易用。 正点原子LoRa开发板具有高度集成的特点,包含了各种常用传感器和模块,如温湿度传感器、光照传感器、气压传感器、WiFi模块等,使得开发者能够快速搭建物联网设备原型。开发板还提供了丰富的接口和扩展槽位,可以与其他硬件设备进行连接,实现更多的功能。 通过正点原子提供的开发工具和文档,开发者可以方便地进行LoRa通信的配置和数据传输。开发工具支持多种开发环境,如Arduino IDE、PlatformIO等,开发者可以按照自己的喜好选择合适的开发环境。同时,开发文档提供了详细的API和示例代码,帮助开发者快速上手。 正点原子LoRa开发板还支持低功耗设计,可以通过电池供电,并通过优化的传输协议减少能耗。这使得LoRa设备可以长时间工作而无需频繁更换电池,非常适用于远程监测、农业、智能家居等领域。 总之,正点原子LoRa开发提供了便捷的开发工具和集成丰富的开发板,为开发者提供了快速开发LoRa物联网设备的方法。通过正点原子LoRa开发,人们可以更好地利用LoRa通信技术,实现智能化的物联网应用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值