【Beetle RP2350】人体运动感应警报系统
一、硬件介绍
1、产品特点
Beetle RP2350【RP2350A_QFN60】是一款基于RP2350微控制器的高性能迷你开发板,双核双架构设计(支持 Arm Cortex-M33或Hazard3 RISC-V内核)为开发者提供灵活的性能配置。
双核双架构,性能自由切换
- 采用Raspberry Pi RP2350高性能微控制器,支持Arm Cortex-M33或Hazard3 RISC-V内核选择。
- 主频高达150MHz,配备520KB RAM和2MB Flash,可高效处理大量数据,满足高性能计算需求。
高度集成,硬币大小
- 尺寸仅为25mm x 20.5mm,相当于一枚硬币大小,适合空间受限的应用场景。
- 提供 11个IO接口、BAT接口和3.3V电源接口,满足多样化连接需求。
锂电池管理与监测
集成 锂电池充电管理 和 电池电压监测 功能,支持实时电量监控,确保设备在低电量时及时采取措施,确保持续运行。
易于编程与集成
- 支持 C/C++ 和 MicroPython 编程
2、功能引脚示意图 / 原理图
板载LED灯
IO25引脚控制
充电指示灯
指示充电状态的绿色LED灯
通过三种方式指示充电状态:
1、充满电或未接入电源时熄灭;
2、充电时常亮;
3、USB供电,未连接锂电池时高频闪烁;
用户按键
使用QSPI_SS引脚控制该按钮
引脚号 | 数字口 | 模拟口 | UART | I2C | SPI | 其它 |
---|---|---|---|---|---|---|
0 | D0 | TX1 | ||||
1 | D1 | RX1 | ||||
4 | D4 | SDA | ||||
5 | D5 | SCL | ||||
8 | D8 | TX2 | ||||
9 | D9 | RX2 | ||||
16 | D16 | SPI0/MISO | ||||
18 | D18 | SPI0/SCK | ||||
19 | D19 | SPI0/MOSI | ||||
26 | D26 | A0 | ||||
27 | D27 | A1 | ||||
BAT | 锂电池输入接口,IO29为电池电压检测引脚 | |||||
GND | 接地引脚 | |||||
VCC | 该引脚接在USB电源引脚,作为输出时电压为USB电压,通常为5V | |||||
3V3 | 3.3V稳压电源输出 |
主要原理图:
3、外部硬件
1、雷达模块【CEM5826-M11】
CEM5826-M11是一款高灵敏度 24GHz 毫米波人体微动存在检测雷达模块。本模块主要特点是在传统人体感应雷达的功能基础上,同时具备检测积累人体微动幅度的运动,来判断人体的存在的功能。因此相比传统多普勒雷达来说,具备一定范围内的存在检测,准确率更高。不易漏报。
数据格式:
v=,str= 。(v 代表目标速度大小, str 代表信号强度)
波特率 115200,8位数据位,1位停止位,校验位和流控为 None;
(v=1.0 km/h, str=1121) [ASCII]
(76 3D 31 2E 30 20 6B 6D 2F 68 2C 20 73 74 72 3D 31 31 32 31 0D 0A 0D) [Hex]
特性:
参数 | 典型值 |
---|---|
频率 | 24G-24.25GHz |
调制方式 | CW |
范围 | 挂高 3m,微动人体检测半径 3m, 移动检测半径 5-6m |
供电 | 3.3-5V |
电流 | 70mA |
输出串口电平 | 3V |
检测周期 | 实时 |
数据格式 | 串口 ASCII 输出/或高低电平 |
2、喇叭模块【GSPK2307P-8R1W】
项目 | 规格 | 条件 |
---|---|---|
额定阻抗 | 8 Ohm±15% | 1kHz 1.0 V |
额定输入功率 | 0.5W | 2.0 V |
最大输入功率 | 1.0W | 2.0V |
最低共振频率 | 1700±20% Hz | 1.0 V Input |
灵敏度 | 88±3dB | 0.1m 0.1W |
有效频率范围 | F0~20KHz | - |
谐波失真 | ≤5% at 1kHz | - |
二、硬件连接
模块与开发板引脚之间的连接方式如下:
RP2350开发板 | VCC | GND | D19 | D8(TX2) | D9(RX2) |
---|---|---|---|---|---|
雷达模块 | 5V | GND | - | RX | TX |
喇叭模块 | - | GND | VCC | - | - |
实物效果搭建如下:
三、项目功能实现
【人体运动感应警报系统】
实现效果:
通过雷达模块,识别人体是否运动以及移动时的速度信息;
根据移动的速度,在不同的速度检测范围内,触发不同的警报效果;
并且在串口上输出相关的信息;
开发板通过USART功能获取雷达模块数据;通过PWM功能控制喇叭模块;
运行流程图如下:
四、功能实现主要步骤
主要相关代码
1、雷达控制部分
float data = 0;void Radar_Get(){if (Serial2.available() >0) {String receivedData = Serial2.readStringUntil(' '); if(receivedData.startsWith("v") && !receivedData.startsWith("-",2)){String Data = receivedData.substring(2);// km/h -> cm/sdata = Data.toFloat() * 100 / 3.6;if(data == 0){Serial.println("处于静止状态");}else{Serial.print("当前速度: ");Serial.print(data); Serial.println(" cm/s");}}}
}
2、喇叭控制部分
int Sound_Pin = D19;void Sound_Get(){if(data >=30 && data <=80){tone(Sound_Pin, 880, 1000); tone(Sound_Pin, 440, 1000); }else if(data >=100){tone(Sound_Pin, 3000, 1000); tone(Sound_Pin, 4000, 1000); }
}
完整代码
int Sound_Pin = D19;
float data = 0;void Radar_Get(){if (Serial2.available() >0) {String receivedData = Serial2.readStringUntil(' '); if(receivedData.startsWith("v") && !receivedData.startsWith("-",2)){String Data = receivedData.substring(2);// km/h -> cm/sdata = Data.toFloat() * 100 / 3.6;if(data == 0){Serial.println("处于静止状态");}else{Serial.print("当前速度: ");Serial.print(data); Serial.println(" cm/s");}}}
}void Sound_Get(){if(data >=30 && data <=80){tone(Sound_Pin, 880, 1000); tone(Sound_Pin, 440, 1000); }else if(data >=100){tone(Sound_Pin, 3000, 1000); tone(Sound_Pin, 4000, 1000); }
}void setup() {pinMode(Sound_Pin,OUTPUT);Serial.begin(9600);Serial2.begin(115200);while (!Serial);
}void loop() {Radar_Get();Sound_Get();delay(100);
}
五、实现现象
雷达模块识别人体否处于运动状态;若为运动状态,在不同速度范围内触发不同的警报声音,且串口上输出相关速度信息;