若该文为原创文章,转载请注明原文出处。
儿童的健康成长是每个家庭的核心关切,而睡眠质量直接关系到儿童的身体发育和智力发展。传统的看护方式主要依赖家长定时查看,不仅效率低下,而且难以发现睡眠中的潜在风险(如踢被子导致着凉、尿床、夜惊等)。随着物联网和传感器技术的发展,构建一个能够持续、无声、全方位监测儿童睡眠状态和环境质量的智能系统已成为可能。本项目旨在利用STM32单片机作为核心,集成多种生物与环境传感器,设计一款智能儿童睡眠监护系统。该系统能够为家长提供科学的育儿数据支持,并在异常情况发生时及时本地与远程报警,有效减轻家长负担,保障儿童睡眠安全,具有显著的社会价值和市场需求。
目前市场上已有一些婴儿监护器,但功能多集中于视频监控和音频传输。少数高端产品集成了一些传感器,但往往价格昂贵且功能分散。本项目创新性地将生理参数监测(心率)、环境监控(温湿度、空气质量)、行为感知(离床、尿床) 与云平台远程预警深度融合,提供了一个比单纯视频监控更隐私、更全面、更主动的解决方案,填补了中端市场的空白。
本研究设计并实现了一个以STM32F103C8T6为核心的儿童睡眠监护终端。系统通过MAX30102光学传感器监测儿童心率;通过DHT11监测睡眠环境的温湿度;通过GP2Y1014AU0F粉尘传感器监测PM2.5浓度;通过薄膜压力传感器判断儿童是否在床;通过雨滴/水位传感器判断是否尿床;通过OLED显示屏显示所有信息;最终通过ESP8266 WiFi模块将数据与报警信息上传至云平台(如OneNet/阿里云),实现本地与远程的双重监护。

感知层:
生理感知:MAX30102(心率/血氧)
环境感知:DHT11(温湿度)、GP2Y1014AU0F(PM2.5)
行为感知:薄膜压力传感器(在床状态)、雨滴传感器(尿床检测)
控制层:
主控制器:STM32F103C8T6
决策核心:综合所有传感器数据进行逻辑判断与报警决策
执行与交互层:
环境调节:继电器控制小风扇
本地报警:有源蜂鸣器
本地显示:OLED显示屏(SSD1306)
本地设置:按键
网络层:
通信模块:ESP8266-01S WiFi模块
云平台与应用层:
云平台:中国移动OneNet/阿里云IoT平台
移动端:家长手机APP(接收报警推送、查看历史数据)
生理监测模块:负责心率的采集与计算。
环境监测模块:负责温湿度、PM2.5的采集与显示。
行为监测模块:负责判断离床与尿床事件。
智能控制模块:根据环境温度自动或手动控制风扇。
通信模块:负责与云平台的数据交换。
报警模块:管理本地声光报警和远程消息推送。
型号:STM32F103C8T6最小系统板
理由:需要1个ADC(采集多个模拟传感器)、I2C、多个GPIO、UART等外设,该型号资源完全满足且成本低。
MAX30102心率血氧传感器:
安装:可集成于腕带或袜子中,贴近皮肤。
接口:I2C。SCL(PB6),SDA(PB7)。
DHT11温湿度传感器:
接口:单总线。数据线接GPIO(PA0)。
GP2Y1014AU0F PM2.5粉尘传感器:
原理:光学原理,测量空气中粉尘浓度。
电路:模块的V-LED引脚接STM32 GPIO(PA1)控制内部LED闪烁,模拟输出VO接STM32的ADC引脚(PA2)。需按照数据手册连接RC电路。
薄膜压力传感器:
选型:薄膜压力传感器(FSR)。铺在床单下,枕头下方。
电路:与一个固定电阻组成分压电路,输出接STM32的ADC引脚(PA3)。压力越大,电压越高。
雨滴/水位传感器:
安装:放置于床垫上、床单下的适当位置。
输出:模拟输出(AO)接STM32的ADC引脚(PA4)。遇水后,输出值显著升高。
继电器与风扇:
功能:控制一个小型USB风扇或12V直流风扇用于降温。
电路:继电器控制端接STM32的GPIO(PA5),输出端连接风扇电源。
有源蜂鸣器:接GPIO(PA6),用于离床报警。
ESP8266 WiFi模块:TXD接RX1(PA10),RXD接TX1(PA9)。
OLED显示屏:I2C接口,SCL(PB8),SDA(PB9)(可与MAX30102共用I2C,地址不同)。
按键:2个按键,一个用于设置/切换,一个用于手动开关风扇。
IDE:Keil uVision 5
配置工具:STM32CubeMX
库:HAL库
关键算法:开源MAX30102心率算法(如https://github.com/aromring/MAX30102_by_RF)
通信协议:MQTT(与云平台通信)
初始化系统时钟、GPIO、ADC(多通道扫描)、I2C、UART。
初始化外设:OLED、MAX30102。
配置ESP8266连接WiFi并接入MQTT服务器。
从EEPROM/Flash中读取用户设置的温度阈值、压力阈值等。

// 定义全局变量和阈值
int heart_rate;
float temperature, humidity;
int pm25_value;
int pressure_value;
int raindrop_value;
int temp_threshold = 28; // 温度阈值
int pressure_threshold = 200; // 压力阈值,需校准
int raindrop_threshold = 800; // 尿床阈值,需校准
int main()
if (env_tick()) { // 每5秒一次
DHT11_Read(&temperature, &humidity);
pm25_value = Read_PM25(); // 读取并计算PM2.5浓度
pressure_value = ADC_GetValue(ADC_CHANNEL_PRESSURE);
raindrop_value = ADC_GetValue(ADC_CHANNEL_RAINDROP);
}
// 2. 核心逻辑判断
// 温度控制
if (temperature > temp_threshold || fan_manual_on) {
FAN_ON();
} else {
FAN_OFF();
}
// 离床判断
if (pressure_value < pressure_threshold) {
// 压力突然变小,判断为离床
BUZZER_ON();
Send_Alert_To_App("Warning: Child left the bed!");
} else {
BUZZER_OFF();
}
// 尿床判断
static uint32_t last_wet_alert = 0;
if (raindrop_value > raindrop_threshold)
}
// 3. 处理按键
if (KEY_FAN_Pressed()) {
fan_manual_on = !fan_manual_on; // 切换手动风扇状态
}
// 4. 显示与通信
OLED_ShowData(heart_rate, temperature, humidity, pm25_value, pressure_value);
Report_To_Cloud(); // 上报数据到云平台
HAL_Delay(300); // 主循环周期
}
}
PM2.5传感器读取函数
// pm25.c
#define PM25_LED_PIN GPIO_PIN_1
#define PM25_LED_PORT GPIOA
int Read_PM25(void)
功能测试:
心率:与手指脉搏计数对比。
离床检测:模拟儿童上床和下床动作,测试压力值变化和报警触发。
尿床检测:滴几滴水在雨滴传感器上,测试报警触发。
温控:用手加热DHT11,测试风扇启动。
PM2.5:点燃一支香靠近传感器,观察数值变化。
云平台:测试所有数据上传和报警推送是否正常。
场景测试:在真实的儿童卧室环境中进行长时间(整晚)测试,评估系统稳定性、误报率和实用性。
算法优化:
离床判断:加入延时确认(如连续3秒压力过低才报警),防止儿童短暂翻身触发误报。
心率计算:优化PPG算法,增加滤波,减少运动伪差干扰。
低功耗设计:对于电池供电的传感器节点(如尿床检测),使用STM32L系列单片机,并优化软件使其大部分时间处于休眠模式,定时唤醒采集。
无线充电:为主机设计无线充电底座,方便使用,避免频繁插拔。
更多传感器:可增加麦克风监测环境噪声或儿童夜啼,增加加速度计监测睡眠姿态和活动量。
本项目成功设计并实现了一个功能全面、关怀细致的智能儿童睡眠监护系统。系统稳定地完成了对儿童心率、在床状态、尿床事件以及睡眠环境质量的监测,并通过自动控温和云平台远程报警实现了主动干预。该系统为家长提供了前所未有的育儿便利和安心保障,达到了设计的预期目标。
睡眠质量分析:在云平台端对整晚的心率、压力(体动)数据进行分析,生成睡眠质量报告(深睡、浅睡、清醒时间),提供更科学的育儿指导。
多孩家庭支持:系统可扩展为支持多个监护终端,父母在APP上可以同时查看多个孩子的睡眠情况。
智能家居联动:与家里的智能空调、加湿器、空气净化器联动,根据监测到的环境数据,自动调节整个房间的环境至最佳状态。
AI学习:利用机器学习算法,学习每个孩子的睡眠习惯,个性化调整报警阈值,使系统越用越“聪明”,误报率越来越低。
如有侵权,或需要完整代码,请及时联系博主。