STM32单片机驱动ATK-Lora-01和配置学习

前言

        最近手里有两块白嫖的ATK-Lora-01模块放着也是放着,大概长这样,决定拿出来研究一下,因为网上很少有相关的内容资料可供参考,因此爬了不少资料和代码,在这里记录一下学习过程。


 

ATK-Lora-01模块的配置和调试

        这个模块到手之后,为了调试方便采用了正点原子的上位机软件。资料和软件均下载于正点原子的资料下载中心。

链接:LORA模块ATK-LORA-01 — 正点原子资料下载中心 1.0.0 文档 (openedv.com)

        首先要确保模块的功能正常,因为懒得写代码,我直接用了一块USB转TTL的转接器把这个模块接在了笔记本上。接在开发板上也是可以的,但是需要把设置的串口数据拷贝到开发板和电脑通信的串口上(注意波特率),这里不再详细说了。直接看接线

USB转TTL ATK-Lora-01
5V/3.3V均可 VCC
GND GND
TXD RX
RXD TX
无需接线 AUX
IO MD0

        这里需要注意的是这个模块有三种功能分别是配置功能,固件升级功能和通信功能,主要是依赖AUX和MD0引脚的高低电平配合来实现的。在进行固件升级的时候需要在模块上电前将AUX和MD0保持1S的高电平会进入固件升级模式,这里不多赘述。因为USB转TTL的转接头没有IO的原因,我将MD0接到了开发板上随便一个高电平的引脚(注意保持共地!即转接头的GND要连接开发板的GND)。

配置功能 AUX=0 MD0=1
固件升级功能 AUX=1 MD0=1
通信功能 AUX=0 MD0=0

        在接线完毕之后,我们只需要保持串口的设置为如图所示的样子,即模块默认的串口波特率然后点击查询配置

        如果看到接收区出现了下图所示的内容,则证明模块是正常工作的,然后我们配置基本上就完成了。


 快速了解ATK-Lora-01

  1. 模块的传输方式
  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1.搭建硬件环境 将ATK-MS53L1M模块与STM32单片机连接。ATK-MS53L1M模块的TXD引脚连接到STM32单片机的RXD引脚上,RXD引脚连接到TXD引脚上,GND与GND相连,VCC与VCC相连。 2.编写程序 代码框架如下: #include "stm32f4xx.h" #include "stdio.h" //变量定义 int main(void) { //硬件初始化 while(1) { //获取ATK-MS53L1M返回的测速数据 //处理数据并进行控制 } } 3.进行硬件初始化 对于STM32单片机,需要对串口进行初始化。可以参照以下代码进行初始化: //定义串口参数结构体 USART_InitTypeDef USART_InitStructure; //打开串口对应的GPIO时钟 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //打开串口对应的USART时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); //将GPIO引脚配置为复用功能,即USART功能 GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2);//PA3复用为USART2_TX GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2);//PA2复用为USART2_RX //配置串口GPIO引脚 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStructure); //配置USART参数 USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //初始化串口 USART_Init(USART2, &USART_InitStructure); //打开串口 USART_Cmd(USART2, ENABLE); 4.获取ATK-MS53L1M返回的数据 ATK-MS53L1M模块会返回当前激光的距离和速度数据。可以使用串口通信,向模块发送指令获取数据。获取数据的代码如下: char cmd[64]; char rxdata[1024]; int count; int len; uint16_t distance, speed; //发送指令 strcpy(cmd, "010C\r\n"); //获取当前车速和距离 while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET){} USART_SendData(USART2, (uint8_t *)cmd, strlen(cmd)); //等待返回数据 count = 0; len = 0; while(count < 50) { if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET) { rxdata[len] = USART_ReceiveData(USART2); len++; } count++; } rxdata[len] = '\0'; //解析数据 if(sscanf(rxdata, "410C%X%X", &distance, &speed) == 2) { //得到距离和速度数据 } 5.进行数据处理 获取到ATK-MS53L1M模块返回的距离和速度数据后,可以根据需要进行处理并控制输出。 例如,当速度超过一定值时,可以触发警报器;当距离过近时,可以自动刹车等。 代码示例: if(speed > 100) { //触发警报器 } if(distance < 50) { //自动刹车 } 以上代码示例仅作参考,具体实现需要根据具体应用场景进行设计和调整。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值