精华内容
下载资源
问答
  • 调试正点原子Lora模块记录 买的是排针版ATK-LORA-V2.0 下载原子哥的官方资料,里面有上位机调试软件和使用文档。用usb-ttl连接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的时间。

     

    展开全文
  • 正点原子LORA模块无法使用空闲中断? 一帧发5个数据进入5次中断? 测了一天了,用不了! 占个坑,后续分析一下。

    20210118  上午

    正点原子LORA模块无法使用空闲中断?

    一帧发5个数据进入5次中断?

    测了一天了,用不了!

    占个坑,后续分析一下。

    20210118  下午

    如下图所示,正点原子LORA模块数据传输,两个字节之间间隔将近1ms,而一个字节传输大概不到20us,因此,他无法使用空闲中断进行DMA接收数据(已得到原子官方售后确认,无法使用空闲中断)。

    突然发现有人已经踩过这个坑了,是正点原子LORA的不行。

    注意注意空闲中断并不是适合所有情况,如正点原子的LORA模块,115200波特率下接收一字节用了90us,但有900us左右间隔是空白的,这类每个字节间的间隔时间比工作时间还长的、不连续接收(一个紧挨一个),  是不适合使用空闲中断的。

    https://blog.csdn.net/zhouml_msn/article/details/99697809

     

    使用其他供应商的LORA模块,测试可以正常使用DMA空闲中断。

    展开全文
  • STM32开发 --- 正点原子LORA模块调试记录

    千次阅读 多人点赞 2019-10-31 17:51:21
    背景:显示板第9板, 改进、打板、焊接、修改程序, 发现LORA模块不能接收, 重新查看LORA资料, 发觉之前刨得很熟, 调试了半个月的老朋友变...无线数传 (正点原子LORA模块) 使用了原子哥家的LORA模块.并打了个小板...

    一、故事前提背景

    之前项目中使用原子哥的LORA模块,曾花了近半个月才调通使用(别笑,人笨就得工夫多)。

    近日在项目的显示板第9板中修改电路板后,  出现问题:LORA模块不能接收. 

    重查LORA资料, 发觉之前刨得很熟, 调试了半个月的老朋友,变陌生人了!  需重新学习熟悉.  归结原因, 是之前没整理好资料, 以使后来方便迅速翻查熟悉。

    目录

    一、正点原子 LORA模块 优缺点

    二、引脚解释

    三、工作参数 

    四、传输模式

    五、编程要点:


    一、正点原子 LORA模块 优缺点

    原子哥家的LORA模块, 有插针版、邮票孔版,使用上:电气参数、代码一样。插针版用排线直连开发板,邮票孔版嘛, 我当时画了个转接板配合调试.

    先陈述一下模块使用过程中发现优缺点,放文章后怕没耐性翻到最后。

    优点: 

    • USART通信,  收发简单,  配合DMA接收特省事, 。 
    • 把参数的配置也封装得很方便,usart发几条命令就成,调过安信可LORA模块的兄弟就明白了,那才叫苦。

    缺点: 

    • 示例代码啰嗦,技术支持马虎。 原子哥,你别查我水表,我给你们多写几篇产品后期教程!但你们的示例代码真的.....。
    • 速度慢. 速度慢. 速度慢!  使用逻辑分析仪观察,  通信时每1ms只有1字节数据,其中数据占用86us, 其余900us是空白的!!!!!! 这一点特意问过技术,回复没干货,问了也白问。 另外,发送时, 数据不满足一包(56个字节)时, 会等待80ms才开始发送. 接收时, 也会有20ms等待时间!!!!!  你算算,100字节要多长时间。
    • 实测数据太少,最起码的商家做个通信距离数据实测吖,难道我们一千个人买这模块, 那不得做一千次测试??

    二、引脚解释

    • MD0   配合AUX引脚切换工作模式, 【配置模式:MD0=1,AUX=0】、【通信模式:MD0=0,AUX=0】
    • AUX   同上
    • RXD   接开发板的 USARTx - TX引脚,注意:是TX不是RX
    • TXD   接开发板的 USARTx - RX引脚
    • GND
    • VCC 3.3~5.0 V

    三、工作参数 

    下面是我自己的几个重要参数, 请漠视右边的地址参数,因为我三个板子收发数据,重点看:模块配置软件操作说明.pdf

    波特率:      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

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

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


    五、编程要点:

    编程顺序是:  1:GPIO初始化 > 2:USART初始化 > 3:模块参数写入 > 3:进入接收/发送模式

    GPIO和USART的初始化没什么特别要注意的,就主要是参数写入和收发通信。

    参数配置写入、接收、发送都是通过usart进行的,我们只要注意当前的工作模式、代码顺序和数据格式就可以了。

    下面将以一段参数设置代码说明。如需要整个c文件的,留言邮箱,我已整理好很方便移植。没发在这上面,下载要积分。

    这段代码的得来不易。MLGB,  示例代码中功能各种啰嗦,各种绕,好几个点没说明白,问过技术、问过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);         
    }
    

    完整代码下载:

    正点原子LORA代码重写: https://download.csdn.net/download/zhouml_msn/17264736


    本篇完结,如有错漏,欢迎纠正~~

    展开全文
  • 原子哥代码中,去掉了屏显代码等, 重写后只保留了LORA的通信收发代码.
  • 正点原子Lora模块使用1

    千次阅读 2019-05-05 22:22:31
    1.两个文档很重要,《ATK-LORA-01无线串口模块用户手册》和《ATK-LORA-01模块配置软件操作说明》,基本通过这两个文档就可以掌握lora模块的大致使用,原子的配置lora模块的软件:ATK-LOAR-01配置软件,配置lora时,...

    1.两个文档很重要,《ATK-LORA-01无线串口模块用户手册》和《ATK-LORA-01模块配置软件操作说明》,基本通过这两个文档就可以掌握lora模块的大致使用,原子的配置lora模块的软件:ATK-LOAR-01配置软件,配置lora时,顶层的波特率应设置为115200,把MD0口置高,配置完成以后得先把MD0端口置低或者xu该软悬空,否则配置的参数在下次上电后会恢复默认配置;该软件不仅可以配置lora模块的各种参数和模式,还能作为串口调试助手使用,用来接收和发送数据,接收数据时,把顶层的串口参数设置成发送模块的波特率一样即可,例如设置发送和接收模块的时设置波特率为9600,则接收模块在连接到该配置软件时,模块的MD0拉低或悬空即可,然后把顶层的波特率设置为115200,,。。,如下图:

    展开全文
  • 以下介绍来自正点原子官方说明文档。 序号 名称 引脚方向 说明 1 MD0 输入 1、配置进入参数设置2、上电时与AUX 引脚配合进入固件升级模式 2 AUX 1、输出2、输入 1、用于指示模块工作状态,用户唤醒外部MCU...
  • 正点原子Lora模块使用2

    千次阅读 2019-05-05 23:25:24
    Lora发送模块设置为定向传输、唤醒模式下;接收模块设置为定向传输、省电模式下,休眠时间都设置为2S,如下图: 在发送模块的控制端MCU中,发送数据到发射模块的时间应该大于模块设置的休眠时间,这样发送什么则...
  • LORA想入非非已久, 可惜工作任务重, 一直未能找到机会. 正好原子哥出了模块, 而工作中又刚好需要数传, 哈~~~马上出手. 之前已买了排针版, 放着吃尘, 10号原子哥发布新品, 有了邮票孔版本. 图中下方这个是自己...
  • 文章目录1、模块连接2、配置模块 1、模块连接 配置模块时,需要连接VCC、GND、TXD、RXD、MD0五个引脚。其中MD0需要接高电平 例如下图方式: 2、配置模块 ...官方回复:lora参数保存:Lora重新上电,配置完MD
  • 正点原子LORA模块ATK-LORA-01资料.zip
  • 基本上和正点原子手册上一样,只是为了以后使用方便,去除了屏幕显示和定向传输部分的代码。 串口使用串口三 定时器使用TIM7,用PA4记录AUX上升沿和下降沿变化。 Lora简介 引脚配置及功能: 相关函数整理 去除了...
  • 按照我上一篇的博客和视频演示,相信大家一定都可实现了lora模块点对点的通信了。那我们来进行一个比较有高难度的设计吧! 使用多个loRa模块去完成一个组网设计: 在这之前一定要配置模块信息为定点传输 AT+TMODDE...
  • 正点原子的ATK-LORA-01调试过程

    千次阅读 2020-09-13 21:55:32
    配置好串口3的波特率,MD0引脚接低电平,处于无线通信模式。 串口3的初始化 #include "usart3.h" #include "stdio.h" #include "string.h" #include "stdarg.h" //串口发送缓存区 __align(8) u8 USART3_...
  • 利用正点原子的两个模块来实现数据通信,刚入手的时候,因为不怎么懂,不知道如何下手,在做完相关项目后发现,其实是真的简单,这个模块甚至不怎么好去做二次开发。 利用电脑自带的软件进行配置:可以参考下面的...
  • ATK-Lora-01配置经验(基于正点原子STM32探索版开发板)1.遇到的问题2.解决方法 1.遇到的问题 lora模块连接到开发板的ATK后配置,上位机软件显示“发送指令超时”的字样。 2.解决方法 (1)配置软件参数 (2)接线...
  • RT-Thread作为国内用户最多知名度最高装机量最大的开源RTOS,和正点原子一直保持良好的合作伙伴关系,自2月以来一直和正点原子团队同步开发基于RT1052的RT-Thread例程。目前提供了一整套基于正点原子号令者RT1052的...
  • 硬件设备(两个正点原子lora模组) 两块STM32F103开发板 快速上手,你必须要了解的相关知识: 模块引脚分布,拿到一个模块先弄清如何连接线路十分重要。 引脚号 功能 1.MOD ...
  • 该程序支持正点原子阿波罗H743板子,如果接上正点原子LORA模块可以直接烧写该程序进去测试 方便后来者
  • 正点原子LORA模块(资料多) 摇杆模块(电位器) 主控stm32 实现流程:摇杆数据的读取、制作数据包、串口通信数据、从设备解开数据包。 1、摇杆数据的读取 上图就是我选取的摇杆(独立按键不涉及),摇杆就...
  • 使用的是正点原子的F407探索者,移植LoRa底层驱动,通过接收串口数据原封不动转发出去,程序测试没问题。接口说明在程序里。
  • 温度传感器基于DS18B20,PH传感器基于ADC采集。Lora模块可以用正点原子的SX1276,lora还可以和4G DTU模块连接直接传给云服务器进行处理。

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

正点原子lora