大家好,我是郑工,Follow me第三期买了一个24G雷达,这次跟大家分享24G雷达的使用方式,不过只有用Arduino的方式,Mpy的还没研究出来,因为ESP32C3只有一个串口0,这个跟系统打印端口是共用的,mpy还没找到方式屏蔽掉打印消息。
下面给大家说明一下如何用Arduino连接24G雷达并分析出消息。首先我们介绍一下微波模块。
这次的微波模块是seeed推出的MR24HPC1
比较麻烦的是这个模块用的是2.0的排针,XIAO扩展板上的是一个2.54的排针,需要买一条转接线才可以使用。
这个模块使用起来是比较傻瓜的,使用串口设置参数并且读取状态。
模块有个上位机程序,可以先看看模块的使用,只需要用串口工具连接模块,打开软件,开启对应的串口。软件下载地址为:
https://files.seeedstudio.com/wiki/Radar_MR24HPCB1/Human-Radar-Open-Protocol_2.0.exe
软件使用情况如下,可以看到数据还是很多的。
而我们的XIAO ESP32C3主板,使用的是串口0,这样需要使用HardwareSerial库才可以一边debug,一边把uart0当串口使用,初始化如下:
#include <HardwareSerial.h>
HardwareSerial Ser0(0);
而对于模块的使用,官方有现成的库可以使用,下载地址为:
下载后,在Arduino,项目,导入库,添加.ZIP库导入对应文件,就可以直接使用了
我写了一个简单的程序读取模块返回的内容
#include "Arduino.h"
#include <humanstaticLite.h>
#include <HardwareSerial.h>
HardwareSerial Ser0(0);
// can also try hardware serial with
HumanStaticLite radar = HumanStaticLite(&Ser0);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Ser0.begin(115200, SERIAL_8N1, -1, -1);
while(!Serial); //When the serial port is opened, the program starts to execute.
Serial.println("Ready");
}
void loop() {
// put your main code here, to run repeatedly:
radar.HumanStatic_func(true); //Turn on printing of human movement sign parameters
if(radar.radarStatus != 0x00){
switch(radar.radarStatus){
Serial.println(radar.radarStatus);
case SOMEONE:
Serial.println("Someone is here.");
Serial.println("---------------------------------");
break;
case NOONE:
Serial.println("Nobody here.");
Serial.println("---------------------------------");
break;
case NOTHING:
Serial.println("No human activity messages.");
Serial.println("---------------------------------");
break;
case SOMEONE_STOP:
Serial.println("Someone stop");
Serial.println("---------------------------------");
break;
case SOMEONE_MOVE:
Serial.println("Someone moving");
Serial.println("---------------------------------");
break;
case HUMANPARA:
Serial.print("The parameters of human body signs are: ");
Serial.println(radar.bodysign_val, DEC);
Serial.println("---------------------------------");
break;
case SOMEONE_CLOSE:
Serial.println("Someone is closing");
Serial.println("---------------------------------");
break;
case SOMEONE_AWAY:
Serial.println("Someone is staying away");
Serial.println("---------------------------------");
break;
case DETAILMESSAGE:
Serial.print("Spatial static values: ");
Serial.println(radar.static_val);
Serial.print("Distance to stationary object: ");
Serial.print(radar.dis_static);
Serial.println(" m");
Serial.print("Spatial dynamic values: ");
Serial.println(radar.dynamic_val);
Serial.print("Distance from the movement object: ");
Serial.print(radar.dis_move);
Serial.println(" m");
Serial.print("Speed of moving object: ");
Serial.print(radar.speed);
Serial.println(" m/s");
Serial.println("---------------------------------");
break;
}
}
delay(200);
}
程序运行之后,可以看到读取到正确的参数
还可以读取到一些位置之类的参数
具体通讯协议的文件可以在下面文件上查到。
https://files.seeedstudio.com/wiki/mmWave-radar/MR24HPC1_User_Manual-V1.5.pdf