1 基于单片机的多功能智能婴儿车设计
点击链接下载protues仿真设计资料:https://download.csdn.net/download/m0_51061483/92081549
1.1 设计背景与意义
婴儿车是婴幼儿外出时最常使用的辅助工具之一,既承担着承载婴儿、减轻家长负担的功能,又直接影响婴儿的舒适度与安全性。传统婴儿车通常只具备基本的推行与折叠结构,缺乏对环境变化的感知能力,也缺少主动安全保护功能。例如:婴儿尿湿后无法及时提醒,婴儿车内温度过高可能造成婴儿不适;户外光照强烈时遮阳罩未及时展开,可能导致婴儿眼睛受刺激;夜间外出照明不足时无法提供适当补光;无人推车时婴儿车在坡道上可能发生溜车风险;车辆侧倾或翻倒时如果没有报警将可能造成严重危险。
因此,设计一套基于单片机的多功能智能婴儿车系统,能够通过多种传感器实时检测婴儿车状态与外部环境,并自动执行风扇降温、遮阳与照明调节、音乐安抚、安全刹车、倾斜报警等功能,同时通过串口通信将状态数据传输至外部设备进行监控与管理,将显著提升婴儿车安全性、舒适性与智能化水平。
本设计以单片机为控制核心,采用模块化硬件设计与状态机/任务调度的软件架构,实现多传感器融合、多执行器联动与可靠报警提示,兼顾功能丰富性与系统稳定性,适合作为课程设计、毕业设计或智能母婴设备原型开发方案。
1.2 系统设计目标与总体要求
本智能婴儿车系统围绕"舒适调节 + 安全防护 + 人机交互 + 远程监控"四个核心方向,提出以下设计目标:
1)尿湿检测:通过湿度传感器实时检测婴儿尿湿情况,达到阈值后及时提醒家长。
2)温度调节:检测婴儿车内温度,当温度过高自动启动风扇降温,并可在温度恢复正常后自动关闭。
3)光照调节:根据光线强度自动控制车罩遮阳,并自动调节灯光照明,实现"强光遮阳、弱光补光"。
4)音乐播放:支持播放舒缓音乐,用于安抚婴儿情绪,可通过按键或串口指令控制播放/暂停和曲目切换。
5)安全刹车:结合速度检测与触摸检测功能,当无人推车且车辆仍有速度时自动刹车,防止溜车。
6)倾斜报警:通过倾角传感器检测车体倾斜度,若倾斜角超过阈值判定存在侧翻风险,立即报警提示。
7)状态通信:通过串口实时发送婴儿车运行状态,包括温度、湿度、光照、速度、刹车状态、倾斜状态等,便于远程监控。
系统总体要求还包括:
- 运行稳定、抗干扰能力强,适应户外震动与噪声环境。
- 多任务并行:检测、控制、显示/报警、通信互不阻塞。
- 结构模块化:便于调试与扩展,例如后期加入GPS定位、蓝牙APP控制等。
2 系统功能设计
2.1 尿湿检测功能设计
尿湿检测用于判断婴儿是否尿湿,从而提醒家长及时更换尿布,避免婴儿皮肤长期潮湿造成红屁屁等问题。系统采用湿度传感器(如电阻式湿度检测片、土壤湿度模块改造、或织物电极 + 放大电路)安装于尿垫或尿布附近,通过检测湿度变化判断是否尿湿。
实现逻辑如下:
1)周期采样湿度值(每500ms~2s采样一次)。
2)与设定湿度阈值进行比较:
- 湿度值超过阈值判定尿湿。
- 湿度值恢复到阈值以下并持续一段时间判定恢复正常(防止波动误判)。
3)尿湿触发提醒方式: - 蜂鸣器报警或语音提示(可选)。
- 通过指示灯闪烁提示。
- 串口通信上报尿湿状态。
为了降低误报警,可采用连续判定机制:例如连续3次检测超过阈值才认为尿湿成立。
2.2 温度调节功能设计(风扇自动控制)
婴儿车内部温度会受到环境温度、阳光直射以及婴儿体温影响。当温度过高时容易使婴儿烦躁甚至出现中暑风险,因此系统需具备自动降温功能。
温度检测可采用数字温度传感器(如DS18B20)或模拟温度传感器(如LM35、NTC热敏电阻)。推荐DS18B20,精度高且抗干扰好。
控制策略:
1)设定温度上限阈值(如30℃或32℃)。
2)实时采集温度并与阈值比较:
- 若温度 ≥ 上限阈值:自动开启风扇。
- 若温度 ≤ 下限阈值(如上限-2℃形成回差):关闭风扇。
3)状态上报:将风扇状态与当前温度通过串口发送。
回差控制可以避免温度在临界点附近波动时风扇频繁开关,提升寿命与稳定性。
2.3 光照调节功能设计(遮阳与补光联动)
光照调节包括两部分:
1)自动遮阳:当光照过强时自动展开遮阳罩或调整车罩角度。
2)自动照明:当光照较弱(夜间、室内)时自动开启LED灯提供照明。
光照检测可采用光敏电阻模块(LDR)或BH1750数字光照传感器。课程设计中常用光敏电阻模块,成本低且易实现。
控制逻辑:
-
若光照强度 > 强光阈值:
- 驱动舵机或电机控制遮阳罩展开。
- 关闭LED补光灯或降低亮度。
-
若光照强度 < 弱光阈值:
- 收回遮阳罩或保持中间位置。
- 打开LED补光灯。
遮阳控制方式:
- 舵机控制:角度可精确调整,适合控制车罩开合。
- 电机控制:结构更复杂,需要限位开关。
本设计推荐舵机控制遮阳罩角度(例如0°收回,90°展开)。
2.4 音乐播放功能设计
音乐播放用于安抚婴儿情绪,是智能婴儿车的重要舒适功能。系统可采用以下方案之一:
1)蜂鸣器PWM播放简单旋律:实现成本低,但音质较简单。
2)DFPlayer Mini + TF卡:可播放MP3音频,音质较好,适合真实产品。
3)语音模块:播放固定语音或音乐片段。
为了实现"舒缓音乐播放",推荐使用DFPlayer Mini模块:
- 单片机通过串口控制播放/暂停/切歌/音量。
- TF卡存储音乐文件,播放效果好。
控制方式:
- 按键控制:播放/暂停、下一曲、音量加减。
- 串口控制:远程发送命令控制音乐播放状态。
2.5 安全刹车功能设计(速度检测 + 触摸检测)
安全刹车是本设计的关键安全功能,用于防止无人推车时婴儿车在坡道上溜车。功能要求为:
- 结合速度检测与触摸检测:当无人推车且车辆仍有速度时自动刹车。
实现思路:
1)速度检测:
- 可采用霍尔传感器检测车轮转速,计算当前速度。
- 或使用光电编码器检测轮速。
2)触摸检测: - 在推把处安装触摸传感器(TTP223)或压力传感器,用于检测是否有人握住推把。
3)刹车触发条件: - 触摸未检测到(无人推车)
- 且速度 > 设定阈值(例如 > 0.5km/h)
- 且持续一定时间(如500ms)
满足条件后启动刹车执行器(电磁刹车或舵机拉杆刹车)。
刹车执行器方案:
- 舵机拉动机械刹车杆:结构简单,适合演示。
- 电磁铁制动:响应快但耗电较高。
刹车解除条件:
- 检测到有人推车(触摸有效)或速度归零,解除刹车。
- 为避免误动作,可设置解除延时。
2.6 倾斜报警功能设计
婴儿车在不平路面或受到外力碰撞时可能出现侧倾甚至翻倒。倾斜报警功能通过倾角传感器检测车体姿态,在倾斜角度过大时立即报警提醒。
倾斜检测可采用:
- MPU6050(加速度计+陀螺仪)
- 简单倾斜开关(只能检测是否倾斜,精度低)
推荐MPU6050,可以计算俯仰角与横滚角,能够更准确判断侧翻风险。
报警逻辑:
1)实时计算倾斜角(横滚角roll、俯仰角pitch)。
2)当 |roll| 或 |pitch| 超过设定阈值(如30°或35°)并持续一定时间(如200ms),判定存在侧翻风险。
3)触发报警:蜂鸣器连续鸣叫 + LED闪烁 + 串口上报。
4)解除条件:角度恢复到安全范围并持续一段时间。
此功能具有很强的安全意义,尤其适用于坡道、台阶或不平路面环境。
2.7 状态通信功能设计(串口上报)
为了实现远程监控与管理,系统通过串口实时发送婴儿车运行状态。串口通信可连接:
- 上位机(电脑)用于调试与监控
- 无线模块(蓝牙/ESP8266)用于手机APP远程显示
- 车载网关用于数据采集
上报内容可包括:
- 温度值、风扇状态
- 湿度值、尿湿状态
- 光照值、遮阳罩角度、灯光状态
- 当前速度、触摸状态、刹车状态
- 倾斜角度、倾斜报警状态
- 音乐播放状态(播放/暂停/曲目编号/音量)
建议采用帧头帧尾协议,提升可靠性,例如:
#T:28.5,H:70,L:320,S:1.2,BR:1,AL:0*
其中#为帧头,*为帧尾,字段之间用逗号分隔,便于解析。
3 系统电路设计
3.1 电路总体结构与模块划分
智能婴儿车系统硬件由多传感器与多执行器组成,整体可划分为以下模块:
1)单片机最小系统模块
2)电源管理与稳压模块
3)尿湿检测模块(湿度传感器)
4)温度检测模块(DS18B20)
5)光照检测模块(LDR/BH1750)
6)速度检测模块(霍尔传感器)
7)触摸检测模块(触摸传感器)
8)倾斜检测模块(MPU6050)
9)执行器控制模块(风扇、遮阳舵机、LED灯、刹车舵机/电磁铁)
10)音乐播放模块(DFPlayer Mini)
11)蜂鸣器与报警指示模块
12)串口通信模块
电路设计原则:
- 传感器信号稳定:模拟信号需滤波,数字信号需抗干扰。
- 电源合理:风扇、舵机等大电流负载需要独立供电或足够的电源能力。
- 强弱电分离:执行器电流较大,必须合理走线并加去耦电容。
- 模块化:便于调试,传感器与执行器可独立测试。
3.2 单片机最小系统模块
单片机可选用51系列、STC系列、AVR或STM32等。本系统由于涉及I2C通信(MPU6050、BH1750)与多任务控制,若使用51也可实现,但需要更严格的资源规划;如果追求更强扩展性可选用STM32。课程设计常用51,因此以下以51为例说明:
最小系统组成:
1)晶振电路:11.0592MHz或12MHz,保证系统时钟稳定。
2)复位电路:上电复位 + 手动复位按键。
3)去耦电容:0.1uF陶瓷电容贴近VCC与GND。
4)IO口分配:合理规划传感器、显示/报警、执行器、串口等接口。
单片机主要任务:
- 采集传感器数据
- 运行控制算法与阈值判断
- 输出执行器控制信号
- 处理按键或触摸输入
- 执行串口通信与协议解析
- 控制音乐播放模块
3.3 电源管理与稳压模块
智能婴儿车通常由电池供电,例如7.4V锂电池或12V电池组。系统中存在多个不同电压需求模块:
- 单片机与传感器:5V或3.3V
- 舵机:通常5V(电流较大)
- 风扇:5V或12V
- DFPlayer:5V
- LED灯:5V或通过限流驱动
电源设计建议:
1)使用DC-DC降压模块将电池电压稳定降至5V,为控制系统供电。
2)舵机与风扇建议独立供电或在5V电源上加大电容(如1000uF)避免动作瞬间拉低电压导致单片机复位。
3)对3.3V传感器(MPU6050)可使用AMS1117-3.3或DC-DC输出3.3V。
4)电源输入端加防反接保护与保险丝(可扩展),提升安全性。
3.4 尿湿检测模块电路设计
湿度检测模块可采用电阻式湿度传感器输出模拟电压。若单片机无ADC,可采用以下方案:
1)外接ADC芯片(如PCF8591、ADC0808)进行采样。
2)使用带数字输出的湿度模块(比较器输出),直接输出高低电平。
为了简化设计,可选用比较器输出模块:
- 可通过电位器设置触发阈值
- 当湿度达到阈值输出低电平或高电平
- 单片机读取数字信号即可判断尿湿状态
若需要精确湿度值,可采用ADC方案,并在串口中上报数值。
3.5 温度检测模块电路设计(DS18B20)
DS18B20为单总线数字温度传感器,电路设计要点:
- 数据线接单片机IO口
- 数据线需要4.7K上拉电阻到VCC
- VCC与GND附近加0.1uF电容滤波
- 采用外接供电方式更稳定
DS18B20可提供0.5℃或更高精度,适合婴儿车环境温度检测。
3.6 光照检测与遮阳/照明控制模块电路设计
光照检测:
- 光敏电阻与电阻组成分压,输出模拟电压表示光照强度。
- 若使用51无ADC,可外接ADC或使用比较器输出阈值判断。
- 若使用BH1750数字光照传感器,可通过I2C读取光照值,精度更高。
遮阳控制:
- 使用舵机控制遮阳罩角度。舵机输入PWM信号,需5V供电。
- 舵机控制线由单片机PWM输出,建议使用定时器产生50Hz PWM。
照明控制:
- LED灯通过三极管或MOSFET驱动,避免IO口直接带载。
- 若要调光可采用PWM控制LED亮度。
3.7 速度检测模块电路设计(霍尔传感器)
速度检测通过霍尔传感器检测车轮磁铁,输出脉冲信号。电路要点:
- 霍尔传感器输出接外部中断引脚(INT0/INT1)
- 输出需上拉电阻(如10K)
- 信号线可加小电容滤波,减少干扰
- 软件加入最小脉冲间隔过滤抖动
速度计算可采用周期测量法,提高低速精度。
3.8 触摸检测模块电路设计
触摸检测用于判断是否有人推车。可选方案:
1)TTP223触摸模块:输出数字高低电平,电路简单。
2)压力传感器:更接近真实推车握力检测,但需要ADC。
推荐TTP223:
- VCC/GND供电
- OUT接单片机IO
- 触摸有效输出高电平
安装位置:推把表面或握把内部。
3.9 倾斜检测模块电路设计(MPU6050)
MPU6050通过I2C与单片机通信,电路要点:
- VCC一般为3.3V
- SCL/SDA需上拉电阻(4.7K)
- 模块靠近车体中心位置安装,避免局部震动影响过大
- 电源旁路电容减少噪声
MPU6050可输出加速度与角速度,通过滤波算法计算倾角。
3.10 执行器控制模块电路设计
执行器包括:
- 风扇(降温)
- 遮阳舵机(车罩调整)
- LED灯(照明)
- 刹车舵机/电磁制动(安全刹车)
驱动方式:
1)风扇:通过MOSFET或三极管开关控制,必要时加续流二极管。
2)舵机:PWM控制,电源独立并加大电容。
3)LED:三极管或MOSFET驱动,支持PWM调光。
4)刹车:舵机拉动刹车机构,或电磁铁制动,均需单片机控制输出。
执行器属于大电流设备,电源设计与布线要合理,否则会引发单片机复位或传感器数据异常。
3.11 音乐播放模块电路设计(DFPlayer Mini)
DFPlayer Mini模块电路要点:
- 供电5V,建议加电容滤波
- TX/RX与单片机串口连接(可用软串口或与通信串口复用)
- 接扬声器或功放模块输出音频
- TF卡存储音乐文件
为了避免串口冲突,可选择:
- 单片机主串口用于上位机通信
- 软串口用于DFPlayer控制
或使用多串口单片机(如STC15系列)更方便。
3.12 串口通信模块电路设计
串口用于状态上报与远程监控:
- 单片机TXD/RXD连接USB转TTL模块
- 或连接蓝牙模块HC-05/HC-06实现无线串口
- 串口波特率可设为9600或115200
为了提高可靠性,通信协议应有帧头帧尾并可加入简单校验。
4 系统程序设计
4.1 软件总体架构设计
由于系统功能多、传感器数量多,推荐采用"定时任务 + 状态机 + 中断驱动"混合架构:
1)定时器提供系统节拍(如1ms、10ms、100ms)。
2)外部中断用于霍尔速度采集(车轮脉冲捕获)。
3)主循环执行:
- 传感器采样任务
- 阈值判断与执行器控制
- 报警与提示
- 串口上报任务
- 音乐控制任务
任务调度建议:
- 10ms:按键/触摸检测、蜂鸣器状态机
- 100ms:速度计算更新、光照判断
- 500ms:温度采样、湿度采样、倾角计算
- 1s:串口上报
采用该结构可避免大量阻塞延时,使系统能及时响应倾斜报警与溜车刹车等安全事件。
4.2 数据结构与参数管理
系统需要大量参数与状态变量,建议使用结构体分类管理:
1)环境状态:温度、湿度、光照
2)运动状态:速度、触摸状态、刹车状态
3)安全状态:尿湿报警、超温、倾斜报警
4)执行器状态:风扇、灯光、遮阳角度、音乐播放
5)通信状态:上报周期、命令解析缓冲
数值表示建议采用定点数:
- 温度以0.1℃存储
- 速度以0.1km/h存储
- 光照可用ADC值或Lux整数
这样更适合单片机运算。
4.3 尿湿检测模块程序设计
尿湿检测程序流程:
1)周期读取湿度值或湿度模块数字输出。
2)与阈值比较并使用连续判定:
- 连续3次超过阈值 → 尿湿报警成立
- 连续3次低于阈值 → 恢复正常
3)尿湿报警成立后: - 蜂鸣器短鸣提示
- LED闪烁提示
- 串口发送尿湿状态字段
尿湿属于舒适性提醒功能,报警方式可设计为较温和的提示音。
4.4 温度检测与风扇控制模块程序设计
温度采样:读取DS18B20温度值。
风扇控制逻辑:
- temp >= TH_HIGH:风扇打开
- temp <= TH_LOW:风扇关闭
其中TH_LOW = TH_HIGH - 2℃形成回差。
此外应考虑异常值检测:
- 温度读取失败或不合理(如-55℃、125℃)判定传感器异常,进入安全模式并上报错误。
4.5 光照检测与遮阳/照明控制模块程序设计
光照检测:读取ADC或数字光照传感器值。
控制策略:
- 光照强:遮阳展开,灯光关闭
- 光照弱:遮阳收回或半开,灯光开启
为了避免频繁动作,可加入延时判定,例如光照持续强/弱1秒才执行动作。
遮阳舵机控制:
-
根据光照等级设置不同角度,例如:
- 强光:90°(展开)
- 中光:45°
- 弱光:0°(收回)
灯光控制:
- 夜间开启,可用PWM调光以减少刺眼。
4.6 音乐播放模块程序设计
音乐控制可设计为:
1)播放/暂停按键
2)下一曲按键
3)串口命令控制
4)默认自动播放(可选,例如婴儿哭闹时播放,扩展)
DFPlayer控制流程:
- 初始化模块,设置音量
- 发送播放命令
- 发送暂停/下一曲命令
- 发送停止命令
为避免与上位机通信冲突,应设计串口资源分配或使用软串口。
4.7 速度检测与安全刹车模块程序设计
速度检测:通过霍尔外部中断记录脉冲间隔计算速度。
安全刹车逻辑:
- 若触摸无效(无人推车)且速度 > 阈值(如0.5km/h),持续500ms则触发刹车。
- 触发后刹车舵机转到制动角度,或电磁铁制动。
- 若检测到触摸有效或速度归零,解除刹车。
为避免误刹车,可加入条件:
- 刹车触发后最短保持1秒
- 解除需满足触摸有效或速度持续为0一段时间
4.8 倾斜检测与报警模块程序设计
MPU6050采样加速度数据,通过简化算法计算倾角:
- roll = arctan(Ay/Az)
- pitch = arctan(Ax/Az)
在单片机中可使用近似算法或查表,课程设计中也可只用阈值比较加速度分量实现倾斜判断。
报警逻辑:
- |roll| > 30° 或 |pitch| > 30° 持续200ms触发报警
- 蜂鸣器连续响,LED快速闪烁
- 串口上报ALARM字段
- 倾斜恢复后延时解除报警
倾斜报警属于高优先级安全功能,应在主循环中优先处理。
4.9 串口通信协议与上报模块程序设计
串口上报建议采用固定周期发送:
- 每1秒发送一次状态帧
- 若触发报警(倾斜/超温/溜车刹车)可立即发送一次紧急帧
协议示例:
#T:285,H:1,L:320,F:1,LED:1,S:12,TO:0,BR:1,TI:5,AL:0*
其中:
- T:温度(0.1℃)
- H:尿湿状态(0/1)
- L:光照值
- F:风扇状态
- LED:灯光状态
- S:速度(0.1km/h)
- TO:触摸状态
- BR:刹车状态
- TI:倾斜角(简化)
- AL:报警状态
接收命令(可扩展):
@MUSIC,PLAY@MUSIC,PAUSE@LIGHT,ON@FAN,AUTO
命令解析建议使用帧头帧尾加缓冲,避免半帧解析错误。
5 关键程序代码示例(单片机C语言,任务调度+状态上报)
c
#include <reg52.h>
#include <string.h>
/* ========= IO定义(示例) ========= */
sbit FAN = P1^0;
sbit LED_L = P1^1;
sbit BEEP = P1^2;
sbit TOUCH = P3^0; // 触摸输入,1表示有人
sbit WET_IN = P3^1; // 尿湿输入,1表示湿
/* 霍尔传感器接 INT0(P3.2),MPU6050/BH1750通过I2C(软件模拟) */
/* 舵机PWM输出(遮阳/刹车) */
sbit SERVO_SUN = P2^0;
sbit SERVO_BRAKE= P2^1;
/* ========= 参数 ========= */
#define TEMP_HIGH 320 // 32.0℃
#define TEMP_LOW 300 // 30.0℃
#define SPEED_TH 5 // 0.5km/h(0.1km/h单位)
/* ========= 系统变量 ========= */
volatile unsigned int ms_tick = 0;
bit flag_10ms = 0, flag_100ms = 0, flag_500ms = 0, flag_1s = 0;
unsigned int temp_x10 = 280; // 28.0℃
unsigned int light_val = 300; // 光照模拟值
unsigned int speed_x10 = 0; // 速度0.1km/h
bit wet_flag = 0;
bit tilt_alarm = 0;
bit brake_on = 0;
/* 串口发送 */
void uart_send_char(char c) {
SBUF = c;
while(!TI);
TI = 0;
}
void uart_send_str(char *s) {
while(*s) uart_send_char(*s++);
}
/* ========= 定时器0 1ms ========= */
void timer0_init(void) {
TMOD |= 0x01;
TH0 = 0xFC;
TL0 = 0x66;
ET0 = 1;
EA = 1;
TR0 = 1;
}
void timer0_isr(void) interrupt 1 {
TH0 = 0xFC;
TL0 = 0x66;
ms_tick++;
if(ms_tick % 10 == 0) flag_10ms = 1;
if(ms_tick % 100 == 0) flag_100ms = 1;
if(ms_tick % 500 == 0) flag_500ms = 1;
if(ms_tick % 1000 == 0) flag_1s = 1;
}
/* ========= 串口初始化 ========= */
void uart_init(void) {
SCON = 0x50;
TMOD |= 0x20;
TH1 = 0xFD; TL1 = 0xFD; // 9600bps@11.0592MHz
TR1 = 1;
}
/* ========= 传感器读取(示例占位) ========= */
unsigned int Read_Temp_x10(void) {
return temp_x10; // 实际应读取DS18B20
}
unsigned int Read_Light(void) {
return light_val; // 实际应读取ADC/BH1750
}
unsigned int Read_Speed_x10(void) {
return speed_x10; // 实际应由霍尔中断计算
}
bit Read_Wet(void) {
return WET_IN ? 1 : 0;
}
bit Read_Touch(void) {
return TOUCH ? 1 : 0;
}
/* ========= 温度风扇控制 ========= */
void Temp_Fan_Control(void) {
if(temp_x10 >= TEMP_HIGH) FAN = 1;
else if(temp_x10 <= TEMP_LOW) FAN = 0;
}
/* ========= 光照遮阳与照明控制(简化) ========= */
void Light_Control(void) {
if(light_val > 700) { // 强光
LED_L = 0; // 关闭灯
/* 舵机遮阳展开:此处省略PWM实现 */
} else if(light_val < 200) { // 弱光
LED_L = 1; // 开灯
/* 舵机遮阳收回 */
}
}
/* ========= 安全刹车控制 ========= */
void Brake_Control(void) {
static unsigned char cnt = 0;
bit touch = Read_Touch();
if(!touch && speed_x10 > SPEED_TH) {
if(cnt < 5) cnt++;
else {
brake_on = 1;
/* 刹车舵机动作:此处省略PWM实现 */
}
} else {
cnt = 0;
if(touch || speed_x10 == 0) brake_on = 0;
}
}
/* ========= 倾斜报警(简化为外部标志) ========= */
void Tilt_Check(void) {
/* 实际应读取MPU6050计算角度,这里简化 */
if(tilt_alarm) {
BEEP = 1;
}
}
/* ========= 状态上报 ========= */
void Report_Task_1s(void) {
char msg[100];
char buf[10];
strcpy(msg, "#");
/* 温度 */
strcat(msg, "T:");
sprintf(buf, "%u", temp_x10);
strcat(msg, buf);
/* 尿湿 */
strcat(msg, ",W:");
strcat(msg, wet_flag ? "1" : "0");
/* 光照 */
strcat(msg, ",L:");
sprintf(buf, "%u", light_val);
strcat(msg, buf);
/* 风扇 */
strcat(msg, ",F:");
strcat(msg, FAN ? "1" : "0");
/* 灯 */
strcat(msg, ",LED:");
strcat(msg, LED_L ? "1" : "0");
/* 速度 */
strcat(msg, ",S:");
sprintf(buf, "%u", speed_x10);
strcat(msg, buf);
/* 触摸 */
strcat(msg, ",TO:");
strcat(msg, Read_Touch() ? "1" : "0");
/* 刹车 */
strcat(msg, ",BR:");
strcat(msg, brake_on ? "1" : "0");
/* 倾斜报警 */
strcat(msg, ",AL:");
strcat(msg, tilt_alarm ? "1" : "0");
strcat(msg, "*\r\n");
uart_send_str(msg);
}
void main(void) {
FAN = 0; LED_L = 0; BEEP = 0;
uart_init();
timer0_init();
while(1) {
if(flag_100ms) {
flag_100ms = 0;
speed_x10 = Read_Speed_x10();
light_val = Read_Light();
Light_Control();
Brake_Control();
}
if(flag_500ms) {
flag_500ms = 0;
temp_x10 = Read_Temp_x10();
wet_flag = Read_Wet();
Temp_Fan_Control();
}
if(flag_10ms) {
flag_10ms = 0;
if(tilt_alarm) BEEP = !BEEP; // 倾斜报警蜂鸣器闪烁
else if(wet_flag) BEEP = 1; // 尿湿提示(可优化为间歇)
else BEEP = 0;
}
if(flag_1s) {
flag_1s = 0;
Report_Task_1s();
}
}
}
6 系统可靠性设计与安全策略
6.1 多传感器融合的稳定性问题
智能婴儿车系统涉及多个传感器,户外环境中温度变化快、光照变化大、震动干扰强,因此必须进行稳定性设计:
1)采样滤波:温度、光照、湿度均应采用滑动平均或递推滤波,避免瞬时波动误判。
2)连续判定:尿湿、倾斜、溜车等事件应连续满足条件才触发,降低误触发概率。
3)任务分频:不同传感器采样周期不同,避免所有任务集中在同一时刻执行导致卡顿。
6.2 安全刹车与倾斜报警的优先级管理
在所有功能中,安全刹车与倾斜报警属于最高优先级:
1)一旦满足溜车条件必须立即刹车,即使音乐播放或光照调节正在执行,也应优先响应。
2)倾斜报警属于严重风险,触发后应持续报警直到倾斜解除,同时可联动刹车以防翻倒进一步滑动。
3)可设计多级报警:轻微倾斜提示音、严重倾斜连续报警。
6.3 电源与执行器干扰抑制
风扇、舵机、刹车执行器属于大电流负载,会产生电源波动。设计建议:
1)舵机供电独立,增加1000uF以上电容缓冲。
2)电源采用DC-DC模块,提高瞬态响应能力。
3)传感器供电单独滤波,避免噪声进入采样。
4)PCB或布线时强电线远离I2C信号线与温度传感器数据线。
6.4 通信可靠性设计
串口上报在干扰环境下可能丢帧或乱码,因此建议:
1)使用帧头帧尾确定帧边界。
2)加入简单校验和或CRC(扩展)。
3)对重要报警事件立即上报并可重复发送三次,确保接收端获取。
4)接收命令时采用缓冲与超时机制,避免粘包与半帧误解析。
7 系统总结与扩展方向
7.1 系统设计总结
基于单片机的多功能智能婴儿车系统设计,通过湿度、温度、光照、速度、触摸、倾斜等多种传感器实现尿湿提醒、自动降温、遮阳与照明调节、音乐播放、安全刹车、倾斜报警与串口状态通信等功能。该系统在舒适性与安全性方面具有明显提升,能够实时感知环境与车体状态并自动执行控制动作,同时通过通信功能实现远程监控与管理。硬件采用模块化设计,软件采用任务调度与安全优先策略,结构清晰、可维护性强,适合智能母婴设备原型开发与教学项目实践。
7.2 可扩展功能方向
本系统具有良好扩展性,可进一步升级:
1)加入蓝牙/WiFi模块,实现手机APP实时监控与控制。
2)加入GPS定位与电子围栏,防止婴儿车走失或超出安全范围。
3)加入哭声检测模块,自动播放音乐或提醒家长。
4)加入电池电量检测与低电量报警,保证系统长期可靠运行。
5)加入摄像头模块,实现视频监控与远程看护。
6)增加更多安全传感器,如门锁、座椅安全带检测等。
8 结论
本设计实现了一套基于单片机的多功能智能婴儿车系统,能够完成尿湿检测提醒、温度自动调节降温、光照智能遮阳与照明、音乐播放安抚、安全刹车防溜车、倾斜报警防侧翻以及串口状态通信等功能。系统具有较强的实用性与安全性,硬件结构清晰,软件设计模块化并具备多任务处理能力,可作为智能母婴设备开发的基础平台,也可用于单片机课程设计与毕业设计的综合性项目实现。