马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本设计以STM32F103C8T6单片机为核心控制器,构建了一套集婴儿啼哭检测、环境温湿度自动调控、尿床检测警报、蓝牙手机远程监控于一体的婴儿智能监护系统。系统通过声音检测模块实时监测婴儿啼哭声,当哭声超过设定阈值时自动播放安抚音乐并通过蓝牙向家长手机发送警报;通过温湿度传感器实时监测婴儿房环境温湿度,依据预设上下限自动控制空调、加热器、加湿器和除湿器,维持舒适的环境;通过雨量检测模块检测婴儿是否尿床,一旦检测到湿气变化立即通过蓝牙推送即时警报。所有监测数据通过OLED显示屏实时展示,家长也可通过蓝牙连接手机端远程查看数据、调整设置和接收报警信息,是一个典型的多传感器融合物联网监护应用案例。
" \: f. Z4 z2 D8 u1.1 核心功能
9 B! y: y i/ h, q* M, b2 Y- m· 婴儿啼哭检测与安抚:声贝传感器实时监测哭声,超阈值自动播放安抚音乐并蓝牙报警/ P# l" m3 i# F0 u
· 环境温湿度自动调控:温湿度传感器监测,自动控制空调/加热器/加湿器/除湿器& [( S' |( G9 n) B, ~0 B
· 尿床检测与警报:雨量检测模块检测湿气变化,蓝牙即时推送尿床警报9 I, |+ y% U. r# Y& ]3 _
· 温湿度上下限设置:通过设置/加/减三键设置阈值,系统自动保存并应用) ?. Y8 Z' E s& T' ]
· OLED实时显示:环境温湿度、设定值、设备状态及报警信息实时展示
# F4 \, v' j$ _+ U· 蓝牙手机端监控:远程查看温湿度数据、设备状态、报警信息,可远程调整设置; U" h y3 p2 l, X4 s' t- n) u0 @
1.2 主要技术指标
$ k. l8 v! s8 L" @主控芯片采用STM32F103C8T6(LQFP48封装),ARM Cortex-M3内核,工作频率72MHz,内置64KB Flash、20KB SRAM及37个通用IO口,集成12位ADC、多个USART/SPI/I2C接口及定时器。啼哭检测采用数字量声音检测模块,内置驻极体麦克风和信号调理电路,可通过电位器调节灵敏度,输出数字高低电平信号,响应速度快、抗干扰能力强。音乐播放采用集成语音模块,支持MP3/WAV格式音频播放,通过串口或IO触发播放,外接8Ω/0.5W扬声器输出。温湿度监测采用DHT11数字温湿度传感器,测温范围0-50℃(精度±2℃),测湿范围20%-90%RH(精度±5%RH),单总线数字输出,接线简单。尿床检测采用雨量/雨滴检测模块,通过检测板面湿度变化输出模拟或数字信号,灵敏度可调。蓝牙通信采用HC-05模块,支持SPP串口透传,通信距离可达10米。家电控制采用4路5V继电器(SRD-05VDC-SL-C),单路触点容量10A/250VAC,可直接驱动常见家用电器。
+ T7 j% k1 w- l% P, P二、系统整体架构
$ C; H! I7 V4 R) W4 c6 O系统采用典型的「多传感器感知—中控处理—多执行器输出」三层架构,并通过蓝牙模块实现与手机端的双向通信。感知层包含声音检测模块、温湿度传感器、雨量检测模块、MPU6050姿态传感器、按键模块及供电模块,分别负责啼哭检测、环境监测、尿床检测、婴儿活动/姿态监测、参数设置和系统供电;中控层以STM32F103C8T6单片机最小系统为核心,负责多传感器数据采集、逻辑判断、状态管理和执行器控制;执行层包含OLED显示模块、音乐播放模块、4路继电器、步进电机、蜂鸣器及LED指示灯,分别负责信息展示、安抚音乐播放、家电控制、自动摇篮、报警提示和状态指示。蓝牙模块作为通信桥梁,将系统状态和报警信息推送至手机端,同时接收手机端的远程控制指令。: J* N3 m, G, X H0 s2 B
图1 婴儿智能监护系统整体架构框图
1 H$ ~8 o3 Y3 ]7 _2.1 感知层模块说明 声音检测模块通过驻极体麦克风采集环境声音,经内部比较器与阈值电位器设定的参考电压比较后输出数字电平信号,当声音强度超过阈值时输出低电平(或高电平,依模块设计而定)。STM32通过外部中断或GPIO轮询方式检测该信号,判断婴儿是否啼哭。温湿度传感器DHT11采用单总线通信协议,STM32通过一根IO口即可完成温湿度数据的读取,采样周期建议不小于1秒。雨量检测模块通过检测板面导电率变化判断是否有湿气(尿液)接触,输出模拟信号经STM32的ADC采样后与阈值比较,或直接使用模块上的数字比较器输出数字信号。MPU6050六轴传感器通过I2C接口与STM32连接,可检测三轴加速度和三轴角速度,用于监测婴儿的活动状态、翻身动作或摇篮晃动幅度。按键模块包含设置、加、减三个轻触按键,用于温湿度上下限的设置和调整。
- m% r+ F: h% e. d& v. I {2.2 执行层与通信层说明
]$ O a% W6 I" O6 M" ]OLED显示模块通过I2C接口与STM32连接,用于实时显示当前温湿度值、设定的上下限阈值、各继电器设备状态、啼哭/尿床报警提示等信息。音乐播放模块通过串口或IO触发方式接收STM32的播放指令,播放预存的安抚音乐(如白噪音、轻柔摇篮曲等),通过外接扬声器输出。4路继电器分别控制空调、加热器、加湿器和除湿器的电源通断,STM32根据温湿度监测值与设定阈值的比较结果自动控制对应继电器的吸合与释放。步进电机(28BYJ-48)由ULN2003A驱动,可用于实现自动摇篮安抚功能,当检测到婴儿啼哭时,步进电机正反转交替驱动摇篮轻柔晃动。蜂鸣器用于本地报警提示,当检测到尿床或啼哭时鸣响提醒。LED指示灯用于显示电源状态和报警状态。蓝牙模块HC-05通过USART与STM32连接,工作在从机模式,手机端配对连接后可实时接收温湿度数据、设备状态和报警信息,也可发送指令远程调整温湿度阈值。5 @9 l: [2 Q9 n# S) C, z& X; ^& z2 h
三、硬件设计解析 O2 W! _0 A/ R1 |
3.1 主控最小系统1 O4 m Q% J& N+ n o) T7 O
主控采用STM32F103C8T6单片机(LQFP48封装),最小系统包含电源去耦电路、8MHz主晶振振荡电路(配合两只20pF瓷片电容)、32.768kHz RTC晶振、NRST低电平复位电路及SWD程序下载接口。电源输入为5V,通过RT9193-33低压差线性稳压器(LDO)转换为3.3V为MCU及逻辑器件供电。RT9193-33是一款高PSRR、低噪声的LDO,输出电流可达300mA,足以满足STM32及外围传感器的供电需求。各电源引脚就近放置0.1μF去耦电容,有效抑制电源噪声。BOOT0引脚通过10k电阻下拉,确保上电后从主Flash启动。
[/ x1 A+ _0 ]0 f2 a/ N: w- g3.2 声音检测与音乐播放模块4 L3 v: ?- h$ e3 R. w* E
啼哭检测采用数字量声音检测模块,模块内置驻极体麦克风、前置放大器和电压比较器。麦克风采集的声音信号经放大后与电位器设定的阈值电压比较,比较器输出数字电平信号。灵敏度可通过模块上的电位器顺时针调节(灵敏度提高)或逆时针调节(灵敏度降低)。模块的数字输出端接至STM32的GPIO引脚,配置为外部中断下降沿(或上升沿)触发,当检测到超过阈值的声音时触发中断,STM32在中断服务程序中判断为啼哭事件并启动安抚流程。为避免短暂的环境噪音误触发,可在中断中加入延时确认机制(如连续检测到哭声超过2秒才判定为啼哭)。7 x. U0 b( l! C" V0 T
音乐播放采用集成语音模块,模块内置Flash存储芯片,可通过上位机软件下载MP3或WAV格式的安抚音乐(如白噪音、轻柔摇篮曲、心跳声等)。模块支持串口控制和IO触发控制两种方式:串口控制时,STM32通过USART发送指定格式的指令帧(如播放指定曲目、暂停、停止、设置音量等);IO触发控制时,通过不同的IO引脚组合触发不同的播放动作。模块的音频输出端(SPK+/-)外接8Ω/0.5W扬声器,输出音量可通过模块上的电位器或串口指令调节。当检测到婴儿啼哭时,STM32触发音乐模块播放安抚音乐,哭声停止后延时一段时间自动停止播放。1 i7 H: J; C; G5 j" `
3.3 温湿度传感器与自动调控
, t$ C& i- P( g7 ~$ K- Z/ u- ~温湿度监测采用DHT11数字温湿度传感器,该传感器包含一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。DHT11采用单总线通信协议,仅需一根信号线(DATA)与STM32的GPIO连接,外加4.7kΩ上拉电阻。通信过程由STM32发起起始信号(拉低总线至少18ms后拉高),DHT11响应后依次发送40位数据(湿度整数、湿度小数、温度整数、温度小数、校验和)。STM32读取数据后进行校验和验证,确保数据正确性。DHT11的采样周期建议不小于1秒,避免频繁读取导致传感器发热影响精度。) [& V) q4 e7 \( V* L" U
温湿度自动调控逻辑:STM32定期读取温湿度数据后,与用户设定的上下限阈值比较。当温度低于下限阈值时,加热器继电器吸合,加热器通电升温;当温度高于上限阈值时,空调继电器吸合,空调通电降温;当湿度低于下限阈值时,加湿器继电器吸合,加湿器通电增湿;当湿度高于上限阈值时,除湿器继电器吸合,除湿器通电降湿。当温湿度恢复至设定范围内时,对应继电器释放,设备停止工作。这种分区间控制方式确保了婴儿房环境温湿度始终维持在舒适范围内。为避免继电器频繁切换(震荡),可在阈值比较中加入回差机制(如温度低于下限-0.5℃时开启,高于上限+0.5℃时关闭)。
7 D/ v3 m% I% [( \! C( V3.4 雨量检测与尿床警报# Y4 n6 Y% l. y) x$ \& h
尿床检测采用雨量/雨滴检测模块,模块核心是一块带有交叉走线的检测板(雨水/湿度检测板),板面在干燥时交叉走线之间为高阻态,当有湿气(尿液)接触板面时,由于水的导电性,交叉走线之间电阻降低,输出电压发生变化。模块同时提供模拟输出(AO)和数字输出(DO)两种信号:模拟输出接STM32的ADC引脚,通过采样电压值精确判断湿度程度;数字输出经模块上的LM393比较器与阈值电位器比较后输出高低电平,灵敏度可通过电位器调节。检测板可放置在婴儿尿布下方或床垫中,当婴儿尿床时,尿液接触检测板导致电阻变化,STM32检测到信号变化后判定为尿床事件,立即触发蜂鸣器报警并通过蓝牙向家长手机发送尿床警报信息,提醒家长及时更换尿布。
) N/ p8 t% d6 t' ]2 n( j3.5 MPU6050姿态检测
4 _( z% E. T& E/ M$ WMPU6050是一款集成了3轴MEMS陀螺仪、3轴MEMS加速度计以及可扩展数字运动处理器(DMP)的六轴运动跟踪传感器。模块通过I2C接口与STM32连接,通信速率可达400kHz。MPU6050可测量三轴加速度(±2g/±4g/±8g/±16g可编程)和三轴角速度(±250/±500/±1000/±2000°/s可编程)。在婴儿监护系统中,MPU6050可安装在婴儿床或摇篮上,用于监测婴儿的活动状态(如翻身、踢腿、爬行)和摇篮的晃动幅度。当检测到婴儿剧烈活动(可能表示烦躁或哭闹)时,可结合声音检测模块综合判断婴儿状态,启动安抚音乐或自动摇篮功能。MPU6050内置的DMP可直接输出四元数、欧拉角等融合数据,减轻STM32的运算负担。1 H% N. m& `$ \' }' A+ w
3.6 蓝牙通信模块
1 `' u. c+ e& t" }8 R蓝牙通信采用HC-05模块,这是一款集成了蓝牙协议栈的主从一体模块,支持SPP(Serial Port Profile)串口透传协议。模块通过USART与STM32连接,默认波特率9600(可通过AT指令修改),数据位8位,停止位1位,无校验。模块的VCC接5V电源,TXD接STM32的RXD,RXD接STM32的TXD,EN引脚用于进入AT指令配置模式。手机端安装蓝牙串口APP后,搜索并配对HC-05模块(默认名称「HC-05」,配对密码「1234」),即可建立透明串口连接。STM32定期将温湿度数据、设备状态、报警信息等通过串口发送至蓝牙模块,蓝牙模块无线转发给手机端;手机端发送的控制指令(如调整温湿度阈值、远程开启安抚音乐等)经蓝牙模块通过串口转发给STM32执行。这种双向通信机制实现了真正的远程监护。4 j; j! f7 @: b
3.7 继电器、步进电机与外围电路2 g' z6 E8 {! u9 b( O/ t6 Q3 `
家电控制采用4路5V继电器(SRD-05VDC-SL-C),每路由一只NPN三极管(S8050)驱动:三极管基极通过1kΩ限流电阻接STM32的GPIO,发射极接地,集电极接继电器线圈一端,线圈另一端接+5V。当STM32输出高电平时三极管导通,继电器线圈得电吸合,常开触点闭合,外接电器通电;输出低电平时三极管截止,继电器释放。继电器线圈两端反向并联续流二极管(1N4007),吸收线圈断电瞬间的反向电动势,保护三极管。4路继电器分别对应空调、加热器、加湿器和除湿器,每路输出端配KF128-2P接线端子方便外接电器。# Q% |- f4 ?/ R6 `, A
步进电机采用28BYJ-48四相五线步进电机,由ULN2003A达林顿管阵列驱动。ULN2003A内置7路NPN达林顿管,每路最大驱动电流500mA,耐压50V。步进电机的四相绕组A、B、C、D分别接ULN2003A的输出端,输入端接STM32的4个GPIO引脚。STM32通过输出四相八拍励磁序列控制电机正反转,28BYJ-48的步距角为5.625度,经1:64减速箱后输出步距角为0.0879度,转动一圈需要4096个脉冲。步进电机可用于驱动自动摇篮机构,当检测到婴儿啼哭时,电机正反转交替驱动摇篮轻柔晃动,配合安抚音乐实现双重安抚效果。OLED显示采用0.96寸OLED模块(128×64分辨率),通过I2C接口驱动,用于显示温湿度、设定值、设备状态和报警信息。蜂鸣器采用有源蜂鸣器,由NPN三极管驱动,用于本地报警。LED指示灯包含绿色电源灯和红色报警灯。按键模块包含设置、加、减三个轻触按键,用于温湿度上下限设置。
1 @! A2 U7 s% G: V9 n3.8 原理图与PCB设计
" z; w& \8 R* y( [" Q8 _系统原理图采用模块化布局,按功能划分为STM32最小系统、电源电路(5V转3.3V)、OLED显示、声音检测、音乐播放、按键电路、LED指示、蜂鸣器、步进电机驱动、蓝牙模块、温湿度传感器、雨量检测模块、MPU6050模块及4路继电器控制电路等区域。各模块间通过网络标号连接,保持了原理图的清晰可读性。PCB设计采用双层板,主控芯片居中布置,Type-C供电接口和下载口靠边布置便于接线,4路继电器和接线端子集中布置在板边方便外接家电,各传感器模块(温湿度、雨量、MPU6050)通过排针接口外接,便于灵活安装。蓝牙模块和晶振等敏感器件远离继电器和电机驱动等大功率器件,减少电磁干扰。
) b2 F9 y* x% L' Z3 x图2 系统电路原理图 图3 PCB三维效果图
+ T. p! n6 [2 x4 x, K! w四、硬件物料清单(BOM) 以下物料清单根据系统原理图整理,共计28类元器件,涵盖主控、传感器、通信、驱动、显示及无源器件等:* [& Q* K6 y% w- X6 B
序号 | 型号/规格 | 元件名称 | 封装 | 数量 | 位号/说明 | 1 | STM32F103C8T6 | 主控单片机 | LQFP48 | 1 | U3 系统核心 | 2 | 0.96寸OLED | OLED显示屏 | OLED模块 | 1 | U1 状态显示 | 3 | 声音检测模块 | 数字量声音传感器 | 模块 | 1 | U8 啼哭检测 | 4 | 音乐播放模块 | 语音/音乐播放模块 | 模块 | 1 | U2 安抚音乐 | 5 | 8Ω 0.5W | 扬声器/喇叭 | 直插 | 1 | B1 音乐输出 | 6 | HC-05 | 蓝牙通信模块 | 模块 | 1 | 手机端通信 | 7 | DHT11 | 温湿度传感器 | 模块 | 1 | U4 环境监测 | 8 | 雨量检测模块 | 湿度/雨滴传感器 | 模块 | 1 | 尿床检测 | 9 | MPU6050 | 六轴姿态传感器 | 模块 | 1 | 姿态/活动检测 | 10 | ULN2003A | 步进电机驱动 | DIP-16 | 1 | 步进电机驱动 | 11 | 28BYJ-48 | 四相五线步进电机 | 电机 | 1 | 自动摇篮 | 12 | SRD-05VDC-SL-C | 5V继电器 | 直插 | 4 | JK1-JK4 家电控制 | 13 | S8050 | NPN三极管 | TO-92 | 5 | 继电器/蜂鸣器驱动 | 14 | 1N4007 | 续流二极管 | DO-41 | 4 | 继电器线圈保护 | 15 | 有源蜂鸣器5V | 蜂鸣器 | 直插 | 1 | 报警提示 | 16 | LED绿/红 | 发光二极管 | LED | 2 | D1电源 D2报警 | 17 | 6×6×5 | 轻触按键 | DIP-4 | 3 | 设置/加/减 | 18 | 1kΩ | 电阻 | AXIAL-0.3 | 8 | 限流/上拉 | 19 | 10kΩ | 电阻 | AXIAL-0.3 | 5 | 上拉/下拉 | 20 | 0.1μF | 无极性电容 | 0603/直插 | 6 | 电源去耦 | 21 | 10μF | 电解电容 | 直插 | 2 | 滤波 | 22 | 220μF | 电解电容 | 直插 | 1 | 电源储能滤波 | 23 | RT9193-33 | 5V转3.3V LDO | SOT-23-5 | 1 | 电源稳压 | 24 | Type-C | 供电接口 | 贴片 | 1 | S_TEC1 5V输入 | 25 | 8MHz | 晶振 | HC-49S | 1 | 主时钟 | 26 | 32.768kHz | RTC晶振 | 圆柱 | 1 | 低速时钟 | 27 | 排针1×4 | SWD下载口 | 排针 | 1 | JP1 程序下载 | 28 | KF128-2P | 接线端子 | 直插 | 4 | J1-J4 继电器输出 |
表1 系统硬件物料清单(BOM)9 j5 ^2 D1 p/ ]; j( b
五、软件设计思路4 O; ~0 r$ c1 V. n
5.1 开发环境 软件开发基于Keil uVision5集成开发环境,采用C语言编程。Keil5支持STM32F1系列的设备支持包(DFP),集成了ARMCC编译器、汇编器、链接器及调试器,生成的.hex文件可通过ST-Link仿真器经SWD接口烧录至STM32单片机。程序架构采用前后台系统(超级循环+中断),主循环中处理温湿度采集、OLED刷新、继电器控制、按键扫描及蓝牙数据发送等任务,外部中断负责声音啼哭检测和蓝牙数据接收,定时器中断可用于按键消抖和系统延时。0 A/ [' U1 w& T3 F6 u
5.2 主程序流程- J9 G4 D2 i4 G: ]3 N2 D. X
系统上电后首先执行各模块初始化,包括GPIO配置、I2C初始化(OLED和MPU6050)、USART初始化(蓝牙和音乐模块)、ADC初始化(雨量检测)、外部中断配置(声音检测)、定时器配置及OLED显示初始化。初始化完成后从EEPROM或Flash中读取用户设定的温湿度上下限阈值,OLED显示欢迎界面和当前温湿度,系统进入while(1)主循环。主循环中按以下顺序执行:读取DHT11温湿度数据→根据温湿度与阈值比较结果控制4路继电器→ADC采样雨量检测判断是否尿床→扫描按键处理温湿度阈值设置→读取MPU6050姿态数据→刷新OLED显示→通过蓝牙发送状态数据→检测啼哭标志位决定是否播放安抚音乐和启动摇篮。声音啼哭检测通过外部中断异步处理,不受主循环阻塞影响。
9 d7 h% i1 ]3 r. f' M0 i5.3 啼哭检测与安抚控制代码 S& L( J; p6 k" |1 [, i! ]
! y! t Y- [* N* ]0 |" B// 全局变量 e D% S6 } \5 b8 A* c
unsigned char cry_flag = 0; // 啼哭标志$ s- Q, Q- c5 \9 }+ M. m6 E" g
unsigned int cry_duration = 0; // 啼哭持续时间(秒)
1 I, z# S$ P3 g0 A, _$ Zunsigned char music_playing = 0; // 音乐播放状态/ q, X/ d5 f. N- X
& v2 g2 K+ Z7 p: l* h4 N
// 声音检测外部中断服务程序
) I- o7 Z% g: ], t1 Bvoid EXTI9_5_IRQHandler(void)
+ t H6 u+ n; t6 A{
6 i0 i0 Q& a9 |8 A+ T& B) y if (EXTI_GetITStatus(EXTI_Line6) != RESET)$ G6 u4 b3 Y, X( n
{
6 A' C" z3 _" S, I0 w // 检测到超过阈值的声音
6 U- u0 L1 E! q* [+ R4 | cry_flag = 1;
8 ~5 t. i7 V4 `1 P% P/ y) { cry_duration = 0; // 重置计时7 S* G; w2 r# n! i! w$ E
EXTI_ClearITPendingBit(EXTI_Line6);! R& |( k/ b6 h8 I1 r+ _. {$ m
}
1 m, y: K; i B1 `; l9 e}# C5 d8 U5 i* ~: e+ ?' Q n
" s5 B I' s( N% Z
// 啼哭检测与安抚处理(主循环中调用)
) G3 b* J# w2 C& q' F! jvoid Cry_Process(void)% I2 G5 d1 ]# p) w! ~1 B7 y! F, O
{
. S* d; S' G: l1 S6 [+ i3 L if (cry_flag && !music_playing)6 L* e( l5 t. G7 J j3 u% f
{
" x! L# m0 j" C% i9 R* } // 延时确认:连续哭声超过2秒才判定为啼哭/ ^+ I: ?+ }0 B' \* j! Q
delay_ms(2000);
/ T+ q# A4 ?6 g @5 q h4 o, c if (cry_flag) // 确认仍在啼哭
* E9 m% g* Q3 t- m& B4 h& A c: v {/ f7 r0 x9 c$ M2 E+ u8 d2 c
// 播放安抚音乐
" ]- p) D* f' u$ m' ^ Music_Play(1); // 播放第1首安抚音乐
4 C( r# F& ^% h1 K( _4 }6 N music_playing = 1;6 b* j3 X! S$ a$ [+ p- k9 N
7 x2 C/ `: }7 p
// 启动自动摇篮(步进电机正反转交替)# g# @( y) s7 s1 r2 v) [
Cradle_Start();% E# x5 j. L* \7 A' c# M
0 R9 B% e3 s1 E7 V/ o4 \
// 蓝牙发送啼哭警报& V8 D' W# w5 b
BT_SendString("[ALARM] Baby crying!\r\n");/ l1 K7 x. ?" e5 Z4 M, p% f
0 k. S3 o; X: C$ ?3 z3 b // 蜂鸣器短鸣提示
0 p- E7 }9 H* h ~; N BEEP_On();9 [! B1 C" N$ ?" ^$ j, _
delay_ms(500);
4 |& C1 A$ G0 m2 a( {& ]3 f" ] BEEP_Off();
1 H2 v" ?: B1 ~& W9 N: u }
g5 T; j4 j! E cry_flag = 0;
: S' F" _% C2 u# P1 A+ x: e/ j }
; @' l2 O, X! U! C 2 p+ _# t0 {1 N6 q+ M$ b2 G
// 哭声停止后延时30秒停止音乐和摇篮
! X5 u( J4 K1 k; _' B5 q* _ if (music_playing && cry_flag == 0)
9 g6 [, l4 ^' b* ^$ @0 q' a2 M3 E {
2 h: W0 u5 q' _, y% f G# S static unsigned int stop_timer = 0;
* Z& |6 O( ]- ^& k8 ~# ^" P if (++stop_timer >= 30000) // 30秒
- c/ c! N3 }$ i1 i. _- V {2 k0 ]) ^+ P& L; k5 B! a% W
Music_Stop();
: q8 T4 ~* k g1 d0 s Cradle_Stop();8 u' C( G9 o* g7 F. ?- ~9 }( W
music_playing = 0; H' K& a) z' V' p2 @* h3 x, W# E0 ^8 U
stop_timer = 0;
* L% O" o$ r! N+ R4 ?: Z }( l( T' J d! `) q0 y
}
+ ?3 Y; T2 T& n$ u" q}
( Q4 o7 g' ?# C' |, j% b! b5 S | 7 f; `" k3 F/ c; a
) ]8 m) n7 s2 M0 C* L3 L) p* o
5.4 温湿度自动调控代码/ a+ }7 u! B* t8 a
// 温湿度阈值(可由用户设置)
@% a: e/ R6 g* K3 g: e4 m$ e, xint temp_low = 20; // 温度下限(℃)7 ^/ Q& p c3 ?9 a9 D8 @
int temp_high = 26; // 温度上限(℃)
% V( N: Z7 E( pint humi_low = 40; // 湿度下限(%RH)( U% u3 A- V! S* I
int humi_high = 60; // 湿度上限(%RH)8 G7 W- W- R# z- _3 M, E
: c* ~6 N( p$ f% _' ]& ]/ W+ g* H// 温湿度自动调控
. |2 ^. c) B/ z- b+ G# Avoid TempHumi_Control(int temp, int humi)
0 J4 L7 l: J" S( G' ]+ W, B! G) m{# F5 c* z7 h, D8 P2 j2 O& H5 P
// 温度控制:低于下限开加热器,高于上限开空调
3 ?! U$ R+ K/ E! S, s if (temp < temp_low)
( O o. x V, i& _# w$ K HEATER_ON(); // 加热器继电器吸合' A0 g# O) w" j' k2 j5 T
else if (temp > temp_high)7 t/ Q& g R' n6 Y- H4 I) O
AC_ON(); // 空调继电器吸合
) j1 N' s# N" C: e4 c# [% w else: y" M/ w6 \# p- P8 E, r
{
" \* `2 z0 v+ r" O$ f! Z! }. O HEATER_OFF();8 v) F: e' F+ T" H' y6 v0 ~! L/ P7 N
AC_OFF();! \6 ^7 S3 |# d
} K1 h% |- ^, h* o9 u) A
, s4 D9 e7 B2 j7 x: ~
// 湿度控制:低于下限开加湿器,高于上限开除湿器
# U8 W. c' V4 o4 @: a. t if (humi < humi_low)
! J' r4 a, }# ^8 C3 T; l" O HUMIDIFIER_ON(); // 加湿器继电器吸合" ^" ]4 {) U. B5 _8 }) H
else if (humi > humi_high)
: V5 g! |- N6 T' v9 I% @: s DEHUMIDIFIER_ON(); // 除湿器继电器吸合3 Z7 s- K0 P6 \- d F- `
else" i- Q$ M1 n+ Y/ z7 l
{' {- \" ^, R6 ]2 o0 j
HUMIDIFIER_OFF();
2 M$ D5 }+ o0 ]! @ DEHUMIDIFIER_OFF();
b* E0 `- \; T9 g' S }
) H3 ?' D- U# A) h' f * @# }* A3 i+ b. D
// OLED显示当前温湿度和设备状态
" Z; v$ D5 K H; i OLED_ShowTempHumi(temp, humi);
# ]7 o8 H5 g h5 j% A OLED_ShowDeviceStatus();
( p& J$ o0 n. v0 ]+ _0 ~" e}; D4 k! w0 x- O g8 J. ]" T
$ G" M( u& S) @" a
// 按键设置温湿度阈值
( \- r1 J7 s2 V! E! D# p) zvoid Key_SetThreshold(void)0 u8 M. A$ z5 k& I3 c* _5 j0 d" O& j
{
5 Q2 a3 ~2 @. b! u) f unsigned char key = Key_Scan();
+ T/ r& X) h E static unsigned char set_mode = 0; // 0:正常 1:设置温度下限 2:上限 3:湿度下限 4:上限
' s' r; E8 j4 j# k: _4 Z 7 T4 f- X- {& y% h! P4 ]- m/ q2 \
if (key == KEY_SET)
; M; i+ {7 s7 M: r: Z {
4 m4 A2 F) |$ o' S R" T set_mode = (set_mode + 1) % 5;! e) m- m& ~7 G, F8 B. j7 x
OLED_ShowSetMode(set_mode);
9 {1 |5 c# c6 H }; D2 T( I5 B$ a; Y
else if (key == KEY_ADD && set_mode > 0)
5 H, G0 j) r/ I, u* p, j3 l {, r4 q! D' Q3 ]3 l1 N! f- k
switch(set_mode)7 V- \5 _& W1 U& W6 K
{* ^) H, c0 {, l) m
case 1: temp_low++; break;
! d$ @" J7 f o D6 v! x- g( a1 _/ d case 2: temp_high++; break;- F* s0 L& [+ N: m; A u
case 3: humi_low++; break;! V, Z& {7 G' b8 T; d2 }1 T
case 4: humi_high++; break;& D* V0 |5 H- z7 f9 m
}
0 u$ z/ ]$ Z8 [7 ^ OLED_ShowThreshold(temp_low, temp_high, humi_low, humi_high);: O& O' Q! t4 D+ A
Save_Threshold_to_Flash(); // 保存到Flash1 ^6 M, W. j) l! C: W3 h% Z( Y
}
% v" u, y; c' _. Y2 Z' ` else if (key == KEY_SUB && set_mode > 0)6 L1 V; Z" \6 D
{
" ^! k2 j0 K0 e( @ // 类似减操作...1 A: j: n1 }% d6 i" D, {
}
$ i1 j* h% s+ s! ^3 }, Z}
1 m6 r; y/ p4 P |
2 _9 w: j; p! @, u( J; C $ l0 D# J7 w- r( v/ j3 @" i( z
5.5 尿床检测与蓝牙报警代码
& g6 c s+ N+ _2 Z. o// 尿床检测(ADC采样雨量模块); O" N/ J2 F: ^% y3 \' M& L
void Bedwetting_Detect(void)- o m/ B+ u& ~4 O
{9 @( b) E+ z$ T0 n
unsigned short adc_val = ADC_GetValue(ADC_Channel_1);$ t: a) D/ {$ Y. d) S+ u1 }- W% F' o
. J1 p, d/ M8 G" n# K* ]8 Q // 雨量检测板受潮时电阻降低,ADC值升高
" W3 h& Y; i& R! b/ V // 阈值需根据实际调试确定
! ~7 m5 M4 G: `( B if (adc_val > 2000)
# ^; `3 Q% ~6 D {: p* n9 T' M- L* K, h
// 检测到尿床; }( x/ e) g3 |4 Q2 q1 ^
BEEP_On(); // 蜂鸣器报警
d, t: I( Z9 z8 `/ `3 x LED_RED_ON(); // 红色报警灯亮
; b: X+ R% r) m8 o( z. ~6 H ! c4 I/ A! e% c J9 s7 M n+ q8 ]3 {
// 蓝牙发送尿床警报
: y3 h W7 H4 R" R* I, | BT_SendString("[ALARM] Bedwetting detected! Please change diaper.\r\n");
2 B; z0 g9 T& o. ^ O+ [
: I8 r8 \, F T' v; e' M2 F- I // OLED显示尿床警报/ Z( S* M- q: X& [3 R. t
OLED_ShowString(0, 6, "Bedwetting! ");; X2 [ v! Y# Z2 `$ j( t0 Y
% K4 f) b, P5 u8 n$ M# f$ ^* }
// 延时报警10秒后自动停止(家长处理后可按键清除)
! m& i+ I( b9 x- i' m; R8 z delay_s(10);
9 B3 x. Q7 T# g BEEP_Off();. ~8 i! {; q+ s/ L1 K$ @ f2 w: }- p( j
LED_RED_OFF();
3 f8 K; Y7 a4 X7 ]& [ OLED_ClearLine(6);
. ?/ l2 ~( t3 h( ~1 T0 b8 K; X& b) {' [ }
3 R; B7 a- l% E: Z( E1 o% l; n( L}' a) x; T! d, b5 V6 x
* d Z& {. N ~( N( v6 t// 蓝牙数据发送(定期发送状态)
: w, p7 T8 A! G4 F* I% l" _void BT_SendStatus(int temp, int humi, unsigned char cry, unsigned char wet)
: p; I( u) ?. i' }4 ]{
" a) ~: n8 e; M9 m9 n% _. } char buf[64];
( g2 l# R0 E5 _& H$ \ sprintf(buf, "{"temp":%d,"humi":%d,"cry":%d,"wet":%d}\r\n",
8 n2 R5 b" C, S7 N3 o& g2 Z2 S temp, humi, cry, wet);6 b& ?- x1 Q/ ?. `9 I
USART_SendString(USART2, buf); // 蓝牙模块接USART2
7 V% _% y: x0 }& F}; g' [7 q" ?7 k) \0 e' M
. m" H5 @# A0 m; g3 I% _ _// 蓝牙指令接收(中断处理)
# S$ l+ l, l. {void USART2_IRQHandler(void)5 A4 {, B4 m7 z5 Z) Y
{
- X; H5 b: P& a3 [1 M$ ~! V8 D if (USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
& C9 x8 C0 W0 Y3 K+ M {
; P% Q- t% G9 n7 r i unsigned char cmd = USART_ReceiveData(USART2); z' K4 m5 b8 w* n0 T+ M$ |
// 解析手机端发送的远程控制指令
5 D! P; m' ^3 K // 如 'T'=提高温度上限, 't'=降低, 'H'=提高湿度上限...7 R1 c7 R' ~3 g$ i/ N. o
BT_ParseCommand(cmd);: J# v6 b' U* T/ P4 U0 X l2 E
USART_ClearITPendingBit(USART2, USART_IT_RXNE);6 O) r" ~3 X) _7 Q% }: O |& c
}
0 P6 i5 G/ w$ o. f8 N6 Z}/ X! ^3 h! H7 n% m' D. g
| " W, f/ b9 z/ y: c, K* H7 M
8 C7 Y3 I& t8 t7 r9 s
六、功能模块详解
4 X8 M7 [/ H( ^6.1 婴儿啼哭检测与音乐安抚 啼哭检测是本系统的核心功能之一。系统通过数字量声音检测模块实时监测婴儿房的声音环境,模块内置的驻极体麦克风将声音信号转换为电信号,经前置放大和电压比较后输出数字电平。灵敏度可通过模块上的电位器调节,以适应不同的环境噪音水平。当检测到超过阈值的声音时,STM32的外部中断被触发,系统判定为可能的啼哭事件。为避免短暂的环境噪音(如关门声、说话声)误触发,系统加入了延时确认机制:只有当哭声持续超过设定时间(如2秒)时才判定为真正的啼哭。确认啼哭后,系统立即启动三重安抚措施:播放预存的安抚音乐(如白噪音、轻柔摇篮曲、模拟心跳声等)、驱动步进电机实现自动摇篮轻柔晃动、通过蓝牙向家长手机发送啼哭警报信息。哭声停止后,安抚音乐和摇篮继续运行一段时间(如30秒)后自动停止,确保婴儿充分安抚。
0 D8 e5 g, H( h* h* f$ F6.2 环境温湿度自动调控7 t) H6 D1 T8 E- G* s9 k8 w7 p
婴儿对环境温湿度非常敏感,适宜的温湿度是婴儿健康成长的重要保障。系统通过DHT11数字温湿度传感器定期(每秒一次)采集婴儿房的温度和湿度数据,并与用户预设的上下限阈值进行比较。当温度低于下限阈值(如20℃)时,系统自动吸合加热器继电器,接通加热器电源升温;当温度高于上限阈值(如26℃)时,自动吸合空调继电器,接通空调电源降温。湿度控制同理:当湿度低于下限(如40%RH)时开启加湿器增湿,当湿度高于上限(如60%RH)时开启除湿器降湿。当温湿度恢复至设定范围内时,对应继电器自动释放,设备停止工作。为避免继电器在阈值附近频繁切换(震荡),系统加入了回差控制机制。用户可通过设置/加/减三个按键灵活调整温湿度上下限,设置值自动保存到STM32内部Flash,掉电不丢失。温湿度数据和各设备状态实时显示在OLED屏幕上,方便家长查看。
e+ `# P% {. V6.3 尿床检测与即时警报# @) k) j" [8 S% N' t& |& c, P5 o
尿床是婴儿护理中的常见问题,及时发现并更换尿布对婴儿的皮肤健康至关重要。系统采用雨量/雨滴检测模块实现尿床检测功能。检测板由带有交叉走线的PCB板构成,干燥时交叉走线之间为高阻态,当有尿液接触板面时,由于尿液的导电性,交叉走线之间电阻显著降低,输出电压发生变化。模块同时提供模拟输出和数字输出两种信号:模拟输出接STM32的ADC引脚,通过采样电压值可精确判断受潮程度;数字输出经LM393比较器输出高低电平,灵敏度可通过电位器调节。检测板可放置在婴儿尿布下方或床垫保护层中。当婴儿尿床时,尿液接触检测板导致电阻变化,STM32检测到信号变化后立即判定为尿床事件,触发三重警报:蜂鸣器鸣响提醒附近的家长、红色LED报警灯点亮、通过蓝牙向家长手机发送即时尿床警报信息(如「检测到尿床,请及时更换尿布」)。警报持续一段时间(如10秒)后自动停止,家长也可通过按键手动清除警报。
f% g: Z K& S( r2 N0 N6.4 蓝牙手机端远程监控
9 a. |5 x, s- F; j8 a蓝牙通信功能使家长可以通过手机端远程监护婴儿。系统采用HC-05蓝牙模块,工作在从机模式,家长在手机上安装蓝牙串口APP后,搜索并配对HC-05模块即可建立连接。连接成功后,系统定期(如每5秒)通过蓝牙向手机端发送数据包,包含当前温度、湿度、啼哭状态、尿床状态、各继电器设备状态等信息,家长可在手机端实时查看婴儿房的环境状况和系统运行状态。当发生啼哭或尿床事件时,系统立即通过蓝牙发送警报信息,手机端可通过APP推送、铃声或振动方式提醒家长。此外,家长还可通过手机端发送远程控制指令,如调整温湿度上下限阈值、远程开启/关闭安抚音乐、远程启动/停止摇篮等,实现真正的远程交互监护。蓝牙通信距离在开阔环境下可达10米,足以覆盖普通家庭的使用场景。9 @* p& B7 n* V2 g Q3 C
七、技术亮点与总结
- p) l0 j3 t+ z. K7.1 技术亮点$ `4 U8 _6 P9 D" x* y
· 多传感器融合:系统整合了声音检测、温湿度传感、雨量检测、MPU6050六轴传感四种传感器,分别实现啼哭检测、环境监测、尿床检测和姿态/活动监测,多维度全面监护婴儿状态,体现了多传感器融合的设计思想。( Q$ e- \; B, b( H
· 智能安抚联动:当检测到婴儿啼哭时,系统自动联动播放安抚音乐和驱动自动摇篮,实现听觉+触觉的双重安抚效果,比单一的音乐播放更有效。哭声停止后延时自动停止,避免过度干预。# d" p3 N2 D( O
· 温湿度闭环自动调控:通过温湿度传感器实时监测,结合4路继电器自动控制空调、加热器、加湿器和除湿器,形成完整的环境调控闭环,确保婴儿房始终维持在舒适的温湿度范围内,无需人工干预。" Q7 _- i3 ?: A; ^8 m% ~
· 即时尿床警报:采用雨量检测模块实现尿床检测,结合蜂鸣器本地报警和蓝牙远程推送双重警报机制,确保家长第一时间获知尿床事件,及时更换尿布,保护婴儿皮肤健康。% M( W' K3 N' i' i1 d+ K
· 蓝牙远程监护:通过HC-05蓝牙模块实现与手机端的双向通信,家长可实时查看温湿度数据和设备状态,接收啼哭/尿床警报,并可远程调整设置和控制设备,突破了空间限制。6 d Q: @7 t7 {" G( T
· 用户可配置阈值:通过设置/加/减三键可灵活调整温湿度上下限,设置值自动保存到Flash掉电不丢失,满足不同季节和不同婴儿的个性化需求。 Q; u; H2 X. T5 i
· 模块化硬件设计:各功能模块电路独立,传感器、驱动器、通信模块均采用标准接口与MCU连接,便于调试、维护和功能扩展。PCB布局合理,大功率器件与敏感器件分区布置,减少电磁干扰。! n$ |8 X/ L5 w" R
7.2 可扩展方向. r! Z% y& P* B" k
本系统在现有基础上具有较大的扩展空间。在通信方面,可将HC-05蓝牙模块替换为ESP8266 WiFi模块或SIM800C GSM模块,实现互联网远程监护,突破蓝牙10米通信距离的限制,家长即使在外工作也能通过手机APP远程查看婴儿状态。在传感器方面,可增加非接触式红外体温传感器(如MLX90614)实现婴儿体温实时监测,增加心率/血氧传感器(如MAX30102)实现生命体征监测,增加空气质量传感器(如CCS811)监测CO2和VOC浓度,全面提升监护维度。在摄像头方面,可增加OV7670摄像头模块实现视频监控,家长通过手机端实时查看婴儿画面。在语音交互方面,可增加语音识别模块(如LD3320)实现语音指令控制,或增加语音合成模块实现状态语音播报。在数据分析方面,可增加SD卡存储模块,记录温湿度历史数据、啼哭次数、尿床次数等信息,便于家长分析婴儿的作息规律和健康状况。在电源方面,可增加锂电池供电和充电管理电路,实现系统的便携移动使用,不受电源插座位置限制。
. p) h% ^. p- b/ \4 h- g7.3 总结
; U$ O0 g N' E+ ^& E* Y本设计是一个功能完整、结构清晰的基于STM32的婴儿智能监护系统。以STM32F103C8T6为核心,整合了声音检测啼哭监测、DHT11温湿度监测与4路继电器自动调控、雨量检测尿床警报、MPU6050姿态检测、音乐播放安抚、步进电机自动摇篮、OLED实时显示、HC-05蓝牙手机远程监控等多个功能模块,实现了婴儿监护的全方位覆盖。硬件设计遵循模块化原则,电路简洁可靠,PCB布局合理;软件采用前后台架构,中断驱动啼哭检测,主循环处理温湿度调控、尿床检测和蓝牙通信,逻辑清晰、实时性好。该方案不仅可作为婴儿智能监护的原型验证平台,也为学习STM32多传感器融合、继电器控制、蓝牙通信和物联网应用开发提供了一个综合性的实践案例。. d8 a& _: {- O( N1 j4 u
: z& T! M9 I r) t" q9 M* P/ Z
|