当前位置:   article > 正文

STM32驱动安信可Rd-03E点亮LED灯_rd-3雷达模块怎么连接stm32开发板

rd-3雷达模块怎么连接stm32开发板

前言

安信可新款雷达模组Rd-03E已经上市,该雷达采用高性能一发一收微带天线,包含极简化 24 GHz 雷达传感器硬件 Xen102 和智能算法固件 RM01,而智能算法固件 RM01 采用 FMCW 波形和 S3系列芯片专有的先进信号处理技术,可以实现精准的人体测距和运动/微动人体感应。本应用示例使用STM32解析Rd-03E的串口数据,检测人体距离雷达的距离,根据距离不同来点亮不同的灯珠,0~2米内点亮 LED1,2~4米内点亮 LED2,4~6米内点亮 LED3。


一、Rd-03E引脚说明

硬件实物图
J2引脚说明:

J#PIN#名称功能工作范围
J2Pin1VCC电源输入4.5V~5.5V
J2Pin2GND接地-
J2Pin3OT1UART_TX0~3.3V
J2PIN4RXUART_RX0~3.3V
J2PIN5OT2UART_TX(备用)0~3.3V

J3引脚说明:

J#PIN#名称功能说明
J3PIN1GND接地-
J3PIN2DIO数据口0~3.3V
J3PIN3CLK时钟信号0~3.3V
J3PIN43V3电源输入3.3V

二、软件设计框架

在这里插入图片描述


三、STM32F103C8T6使用CubeMX搭配HAL库配置

打开CubeMX,选择STM32F103C8T6。
选择两个串口,分别是串口1和串口2,PA9为USART1_TX,PA10为USART1_RX,PA2为USART2_TX,PA3为USART_RX。
选择异步通讯,勾选中断,注意:串口1的波特率为256000,串口2波特率为115200。
在这里插入图片描述
在这里插入图片描述
设置GPIO口
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


四、STM32与Rd-03E和LED灯的接线

Rd-03ESTM32LED
5V— —5V— —
GND— —GND— —LED1\2\3 负极
OT1— —PA10
RX— —PA9
PA11— —LED1正极
PA12— —LED2正极
PA15— —LED2正极

五、串口数据

Rd-03E模组通过串口(TTL电平)与外界通信,雷达串口默认波特率为256000,1停止位,无奇偶校验位。雷达输出检测到的运动/微动/无人状态以及距离信息。

Rd-03E 数据通信使用小端格式,以下表格中所有数据均为十六进制,数据帧格式如下:

帧头目标状态距离信息帧尾部
AA AA1byte2byte55 55
目标状态值说明
0x00无目标
0x01运动目标
0x02微动目标

数据示例:AA AA 02 3C 00 55 55

红色部分表示目标状态,蓝色表示距离。


六、STM32数据处理


#define LED_ON_2 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_SET);
#define LED_OFF_2 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_11, GPIO_PIN_RESET);
#define LED_ON_4 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_SET);
#define LED_OFF_4 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_12, GPIO_PIN_RESET);
#define LED_ON_6 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
#define LED_OFF_6 HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);

uint8_t RX_BUF[64]={0};  //缓存数组
uint8_t RX_count=0;      //计数位
uint8_t RX_temp;         //缓存字符
uint16_t range;          //感应距离

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)//回调函数,检测到雷达发送一帧数据时进行处理
{
	int i=0;
  if(huart == &huart1){
    RX_BUF[RX_count++] = RX_temp;//将缓存字符存入缓存数组中
	   if(RX_BUF[RX_count-1] == 0X55 && RX_BUF[RX_count-2] == 0X55){
		if((RX_BUF[0] == 0XAA)&&(RX_BUF[1] == 0XAA)&&(RX_BUF[5]==0X55)&&(RX_BUF[6]==0X55)){ //判断帧头帧尾
			if(RX_BUF[2] == 0X01||RX_BUF[2] == 0X02)   //有无人检测
			{
				range=RX_BUF[4];
				range=(range<<8)|RX_BUF[3];//将小端格式下的距离数据如0X90 0X01转换成0X190
				char str[32]={0};
				sprintf(str,"[%s:%d] range: %d\r\n",__func__,__LINE__,range);
                 HAL_UART_Transmit(&huart2,(uint8_t *)str,strlen(str),0xFFFF);  //输出感应距离,单位:cm
		      
				 if((range>0X0000)&&(range<=0X00C8))    //0-2米
				 {
					  LED_ON_2;
					  LED_OFF_4;
					  LED_OFF_6;
				 }
				else if((range>0X00C8)&&(range<=0X0190))    //2-4米
				 {
					  LED_OFF_2;
					  LED_ON_4;
					  LED_OFF_6;
				 }
				 else if((range>0X0190)&&(range<=0X0258))   //4-6米 
				 {
					  LED_OFF_2;
					  LED_OFF_4;
					  LED_ON_6;
				 }
		
			}
			else if(RX_BUF[2] == 0X00)    //无人
			 {
				  LED_OFF_2;
          		  LED_OFF_4;
   		          LED_OFF_6;
			 }
			 
		}
		while(HAL_UART_GetState(&huart2)==HAL_UART_STATE_BUSY_TX);//判缓存数组是否发送完毕
		  memset(RX_BUF,0x00,sizeof(RX_temp));//清空缓存数组
		  RX_count = 0;//计数位置零
    }  
	     HAL_UART_Receive_IT(&huart1,&RX_temp,1);//串口1继续接收数据
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

七、效果演示


八、源码地址和固件

源码地址:https://e.coding.net/axk/stm32_rd-03/Rd-03E_LED_demo.git


联系我们

官方网址: https://www.ai-thinker.com
Docs:https://docs.ai-thinker.com
官方论坛: http://bbs.ai-thinker.com

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/755441
推荐阅读
相关标签
  

闽ICP备14008679号