**
HLK-LD1125H-24G人体测距微波雷达
**
概述
转载官方概述:
HLK-LD1125H-24G 是一款高灵敏度 24GHz 毫米波人体存在检测雷达模块。区别于传统雷达通过检测人体移动的大幅度动作或者微小幅度的肢体动作来判断人体存在,本模块主要特点是通过检测积累人体呼吸等微小幅度的运动,来判断人体的存在。因此对人体存在的检测相比传统移动检测雷达来说,准确率更高。不易漏报。
提示:以下是本篇文章正文内容
一、微波雷达是什么?
微波是波长很短的无线电波,微波的方向性很好,速度等于光速。微波遇到车辆立即被反射回来,再被雷达测速计接收。这样一来一回,不过几十万分之一秒的时间,数码管上就会显示出所测车辆的车速。雷达或微波乃是类似广播传送器所发出的电波,只不过频率较高出许多。当人物或物体在微波的 感应范围内移动时,便会启动感应器。
实物展示
二、使用步骤
1.外观与引脚
引用官方手册图片
2.使用说明
- 雷达输出的信息
首先我们要知道,他通过串口会传给我们的信息是什么样的,那么我们看下图。
一开始建议新手使用TTL转串口进行调试检测模块是否可以正常使用,也能知道所接受的信息格式。
- 雷达的信息输出模式
雷达的输出有三种模式
- 当雷达检测到较大幅度运动时,则输出 mov,dis=***。
- 当雷达检测到人体静止状态或者微小幅度动作时,则输出 occ,dis=***。
- 当雷达检测不到目标时,则停止输出。
dis 代表目标距离,单位米。
雷达配置指令
我们可以配置雷达的一些属性,例如最大检测距离、各个分段的灵敏度。此内容不是本文章的重点,需要了解的可以参考官网的应用手册。
该链接为官方提供的应用手册,免去你们查找资料的时间。添加链接描述
代码展示
注意:配置串口时与LD1125雷达的通讯协议。接受与发送设置选:ASCII
通常我是只需要这个模块所测出人体距离的功能,那么我们就需要提取出我们所需要的距离数字,来实现我们的功能,代码如下。
- LD1125.C
这里我使用的是串口4,可以根据自己进行修改使用其他串口。
#include "LD1125.h"
#include "sys.h"
u8 UART4_RX_BUF[UART4_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.
u16 UART4_RX_STA=0; //接收状态标记
u16 len;
void Bluetooth_Init(void)//串口初始化
{GPIO_InitTypeDef GPIO_InitStruct;USART_InitTypeDef USART_InitStruct;NVIC_InitTypeDef NVIC_InitStruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO,ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4,ENABLE);GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStruct); //TXDGPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_InitStruct.GPIO_Pin=GPIO_Pin_11;GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOC,&GPIO_InitStruct); //RXDUSART_InitStruct.USART_BaudRate=115200;USART_InitStruct.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;USART_InitStruct.USART_Parity=USART_Parity_No;USART_InitStruct.USART_StopBits=USART_StopBits_1;USART_InitStruct.USART_WordLength=USART_WordLength_8b;USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制USART_Init(UART4,&USART_InitStruct);USART_ITConfig(UART4,USART_IT_RXNE,ENABLE);USART_Cmd(UART4,ENABLE);NVIC_InitStruct.NVIC_IRQChannel=UART4_IRQn;NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;NVIC_Init(&NVIC_InitStruct);
}
void UART4_IRQHandler(void) //串口4中断服务程序
{u8 Dat;if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾){Dat =USART_ReceiveData(UART4); //读取接收到的数据if((UART4_RX_STA&0x8000)==0)//接收未完成{if(UART4_RX_STA&0x4000)//接收到了0x0d{if(Dat!=0x0a)UART4_RX_STA=0;//接收错误,重新开始else UART4_RX_STA|=0x8000; //接收完成了 }else //还没收到0X0D{ if(Dat==0x0d)UART4_RX_STA|=0x4000;else{UART4_RX_BUF[UART4_RX_STA&0X3FFF]=Dat ;UART4_RX_STA++;if(UART4_RX_STA>(UART4_REC_LEN-1))UART4_RX_STA=0;//接收数据错误,重新开始接收 } }} }
} double convert (const char* r,int len)//提取数字相关函数
{int len1;int i;float temp;float xiaoshu;char flag;for(len1=0,temp=0,xiaoshu=0,flag=0,i=10;len1<len;len1++){if(r[len1]=='.'){flag=1;continue;}if(flag==0){temp = temp*10+(r[len1]-'0');}else{xiaoshu+=(r[len1]-'0')/(float)i;i*=10;}}return(temp+xiaoshu);
}double GetMidText( char* text,int len)//提取数字相关函数
{int i;char flag=0;for(i=0;i<len;i++){if((text[i]>=0x30)&&(text[i]<=0x39)){return convert(&text[i],len-i);}}return 0;
}
- LD1125.H
#ifndef __LD1125_h
#define __LD1125_h
#include "stdio.h"
#include "sys.h"
#define UART4_REC_LEN 200 //定义最大接收字节数 200
extern u8 UART4_RX_BUF[UART4_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节.末字节为换行符
extern u16 UART4_RX_STA; //接收状态标记
void Bluetooth_Init(void);
extern u16 len;
double convert (const char* r,int len);
double GetMidText( char* text,int len);
#endif
- main主函数
提取出我们所需要的距离后,通过串口一printf函数打印到我们的电脑进行数据的查看,是否得到我们所想的效果。
#include "stm32f10x.h"
#include "LD1125.h"
#include "SG90.h"
#include "usart.h"
#include "delay.h"
int main(void)
{ Bluetooth_Init();delay_init();MG_Init();NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(115200); //串口初始化为115200while(1){if(UART4_RX_STA&0x8000){ len=UART4_RX_STA&0x3fff;//得到此次接收到的数据长度printf("\n%f\r\n",GetMidText((char*)UART4_RX_BUF,len));UART4_RX_STA=0;}}}
总结
LD1125雷达模块总体来说,功能还是不错的,功能性强。另外这是我个人写的第一篇博客,一步一步学习一步一步进步,另外一些概念性问题时转载百度和官方描述,以及一些模块的参数也是使用的官方图片。