你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【逢7发帖赢大礼】STM32开发之人体实时运动信息监测!

[复制链接]
A0dy 发布时间:2026-7-1 17:29

一、硬件介绍

产品特点

使用的是天空星STM32F407开发板,搭载ARM Cortex-M4F内核的STM32F407VET6,最高主频为168MHz,Flash 512KB,SRAM 192KB,板载SPI Flash、Micro SD卡插槽等;

STM32F407VET6

image-20260622181129215.png

主要原理图

image-20260706150834625.png


二、环境搭建

1、下载Arduino IDE

image-20251009205311004.png

2、搭建方法

搭建方法点此查看!!!


三、硬件设备

雷达模块(CEM5831E-M12)

CEM5831E-M12 是一款一发两收24GHz毫米波人体存在检测雷达模块。除了检测人体有无及距离外,还可以输出人体相对于雷达的角度,实现人体的位置检测,实现分区域联动控制,可同时检测三个运动目标;

image-20260706175521961.png

相关参数信息

参数 典型值
频率 24GHz ISM
调制方式 FMCW
检测距离 裸板1米平挂:运动直线距离7米,存在直线距离5米
供电 5V
电流 120mA(平均电流)
输出串口电平 3.3V
检测周期 50ms
数据格式 串口 16进制输出
距离精度 +/-0.3m
角度误差 +/-10°
检测目标数 3个

检测角度范围

image.png

实物连接效果

硬件引脚 - - - -
STM32 PA10(RX) 5V GND -
雷达模块 TX 5V GND -

image-20260706175144731.png


四、代码编写

效果:在串口上显示,雷达模块当前监测到的目标个数ID,以及对应的人体运动相关信息;

示例 ID: 1 | 距离: 65 cm | 速度: -24 cm/s | 相对角度: 9 °

(其中速度的符号(-) ,代表目标正靠近雷达)

主要相关代码

// ========== 雷达协议配置 ==========
#define HEAD            0xCF
#define TAIL            0xEF
#define BUF_SIZE        50
#define DATA_PER_TARGET 8   // 单个目标固定8字节

// 接收缓冲区
uint8_t buf[BUF_SIZE] = {0};
uint8_t bufLen = 0;

struct Target {
  uint8_t  id;
  uint16_t distance;  // 距离 cm
  int16_t  speed;     // 速度 cm/s
  int8_t   angle;     // 相对角度
};

// 硬件串口1:RX=PA10, TX=PA9
HardwareSerial Serial1(PA10, PA9);
Target target;

void setup() {
  Serial1.begin(115200);
  delay(100);
}

void loop() {
  while (Serial1.available() > 0) {
    uint8_t rxB = Serial1.read();
    if (rxB == HEAD) {
      bufLen = 0;
    }
    if (bufLen < BUF_SIZE) {
      buf[bufLen++] = rxB;
    } else {
      bufLen = 0;
      continue;
    }
    if (rxB == TAIL) {
      parseFrame();
      bufLen = 0;
    }
  }
}

void parseFrame() {
  const uint8_t MIN_FRAME_LEN = 13;
  if (bufLen < MIN_FRAME_LEN) {
    return;
  }

  if (buf[0] != HEAD) {
    return;
  }
  uint8_t targetNum = buf[3];
  uint16_t dataTotalLen = 4 + targetNum * DATA_PER_TARGET;
  if (targetNum == 0 || dataTotalLen >= bufLen) {
    return;
  }

  Serial1.print("检测到目标个数: ");
  Serial1.println(targetNum);
  Serial1.println("----------------------------------------");

  for (uint8_t i = 0; i < targetNum; i++) {
    uint16_t pos = 4 + i * DATA_PER_TARGET;
    target.id       = buf[pos];
    target.distance = (buf[pos + 1] << 8) | buf[pos + 2];
    target.speed    = (buf[pos + 3] << 8) | buf[pos + 4];
    target.angle    = buf[pos + 5];
    Serial1.printf("ID:%2d | 距离:%4d cm | 速度:%4d cm/s | 相对角度:%3d °\n",
                   target.id, target.distance, target.speed, target.angle);
  }
  Serial1.println("----------------------------------------\n");
}

五、效果演示

image-20260706181810308.png

收藏 评论0 发布时间:2026-7-1 17:29

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版