基于STM32的智能婴儿床设计与实现

摘要

随着社会生活节奏的加快和育儿理念的升级,传统婴儿床已难以满足现代父母对婴儿照护的便捷性、安全性和智能化需求。本文设计并实现了一款基于STM32F103C8T6单片机的智能婴儿床系统,整合了环境监测、智能控制、模式切换、蓝牙远程交互等多项核心功能,旨在减轻父母照护负担,为婴儿提供安全、舒适的睡眠环境。系统以STM32F103C8T6单片机为控制核心,搭载多种传感器实现婴儿床周边温湿度、婴儿啼哭、尿床、撞击震动等信息的实时采集,通过OLED显示屏同步显示各类环境数据;支持自动/手动模式切换,自动模式下可根据环境参数和婴儿状态实现风扇、加热片、摇床、音乐播放等设备的自适应控制,手动模式下可通过按键直接操控各类设备;借助BT04A蓝牙模块实现与手机APP的通信,支持远程查看环境信息和下发控制指令。本文详细阐述了系统的总体设计、硬件选型与电路设计、软件编程实现及系统调试过程,测试结果表明,该系统运行稳定、响应迅速,各项功能均达到设计要求,操作便捷、安全性高,具有较高的实用性和推广价值。

关键词:STM32F103C8T6;智能婴儿床;环境监测;自动控制;蓝牙APP;婴儿照护

Abstract

With the acceleration of social life rhythm and the upgrading of parenting concepts, traditional baby cribs can no longer meet the needs of modern parents for convenience, safety and intelligence in baby care. This paper designs and implements an intelligent baby crib system based on STM32F103C8T6 single-chip microcomputer, integrating multiple core functions such as environmental monitoring, intelligent control, mode switching and Bluetooth remote interaction, aiming to reduce the burden of parents' care and provide a safe and comfortable sleeping environment for babies. The system takes STM32F103C8T6 single-chip microcomputer as the control core, is equipped with a variety of sensors to realize real-time collection of information such as temperature and humidity around the baby crib, baby crying, bedwetting and impact vibration, and synchronously displays various environmental data through OLED display screen; it supports automatic/manual mode switching. In automatic mode, it can realize adaptive control of equipment such as fans, heating sheets, crib shaking and music playback according to environmental parameters and baby status. In manual mode, various equipment can be directly controlled through buttons; it realizes communication with mobile APP with the help of BT04A Bluetooth module, supporting remote viewing of environmental information and issuing control instructions. This paper details the overall design of the system, hardware selection and circuit design, software programming implementation and system debugging process. The test results show that the system runs stably, responds quickly, all functions meet the design requirements, is easy to operate and has high safety, and has high practicality and promotion value.

Key words: STM32F103C8T6; Intelligent Baby Crib; Environmental Monitoring; Automatic Control; Bluetooth APP; Baby Care

第一章 绪论

1.1 研究背景与意义

近年来,随着人工智能、嵌入式技术和物联网技术的快速发展,智能化产品逐渐渗透到人们生活的各个领域,育儿领域也不例外。婴儿作为家庭的核心,其照护质量直接关系到家庭幸福和婴儿的健康成长。传统婴儿床仅具备基本的睡眠功能,缺乏环境监测、智能响应和远程交互能力,父母需要时刻守在婴儿身边,实时关注婴儿的状态和周边环境变化,不仅耗费大量时间和精力,还可能因疏忽导致婴儿出现安全隐患(如尿床后未及时处理、环境温湿度不适、婴儿撞击受伤等)。

基于STM32的智能婴儿床系统,针对传统婴儿床的痛点,整合了环境监测、智能控制和远程交互功能,能够自动感知婴儿状态和环境变化,实现自适应调节和异常报警,同时支持父母通过蓝牙APP远程查看和控制,有效减轻父母的照护负担,提升婴儿照护的便捷性和安全性。本研究的开展,不仅为嵌入式技术、传感器技术在育儿领域的应用提供了实践参考,还能推动智能育儿产品的发展,满足现代家庭的育儿需求,具有重要的理论研究价值和实际应用意义。

1.2 国内外研究现状

国外智能婴儿床产业起步较早,欧美、日本等发达国家已推出多款智能化程度较高的产品,如带有睡眠监测、哭声识别、自动摇床功能的智能婴儿床,部分产品还支持与家庭智能系统联动,实现温湿度自动调节、远程视频监控等功能。这些产品设计人性化、安全性高,但价格昂贵,且部分功能与国内家庭的育儿习惯不匹配,难以在国内广泛普及。

国内智能婴儿床产业近年来发展迅速,随着育儿需求的升级,众多企业和科研机构纷纷布局智能育儿领域,推出了一系列性价比高的智能婴儿床产品。目前国内研究多集中于基于单片机的智能控制,重点关注温湿度监测、哭声识别和自动摇床等基础功能,但部分系统存在传感器响应不灵敏、智能联动逻辑不完善、蓝牙通信不稳定、操作复杂等问题,难以完全满足父母的照护需求。因此,设计一款功能完善、运行稳定、操作便捷、性价比高的智能婴儿床,具有重要的市场价值和应用前景。

1.3 研究内容与目标

1.3.1 研究内容

本文主要围绕基于STM32的智能婴儿床系统展开研究,具体研究内容如下:

  • 系统总体方案设计:明确系统的功能需求、性能指标,设计系统的总体架构(硬件架构和软件架构),确定硬件选型原则和软件设计思路。
  • 硬件设计:根据功能需求和材料清单,选型核心元器件,设计单片机最小系统、传感器接口电路、显示电路、执行器驱动电路、蓝牙通信电路等,完成硬件焊接与搭建。
  • 软件设计:基于Keil MDK开发环境,采用C语言编写STM32单片机控制程序,包括传感器数据采集与处理、OLED显示、按键控制、模式切换、智能联动控制、蓝牙通信与APP对接、阈值设置等功能模块程序。
  • 系统调试与测试:搭建系统测试环境,对硬件电路、软件程序进行分模块调试,对系统的各项功能、性能进行全面测试,验证系统的稳定性和可靠性,针对测试中出现的问题进行优化改进。

1.3.2 研究目标

本研究的目标是设计并实现一款功能完善、运行稳定、操作便捷的智能婴儿床系统,具体目标如下:

  • 实现多维度环境与状态采集:准确采集婴儿床周边温湿度、婴儿啼哭、婴儿尿床、撞击震动等信息,确保数据采集的实时性和准确性。
  • 实现数据实时显示:通过OLED显示屏清晰、直观地显示采集到的各类环境信息和系统工作状态,便于用户本地查看。
  • 实现模式切换功能:支持自动模式与手动模式的自由切换,切换过程稳定,模式状态同步显示。
  • 实现自动智能控制:自动模式下,根据温湿度阈值实现风扇、加热片的自适应控制;根据婴儿啼哭、尿床、撞击震动等状态,实现音乐播放、摇床、蓝牙报警等联动操作。
  • 实现手动控制功能:手动模式下,用户可通过按键直接控制加热片、风扇、摇床、音乐播放等设备的启停。
  • 实现阈值调节功能:支持温度上限、温度下限、湿度阈值的手动设置,调节后自动保存,重启系统后阈值不丢失。
  • 实现蓝牙远程交互:通过蓝牙APP接收所有环境信息,下发控制指令,实现远程监控与控制,通信稳定、响应迅速。

1.4 论文结构安排

本文共分为6章,具体结构安排如下:

  • 第一章 绪论:阐述研究背景与意义、国内外研究现状、研究内容与目标及论文结构安排,为全文研究奠定基础。
  • 第二章 系统总体方案设计:明确系统功能需求,设计系统总体架构,确定硬件选型原则和软件设计思路,绘制系统总体框图。
  • 第三章 系统硬件设计:详细介绍各元器件的选型依据,设计各功能模块的硬件电路,完成硬件搭建与初步调试。
  • 第四章 系统软件设计:分模块编写软件程序,包括主程序、传感器数据采集程序、OLED显示程序、按键控制程序、模式控制程序、智能联动程序、蓝牙通信程序等,完成软件调试。
  • 第五章 系统调试与测试:搭建测试环境,对硬件、软件进行分模块调试,对系统各项功能和性能进行全面测试,分析测试结果。
  • 第六章 总结与展望:总结本文的研究成果,分析系统存在的不足,并对未来的改进方向进行展望。

第二章 系统总体方案设计

2.1 系统功能需求分析

结合用户需求和婴儿照护的实际场景,本系统需实现环境采集、数据显示、模式切换、自动控制、手动控制、阈值调节、蓝牙APP交互七大核心功能,具体功能需求如下:

  • 环境与状态采集功能:通过DHT11温湿度传感器采集婴儿床周边温湿度数据;通过声音传感器采集婴儿啼哭信号;通过雨滴传感器检测婴儿尿床情况;通过震动传感器检测婴儿撞击震动情况,采集周期可调节,数据采集准确、实时。
  • 显示功能:将采集到的温湿度、婴儿状态(啼哭、尿床、震动)、系统工作模式、阈值参数等信息,实时显示在OLED显示屏上,显示界面清晰、直观,支持数据刷新显示。
  • 模式切换功能:通过独立按键实现自动模式与手动模式的切换,切换过程稳定,模式状态在OLED屏幕上同步显示,便于用户确认当前工作模式。
  • 自动模式功能:自动模式下,系统实时对比温湿度数据与预设阈值,温度超过上限时开启风扇降温,温度低于下限时开启加热片加热,湿度超过阈值时开启风扇除湿;声音传感器检测到婴儿啼哭时,自动控制JR6001语音模块通过扬声器播放安抚音乐,并控制步进电机带动摇床晃动;雨滴传感器检测到尿床时,通过BT04A蓝牙模块向手机APP发送报警信息;震动传感器检测到撞击震动时,通过蓝牙发送报警信息,并触发有源蜂鸣器报警,提醒父母及时处理。
  • 手动模式功能:手动模式下,用户可通过独立按键分别控制加热片、风扇、摇床、音乐播放的启停,操作响应迅速,便于用户根据实际需求手动调控。
  • 阈值调节功能:通过按键可分别设置温度上限、温度下限、湿度阈值,调节过程中实时显示当前阈值,调节完成后自动保存至单片机Flash存储器,重启系统后阈值不丢失。
  • 蓝牙APP交互功能:通过BT04A蓝牙模块连接手机APP,实现双向通信,APP可实时接收系统上传的温湿度、婴儿状态等信息,用户可通过APP下发控制指令(如模式切换、设备控制、阈值设置),实现远程监控与控制。

2.2 系统总体架构设计

本系统采用“硬件层-软件层-交互层”三层架构设计,以STM32F103C8T6单片机为核心控制单元,实现各模块的协同工作,总体架构如图2-1所示(论文中需补充架构图)。

2.2.1 硬件层

硬件层是系统的基础,负责环境与状态数据采集、设备驱动、数据显示和通信传输,主要包括核心控制模块、传感器模块、显示模块、执行器模块、按键模块、蓝牙通信模块和电源模块七大模块。各模块相互独立又协同工作,为系统功能实现提供硬件支撑。

2.2.2 软件层

软件层运行在STM32单片机上,是系统的“控制核心”,负责控制各硬件模块的运行、数据的采集与处理、逻辑判断与智能联动、与蓝牙APP的通信等。软件层采用模块化设计,将不同功能封装为独立的函数,便于程序的编写、调试、修改和扩展。

2.2.3 交互层

交互层包括OLED本地显示和蓝牙APP远程交互两部分,负责实现用户与系统的信息交互。本地通过OLED显示屏查看数据和系统状态,通过按键进行操作;远程通过手机APP查看数据、下发控制指令,实现便捷的远程照护。

2.3 硬件选型原则

结合智能婴儿床的使用场景(婴儿照护,需安全、稳定、低功耗)和用户提供的材料清单,硬件选型遵循以下原则:

  • 安全性:选型的元器件需符合安全标准,低功耗、无辐射,避免对婴儿造成伤害,如选用低压供电元器件、无异味材料。
  • 实用性:选型的元器件需满足系统功能需求,性能稳定,能够适应婴儿房的环境条件(温度、湿度范围)。
  • 性价比:在满足性能和安全要求的前提下,优先选择价格合理、性价比高的元器件,降低系统整体成本,便于推广。
  • 兼容性:各元器件之间需相互兼容,接口标准化,便于电路设计、软件调试和后期维护。
  • 易获取性:选择市场上常见、易采购的元器件,结合用户提供的材料清单,确保硬件搭建顺利进行。

2.4 软件设计思路

软件设计采用模块化、结构化的设计思路,基于Keil MDK5开发环境,使用C语言编写程序,主要分为主程序和各功能子模块程序。主程序负责初始化各模块、调度各子模块运行、处理异常情况;各功能子模块程序负责实现具体的功能,如传感器数据采集、OLED显示、按键处理、模式控制等。

软件设计流程如下:系统上电后,首先进行系统初始化,包括单片机GPIO初始化、串口初始化、传感器初始化、OLED初始化、蓝牙模块初始化、Flash存储器初始化等;初始化完成后,系统进入主循环,在主循环中依次执行传感器数据采集与处理、OLED数据显示、按键扫描与处理、模式判断与执行、蓝牙通信与APP对接、数据存储等操作,实现系统的连续运行。当检测到异常情况(如传感器故障、蓝牙连接断开)时,系统会进行异常处理,确保系统稳定运行。

第三章 系统硬件设计

3.1 核心控制模块设计

3.1.1 元器件选型

核心控制模块选用STM32F103C8T6最小系统板,该单片机是ST公司推出的基于ARM Cortex-M3内核的32位微控制器,具有以下优点:主频高达72MHz,运算速度快,能够满足系统多任务处理需求(如多传感器数据采集、多设备联动控制);拥有丰富的GPIO接口、串口、I2C等通信接口,便于连接各传感器和外设;功耗低、体积小,适合嵌入智能婴儿床的狭小空间;资料丰富,开发工具成熟,便于程序编写和调试;性价比高,符合系统的成本需求。

3.1.2 最小系统电路设计

STM32F103C8T6最小系统电路主要包括电源电路、复位电路和晶振电路三部分,是单片机正常工作的基础,结合最小系统板的现成设计,补充接口扩展,便于连接各功能模块。

  • 电源电路:采用5V直流电源供电,通过AMS1117-3.3V稳压芯片将5V电压稳压至3.3V,为单片机和其他需要3.3V供电的模块(如OLED、蓝牙模块)提供稳定的电源,同时加入滤波电容,减少电源噪声,保证电路稳定运行,避免电压波动影响系统性能。
  • 复位电路:采用上电复位与手动复位相结合的方式,上电时通过电容充电实现自动复位,手动复位通过按键实现,当系统出现异常时,按下复位键可使系统重新启动,确保系统稳定运行。
  • 晶振电路:选用8MHz外部晶振,通过晶振和电容组成振荡电路,为单片机提供稳定的时钟信号,时钟信号经过单片机内部倍频后,为各模块的运行提供时序支持,确保数据采集和设备控制的同步性。

最小系统电路及接口扩展如图3-1所示(论文中需补充电路原理图)。

3.2 传感器模块设计

传感器模块负责采集婴儿床周边的环境参数和婴儿状态信息,是系统实现智能控制的核心,结合材料清单,选用5种传感器,各传感器接口电路设计如下:

3.2.1 DHT11温湿度传感器

DHT11是一款数字式温湿度传感器,具有精度高、响应快、接线简单、成本低等优点,测量范围为温度0-50℃,湿度20%-90%RH,适合婴儿房的温湿度检测。该传感器采用单总线通信方式,只需将其DATA引脚连接至STM32的GPIO引脚,通过软件模拟单总线协议,即可实现温湿度数据的采集。电路设计中,在DATA引脚与3.3V电源之间串联一个10KΩ的上拉电阻,保证通信的稳定性,避免数据传输错误。

3.2.2 声音传感器

选用模拟式声音传感器模块,该模块内置麦克风,能够检测周围环境的声音强度,当婴儿啼哭时,声音强度超过预设阈值,传感器输出模拟电压信号。将传感器的OUT引脚连接至STM32的ADC引脚,通过ADC采集电压值,经过软件处理,判断是否检测到婴儿啼哭。电路中加入电位器,可调节传感器的灵敏度,适应不同的环境噪音场景,避免误触发。

3.2.3 震动传感器

选用弹簧式震动传感器,该传感器结构简单、灵敏度高,当婴儿撞击到婴儿床时,传感器内部弹簧触点接触,输出低电平信号;无震动时,输出高电平信号。将传感器的OUT引脚连接至STM32的GPIO引脚,通过检测引脚电平变化,判断是否发生撞击震动。电路中加入滤波电容,减少外界干扰,确保检测的准确性。

3.2.4 雨滴传感器

雨滴传感器用于检测婴儿尿床情况,该传感器采用模拟信号输出,当传感器表面接触到尿液(水分)时,其阻值会随水分含量的增加而减小,输出电压随之变化。将传感器的OUT引脚连接至STM32的ADC引脚,通过ADC采集电压值,经过软件校准,判断是否发生尿床。电路中加入电位器,可调节传感器的检测阈值,适应不同的尿床程度检测需求。

3.3 显示模块设计

3.3.1 元器件选型

显示模块选用4针IIC协议的OLED显示屏(0.96英寸),该屏幕具有分辨率高(128*64)、功耗低、对比度高、响应快、无背光也可清晰显示等优点,适合用于显示环境数据和系统状态,且体积小、接线简单,便于嵌入智能婴儿床中。IIC通信方式仅需SDA、SCL两根信号线即可与STM32单片机连接,节省GPIO接口资源,简化电路设计。

3.3.2 接口电路设计

OLED显示屏的VCC引脚接3.3V电源,GND引脚接地,SDA引脚连接至STM32的I2C_SDA引脚,SCL引脚连接至STM32的I2C_SCL引脚,通过I2C通信协议,STM32单片机向OLED屏幕发送显示指令和数据,实现温湿度、婴儿状态、模式状态、阈值等信息的实时显示。电路设计中,在电源引脚与地之间加入滤波电容,减少电源干扰,保证显示稳定,避免出现花屏、闪屏现象。

3.4 执行器模块设计

执行器模块负责接收STM32单片机的控制指令,实现风扇、加热片、摇床、音乐播放、蜂鸣器报警等功能,主要包括风扇驱动电路、加热片驱动电路、步进电机驱动电路、语音模块驱动电路、蜂鸣器驱动电路,由于部分执行器(如加热片、风扇)工作电流较大,需通过继电器驱动,确保电路安全稳定。

3.4.1 风扇驱动电路

风扇模块采用5V直流风扇,由于STM32单片机的GPIO引脚输出电流较小,无法直接驱动风扇,因此通过继电器实现驱动。将STM32的GPIO引脚连接至继电器的控制端,继电器的输出端连接风扇和5V电源,当GPIO引脚输出高电平时,继电器导通,风扇通电运行;输出低电平时,继电器截止,风扇停止运行。电路中加入二极管,防止继电器线圈断电时产生的反向电动势损坏单片机。

3.4.2 PTC加热片驱动电路

PTC加热片采用5V供电,功率较大,同样通过继电器驱动。将STM32的GPIO引脚连接至继电器控制端,继电器输出端连接PTC加热片和5V电源,通过控制GPIO引脚的电平变化,实现加热片的启停控制。电路中加入限流电阻和温度保护元件,防止加热片过热,确保使用安全,避免烫伤婴儿。

3.4.3 步进电机驱动电路

选用28BYJ-48步进电机,用于带动婴儿床晃动(摇床功能),该电机体积小、扭矩适中、功耗低,适合智能婴儿床的使用。由于STM32单片机无法直接驱动步进电机,选用ULN2003驱动芯片,该芯片是一款高耐压、大电流的达林顿管阵列,能够将单片机输出的弱信号放大,驱动步进电机正常运行。将STM32的4个GPIO引脚分别连接至ULN2003的输入端,ULN2003的输出端连接至步进电机的4个引脚,通过控制GPIO引脚的电平变化,实现步进电机的正反转、启停和转速调节,从而控制摇床的晃动速度和幅度。

3.4.4 JR6001语音模块与扬声器驱动电路

JR6001语音模块用于存储和播放安抚音乐,该模块支持串口通信,可通过STM32单片机发送指令控制音乐的播放、暂停和切换。将STM32的USART_TX引脚连接至JR6001模块的RX引脚,USART_RX引脚连接至JR6001模块的TX引脚,通过串口发送指令,控制模块播放预设的安抚音乐。扬声器通过音频接口连接至JR6001模块的输出端,实现音乐的播放,电路中加入限流电阻,保护扬声器,调节音量大小。

3.4.5 有源蜂鸣器驱动电路

选用有源蜂鸣器,无需外部振荡电路,只需提供合适的电压即可发声,用于婴儿撞击震动时的报警。采用NPN三极管驱动,STM32的GPIO引脚输出高电平时,三极管导通,蜂鸣器通电发声;输出低电平时,三极管截止,蜂鸣器停止发声。电路中加入限流电阻,保护蜂鸣器和三极管,确保报警功能稳定可靠,同时控制蜂鸣器音量,避免惊吓到婴儿。

3.4.6 大功率LED灯模块驱动电路

大功率LED灯模块用于婴儿床的辅助照明,采用5V供电,通过NPN三极管驱动,STM32的GPIO引脚输出高电平时,三极管导通,LED灯点亮;输出低电平时,三极管截止,LED灯熄灭。电路中串联一个限流电阻,防止电流过大损坏LED灯,同时保护三极管,可通过按键或蓝牙APP控制LED灯的启停。

3.5 按键模块设计

按键模块用于实现模式切换、手动控制设备、调节阈值等功能,选用独立按键,共设计8个按键,分别为:模式切换键、加热片启停键、风扇启停键、摇床启停键、音乐播放/暂停键、温度上限调节键、温度下限调节键、湿度阈值调节键。

每个按键的一端接地,另一端通过10KΩ上拉电阻连接至STM32的GPIO引脚,当按键按下时,GPIO引脚检测到低电平;按键松开时,GPIO引脚检测到高电平,通过软件扫描按键的电平变化,判断按键是否按下及按下的按键类型,执行相应的操作。为防止按键抖动,在软件中加入消抖处理程序(延时消抖或多次检测),确保按键操作的准确性,避免误触发。

3.6 蓝牙通信模块设计

3.6.1 元器件选型

通信模块选用BT04A蓝牙模块,该模块基于蓝牙4.0协议,体积小、功耗低、通信稳定,支持串口通信,能够实现与手机APP的双向数据传输,便于远程查看环境信息和下发控制指令。该模块操作简单,通过AT指令即可配置,与STM32单片机的串口连接便捷,适合智能婴儿床的远程交互需求。

3.6.2 接口电路设计

BT04A蓝牙模块的VCC引脚接3.3V电源,GND引脚接地,TXD引脚连接至STM32的USART_RX引脚,RXD引脚连接至STM32的USART_TX引脚,通过串口通信协议,实现STM32单片机与蓝牙模块之间的数据交互。电路设计中,加入电平转换电路,将STM32的3.3V电平转换为蓝牙模块兼容的电平,同时加入复位引脚,便于模块的重启和初始化,确保蓝牙通信稳定。

3.7 电源模块设计

系统电源模块为整个系统提供稳定的供电,考虑到婴儿床的使用场景,采用5V直流电源供电,可通过USB接口或电源适配器供电,便于家庭使用。电源模块将5V电压分为两路:一路通过AMS1117-3.3V稳压芯片稳压至3.3V,为STM32单片机、OLED屏幕、蓝牙模块、声音传感器、震动传感器等需要3.3V供电的模块供电;另一路直接为风扇、PTC加热片、步进电机、有源蜂鸣器、LED灯等需要5V供电的模块供电。

电路中加入保险丝和滤波电容,防止过流、过压损坏元器件,减少电源噪声,保证系统稳定运行;同时加入电源指示灯,便于用户观察系统的供电状态,及时发现供电异常。

3.8 硬件搭建与初步调试

根据上述硬件电路设计,结合用户提供的材料清单,绘制PCB板原理图和PCB layout,制作PCB板,然后按照元器件清单进行元器件焊接,焊接过程中注意焊接质量,避免虚焊、短路等问题。焊接完成后,对硬件电路进行初步调试,调试内容包括:

  • 电源模块调试:测量各模块的供电电压,确保3.3V和5V电压稳定,无波动,电源指示灯正常亮起。
  • 单片机最小系统调试:通过USB数据线将单片机与电脑连接,下载测试程序,通过串口调试助手接收单片机发送的信息,确认单片机能够正常启动和运行,复位功能正常。
  • 传感器模块调试:分别测试各传感器的采集功能,通过串口打印采集到的数据,确认温湿度、声音、震动、雨滴传感器能够正常采集数据,数据准确、无异常。
  • 显示模块调试:确保OLED屏幕能够正常启动,显示内容清晰、稳定,能够实时显示传感器数据和系统状态。
  • 执行器模块调试:测试风扇、加热片、步进电机、音乐播放、蜂鸣器、LED灯是否能够正常响应控制指令,运行稳定。
  • 蓝牙模块调试:测试BT04A蓝牙模块能否正常启动,与手机APP建立稳定连接,实现数据传输。

针对调试过程中出现的问题,如接触不良、电路短路、传感器无数据、蓝牙连接失败等,及时排查并解决,确保硬件电路正常运行,为后续软件调试奠定基础。

第四章 系统软件设计

4.1 软件开发环境搭建

本系统软件开发基于Keil MDK5开发环境,该环境是ARM系列单片机常用的开发工具,支持C语言和汇编语言编程,具有强大的代码编辑、编译、调试功能,能够满足STM32单片机的开发需求。同时,需要安装STM32F103系列单片机的固件库,固件库中包含了各类外设的驱动函数,便于程序编写,提高开发效率。

软件开发环境搭建步骤如下:

  • 安装Keil MDK5软件,破解软件并激活,确保软件能够正常运行。
  • 安装STM32F103固件库,配置开发环境,添加STM32F103C8T6单片机型号,设置编译参数。
  • 创建新的项目,配置项目参数,包括时钟频率(72MHz)、堆栈大小等,添加固件库文件和用户编写的程序文件。
  • 安装串口调试助手和蓝牙APP开发工具,用于程序调试和蓝牙通信测试。

4.2 系统软件总体设计

系统软件采用模块化设计,将不同的功能封装为独立的子模块,各子模块之间通过函数调用实现协同工作,降低程序的复杂度,便于编写、调试和维护。软件总体结构包括主程序模块、传感器数据采集模块、OLED显示模块、按键处理模块、模式控制模块、智能联动模块、蓝牙通信模块、数据存储模块和执行器驱动模块。

主程序是系统软件的核心,负责初始化各模块、调度各子模块运行、处理异常情况,主程序流程如下:系统上电后,首先进行系统初始化,包括GPIO初始化、串口初始化、ADC初始化、I2C初始化、OLED初始化、蓝牙模块初始化、传感器初始化、数据存储初始化等;初始化完成后,系统进入主循环,在主循环中依次执行传感器数据采集与处理、OLED数据显示、按键扫描与处理、模式判断与执行、蓝牙通信与APP对接、数据存储等操作,实现系统的连续运行。当检测到异常情况(如传感器故障、蓝牙连接断开)时,系统会进行异常处理,确保系统稳定运行。

4.3 各功能模块软件设计

4.3.1 传感器数据采集模块

传感器数据采集模块负责采集4种传感器的输出数据,并对数据进行滤波、校准处理,确保数据的准确性和稳定性,该模块包含各传感器的驱动函数和数据处理函数。

  • DHT11温湿度传感器采集:通过软件模拟单总线协议,向DHT11发送启动信号,等待传感器响应,然后读取传感器返回的温湿度数据,对数据进行校验,排除无效数据,得到实际的温湿度值,存储在全局变量中。
  • 声音传感器采集:通过ADC采集声音传感器的输出电压值,将模拟电压值转换为数字值,采用滑动平均滤波法,减少数据波动,当电压值超过预设阈值时,判定为检测到婴儿啼哭,设置啼哭标志位。
  • 震动传感器采集:通过检测STM32 GPIO引脚的电平变化,当引脚检测到低电平时,判定为发生撞击震动,设置震动标志位;检测到高电平时,清除震动标志位,同时加入防抖处理,避免误触发。
  • 雨滴传感器采集:通过ADC采集雨滴传感器的输出电压值,将模拟电压值转换为数字值,经过校准后,当电压值低于预设阈值时,判定为婴儿尿床,设置尿床标志位;高于阈值时,清除尿床标志位。

采集到的所有传感器数据和状态标志位,供其他模块调用,用于智能联动控制和数据显示、上传。

4.3.2 OLED显示模块

OLED显示模块负责将传感器数据、系统模式、阈值参数、设备状态等信息实时显示在OLED屏幕上,该模块包含OLED初始化函数、显示控制函数和数据显示函数。

  • OLED初始化:通过I2C通信协议,向OLED屏幕发送初始化指令,设置屏幕的显示模式、对比度、亮度等参数,完成OLED屏幕的初始化,确保屏幕能够正常显示。
  • 显示控制函数:实现屏幕清屏、光标移动、显示开启/关闭等功能,便于控制显示内容的更新,避免显示混乱。
  • 数据显示函数:将采集到的温湿度数据、婴儿状态(啼哭、尿床、震动)、系统模式(自动/手动)、当前阈值(温度上限、温度下限、湿度阈值)、设备运行状态(风扇、加热片、摇床、音乐、LED灯)等信息,按照预设的显示界面格式,显示在OLED屏幕上,每100ms刷新一次显示内容,确保数据实时更新,便于用户本地查看。

4.3.3 按键处理模块

按键处理模块负责扫描按键的按下状态,识别按键类型,并执行相应的操作,该模块包含按键扫描函数、消抖处理函数和按键功能处理函数。

  • 按键扫描函数:循环扫描8个独立按键的电平变化,检测按键是否按下,记录按下的按键编号。
  • 消抖处理函数:由于按键按下和松开时会产生抖动,通过延时10ms后再次检测电平的方式,实现消抖处理,确保按键检测的准确性,避免误触发。
  • 按键功能处理函数:根据扫描到的按键类型,执行相应的功能:
            
  • 模式切换键:实现自动模式与手动模式的切换,同步更新模式标志位和OLED屏幕的模式显示。
  • 加热片/风扇/摇床/音乐/LED灯启停键:手动模式下,控制相应设备的启停,自动模式下,该类按键失效,避免手动操作干扰自动控制。
  • 温度上限/下限、湿度阈值调节键:调节对应的阈值参数,调节过程中实时更新OLED显示的阈值信息,调节完成后自动保存至Flash存储器。

4.3.4 模式控制模块

模式控制模块负责管理系统的自动模式和手动模式,根据模式状态执行相应的控制逻辑,该模块包含模式切换函数和模式执行函数。

  • 模式切换函数:接收按键处理模块的模式切换指令,切换系统的工作模式(自动/手动),将模式状态存储在全局变量中,同步更新OLED屏幕的模式显示,确保用户能够清晰了解当前模式。
  • 模式执行函数:根据当前的模式状态,执行相应的控制逻辑:
            
  • 手动模式:接收按键指令,调用执行器驱动模块,控制加热片、风扇、摇床、音乐、LED灯的启停,操作响应迅速,便于用户手动调控。
  • 自动模式:调用智能联动模块,根据传感器采集的数据和预设阈值,实现设备的自适应控制,无需用户手动操作,减轻照护负担。

4.3.5 智能联动模块

智能联动模块是自动模式的核心,负责根据传感器采集的数据与预设阈值的对比结果,以及婴儿的状态(啼哭、尿床、震动),实现设备的自动控制和报警,该模块包含阈值判断函数和设备联动函数。

  • 阈值判断函数:将采集到的温度、湿度数据,分别与预设的温度上限、温度下限、湿度阈值进行对比,判断是否超出阈值范围;同时检测婴儿的啼哭、尿床、震动状态标志位,判断是否发生异常。
  • 设备联动函数:根据阈值判断结果和婴儿状态,执行相应的联动操作:
            
  • 温湿度控制:温度超过上限时,控制风扇启动降温;温度低于下限时,控制加热片启动加热;湿度超过阈值时,控制风扇启动除湿;温湿度恢复至阈值范围内时,控制相应设备停止运行。
  • 啼哭响应:检测到婴儿啼哭时,控制JR6001语音模块播放安抚音乐,同时控制步进电机带动摇床晃动,直至啼哭停止后,音乐和摇床自动停止。
  • 尿床响应:检测到婴儿尿床时,通过蓝牙模块向手机APP发送“婴儿尿床,请及时处理”的报警信息,提醒父母及时处理。
  • 震动响应:检测到婴儿撞击震动时,通过蓝牙模块向手机APP发送“婴儿撞击,请注意”的报警信息,同时触发有源蜂鸣器报警,持续10秒后自动停止,避免惊吓到婴儿。

4.3.6 蓝牙通信模块

蓝牙通信模块负责实现STM32单片机与BT04A蓝牙模块之间的串口通信,以及与手机APP的双向数据交互,该模块包含蓝牙初始化函数、串口通信函数和数据收发函数。

  • 蓝牙初始化:通过串口向BT04A蓝牙模块发送AT指令,配置蓝牙模块的名称、波特率、工作模式等参数,完成蓝牙模块的初始化,确保蓝牙模块能够正常工作。
  • 串口通信函数:实现STM32单片机与蓝牙模块之间的双向数据传输,包括发送AT指令、接收蓝牙模块的响应信息、发送传感器数据和报警信息、接收手机APP下发的控制指令等。
  • 数据收发函数:将采集到的温湿度数据、婴儿状态信息、系统模式、设备状态等数据,按照预设的格式进行封装,通过蓝牙模块发送至手机APP;接收手机APP下发的控制指令(如模式切换、设备控制、阈值设置),解析指令内容,转换为单片机可识别的控制信号,调用相应的功能模块执行指令,并将操作结果反馈至手机APP。

4.3.7 数据存储模块

数据存储模块负责存储系统的预设阈值参数(温度上限、温度下限、湿度阈值),确保系统重启后阈值不丢失,选用STM32单片机内部的Flash存储器进行数据存储,该模块包含Flash初始化函数、数据写入函数和数据读取函数。

  • Flash初始化:配置STM32的Flash存储器,设置存储地址和存储格式,确保Flash能够正常读写,避免数据存储错误。
  • 数据写入函数:当用户通过按键或手机APP调节阈值后,将新的阈值参数写入Flash存储器,覆盖原有数据,确保阈值参数的更新和保存。
  • 数据读取函数:系统上电初始化时,从Flash存储器中读取预设的阈值参数,赋值给相应的全局变量,确保系统按照预设阈值运行,无需用户重新设置。

4.3.8 执行器驱动模块

执行器驱动模块负责接收模式控制模块和智能联动模块的控制指令,驱动各执行器(风扇、加热片、步进电机、语音模块、蜂鸣器、LED灯)正常运行,该模块包含各执行器的驱动函数。

  • 风扇驱动函数:通过控制STM32 GPIO引脚的电平变化,控制继电器的导通与截止,进而实现风扇的启停控制。
  • 加热片驱动函数:通过控制STM32 GPIO引脚的电平变化,控制继电器的导通与截止,实现加热片的启停控制,同时加入温度保护逻辑,防止加热片过热。
  • 步进电机驱动函数:通过控制STM32 GPIO引脚的电平变化,输出步进电机的驱动信号,实现电机的正反转、启停和转速调节,控制摇床的晃动速度和幅度。
  • 语音模块驱动函数:通过串口向JR6001语音模块发送指令,控制音乐的播放、暂停和切换,实现安抚音乐的自动播放。
  • 蜂鸣器驱动函数:通过控制STM32 GPIO引脚的电平变化,控制三极管的导通与截止,实现蜂鸣器的启停控制,调节报警音量。
  • LED灯驱动函数:通过控制STM32 GPIO引脚的电平变化,控制三极管的导通与截止,实现LED灯的启停控制。

4.4 软件调试

软件调试采用分模块调试与整体调试相结合的方式,逐步排查程序中的错误,确保软件程序正常运行,实现预设的功能。

  • 分模块调试:分别对各功能子模块进行调试,如传感器数据采集模块调试,通过串口打印采集到的数据,检查数据是否准确、稳定;OLED显示模块调试,检查显示内容是否清晰、实时;按键处理模块调试,测试按键操作是否准确响应;蓝牙通信模块调试,检查蓝牙模块是否能够正常连接手机APP、传输数据;智能联动模块调试,测试自动模式下的设备联动是否正常。针对调试中出现的问题,如数据采集错误、显示异常、按键无响应、蓝牙连接失败、联动逻辑错误等,修改程序代码,直至各模块正常工作。
  • 整体调试:各模块调试完成后,进行系统整体调试,将所有模块整合在一起,运行整个程序,测试系统的各项功能是否正常实现,如模式切换、自动联动、手动控制、蓝牙远程交互、阈值调节等,检查系统运行的稳定性和响应速度,排查模块之间的协同问题,确保系统能够连续、稳定地运行。

第五章 系统调试与测试

5.1 测试环境搭建

为确保系统测试的准确性和可靠性,搭建合适的测试环境,测试环境包括硬件环境和软件环境:

  • 硬件环境:搭建完成的基于STM32的智能婴儿床硬件平台、5V电源适配器、USB数据线、电脑(用于程序下载和串口调试)、手机(安装蓝牙APP)、模拟婴儿啼哭的声音源、模拟尿床的水滴、模拟撞击的震动源。
  • 软件环境:Keil MDK5开发环境、串口调试助手(用于查看传感器数据和程序运行日志)、蓝牙APP(用于远程控制和数据查看)、STM32固件库。

5.2 硬件调试

硬件调试主要针对各硬件模块的连接和运行状态进行测试,确保硬件电路正常工作,调试内容及结果如下:

  • 电源模块调试:将5V电源接入系统,测量各模块的供电电压,STM32单片机、OLED屏幕、蓝牙模块等的供电电压为3.3V,风扇、加热片、步进电机等的供电电压为5V,电压稳定,无波动,电源指示灯正常亮起,电源模块工作正常。
  • 单片机最小系统调试:通过USB数据线将单片机与电脑连接,下载测试程序,通过串口调试助手接收单片机发送的信息,确认单片机能够正常启动和运行,复位功能正常,无死机现象。
  • 传感器模块调试:分别测试各传感器的采集功能,通过串口打印采集到的数据,DHT11温湿度传感器采集的数据与实际环境温湿度基本一致,误差在允许范围内;声音传感器能够准确检测到模拟婴儿啼哭,响应迅速;震动传感器能够准确检测到模拟撞击震动,无漏检、误检;雨滴传感器能够准确检测到模拟尿床的水滴,响应灵敏,传感器模块工作正常。
  • 显示模块调试:OLED屏幕能够正常启动,显示内容清晰、稳定,传感器数据、模式状态、阈值参数、设备状态等信息能够实时刷新,无花屏、闪屏现象,显示功能正常。
  • 执行器模块调试:手动控制各执行器,风扇能够正常启停,转速稳定;加热片能够正常发热,温度上升均匀;步进电机能够正常正反转、启停,带动摇床晃动平稳;JR6001语音模块能够正常播放安抚音乐,音量适中;有源蜂鸣器能够正常发声,报警清晰;LED灯能够正常点亮和熄灭,执行器模块工作正常。
  • 蓝牙模块调试:BT04A蓝牙模块能够正常启动,与手机APP建立稳定连接,数据传输流畅,无丢失、延迟现象,蓝牙通信模块工作正常。

硬件调试结果表明,所有硬件模块连接正确,运行稳定,能够满足系统功能需求,为软件功能的实现提供了可靠的硬件支撑。

5.3 软件调试

软件调试主要针对各功能模块的程序进行测试,确保软件程序能够正常运行,实现预设的功能,调试内容及结果如下:

  • 传感器数据采集调试:运行程序,通过串口调试助手查看采集到的传感器数据,数据采集周期稳定(100ms/次),数据准确、无异常,滤波处理后数据波动小,采集功能正常。
  • OLED显示调试:查看OLED屏幕显示内容,各参数显示清晰,实时刷新,模式状态、阈值、设备状态

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐