基于STM32的智能衣柜系统设计与实现
摘要
随着智能家居技术的快速发展,传统衣柜的功能单一性已无法满足人们对便捷、健康、智能生活的追求。本文设计并实现了一款基于STM32F103C8T6单片机的智能衣柜系统,集成了温湿度监测与调控、紫外线消毒、光照自动控制、空气质量检测、蓝牙远程控制等多种功能,旨在提升衣物存储的舒适性、安全性和便捷性。系统以STM32单片机为控制核心,搭配DHT11、MQ-135、光敏传感器等多种元器件,通过硬件电路设计和软件程序开发,实现了自动模式与手动模式的灵活切换,可实时监测并调节衣柜内环境参数,同时支持蓝牙APP远程操控。测试结果表明,该系统运行稳定、响应迅速,各项功能均达到设计要求,能够有效解决传统衣柜防潮、杀菌、防尘等问题,具有较高的实用性和推广价值。
关键词:STM32;智能衣柜;传感器;蓝牙控制;自动调控


第一章 绪论
1.1 研究背景与意义
在当代快节奏生活中,人们对家居环境的智能化、便捷化需求日益增长。衣柜作为家庭必备的储物家具,其主要功能是存放衣物,但传统衣柜仅能提供基础的储物空间,无法解决衣物存储过程中遇到的潮湿发霉、细菌滋生、异味、光照不足等问题,尤其是在潮湿地区或季节,衣物受潮、发霉的现象更为普遍,不仅影响衣物的使用寿命,还可能危害人体健康。
智能衣柜作为智能家居的重要组成部分,通过融合单片机技术、传感器技术、无线通信技术等,能够实现对衣柜内环境的实时监测与智能调控,自动解决衣物存储中的各类问题,为用户提供更舒适、健康的储物体验。基于STM32单片机设计智能衣柜系统,具有成本低、性能稳定、扩展性强等优势,能够满足普通家庭的使用需求,同时为智能家居产品的研发提供一定的参考,具有重要的理论意义和实际应用价值。

1.2 国内外研究现状
国外智能家居产业起步较早,智能衣柜相关技术较为成熟,部分高端产品已实现衣物识别、自动熨烫、智能烘干、远程控制等功能,如三星、LG等品牌推出的智能衣柜,集成了多种传感器和智能控制模块,能够根据环境参数自动调节运行状态,但这类产品价格较高,难以普及到普通家庭。
国内智能衣柜产业近年来发展迅速,越来越多的企业和科研机构开始投入到智能衣柜的研发中,主要集中在温湿度调控、紫外线消毒、蓝牙/WiFi远程控制等基础功能的实现,产品性价比高,更符合国内家庭的使用需求。但目前多数产品存在功能单一、控制精度不高、稳定性不足等问题,部分产品缺乏手动与自动模式的灵活切换,用户体验有待提升。因此,设计一款功能全面、性能稳定、性价比高的智能衣柜系统具有重要的现实意义。

1.3 研究内容与目标
本文的研究内容主要围绕基于STM32的智能衣柜系统的设计与实现展开,具体包括以下几个方面:
- 系统总体方案设计:明确系统的功能需求、性能指标,设计系统的总体架构,包括硬件架构和软件架构。
- 硬件电路设计:选型合适的元器件,设计STM32单片机最小系统电路、传感器接口电路、执行器驱动电路、蓝牙通信电路等。
- 软件程序开发:基于Keil软件编写单片机控制程序,实现传感器数据采集、环境参数判断、执行器控制、蓝牙通信、模式切换等功能;开发蓝牙APP,实现远程数据查看和远程控制。
- 系统测试与调试:搭建系统测试平台,对系统的各项功能、性能进行测试,排查问题并进行调试,确保系统运行稳定、功能正常。
本文的研究目标是设计并实现一款功能全面、性能稳定、操作便捷的智能衣柜系统,具体目标如下:
- 实现衣柜内温湿度、空气质量、光强等环境参数的实时监测与显示。
- 实现温湿度自动调控,根据预设阈值自动开启加热或通风功能。
- 实现紫外线定时消毒功能,结合柜门状态进行安全控制。
- 实现光照自动控制,根据环境光强自动开启或关闭照明。
- 实现手动与自动模式切换,手动模式下可灵活控制各项执行器。
- 实现蓝牙远程控制,支持APP查看实时数据和远程操控系统。
1.4 论文结构安排
本文共分为6章,具体结构安排如下:
第1章为绪论,介绍本文的研究背景与意义、国内外研究现状、研究内容与目标以及论文结构安排。
第2章为系统总体方案设计,明确系统的功能需求和性能指标,设计系统的总体架构,包括硬件架构和软件架构。
第3章为系统硬件设计,介绍主要元器件选型,设计各模块的硬件电路,包括单片机最小系统、传感器接口、执行器驱动、蓝牙通信等电路。
第4章为系统软件设计,介绍软件开发环境,编写各模块的控制程序,包括主程序、传感器数据采集程序、执行器控制程序、蓝牙通信程序等,同时介绍蓝牙APP的开发。
第5章为系统测试与调试,搭建测试平台,对系统的各项功能和性能进行测试,分析测试结果,排查并解决存在的问题。
第6章为总结与展望,总结本文的研究成果,分析系统存在的不足,并对未来的改进方向进行展望。
第二章 系统总体方案设计
2.1 系统功能需求分析
结合用户需求和智能衣柜的应用场景,本文设计的基于STM32的智能衣柜系统需具备以下核心功能,确保系统的实用性和便捷性:
2.2 系统性能指标
为确保系统运行稳定、性能可靠,结合元器件特性和实际应用需求,设定系统的主要性能指标如下:
- 温湿度检测范围:温度0~50℃,误差±2℃;湿度20%~90%RH,误差±5%RH。
- 光照检测范围:0~1000lux,检测精度±10lux。
- 空气质量检测:MQ-135传感器检测范围10~1000ppm,响应时间≤10s。
- RTC时钟精度:误差≤1s/天。
- 蓝牙通信距离:空旷环境下≥10m,通信速率9600bps。
- 工作电压:DC 5V~12V,工作电流≤500mA。
- 执行器响应时间:≤500ms,运行稳定无异常。
2.3 系统总体架构设计
本系统采用“控制核心+传感器模块+执行器模块+通信模块+显示与交互模块”的总体架构,以STM32F103C8T6单片机为控制核心,统筹协调各个模块的工作,实现系统的各项功能。系统总体架构分为硬件架构和软件架构两部分。
2.3.1 硬件架构
系统硬件架构主要包括以下几个模块,各模块相互配合,完成数据采集、信号处理、指令执行和通信功能:
- 控制核心模块:STM32F103C8T6单片机,作为系统的核心,负责接收各传感器的采集数据,进行数据处理和逻辑判断,向各执行器发送控制指令,同时实现与蓝牙模块、显示模块的通信。
- 传感器模块:包括DHT11温湿度传感器、光敏传感器、光电红外传感器、MQ-135空气质量传感器、RTC实时时钟模块,负责采集衣柜内的环境参数和时间信息,为控制核心提供数据支持。
- 执行器模块:包括继电器、风扇模块、加热片模块、UV消毒灯模块、大功率LED灯模块、步进电机、有源蜂鸣器,根据控制核心的指令执行相应的动作,实现温湿度调控、消毒、照明、报警等功能。
- 通信模块:BT04A蓝牙模块,负责实现单片机与手机APP之间的无线通信,传输环境数据和控制指令。
- 显示与交互模块:OLED屏幕和按键,OLED屏幕用于实时显示环境参数、系统状态、时间等信息;按键用于参数调节、模式切换和手动控制。
硬件架构框图如下(此处可插入框图,论文中可手绘或用工具绘制):控制核心(STM32)分别与传感器模块、执行器模块、通信模块、显示与交互模块连接,传感器模块向控制核心输入数据,控制核心向执行器模块输出指令,通信模块实现远程交互,显示与交互模块实现本地操作与信息查看。
2.3.2 软件架构
系统软件架构采用模块化设计,将不同功能划分为独立的软件模块,降低程序的耦合度,便于开发、调试和维护。软件架构主要包括以下几个模块:
- 主程序模块:负责系统初始化(包括单片机IO口、传感器、蓝牙模块、OLED屏幕等的初始化),调用各功能模块,实现系统的整体运行逻辑。
- 传感器数据采集模块:负责控制各传感器采集数据,对采集到的数据进行滤波、校准处理,确保数据的准确性,然后将处理后的数据发送给主程序。
- 数据处理与逻辑判断模块:接收传感器采集的数据分析,根据用户预设的阈值和系统逻辑,判断是否需要开启或关闭相应的执行器,生成控制指令。
- 执行器控制模块:接收主程序发送的控制指令,驱动各执行器(风扇、加热片、消毒灯等)执行相应的动作,实现各项功能。
- 蓝牙通信模块:负责实现单片机与手机APP之间的通信,接收APP发送的控制指令,将传感器采集的环境数据发送给APP。
- 显示与交互模块:控制OLED屏幕显示环境参数、系统状态、时间等信息;处理按键输入,实现参数调节、模式切换和手动控制功能。
- 中断服务模块:处理外部中断(如按键中断、传感器中断),提高系统的响应速度,确保关键操作的实时性。
软件运行流程:系统上电后,首先进行初始化,包括IO口、传感器、蓝牙、OLED等模块的初始化;初始化完成后,进入主循环,主程序调用传感器数据采集模块采集环境数据,进行数据处理和逻辑判断,根据判断结果控制执行器动作,同时在OLED屏幕上显示相关信息;若有蓝牙连接,将数据发送给APP,接收APP指令并执行;若有按键操作,处理按键输入,完成参数调节或模式切换。
第三章 系统硬件设计
3.1 主要元器件选型
根据系统功能需求和性能指标,结合元器件的性价比、稳定性和通用性,对系统所需的主要元器件进行选型,具体选型如下,确保各元器件能够满足系统的运行要求:
此外,系统还需要电源模块(提供5V、12V电压)、杜邦线、面包板(原型开发)、外壳等辅助元器件,确保系统的正常搭建和运行。
3.2 硬件电路设计
系统硬件电路以STM32F103C8T6单片机为核心,分为多个模块进行设计,各模块电路相互独立,通过单片机IO口、串口、ADC接口等连接,确保电路的稳定性和可扩展性。以下分别介绍各核心模块的电路设计。
3.2.1 单片机最小系统电路
STM32F103C8T6单片机最小系统电路是系统的基础,主要包括电源电路、复位电路、晶振电路三部分,确保单片机能够正常工作。
- 电源电路:采用5V直流电源供电,通过AMS1117-3.3V稳压芯片将5V电压转换为3.3V,为单片机和其他需要3.3V电压的模块(如OLED屏幕、蓝牙模块)供电;电源输入端并联电容进行滤波,减少电源噪声,确保供电稳定。
- 复位电路:采用手动复位电路,通过复位按键控制单片机的复位,当按键按下时,单片机复位引脚接低电平,实现复位;松开按键时,复位引脚接高电平,单片机正常工作,复位电路简单可靠。
- 晶振电路:采用8MHz外部晶振,配合两个22pF电容,为单片机提供时钟信号,通过单片机内部的PLL锁相环倍频至72MHz,确保单片机的高速运行;同时设计32.768KHz晶振电路,为RTC实时时钟模块提供时钟信号,保证时间的准确性。
3.2.2 传感器接口电路
传感器模块通过相应的接口电路与单片机连接,实现数据的采集,各传感器接口电路设计如下:
- DHT11温湿度传感器接口电路:DHT11采用单总线接口,DATA引脚与单片机的一个IO口连接,通过单片机的IO口发送控制信号,接收传感器返回的温湿度数据;DATA引脚并联一个10KΩ上拉电阻,确保信号稳定,避免干扰。
- 光敏传感器接口电路:光敏电阻与一个10KΩ电阻串联,构成分压电路,光敏电阻一端接5V电源,另一端接电阻和单片机的ADC接口,电阻另一端接地;当环境光强变化时,光敏电阻的阻值变化,分压电压也随之变化,单片机通过ADC接口采集分压电压,转换为光强数据。
- 光电红外传感器接口电路:光电传感器的VCC引脚接5V电源,GND引脚接地,OUT引脚与单片机的IO口连接;当柜门关闭时,传感器被遮挡,OUT引脚输出低电平;柜门打开时,传感器无遮挡,OUT引脚输出高电平,单片机通过检测IO口电平判断柜门状态。
- MQ-135空气质量传感器接口电路:MQ-135传感器的VCC引脚接5V电源,GND引脚接地,AO引脚(模拟输出)与单片机的ADC接口连接,DO引脚(数字输出)可根据需要连接单片机IO口(本系统暂不使用);传感器输出的模拟信号通过ADC接口转换为数字信号,反映空气质量状况。
- RTC实时时钟模块接口电路:采用DS3231 RTC模块,通过I2C接口与单片机连接,SDA引脚接单片机的I2C_SDA引脚,SCL引脚接单片机的I2C_SCL引脚;模块自带备用电池,即使系统断电,也能保持时间的准确性,单片机通过I2C接口读取和设置时间。
3.2.3 执行器驱动电路
执行器模块(风扇、加热片、消毒灯等)通过继电器或驱动模块与单片机连接,由单片机控制其开启与关闭,各执行器驱动电路设计如下:
- 继电器驱动电路:继电器模块的VCC引脚接5V电源,GND引脚接地,IN引脚与单片机的IO口连接;当单片机IO口输出高电平时,继电器吸合,控制执行器通电工作;输出低电平时,继电器断开,执行器停止工作;为避免继电器吸合时产生的反向电动势干扰单片机,在继电器线圈两端并联一个二极管进行续流保护。
- 步进电机驱动电路:采用ULN2003驱动模块,驱动模块的VCC引脚接5V电源,GND引脚接地,IN1~IN4引脚与单片机的4个IO口连接,电机接口与28BYJ-48步进电机连接;单片机通过控制IN1~IN4引脚的电平变化,驱动步进电机转动,实现挂衣架的升降。
- 有源蜂鸣器驱动电路:蜂鸣器的VCC引脚接5V电源,GND引脚通过一个NPN三极管与单片机的IO口连接;当单片机IO口输出高电平时,三极管导通,蜂鸣器通电发声;输出低电平时,三极管截止,蜂鸣器停止发声;三极管基极串联一个1KΩ电阻,限制电流,保护三极管和单片机。
3.2.4 通信模块电路
BT04A蓝牙模块通过UART串口与单片机连接,实现无线通信,电路设计如下:蓝牙模块的VCC引脚接3.3V电源(注意:不可接5V,否则会烧毁模块),GND引脚接地,TXD引脚接单片机的RXD引脚,RXD引脚接单片机的TXD引脚;为确保通信稳定,在模块的TXD、RXD引脚与单片机的对应引脚之间串联1KΩ电阻,减少信号干扰;蓝牙模块默认波特率为9600bps,与单片机串口波特率一致,实现数据的双向传输。
3.2.5 显示与交互模块电路
显示与交互模块包括OLED屏幕和按键,电路设计如下:
- OLED屏幕接口电路:采用I2C接口OLED屏幕,SDA引脚接单片机的I2C_SDA引脚,SCL引脚接单片机的I2C_SCL引脚,VCC引脚接3.3V电源,GND引脚接地;I2C接口通信简单,占用IO口少,便于电路布局。
- 按键接口电路:采用独立按键,每个按键的一端接单片机的IO口,另一端接地;IO口通过上拉电阻接3.3V电源,当按键未按下时,IO口为高电平;按下时,IO口为低电平,单片机通过检测IO口电平变化,识别按键操作;本系统设计4个独立按键,分别用于模式切换、参数调节、确认、取消。
3.3 硬件电路布局与接线
在硬件电路搭建过程中,需注意电路布局的合理性,避免干扰:将单片机最小系统放在电路中心,传感器模块和执行器模块分别放在两侧,蓝牙模块远离强电电路(如加热片、消毒灯),减少电磁干扰;接线时,电源线和信号线分开布置,避免信号线被电源线干扰;所有元器件的接地端统一连接,确保接地良好,提高系统的稳定性。
硬件接线表(简要):
|
元器件 |
连接单片机引脚 |
备注 |
|
DHT11 |
PA0 |
单总线接口,上拉电阻 |
|
光敏传感器 |
PA1(ADC) |
分压电路 |
|
光电传感器 |
PA2 |
数字输出 |
|
MQ-135 |
PA3(ADC) |
模拟输出 |
|
OLED屏幕 |
PB0(SDA)、PB1(SCL) |
I2C接口 |
|
蓝牙模块 |
PA9(TXD)、PA10(RXD) |
UART串口 |
|
继电器(风扇) |
PB2 |
弱电控制强电 |
|
步进电机驱动 |
PB3~PB6 |
IN1~IN4 |
第四章 系统软件设计
4.1 软件开发环境
本系统软件开发采用以下环境和工具,确保程序的开发、编译、调试顺利进行:
- 开发工具:Keil MDK5,用于STM32单片机程序的编写、编译、链接和调试,支持C语言编程,集成了丰富的库函数和调试工具,能够提高开发效率。
- 编程语言:C语言,语法简洁、可读性强、执行效率高,适合单片机程序开发,能够直接操作单片机的硬件资源。
- 仿真工具:Proteus,用于硬件电路的仿真和程序的调试,可模拟系统的运行状态,排查硬件电路和程序中的问题,减少实物搭建的成本和时间。
- APP开发工具:Android Studio,用于开发蓝牙控制APP,实现与单片机的无线通信,支持数据显示和远程控制功能。
- 调试工具:串口助手,用于查看单片机发送的串口数据(如传感器数据、调试信息),便于程序调试;蓝牙调试助手,用于测试蓝牙模块的通信功能。
4.2 系统软件初始化
系统上电后,首先进行软件初始化,初始化完成后,系统进入正常运行状态。初始化主要包括以下几个部分:
- 单片机内核初始化:配置系统时钟,将外部8MHz晶振倍频至72MHz,设置系统滴答定时器,用于延时函数和中断服务。
- IO口初始化:配置各传感器、执行器、按键、显示模块对应的IO口,设置IO口的输入/输出模式、上拉/下拉电阻等,确保IO口能够正常工作。
- ADC初始化:配置STM32的ADC接口,用于采集光敏传感器、MQ-135传感器的模拟信号,设置ADC的采样频率、转换模式等,确保采样数据的准确性。
- UART串口初始化:配置串口1(与蓝牙模块连接),设置波特率为9600bps,数据位8位,停止位1位,无校验位,开启串口中断,用于蓝牙通信。
- I2C初始化:配置I2C接口,用于与OLED屏幕、RTC模块通信,设置I2C的通信速率、地址等参数。
- 定时器初始化:配置定时器,用于生成步进电机的驱动信号、UV消毒灯的定时控制等。
- 传感器初始化:初始化DHT11、MQ-135、RTC等传感器,确保传感器能够正常采集数据。
- OLED屏幕初始化:初始化OLED屏幕,清除屏幕显示,设置显示模式和字体大小,为后续显示做准备。
4.3 各功能模块软件设计
系统软件采用模块化设计,各功能模块独立编写,通过主程序调用实现协同工作,以下分别介绍各核心功能模块的软件设计。
4.3.1 传感器数据采集模块
该模块负责控制各传感器采集数据,并对采集到的数据进行处理,确保数据的准确性,具体设计如下:
- DHT11温湿度采集:通过单片机IO口向DHT11发送启动信号,等待传感器响应,然后接收传感器返回的40位数据(包括湿度整数位、湿度小数位、温度整数位、温度小数位、校验位),对数据进行校验,校验通过后,提取温湿度数据,存储到相应的变量中;若校验失败,重新采集数据,确保数据准确。
- 光敏传感器数据采集:通过ADC接口采集光敏传感器的分压电压,将模拟信号转换为数字信号(0~4095),根据分压公式计算出对应的光强值(lux),并进行滤波处理(采用滑动平均滤波法),减少数据波动,提高检测精度。
- 光电传感器数据采集:通过单片机IO口检测光电传感器的输出电平,若电平为低电平,说明柜门关闭;若为高电平,说明柜门打开,将柜门状态存储到变量中,供后续逻辑判断使用。
- MQ-135空气质量采集:通过ADC接口采集MQ-135传感器的模拟输出电压,转换为数字信号,根据传感器的特性曲线,将数字信号转换为空气质量浓度值(ppm),进行滤波处理,存储到变量中。
- RTC时间采集:通过I2C接口读取DS3231 RTC模块的时间数据(年、月、日、时、分、秒),将时间数据转换为相应的格式,存储到变量中,用于UV消毒灯的定时控制和屏幕显示。
数据采集周期设置为1秒,即每1秒采集一次各传感器的数据,确保数据的实时性。
4.3.2 显示模块软件设计
显示模块采用OLED屏幕,用于实时显示系统的各项信息,软件设计主要包括屏幕显示初始化、数据显示更新等功能:
- 屏幕显示布局:将OLED屏幕分为多个区域,分别显示温湿度、空气质量、光强、当前时间、系统模式(自动/手动)、各执行器状态(风扇、加热片、消毒灯等的开启/关闭)。
- 数据显示更新:每1秒更新一次屏幕显示,将采集到的温湿度、空气质量、光强、时间等数据显示到对应的区域;当系统模式或执行器状态发生变化时,及时更新显示内容,确保用户能够实时了解系统运行状态。
- 参数设置显示:当用户通过按键调节参数(如温湿度阈值、消毒时间)时,屏幕显示参数调节界面,实时显示当前调节的参数值,方便用户操作。
4.3.3 逻辑判断与执行器控制模块
该模块是系统的核心,负责根据传感器采集的数据和用户预设的参数,进行逻辑判断,生成控制指令,控制各执行器动作,分为自动模式和手动模式两种控制逻辑。
4.3.3.1 自动模式控制逻辑
自动模式下,系统根据预设的阈值和逻辑,自动控制各执行器动作,无需用户手动操作:
- 温湿度控制:将采集到的温湿度数据与预设阈值进行比较,若温度低于预设下限或湿度高于预设上限,开启加热片和风扇(加热除湿);若温度高于预设上限或湿度低于预设下限,开启风扇(通风降温/干燥);当温湿度达到预设范围时,关闭相应的执行器。
- UV消毒控制:读取当前时间,判断是否处于用户预设的消毒时间段内;同时检测柜门状态,若柜门关闭且处于消毒时间段内,开启UV消毒灯,消毒时间到后自动关闭;若柜门打开,立即关闭消毒灯,确保安全。
- 光照控制:将采集到的光强数据与预设阈值进行比较,若光强低于预设阈值,且柜门打开(用户取放衣物),开启LED灯;若光强高于预设阈值,或柜门关闭,关闭LED灯(消毒期间除外)。
- 空气质量报警控制:将采集到的空气质量浓度值与预设阈值进行比较,若浓度值超过阈值,触发有源蜂鸣器报警,同时开启风扇通风;当浓度值低于阈值时,关闭蜂鸣器和风扇。
4.3.3.2 手动模式控制逻辑
手动模式下,用户通过按键或蓝牙APP控制各执行器的开启与关闭,不受传感器数据和预设阈值的影响:
- 按键控制:通过预设的按键,分别控制风扇、加热片、UV消毒灯、LED灯的开启与关闭;通过按键控制步进电机的正转、反转,实现挂衣架的升降。
- 蓝牙APP控制:用户通过手机APP发送控制指令,单片机通过蓝牙模块接收指令,根据指令控制相应的执行器动作;同时,单片机将当前执行器状态反馈给APP,显示在APP界面上。
4.3.4 蓝牙通信模块软件设计
蓝牙通信模块负责实现单片机与手机APP之间的双向通信,软件设计主要包括串口中断处理、数据发送与接收等功能:
- 串口中断处理:开启串口1中断,当蓝牙模块接收到APP发送的数据时,触发串口中断,单片机读取接收缓冲区的数据,解析指令内容,根据指令控制相应的执行器动作。
- 数据发送:每1秒,单片机通过串口1向蓝牙模块发送一次传感器采集的数据(温湿度、空气质量、光强、时间、系统状态等),蓝牙模块将数据转发给手机APP,APP接收数据后进行显示。
- 指令解析:预设通信协议,APP发送的指令采用特定的格式(如“Fan=1”表示开启风扇,“Fan=0”表示关闭风扇),单片机接收指令后,解析指令中的操作对象和操作指令,执行相应的动作,并返回执行结果给APP。
4.3.5 按键交互模块软件设计
按键交互模块负责处理用户的按键操作,实现模式切换、参数调节、手动控制等功能,软件设计采用按键消抖处理,确保按键操作的准确性:
- 按键消抖:采用延时消抖法,当检测到按键按下时,延时10ms后再次检测按键电平,若仍为低电平,确认按键按下;按键松开时,同样延时10ms确认,避免按键抖动导致的误操作。
- 模式切换:通过模式切换按键,实现自动模式与手动模式的切换,切换时在OLED屏幕上显示当前模式,同时重置执行器状态。
- 参数调节:通过参数调节按键、确认按键、取消按键,调节温湿度阈值、消毒时间段、时间等参数,调节过程中实时在屏幕上显示参数值,确认后保存参数,取消则放弃调节。
- 手动控制:手动模式下,通过相应的按键控制各执行器的开启与关闭,以及步进电机的升降。
4.3.6 主程序设计
主程序是系统软件的核心,负责调用各功能模块,实现系统的整体运行逻辑,主程序流程如下:
4.4 蓝牙APP设计
蓝牙APP采用Android Studio开发,主要实现与单片机的蓝牙连接、实时数据显示、远程控制等功能,APP界面设计简洁、操作便捷,具体功能如下:
- 蓝牙连接:APP启动后,自动搜索周围的蓝牙设备,显示蓝牙设备名称和地址,用户可选择BT04A蓝牙模块进行连接,连接成功后显示连接状态。
- 实时数据显示:APP接收单片机发送的温湿度、空气质量、光强、当前时间、系统模式等数据,在界面上实时显示,数据更新周期为1秒。
- 远程控制:APP界面设置各执行器的控制按钮(风扇、加热片、消毒灯、LED灯的开启/关闭,步进电机的升降),用户点击按钮,APP发送相应的控制指令,单片机接收指令后执行动作,同时APP更新执行器状态显示。
- 参数设置:APP支持远程调节温湿度阈值、消毒时间段等参数,用户输入参数值后,APP发送参数指令,单片机接收后保存参数并应用。
APP采用Java语言编写,调用Android系统的蓝牙API,实现蓝牙通信功能;界面采用XML布局,设计多个控件(文本框、按钮、进度条等),用于数据显示和操作控制。
第五章 系统测试与调试
5.1 测试目的与测试环境
5.1.1 测试目的
系统测试的目的是验证基于STM32的智能衣柜系统的各项功能是否符合设计要求,性能是否达到预设指标,排查系统中存在的问题并进行调试,确保系统运行稳定、可靠、便捷,能够满足用户的实际使用需求。
5.1.2 测试环境
搭建系统测试平台,测试环境如下:
- 硬件环境:STM32F103C8T6单片机开发板、各传感器(DHT11、MQ-135等)、执行器(风扇、加热片等)、蓝牙模块、OLED屏幕、按键、电源模块、衣柜模型(用于模拟实际应用场景)。
- 软件环境:Keil MDK5(程序调试)、Android手机(安装蓝牙APP)、串口助手、蓝牙调试助手、Proteus(仿真测试)。
- 测试环境条件:室温25℃,湿度50%RH,光照强度500lux,无明显电磁干扰,确保测试结果的准确性。
5.2 硬件测试与调试
硬件测试主要针对各硬件模块的连接和工作状态进行测试,排查硬件电路中的故障,确保各模块能够正常工作,具体测试内容和结果如下:
- 单片机最小系统测试:给单片机供电,通过串口助手发送调试信息,观察单片机是否正常响应,测试结果显示,单片机能够正常启动,串口通信正常,最小系统工作稳定。
- 传感器模块测试:分别测试DHT11、光敏传感器、光电传感器、MQ-135、RTC模块,观察传感器是否能够正常采集数据,数据是否准确。测试结果显示,各传感器采集的数据准确,响应迅速,无明显误差,符合设计要求。
- 执行器模块测试:给各执行器供电,通过单片机发送控制指令,观察执行器是否能够正常动作。测试结果显示,风扇、加热片、消毒灯、LED灯能够正常开启和关闭,步进电机能够正常转动,蜂鸣器能够正常发声,执行器工作稳定。
- 蓝牙模块测试:将蓝牙模块与单片机连接,通过蓝牙调试助手与手机建立连接,发送和接收数据,测试结果显示,蓝牙通信稳定,通信距离≥10m,数据传输无丢失、无错误。
- 显示与交互模块测试:给OLED屏幕供电,观察屏幕是否能够正常显示,按键是否能够正常操作。测试结果显示,OLED屏幕显示清晰,数据更新及时,按键操作准确,无误触发。
硬件调试过程中,遇到的主要问题及解决方法:
- 问题1:OLED屏幕显示乱码。解决方法:检查I2C接口接线是否正确,重新配置I2C通信参数,调整屏幕初始化程序,确保通信正常。
- 问题2:蓝牙模块无法与手机连接。解决方法:检查蓝牙模块接线(确保VCC接3.3V),重启蓝牙模块和手机,确认蓝牙模块处于可配对状态,重新配对连接。
- 问题3:步进电机转动异常。解决方法:检查步进电机与驱动模块的接线,调整电机驱动程序中的脉冲频率和顺序,确保电机正常转动。
5.3 软件测试与调试
软件测试主要针对各功能模块的程序进行测试,验证程序的正确性和稳定性,排查程序中的bug,确保系统各项功能能够正常实现,具体测试内容和结果如下:
- 传感器数据采集测试:运行程序,观察OLED屏幕显示的传感器数据,与实际环境参数进行对比,测试结果显示,数据采集准确,更新及时,符合设计要求。
- 自动模式功能测试:设置温湿度阈值、消毒时间段等参数,将系统切换到自动模式,改变环境参数(如增加湿度、降低光强),观察执行器是否能够自动响应。测试结果显示,系统能够根据环境参数自动控制执行器动作,温湿度调控、消毒、光照控制等功能正常。
- 手动模式功能测试:将系统切换到手动模式,通过按键和蓝牙APP控制各执行器,观察执行器是否能够正常动作。测试结果显示,按键和APP控制均有效,执行器响应迅速,手动控制功能正常。
- 蓝牙通信功能测试:通过APP与单片机建立连接,发送控制指令,观察单片机是否能够执行相应动作;同时观察APP是否能够接收单片机发送的实时数据。测试结果显示,蓝牙通信正常,指令执行准确,数据显示实时。
- 参数调节功能测试:通过按键和APP调节温湿度阈值、消毒时间段等参数,观察参数是否能够正常保存和应用。测试结果显示,参数调节功能正常,保存的参数能够正确应用到系统中。
软件调试过程中,遇到的主要问题及解决方法:
- 问题1:DHT11采集数据偶尔出错。解决方法:优化数据采集程序,增加数据校验次数,采用滑动平均滤波法对采集到的数据进行处理,减少数据波动。
- 问题2:自动模式下执行器动作延迟。解决方法:优化程序逻辑,减少数据处理时间,调整传感器采集周期,提高系统的响应速度。
- 问题3:蓝牙数据传输偶尔丢失。解决方法:优化串口中断程序,增加数据重发机制,确保数据传输的可靠性。


