HLK-LD1125H-24G人体测距微波雷达

news/2024/10/21 4:14:45/

**

HLK-LD1125H-24G人体测距微波雷达

**


概述

转载官方概述:

HLK-LD1125H-24G 是一款高灵敏度 24GHz 毫米波人体存在检测雷达模块。区别于传统雷达通过检测人体移动的大幅度动作或者微小幅度的肢体动作来判断人体存在,本模块主要特点是通过检测积累人体呼吸等微小幅度的运动,来判断人体的存在。因此对人体存在的检测相比传统移动检测雷达来说,准确率更高。不易漏报。


提示:以下是本篇文章正文内容

一、微波雷达是什么?

微波是波长很短的无线电波,微波的方向性很好,速度等于光速。微波遇到车辆立即被反射回来,再被雷达测速计接收。这样一来一回,不过几十万分之一秒的时间,数码管上就会显示出所测车辆的车速。雷达或微波乃是类似广播传送器所发出的电波,只不过频率较高出许多。当人物或物体在微波的 感应范围内移动时,便会启动感应器。

实物展示

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

二、使用步骤

1.外观与引脚

在这里插入图片描述

引用官方手册图片

2.使用说明

  • 雷达输出的信息

首先我们要知道,他通过串口会传给我们的信息是什么样的,那么我们看下图。
在这里插入图片描述

一开始建议新手使用TTL转串口进行调试检测模块是否可以正常使用,也能知道所接受的信息格式。

  • 雷达的信息输出模式

雷达的输出有三种模式

  1. 当雷达检测到较大幅度运动时,则输出 mov,dis=***。
  2. 当雷达检测到人体静止状态或者微小幅度动作时,则输出 occ,dis=***。
  3. 当雷达检测不到目标时,则停止输出。
    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雷达模块总体来说,功能还是不错的,功能性强。另外这是我个人写的第一篇博客,一步一步学习一步一步进步,另外一些概念性问题时转载百度和官方描述,以及一些模块的参数也是使用的官方图片。


http://www.ppmy.cn/news/373621.html

相关文章

poj 1125

题目简答&#xff0c;考floyd算法。代码如下&#xff1a; #include<iostream> #include<iomanip> #include<cstdlib> #include<string.h> #define INTMAX 10000 using namespace std;int visit[101]; int path[101][101]; int cons[101][101]; int n;v…

京瓷1125打印机清零_怎么设置京瓷1125MFP打印机ip地址

在 确认打印机 电脑都是没问题的情况下 1. 首先,将光盘放入光驱中。如果光盘没有自动运行,请直接跳到 第2步 ;如果光盘自动运行,将会出现如下窗口,如图 4 开始安装所示。点击“取消”按钮,退出 " 系列安装程序” 的安装向导。 2. 插上打印机的电源线,打开打印机电源并装好…

1125:矩阵乘法

【题目描述】 计算两个矩阵的乘法。nm阶的矩阵A乘以mk阶的矩阵B得到的矩阵C 是nk阶的&#xff0c;且C[i][j] A[i][0]B[0][j] A[i][1]B[1][j] …… A[i][m-1]B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)。 【输入】 第一行为n, m, k&#xff0c;表示A矩阵是n行m列&#…

[1125]AES加密报错:Illegal key size or default parameters

当遇到这个问题&#xff0c;首先查看你的jdk版本 C:\Users\enmonster>java -version java version "1.8.0_151" Java(TM) SE Runtime Environment (build 1.8.0_151-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)jdk1.8.0_151这个版本…

android加密电话,有信加密电话软件

有信加密电话免费版基于通讯录的免费电话软件&#xff0c;音质好&#xff0c;无漫游&#xff0c;零话费&#xff1b;支持有信用户间WiFi/3G下免费语音通话&#xff0c;每天签到领好礼即可网络电话免费拨打国内任意座机和手机,免费打电话还能隐藏手机号&#xff0c;不插手机卡都…

voipdiscount免费拨打全球电话(无需手机注册)

我测试过了的&#xff0c;能给我手机打通&#xff0c;我也给无题打了的感觉还不错。现推荐给大家&#xff01; voipdiscount免费拨打全球电话&#xff08;无需手机注册&#xff09;通话效果极好到www.voipdiscount.com下载一个软件voipdiscount,申请一个用户&#xff08;不需手…