CEM5826-M11 是一款高灵敏度24GHz毫米波人体微动存在检测雷达模块。区别于传统雷达通过检测人体移动的大幅度动作或肢体动作来判断人体存在,本模块主要特点是在传统人体感应雷达的功能基础上,同时具备检测积累人体微动幅度的运动,来判断人体的存在的功能。因此相比传统多普勒雷达来说,具备一定范围内的存在检测,准确率更高。不易漏报。
其可通过与其他MCU连接进行串口通信,这里使用了STM32F1作为主控制系统,主要代码如下:
UART_Data Data;
static uint8_t recv_pre = 0;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart->Instance == USART2)
{
uint8_t recv;
static uint8_t state = 0; // 状态机变量
recv = ch;
switch(state) {
case 0: // 等待 'v'
if(recv == 'v')
{
Data.rx_count = 0; // 重置计数器
Data.rx_buf[Data.rx_count++] = recv;
state = 1;
}
break;
case 1: // 等待 '='
if(recv == '=')
{
Data.rx_buf[Data.rx_count++] = recv;
state = 2;
}
else
{
state = 0; // 不是 '=',回到初始状态
}
break;
case 2: // 接收数据
if(recv == '\r')
{
state = 3;
}
else if(Data.rx_count < sizeof(Data.rx_buf) - 1)
{
Data.rx_buf[Data.rx_count++] = recv;
}
else
{
// 缓冲区溢出,重置
state = 0;
}
break;
case 3: // 等待 '\n'
if(recv == '\n')
{
Data.rx_buf[Data.rx_count++] = '\r'; // 添加回车符
Data.rx_buf[Data.rx_count++] = '\n'; // 添加换行符
Data.rx_buf[Data.rx_count++] = '\0'; // 添加字符串结束符
Data.rx_flag = 1; // 标记数据就绪
state = 0; // 回到初始状态
}
else
{
state = 2; // 不是 '\n',继续接收数据
}
break;
}
recv_pre = recv;
HAL_UART_Receive_IT(&huart2,&ch,1);
}
}

