1. 项目背景与需求分析
作为一名嵌入式系统开发者,我最近完成了一个基于STM32的智能婴儿床项目。这个项目的初衷源于我身边新手父母的真实困扰——他们常常需要半夜起床查看婴儿状态,长期睡眠不足。传统婴儿床缺乏环境监测和智能响应功能,父母只能依靠频繁的人工检查,既辛苦又低效。
现代育儿对婴儿床提出了更高要求:
- 实时监测婴儿状态(啼哭、尿床、撞击)
- 自动调节睡眠环境(温湿度)
- 提供安抚功能(音乐、摇床)
- 支持远程监控和报警
这些需求催生了我们的智能婴儿床系统设计。与市面上动辄上万的进口产品相比,我们的方案成本不到500元,但功能毫不逊色。
2. 系统架构设计
2.1 硬件架构
系统采用三层架构设计:
-
感知层:
- DHT11温湿度传感器
- 声音传感器(啼哭检测)
- 震动传感器(撞击检测)
- 雨滴传感器(尿床检测)
-
控制层:
- STM32F103C8T6主控
- 继电器驱动模块
- ULN2003步进电机驱动
-
执行层:
- 5V直流风扇
- PTC加热片
- 28BYJ-48步进电机(摇床)
- JR6001语音模块
2.2 软件架构
软件采用模块化设计,主要包含:
- 传感器数据采集模块
- 状态机控制模块
- 人机交互模块
- 蓝牙通信模块
各模块通过全局变量和消息队列进行数据交换,降低耦合度。
3. 关键硬件设计详解
3.1 主控选型
选择STM32F103C8T6的考虑:
- 72MHz主频满足实时性要求
- 丰富的外设接口(5个USART、2个I2C、3个SPI)
- 内置Flash便于参数存储
- 成本仅10元左右
实际使用中,该芯片的GPIO驱动能力不足,需要外加三极管或MOS管驱动大功率设备。
3.2 传感器电路设计
3.2.1 DHT11温湿度传感器
电路特点:
- 单总线接口节省IO资源
- 需加10K上拉电阻
- 通信时序要求严格
实测发现,连续读取间隔应大于1秒,否则容易读取失败。
3.2.2 声音检测电路
采用LM393比较器模块:
- 灵敏度通过电位器可调
- 输出数字信号便于处理
- 加入RC滤波(R=10K,C=100nF)抗干扰
调试时发现,空调等环境噪音可能误触发,通过软件增加500ms延时确认解决。
3.3 执行机构驱动
3.3.1 继电器驱动
使用S8050三极管驱动5V继电器:
- 基极串联1K电阻限流
- 继电器线圈并联1N4148续流二极管
- 触点容量10A/250VAC,足够驱动加热片
3.3.2 步进电机控制
28BYJ-48电机参数:
- 减速比1:64
- 步距角5.625°/64
- 工作电压5V
驱动电路使用ULN2003达林顿阵列,注意:
- 每相电流约100mA
- 需按A-AB-B-BC-C-CD-D-DA顺序通电
- 转速不宜超过15rpm
4. 软件实现关键点
4.1 主程序流程
c复制void main() {
hardware_init();
while(1) {
read_sensors();
update_display();
check_buttons();
auto_ctrl_process();
bluetooth_process();
delay_ms(100);
}
}
4.2 传感器数据处理
采用滑动平均滤波算法:
c复制#define FILTER_LEN 5
int filter_buf[FILTER_LEN];
int moving_avg(int new_val) {
static int index = 0;
filter_buf[index] = new_val;
index = (index + 1) % FILTER_LEN;
int sum = 0;
for(int i=0; i<FILTER_LEN; i++) {
sum += filter_buf[i];
}
return sum/FILTER_LEN;
}
4.3 状态机设计
系统有5个主要状态:
- 待机状态
- 温度调节状态
- 湿度调节状态
- 啼哭处理状态
- 报警状态
状态转换条件:
- 温度超限 → 温度调节状态
- 湿度超限 → 湿度调节状态
- 检测到啼哭 → 啼哭处理状态
- 尿床/撞击 → 报警状态
5. 蓝牙通信协议
5.1 数据帧格式
| 字节 | 内容 | 说明 |
|---|---|---|
| 0 | 0xAA | 帧头 |
| 1 | 长度 | 数据长度 |
| 2 | 命令字 | 见下表 |
| 3~n | 数据 | 根据命令字变化 |
| n+1 | 校验和 | 前面所有字节的和 |
5.2 主要命令字
| 值 | 含义 | 方向 |
|---|---|---|
| 0x01 | 上传环境数据 | 设备→APP |
| 0x02 | 控制命令 | APP→设备 |
| 0x03 | 报警信息 | 设备→APP |
| 0x04 | 阈值设置 | APP→设备 |
6. 实际测试结果
经过72小时连续测试:
-
温湿度控制:
- 温度控制精度:±0.5℃
- 湿度控制精度:±3%RH
- 响应时间:<30秒
-
啼哭检测:
- 检测准确率:92%
- 误报率:<5%
- 响应延迟:<1秒
-
蓝牙通信:
- 有效距离:8米(无遮挡)
- 数据传输成功率:99.7%
- 控制指令延迟:<500ms
7. 常见问题与解决方案
7.1 传感器误触发
现象:夜间频繁误报啼哭
解决:
- 调整声音阈值(从600→800)
- 增加二次确认机制(连续3次检测到才触发)
7.2 蓝牙连接不稳定
现象:偶尔断连
解决:
- 在蓝牙模块电源加100uF电容
- 修改天线走线,避免靠近电机
- 增加心跳包机制(每10秒一次)
7.3 加热片过热
现象:持续加热导致局部温度过高
解决:
- 增加温度传感器实时监测
- 设置最大连续工作时间(30分钟)
- 加入PWM控制(占空比可调)
8. 项目优化方向
- 增加摄像头模块,实现视觉监测
- 改用WiFi通信,扩大控制范围
- 添加机器学习算法,识别不同哭声含义
- 设计可拆卸结构,便于清洁消毒
这个项目从构思到完成历时3个月,期间经历了多次方案调整和优化。最让我自豪的是,首批试用的5个家庭反馈都非常积极,特别是夜间报警功能帮助一对父母及时发现孩子发烧。这也让我深刻体会到,技术创新的价值在于解决真实世界的痛点。