[经验分享] 【得捷Follow me第3期】XIAO主板读取24G微波雷达

eew_Ya3s2d   2024-1-29 16:38 楼主

大家好,我是郑工,Follow me第三期买了一个24G雷达,这次跟大家分享24G雷达的使用方式,不过只有用Arduino的方式,Mpy的还没研究出来,因为ESP32C3只有一个串口0,这个跟系统打印端口是共用的,mpy还没找到方式屏蔽掉打印消息。

 

下面给大家说明一下如何用Arduino连接24G雷达并分析出消息。首先我们介绍一下微波模块。

 

这次的微波模块是seeed推出的MR24HPC1

image.png   image.png  

比较麻烦的是这个模块用的是2.0的排针,XIAO扩展板上的是一个2.54的排针,需要买一条转接线才可以使用。

 

这个模块使用起来是比较傻瓜的,使用串口设置参数并且读取状态。

 

模块有个上位机程序,可以先看看模块的使用,只需要用串口工具连接模块,打开软件,开启对应的串口。软件下载地址为:

https://files.seeedstudio.com/wiki/Radar_MR24HPCB1/Human-Radar-Open-Protocol_2.0.exe

软件使用情况如下,可以看到数据还是很多的。

软件调试.png

 

而我们的XIAO ESP32C3主板,使用的是串口0,这样需要使用HardwareSerial库才可以一边debug,一边把uart0当串口使用,初始化如下:

#include <HardwareSerial.h>

HardwareSerial Ser0(0);

而对于模块的使用,官方有现成的库可以使用,下载地址为:

github.com

下载后,在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);
}

程序运行之后,可以看到读取到正确的参数

image.png

还可以读取到一些位置之类的参数

  image.png  

具体通讯协议的文件可以在下面文件上查到。

https://files.seeedstudio.com/wiki/mmWave-radar/MR24HPC1_User_Manual-V1.5.pdf

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复