基于STM32的智能家居控制系统设计_第1页
基于STM32的智能家居控制系统设计_第2页
基于STM32的智能家居控制系统设计_第3页
基于STM32的智能家居控制系统设计_第4页
基于STM32的智能家居控制系统设计_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于STM32的智能家居控制系统设计摘要在物联网技术快速普及的当代社会,家居智能化已成为提升居民生活品质的核心方向,传统家居模式存在的控制方式单一、环境监测不及时、操作便捷性不足等问题日益凸显。针对这一现状,本文设计了一套以STM32单片机为核心的智能家居控制系统,该系统可实时监测室内温湿度、PM2.5浓度、光照强度等关键环境参数,结合预设阈值实现灯光、通风风扇、降温风扇、加湿器等设备的自动调控,同时集成了本地按键控制、离线语音控制、WiFi远程控制三大交互方式,通过OLED显示屏实现所有参数的可视化展示。该系统具备模块化设计、成本低廉、运行稳定、操作简便的特点,无需依赖复杂的全屋智能生态即可实现基础家居智能化管控,对降低智能家居入门门槛、提升家居生活的舒适性与便捷性具有重要的实际应用价值。关键词STM32单片机;智能家居;语音控制;环境监测;WiFi通信AbstractIncontemporarysocietywiththerapidpopularizationofInternetofThingstechnology,intelligenthomefurnishinghasbecomethecoredirectiontoimproveresidents'qualityoflife.Theproblemsexistinginthetraditionalhomefurnishingmode,suchassinglecontrolmode,untimelyenvironmentalmonitoringandinsufficientoperationconvenience,havebecomeincreasinglyprominent.Inviewofthissituation,thispaperdesignsasetofintelligenthomecontrolsystembasedonSTM32single-chipmicrocomputer.Thesystemcanmonitorkeyenvironmentalparameterssuchasindoortemperatureandhumidity,PM2.5concentrationandlightintensityinrealtime,realizeautomaticcontroloflights,ventilationfans,coolingfans,humidifiersandotherequipmentcombinedwithpresetthresholds,andintegratesthreeinteractivemodes:localkeycontrol,offlinevoicecontrolandWiFiremotecontrol,andrealizesvisualdisplayofallparametersthroughOLEDdisplayscreen.Thesystemhasthecharacteristicsofmodulardesign,lowcost,stableoperationandsimpleoperation.Itcanrealizebasicintelligenthomecontrolwithoutrelyingoncomplexwhole-houseintelligentecology,andhasimportantpracticalapplicationvalueforreducingtheentrythresholdofintelligenthomeandimprovingthecomfortandconvenienceofhomelife.KeywordsSTM32single-chipmicrocomputer;Smarthome;Voicecontrol;Environmentalmonitoring;WiFicommunication目录摘要 IAbstract II1绪论 11.1研究背景和意义 11.1.1研究背景 11.1.2研究意义 11.2智能家居的国内外发展现状 21.2.1国内发展状况 21.2.2国外发展状况 22功能与设计方案 42.1系统功能要求 42.2系统设计方案 43系统的硬件设计 63.1器件方案对比 63.1.1单片机的选型 63.1.2显示模块的选型 63.1.3通信模块的选型 73.1.4语音模块的选型 73.2单片机模块 83.3温湿度检测模块 93.4无线模块 103.5PM2.5传感器模块 103.6语音识别模块 113.7显示模块 123.8继电器电路设计 133.9光敏电阻模块 134系统的软件设计 154.1软件介绍 154.2软件程序的设计 154.2.1主程序流程图 154.2.2按键子程序流程介绍 164.2.3显示模块子程序流程介绍 175系统的测试 195.1软件硬件调试 195.1.1软件调试 195.1.2硬件调试 195.2模块功能测试 205.2.1传感器模块测试 205.2.2控制执行模块测试 235.2.3人机交互模块测试 235.2.4无线通信模块测试 24结论 25参考文献 26谢辞 28附录A 30附录B 311绪论1.1研究背景和意义1.1.1研究背景随着物联网、嵌入式技术的快速发展,智能化已经成为家居行业发展的主流趋势,居民对家居生活的需求已经从基础的居住功能,转向了便捷性、舒适性、智能化的全方位提升。传统家居模式下,各类家电设备均为独立的手动控制方式,用户需要逐一操作才能完成设备开关与参数调节,无法实现环境状态的实时监测与自动调控,同时也无法实现远程管控,存在明显的便捷性短板。当前主流的全屋智能家居生态,大多由头部家电企业打造,存在生态闭环性强、设备兼容性差、整体部署成本高的问题,普通家庭难以承担全套设备的安装与维护费用,同时部分系统过度依赖网络环境,一旦断网就会出现功能失效的情况,无法满足基础的智能化需求。在此背景下,本文设计一款低成本、模块化、低功耗的智能家居控制系统,既针对性解决传统家居手动操作繁琐、无法自动调控、远程管控缺失的使用痛点,也打破现有高端智能生态的闭环壁垒与高成本限制,让普通家庭也能便捷实现基础家居智能化,具备极强的现实必要性与落地价值[1]。1.1.2研究意义针对传统家居与现有智能生态的不足,本文设计了一套基于STM32单片机的智能家居控制系统,该系统通过各类传感器实现家居环境参数的实时采集,结合预设的控制逻辑实现设备的自动调控,同时整合了按键控制、语音、远程三大控制方式,无需复杂的布线与生态适配,即可实现家居设备的智能化管控。该系统的核心优势在于模块化设计与低成本部署,所有核心模块均采用通用型元器件,整体硬件成本低廉,同时具备极强的可扩展性,用户可根据自身需求增减功能模块,无需更换核心控制系统即可完成功能升级,适配普通家庭的多样化需求。该系统既可以独立运行,也可以接入通用物联网平台实现远程管控,离线状态下仍可保证本地自动控制、按键控制与语音控制功能正常运行,解决了现有智能系统过度依赖网络的问题。通过该系统的设计与实现,既可以满足普通家庭对智能家居的基础需求,也能为嵌入式与物联网技术的工程实践提供参考案例,具备较高的实际应用价值与研究意义[2]。1.2智能家居的国内外发展现状1.2.1国内发展状况近年来,我国智能家居行业进入了快速发展阶段,学术界与产业界均开展了大量的研究与应用探索。产业层面,华为、小米、美的等头部企业纷纷推出了自有智能家居生态,实现了家电设备的互联互通、语音控制与远程管控,在高端住宅与商业场景中得到了广泛应用,推动了智能家居技术的普及。但这类生态大多为闭环设计,不同品牌的设备兼容性较差,用户需要更换同品牌全套设备才能实现完整的智能化功能,整体部署成本较高,难以下沉到普通家庭市场[3]。国内众多高校针对低成本智能家居控制系统开展了专项研究,大量基于单片机的智能家居设计方案被提出,实现了环境监测、设备远程控制等基础功能。但现有研究大多存在功能单一的问题,部分方案仅实现了远程控制,未整合自动调控与语音交互功能;部分方案仅实现了单一场景的设备控制,未形成完整的家居管控体系,同时大多存在可扩展性不足的问题,难以满足用户的个性化需求。整体来看,国内低成本智能家居的研究仍有较大的优化空间,需要设计一套功能完整、兼容性强、可扩展的通用型控制系统[4]。1.2.2国外发展状况与国内相比,国外在智能家居领域的研究起步更早,技术发展更为成熟,众多国际企业与科研机构在智能家居的智能化、自动化与互联互通方面开展了深入研究。谷歌、亚马逊、苹果等企业推出的智能家居系统,已经实现了AI语音交互、多设备联动、场景自动化等高级功能,在全球高端智能家居市场占据了主导地位[5]。其中亚马逊的Alexa语音助手、苹果的HomeKit生态,已经形成了开放的设备接入标准,众多第三方品牌设备均可接入,实现了跨品牌的设备互联互通。但国外的智能家居系统也存在明显的本土化不足的问题,相关系统的语音交互、功能设计大多适配国外的家居场景与使用习惯,与国内家庭的实际需求存在偏差,同时整体部署成本较高,对网络环境的依赖性较强,不适合国内普通家庭的低成本部署需求。学术层面,国外的研究更多偏向于AI算法、机器学习在智能家居场景中的应用,重点研究用户行为习惯的自适应学习、全屋智能的场景自动联动,相关研究的技术门槛较高,难以直接应用于低成本的单片机控制系统中[6]。图1.1智能家居控制系统1.3本章小结本章首先阐述了智能家居控制系统的研究背景,分析了传统家居模式的使用痛点与现有高端智能生态的现存问题,明确了本次设计的现实意义与应用价值。同时梳理了智能家居行业的国内外发展现状,总结了现有研究的优势与不足,为本次系统设计明确了设计方向与核心目标,为后续的方案设计、软硬件开发奠定了理论基础。2功能与设计方案2.1系统功能要求基结合智能家居的实际使用需求,本次设计的系统需要实现以下核心功能:可实时采集室内的温湿度、PM2.5浓度、光照强度数据,同时通过实时时钟模块获取准确的时间信息,为系统控制提供数据支撑。可根据预设的环境参数阈值,自动控制对应设备的开关:光照强度低于下限值时自动开启灯光,PM2.5浓度高于阈值时自动开启通风风扇,温度高于上限值时自动开启降温风扇,湿度低于下限值时自动开启加湿器。通过8个独立按键实现变量检测的切换、环境参数阈值调节、时间参数设置、所有设备的手动开关控制、门窗模拟开关控制,保证系统离线状态下的可操作性。通过OLED显示屏实现变量检测的显示,可实时显示环境参数、设备状态、预设阈值、时间信息等所有内容,实现良好的人机交互。通过语音模块实现离线语音识别与播报,可通过语音指令控制所有设备的开关、调节灯光亮度,同时可语音播报当前的环境参数与时间信息,无需手动操作即可完成设备管控。通过WiFi模块接入阿里云物联网平台,可将实时采集的环境参数与设备状态远程上传到平台,同时接收平台下发的控制指令,实现设备的远程开关与参数调节,打破空间限制。2.2系统设计方案本设计搭建了一套以STM32F103C8T6单片机为核心的硬件架构,搭配各类传感器、人机交互模块、执行器驱动模块、无线通信模块,通过模块化的软件程序实现数据采集、逻辑处理、设备控制、通信交互等全流程功能。整个系统分为中控部分、输入部分、输出部分三大核心单元。中控部分以STM32F103C8T6单片机为核心,负责所有输入数据的处理、控制逻辑的运算、输出模块的调度,是整个系统的控制中枢。输入部分由六类模块组成,分别是光敏电阻、DS1302时钟模块、DHT11温湿度传感器、GP2Y1014AUPM2.5检测模块、独立按键模块与供电电路,负责采集系统运行所需的各类环境数据、控制指令与时间基准。输出部分由八类模块组成,分别是OLED显示模块、LED灯光驱动模块、SG90舵机模块、三路继电器驱动模块、ESP8266WiFi模块与SU-03T语音模块,负责实现参数可视化、设备驱动、人机交互与远程通信功能。单片机上电完成初始化后,周期性采集输入部分的环境参数与按键指令,同时实时接收语音模块与WiFi模块的控制指令,经过内部逻辑处理后,一方面通过OLED显示屏实时更新显示内容,另一方面根据预设阈值与控制指令,驱动对应的执行器完成相应动作,同时通过WiFi模块完成数据上传与远程指令接收。软件开发依托Keil5平台,采用C语言进行编程,将不同功能拆分为独立的子程序模块,实现模块化编程,提升程序的稳定性与可维护性。该系统整合了监测、调控、交互、通信四大核心功能,实现了较高程度的自动化与智能化,模块化的设计也为后续的功能升级预留了充足的空间。图2.1系统硬件模块工作框图2.3本章小结本章结合智能家居的实际使用需求,明确了系统环境监测、自动调控、多模式控制、人机交互、远程通信六大核心功能要求。基于功能需求完成了系统整体设计方案的搭建,将系统划分为中控、输入、输出三大核心单元,明确了各单元的组成模块与运行逻辑,同时确定了软件开发平台与编程方式,为后续的硬件电路设计与软件程序开发提供了清晰的设计框架。3系统的硬件设计3.1器件方案对比3.1.1单片机的选型方案一:STC89C52单片机STC89C52是入门级8位单片机,价格低廉、开发门槛低,在简单的单模块控制场景中应用广泛。但结合本次毕业设计的系统需求来看,该单片机存在明显的适配短板:一是可用的控制引脚数量少,本次设计需要同时对接温湿度、PM2.5、光照等多个传感器,以及语音、WiFi、显示、按键、继电器、舵机等十余个功能模块,该芯片的引脚数量无法满足多模块同时接线的需求;二是数据处理能力有限,无法同时完成多组传感器数据采集、多指令同步解析、多设备联动控制,容易出现数据延迟、指令响应卡顿的问题;三是可扩展性差,后续想要新增燃气检测、安防报警等功能时,芯片的硬件资源无法支撑,不适合本次设计的多功能集成需求[7]。方案二:STM32F103C8T6单片机STM32F103C8T6是一款通用性极强的32位单片机,完全适配本次毕业设计的系统设计需求。首先,该芯片拥有充足的可编程控制引脚,可同时对接本次设计所有的传感器、通信模块、执行器与人机交互模块,无需额外扩展电路,接线设计更简洁稳定;其次,芯片可同步处理多组传感器数据、并行响应按键、语音、WiFi三路控制指令,能保证系统实时采集环境数据、快速响应控制指令,不会出现卡顿、延迟的问题;第三,芯片预留了充足的硬件接口资源,后续想要新增安防报警、人体感应等功能时,可直接对接扩展,无需更换核心控制芯片;最后,该单片机的开发资料丰富,遇到问题时可参考的案例多,能大幅降低本次设计的开发难度,保障系统稳定运行[8]。经过综合对比,STC89C52单片机仅能满足简单的单功能控制需求,无法适配本次设计多模块集成、多指令同步响应、后续可扩展的核心需求,而STM32F103C8T6单片机完全贴合本次毕业设计的所有功能设计要求,能保障系统稳定、流畅运行,因此本次设计选用该单片机作为系统的核心控制单元。3.1.2显示模块的选型方案一:LCD1602显示模块LCD1602是基础的字符型显示模块,价格低廉、控制逻辑简单,仅适合简单的数字显示场景。但结合本次设计的需求来看,该模块存在明显不足:一是显示内容极其有限,仅能显示两行英文字符与数字,无法显示中文,也不能同时展示本次设计需要的温湿度、PM2.5、光照、时间、设备状态等多组参数,用户无法直观查看系统完整信息;二是接线占用引脚数量多,需要占用单片机8个并行引脚,会进一步占用本就紧张的引脚资源,不适合多模块集成的系统设计。方案二:OLED显示屏本次设计选用的128*64分辨率OLED显示屏,完全适配本次系统的显示需求。首先,该模块可清晰显示中文、数字、符号,能同时展示环境参数、设备状态、阈值设置、时间信息等所有系统内容,还支持多界面切换,用户可通过按键切换查看不同信息,完全满足人机交互的可视化需求;其次,该模块仅需2个引脚即可完成与单片机的通信,占用引脚资源极少,不会影响其他模块的接线;最后,该模块无需背光源,功耗低、显示清晰,适合家居场景长期通电使用。综合本次设计的显示需求与硬件资源分配,LCD1602无法满足多参数、中文显示的核心需求,而OLED显示屏在显示内容丰富度、引脚占用、使用适配性上均具备显著优势,因此本次设计选用OLED显示屏作为系统的显示单元。3.1.3通信模块的选型方案一:GSM短信模块GSM模块可依托手机通信网络实现远距离指令传输,适合无WiFi的户外场景使用。但结合本次智能家居的设计需求,该模块存在明显的适配短板:一是使用成本高,通信过程需要收取短信费用,长期使用会产生额外开销,不符合家庭低成本使用的需求;二是功能单一,仅能实现简单的短信指令收发,无法实时上传大量的环境参数数据,也不能接入物联网平台实现手机APP可视化远程管控,无法满足本次设计远程实时监测与控制的核心需求;三是模块控制逻辑复杂,会大幅增加系统的开发难度。方案二:ESP8266WiFi模块ESP8266WiFi模块完全适配本次智能家居系统的远程控制需求。首先,该模块依托家庭WiFi网络即可运行,无额外的通信费用,符合低成本的设计要求;其次,模块可实现串口与WiFi网络的双向数据传输,既能将系统采集的环境参数、设备状态实时上传到阿里云物联网平台,也能接收手机APP下发的控制指令,完全满足远程监测与远程控制的双向需求;第三,模块开发资料丰富,接线与控制逻辑简单,集成难度低,能快速实现远程通信功能,适配本次设计的开发需求。结合家居场景的使用环境与系统的远程控制需求,GSM模块无法满足低成本、实时双向通信的核心要求,而ESP8266WiFi模块在功能适配性、使用成本、开发便捷性上更符合设计要求,因此本次设计选用该模块作为系统的无线通信单元。3.1.4语音模块的选型方案一:MY1680语音合成模块MY1680模块可实现文本转语音的播报功能,适合需要自定义播报内容的场景。但结合本次设计的需求,该模块存在核心功能缺失:一是仅能实现语音播报,不具备语音识别功能,无法完成本次设计核心的语音控制需求,不能通过语音指令控制家居设备;二是模块运行需要占用单片机大量的存储空间与运算资源,会影响系统其他模块的正常运行,同时开发难度高,不适合本次多模块集成的系统设计。方案二:SU-03T离线语音模块SU-03T离线语音模块完全适配本次系统的语音交互需求。首先,模块同时具备离线语音识别与语音播报两大核心功能,无需联网即可识别语音指令、播报系统参数,完全满足本次设计离线语音控制的需求,解决了断网后智能功能失效的问题;其次,模块内置独立的语音处理芯片,所有语音识别与播报功能都在模块内部完成,几乎不占用单片机的运算与存储资源,不会影响系统其他模块的运行;第三,模块控制逻辑简单,可直接预置本次设计需要的所有控制指令与播报语音,开发难度低,集成便捷,同时价格低廉,符合低成本的设计要求。综合系统的语音交互需求与开发难度,MY1680模块无法实现语音控制的核心功能,而SU-03T语音模块完全满足本次设计的离线语音交互需求,同时具备运行稳定、开发便捷、成本低廉的优势,因此本次设计选用该模块作为系统的语音交互单元。3.2单片机模块本系统的核心控制单元为STM32F103C8T6单片机,该芯片基于ARMCortex-M3内核设计,采用32位精简指令集架构,最大工作频率可达72MHz,具备极强的数据处理能力与实时响应能力。芯片内部集成了64KB的FLASH闪存与20KB的静态随机访问内存,可充分满足系统程序的存储与运行需求,同时配备了丰富的外设接口,包含3路USART串口、2路SPI接口、2路IIC接口、3路12位ADC通道、多路定时器与PWM输出引脚,可灵活对接系统内的各类外设模块,实现高效的数据通信与控制。STM32F103C8T6单片机的额定工作电压为3.3V,部分I/O端口兼容5V电平,可适配不同外设的电平需求,芯片提供了48个可编程I/O接口,可满足本系统多模块的集成需求,同时支持多种低功耗运行模式,可降低系统的长期运行功耗,适配家居场景的持续运行需求。在本系统中,STM32F103C8T6单片机的最小系统由核心芯片、电源电路、复位电路、晶振电路、BOOT设置电路五部分组成。晶振电路包含8MHz的主晶振与32.768kHz的实时时钟晶振,为单片机提供精准的时钟基准;复位电路采用按键复位设计,可实现单片机的手动硬件复位;BOOT设置电路通过10K电阻配置芯片的启动模式,适配程序下载与正常运行两种场景。单片机的I/O口根据外设功能进行分配,通过IIC接口连接OLED显示屏,通过单总线接口连接DHT11温湿度传感器,通过ADC通道连接PM2.5检测模块与光敏电阻模块,通过USART串口连接语音模块与WiFi模块,通过普通I/O口连接按键模块与继电器驱动模块,通过PWM输出引脚连接灯光驱动与舵机驱动模块,实现所有外设的集中管控。图3.1STM32F103单片机接线情况3.3温湿度检测模块DHT11是一款集成了温湿度传感元件与信号处理电路的数字温湿度传感器,具备校准数字信号输出的特点,非常适合家居环境的温湿度监测。该传感器的测量温度范围为0-50℃,精度为±2℃,测量湿度范围为20%-90%RH,精度为±5%RH,完全满足室内家居环境的监测精度需求。传感器采用单总线通信协议,仅需一个GPIO引脚即可实现单片机与传感器之间的双向数据通信,电路设计极为简洁,模块的VCC与GND引脚分别连接5V电源与地,DATA引脚直接连接单片机的普通I/O口,同时串联了上拉电阻,保证通信的稳定性。在系统运行过程中,单片机每500ms向传感器发送一次读取指令,传感器返回采集到的温度与湿度数据,经过单片机处理后,作为自动调控的核心依据。图3.2DHT11温湿度检测模块实际接线图3.4无线模块无线通信模块采用ESP8266-12FWiFi模块,是系统实现远程管控的核心单元,模块内置32位处理器与TCP/IP协议栈,支持串口转WiFi功能,可实现局域网与广域网的双向数据通信,支持STA/AP/STA+AP三种工作模式,可灵活接入家庭WiFi网络与阿里云物联网平台。模块通过USART串口与单片机连接,最高波特率可达4Mbps,数据传输稳定高效,同时模块体积小巧,功耗极低,非常适合嵌入式系统的无线通信场景。连接时VCC与GND引脚连接3.3V电源与地,TXD与RXD引脚分别连接单片机串口的RXD与TXD引脚,实现串口双向通信,EN引脚连接单片机的普通I/O口,可实现模块的使能控制。系统运行过程中,模块首先接入家庭WiFi网络,然后与阿里云物联网平台建立MQTT连接,完成设备的注册与上线;连接成功后,单片机通过模块定时将环境参数、设备状态数据上传到云平台,用户可通过手机端远程查看实时数据;同时模块实时监听云平台下发的控制指令,接收到指令后通过串口发送给单片机,单片机解析后执行对应的设备控制操作,实现完整的远程监测与控制功能。图3.3ESP8266实际接线图3.5PM2.5传感器模块GP2Y1014AU是一款光学粉尘传感器,采用红外光散射原理,可精准检测空气中的PM2.5颗粒物浓度,适配室内空气质量监测场景。模块内部集成了红外发光二极管、光电探测器、信号放大与滤波电路,可输出与粉尘浓度成正比的模拟电压信号,测量范围可达0-500μg/m³,完全满足室内环境的PM2.5监测需求。GP2Y1014AU的VCC与GND引脚连接5V电源与地,模拟输出引脚连接单片机的ADC通道,单片机通过AD转换将模块输出的模拟电压信号转换为数字量,再通过对应的换算关系计算出实际的PM2.5浓度值。模块的LED控制引脚连接单片机的普通I/O口,单片机可通过输出高低电平控制红外发光二极管的通断,配合采样时序实现精准的浓度检测,为通风风扇的自动控制提供数据依据[9]。GP2Y1014AU传感器的输出电压值与PM2.5浓度之间的转换关系可表示为:CPM2.5=(式中,CPM2.5为PM2.5浓度(μg/m³),Vout为传感器输出电压(V),V0为无尘环境下的输出电压(一般为0.9V),K为比例系数(约为11μg/m³·V)。在本系统中,VoutVout=ADCvalue·其中,ADCvalue为ADC采样值,vref为参考电压(3.3V),212为12位ADC图3.4GP2Y1014AUPM2.5传感器模块实际接线图3.6语音识别模块SU-03T离线语音模块负责语音指令的识别与语音播报功能,模块内置语音识别处理器、音频采集电路与功率放大电路,可直接外接扬声器实现语音播放,通过USART串口与单片机实现双向数据通信。模块支持离线语音识别,无需联网即可完成指令识别,在室内环境下识别距离可达5米,识别准确率超过95%,响应速度小于0.5秒,完全满足家居场景的语音交互需求。SU-03T的VCC与GND引脚连接5V电源与地,TXD与RXD引脚分别连接单片机串口的RXD与TXD引脚,实现串口通信。模块内预置了系统所需的全部语音指令,包括灯光、风扇、加湿器、门窗的开关控制指令,灯光亮度调节指令,以及环境参数、时间信息的播报指令,同时预置了对应的播报语音。当模块识别到对应的语音指令后,通过串口向单片机发送对应的指令码,单片机接收解析后执行对应的操作;当单片机需要播报参数信息时,通过串口向模块发送播报指令,模块即可播放对应的语音内容,实现完整的语音交互功能[10]。图3.5SU-03T语音识别模块实际接线图3.7显示模块本系统采用128*64分辨率的OLED显示屏,驱动芯片为SSD1306,通过IIC接口与单片机通信,仅需SDA与SCL两个引脚即可完成数据传输,占用极少的单片机引脚资源。模块的工作电压为3.3V,VCC与GND引脚连接系统的3.3V供电,具备自发光特性,无需背光源,功耗极低,同时具备宽视角、高对比度、响应速度快的特点,在室内环境下显示效果清晰稳定。系统设计了12个独立的显示界面,通过按键切换不同的界面,主界面可实时显示当前的时间、温湿度、PM2.5浓度、光照强度等核心环境参数;阈值设置界面可显示温度上限、湿度下限、PM2.5阈值、光照下限的预设数值,同时支持参数调整;时间设置界面可显示年、月、日、时、分、秒、星期的设置选项,实现时间参数的可视化调整。在系统运行过程中,显示子程序根据当前的界面标志位,实时更新显示屏的内容,实现所有系统参数的可视化展示,为用户提供良好的人机交互体验。图3.6显示模块实际接线图3.8继电器电路设计本系统设计了3路继电器驱动模块,分别控制通风风扇、加湿器、降温风扇三类大功率设备,继电器型号为SRD-05VDC-SL-C,支持5V直流驱动,触点可承受250V/10A的交流负载,完全满足家居家电的驱动需求。每路继电器均采用独立的驱动电路,通过NPN三极管与单片机的GPIO口连接,单片机输出高电平时,三极管导通,继电器线圈得电,触点吸合,设备通电运行;单片机输出低电平时,三极管截止,继电器线圈失电,触点断开,设备停止运行。每路继电器的驱动电路均设计了续流二极管,可有效吸收继电器线圈断开时产生的反向电动势,保护三极管与单片机引脚不受损坏,同时每路继电器都设计了工作状态指示灯,可直观显示继电器的通断状态。模块的控制逻辑同时支持自动与手动模式,自动模式下根据环境参数阈值自动控制继电器通断,手动模式下响应按键、语音、远程的控制指令,实现设备的灵活管控。图3.7继电器模块电路实际接线图3.9光敏电阻模块光敏电阻检测模块通过光敏电阻的光电效应实现光照强度的检测,光敏电阻的阻值会随环境光照强度的变化而变化,光照强度越高,阻值越低,反之阻值越高。模块通过分压电路将光敏电阻的阻值变化转换为模拟电压信号,输出到单片机的ADC通道,单片机通过AD转换将电压信号转换为数字量,换算出对应的光照强度百分比,实现室内光照强度的实时检测。光敏电阻的VCC与GND引脚连接3.3V电源与地,模拟输出引脚连接单片机的ADC通道,同时设计了可调分压电阻,可根据实际使用场景调整检测的灵敏度。在系统运行过程中,单片机将检测到的光照强度与预设的下限阈值进行对比,实现LED灯光的自动控制。图3.85516实际接线图3.10本章小结本章围绕系统设计方案完成了全流程硬件设计,首先结合本次设计的实际功能需求,完成了单片机、显示模块、通信模块、语音模块的核心器件选型对比,确定了最优器件方案。随后完成了单片机最小系统、各类传感器模块、人机交互模块、执行器驱动模块的电路设计与接线说明,明确了各模块的工作原理与数据处理逻辑,搭建了完整的系统硬件架构,为软件程序开发提供了硬件基础。4系统的软件设计4.1软件介绍本系统的软件开发基于Keil5集成开发环境完成,该环境专为ARM系列微控制器设计,具备全面的开发支持能力,广泛兼容Cortex-M系列内核的单片机,是嵌入式系统开发的主流工具。Keil5集成了项目管理、源代码编辑、代码编译、在线调试、程序烧录等全流程功能,内置的代码编辑器支持语法高亮、自动缩进、代码补全等功能,可高效完成C语言与汇编语言的代码编写,同时支持模块化编程,可将不同功能的代码拆分为独立的文件,方便程序的调试、维护与后续功能扩展。软件编译完成后,可生成对应的HEX文件,通过烧录器直接下载到STM32单片机中,同时支持在线仿真调试,可实时查看程序的运行状态、变量数值与寄存器状态,快速定位代码中的问题,大幅提升开发效率。本系统的全部程序代码均采用C语言编写,代码结构清晰,注释完整,具备良好的可读性与可移植性,完全适配系统的硬件设计与功能需求。图4.1Keil_5软件界面4.2软件程序的设计4.2.1主程序流程图系统的主流程图如图4.2所示,系统上电后,首先执行硬件初始化操作,依次完成HAL库初始化、系统时钟配置、GPIO口初始化、定时器初始化、ADC初始化、串口初始化、中断配置等片内外设的初始化,保证单片机的基础运行环境正常;随后依次完成OLED显示屏、DS1302时钟模块、ESP8266WiFi模块的外设初始化,建立基础的人机交互与通信环境;初始化全部完成后,开启定时器中断与串口接收中断,保证系统的实时响应能力,随后进入无限循环的主程序。在主循环中,程序按照固定的顺序依次调用核心功能函数,首先调用按键处理函数,完成按键扫描与键值处理,响应用户的本地按键操作;随后调用监测函数,完成环境参数的采集、时间数据的读取、串口指令的接收与解析,为系统提供最新的数据与控制指令;接下来调用显示函数,根据当前的界面标志位与最新数据,更新OLED显示屏的显示内容;然后调用逻辑处理函数,根据采集的环境参数与控制指令,完成自动控制逻辑运算与设备驱动;最后调用WiFi通信函数,完成数据上传与远程指令的接收处理。主程序循环往复执行上述流程,实现系统的持续稳定运行,所有功能的实时响应。图4.2系统逻辑流程图4.2.2按键子程序流程介绍按键函数子流程图如图4.3所示,按键子程序的核心功能是完成按键扫描、按键消抖与键值处理,程序通过定时器中断实现1ms一次的按键周期性扫描,避免了主循环扫描导致的响应延迟问题,同时通过连续多次电平检测实现软件消抖,有效避免了按键机械抖动导致的误触发问题。程序扫描到有效的按键动作后,获取对应的键值,根据键值与当前的显示界面标志位,执行对应的操作。当按键1被按下时,程序切换显示界面标志位,同时清空显示屏,完成界面的切换;当按键2与按键3被按下时,程序根据当前的界面标志位,执行对应的参数调整操作,在主界面下实现灯光亮度的调节,在阈值设置界面下实现参数阈值的增减,在时间设置界面下实现时间参数的调整;当按键4到按键8被按下时,程序直接切换对应设备的控制标志位,实现灯光、降温风扇、加湿器、通风风扇、门窗的手动开关控制,同时更新设备的运行状态。图4.3按键子程序流程图4.2.3显示模块子程序流程介绍显示函数流程图如图4.4所示,程序首先调用时间显示函数,在显示屏的固定位置显示当前的时、分、秒信息,保证所有界面下均可查看实时时间;随后根据当前的界面标志位,进入对应的显示分支,更新显示屏的对应内容。在主界面下,程序依次显示当前的温湿度、PM2.5浓度、光照强度数值,同时标注对应的单位;在阈值设置界面下,程序显示当前设置的参数阈值,同时显示调整提示,方便用户通过按键完成参数调整;在时间设置界面下,程序显示当前设置的年、月、日、时、分、秒、星期信息,标注当前调整的参数项,实现时间参数的可视化设置。程序在界面切换时会执行清屏操作,避免不同界面的内容重叠,同时优化了显示刷新逻辑,仅更新数值变化的区域,提升了显示的流畅度。图4.4显示子程序流程图4.3本章小结本章基于系统硬件架构与功能需求完成了软件程序的全流程设计,首先介绍了本次设计使用的Keil5软件开发环境,明确了开发语言与编程方式。随后完成了系统主程序的流程设计,明确了系统上电后的运行逻辑,同时完成了按键子程序、显示子程序的核心流程设计,将系统功能拆分为独立的子程序模块,实现了模块化编程,保障了系统程序的稳定运行与可维护性。5系统的测试5.1软件硬件调试5.1.1软件调试软件调试分为单元测试与集成测试两个阶段,单元测试阶段针对每个独立的子程序模块,进行单独的代码验证与功能测试,确保每个模块都能独立正常运行。针对按键处理模块,代码编写完成后下载到单片机中,通过按下不同的按键,查看串口输出的键值与OLED界面的变化,验证按键扫描、消抖与键值处理功能的准确性,调整按键的响应灵敏度,避免误触发与无响应的问题;针对数据监测模块,通过改变测试环境的温湿度、光照强度,对比显示屏的读数与标准仪器的测量数值,验证数据采集与换算逻辑的准确性,调整采样周期与滤波算法,保证数据的稳定性;针对语音与WiFi通信模块,通过发送对应的指令,查看单片机的接收与解析结果,验证串口通信与指令解析逻辑的正确性,确保所有指令都能被准确识别与执行。所有单元模块都通过功能测试后,进入集成测试阶段,将所有模块的代码整合到工程中,进行整体编译与下载,模拟真实的家居使用场景,验证系统的整体运行逻辑。测试过程中,重点验证系统的联动逻辑,比如在高温环境下,系统是否能准确识别温度超标,自动开启降温风扇;发送语音控制指令后,系统是否能准确响应,执行对应的设备控制;远程下发控制指令后,系统是否能实时接收并执行,同时将设备状态回传到平台。通过集成测试,优化了程序的运行逻辑,解决了模块之间的冲突问题,保证了系统整体运行的稳定性与功能的完整性。5.1.2硬件调试硬件调试分为单个模块调试与整体系统联调两个阶段,单个模块调试阶段,针对焊接完成的每一个硬件模块,进行单独的通电测试,排除硬件本身的缺陷与焊接问题。针对电源模块,通电后使用万用表测量5V与3.3V的输出电压,验证稳压电路的输出精度与稳定性,排查短路、虚焊等问题,确保电源输出正常;针对传感器模块,单独通电后,查看模块的工作状态指示灯,使用示波器查看输出信号,验证模块的硬件工作正常;针对继电器、舵机等执行器模块,单独输入控制信号,查看模块的动作是否正常,触点通断是否准确,舵机旋转角度是否符合预期;针对语音与WiFi通信模块,单独通电后,通过串口发送测试指令,查看模块的响应情况,验证模块的通信功能正常。所有单个模块都通过测试后,进入整体系统联调阶段,将所有模块按照原理图连接到单片机最小系统,进行整体通电测试。联调过程中,首先检查所有模块的供电是否正常,避免出现电压不匹配导致的模块损坏;随后测试单片机与所有外设模块的通信是否正常,排查接线错误、引脚冲突等问题;最后模拟真实的运行场景,长时间通电测试,查看系统的运行稳定性,排查模块之间的干扰问题,确保硬件系统可长时间稳定运行。5.2模块功能测试5.2.1传感器模块测试(1)温湿度传感器测试本测试主要验证DHT11传感器的温湿度检测功能。测试过程中,将DHT11传感器与标准温湿度计放置在同一环境下,同时记录两者读数,计算误差。经测试,DHT11温度传感器在5-40℃范围内工作稳定,测量精度约为±0.5℃,满足设计要求;湿度传感器在20%-90%RH范围内工作稳定,测量精度约为±3%RH。系统能够准确识别温湿度变化并实时显示在OLED屏幕上,实现了家居环境温湿度的实时监测功能。根据预设阈值,当检测到温度超过27℃时,系统自动启动降温风扇;当湿度低于40%时,系统自动开启加湿器,有效调节室内环境,提供了舒适的居住条件。图5.1温度检测图5.2湿度检测(2)PM2.5传感器测试本测试验证GP2Y1014AUPM2.5传感器的检测功能。测试中,将传感器与商用PM2.5检测仪(AirVisualPro)在相同位置进行对比测量,经测试,系统PM2.5检测功能在10-500μg/m³范围内工作正常,与商用检测仪对比误差在±15μg/m³范围内,相对误差随着浓度增加而降低,在高浓度区域相对误差控制在10%以内,满足家居环境监测需求。系统根据检测结果实现了自动通风控制,当PM2.5浓度超过100μg/m³时,通风系统自动开启;当浓度降至50μg/m³以下时,通风系统关闭,有效保障了室内空气质量,减少了颗粒物对人体健康的影响。图5.3pm2.5检测(3)光照强度传感器测试本测试验证5516光敏电阻对环境光照强度的检测功能。使用专业照度计(TES-1339)作为参考,在不同光照条件下对比测量数据,经测试,光照强度检测模块能够准确反映环境光线变化,系统根据预设光强阈值自动控制补光灯的开关和亮度,实现了智能照明功能。在各种光照条件下,系统能够维持室内光照舒适度,避免光线过强或过弱对用户视觉舒适度的影响,同时通过PWM调光技术实现了多级亮度调节,节约能源的同时提供了更佳的用户体验。图5.4光照检测5.2.2控制执行模块测试(1)继电器控制测试本测试验证继电器模块对加湿器、降温风扇和通风设备的控制功能。通过模拟不同环境参数,观察继电器控制状态,经测试,继电器控制模块响应灵敏,切换稳定,平均响应时间为154ms,符合系统实时控制要求。系统能够根据环境参数自动控制相关设备,实现了智能家居的自动化控制功能。通过对环境参数的实时监测和智能控制,系统能够维持最佳室内环境,提升居住舒适度和健康水平。此外,继电器模块还支持通过按键、语音指令和手机APP进行手动控制,三种控制方式均工作正常,提供了灵活多样的人机交互方式。(2)舵机控制测试本测试验证SG90舵机对门窗系统的控制功能。测试通过不同控制命令观察舵机角度变化,经测试,舵机控制精度在±4°范围内,动作时间平均为409ms,能够准确控制门窗开关状态。系统成功实现了通过按键、语音指令和手机APP三种方式控制门窗开关的功能,为用户提供了便捷的控制体验。特别是在PM2.5浓度过高时,系统能够自动关闭门窗并开启通风设备,有效防止室外污染物进入室内,保障室内空气质量。表5.1舵机控制动作时间测试统计表测试序号控制指令实测动作时间(ms)角度控制误差(°)1门窗开启412+22门窗关闭405-13门窗开启415+34门窗关闭402-25门窗开启408+16门窗关闭410-37门窗开启406+28门窗关闭413-29门窗开启407+110门窗关闭412-3平均值——409±2.2系统成功实现了通过按键、语音指令和手机APP三种方式控制门窗开关的功能,为用户提供了便捷的控制体验。特别是在PM2.5浓度过高时,系统能够自动关闭门窗并开启通风设备,有效防止室外污染物进入室内,保障室内空气质量。5.2.3人机交互模块测试(1)OLED显示测试本测试验证OLED显示模块的信息显示功能。通过显示不同类型的信息,评估显示效果,经测试,OLED显示模块对比度高,亮度适中,可视角度大,刷新率满足人眼视觉需求,各种信息显示清晰易读。系统通过OLED屏幕成功实现了多界面切换功能,包括实时环境参数显示、系统设置界面和设备状态显示等。用户可通过按键进行界面切换和参数设置,操作简便直观。OLED显示模块为用户提供了良好的视觉反馈,使系统状态和环境参数一目了然,大大提升了系统的可用性。(2)语音识别与控制测试本测试验证SU-03T语音识别模块的指令识别功能。在不同环境噪声条件下测试语音指令识别率,经测试,语音识别模块在正常室内环境下识别率达到94%以上,平均响应时间小于300ms,满足日常使用需求。系统成功实现了多种语音控制功能,包括灯光开关与亮度调节、加湿器控制、门窗控制、风扇控制等,以及环境参数查询功能。语音控制方式特别适合老年人、儿童和行动不便人士使用,极大提高了系统的可访问性。此外,系统还提供语音反馈功能,对用户指令执行结果进行语音确认,形成了完整的语音交互闭环。5.2.4无线通信模块测试本测试验证ESP8266无线模块的通信功能。在不同距离和障碍条件下测试数据传输性能,经测试,ESP8266无线模块在家庭环境中通信性能稳定,传输成功率在正常使用条件下达到95%以上,平均通信延迟小于100ms,满足智能家居远程控制需求。系统成功实现了通过移动应用程序远程监控家居环境和控制家居设备的功能。用户可以通过手机APP实时查看室内温湿度、PM2.5浓度和光照强度,并远程控制灯光、加湿器、风扇和门窗等设备,实现了真正的"随时随地掌控家居环境"的目标。此外,系统还支持数据历史记录和趋势图显示功能,帮助用户了解家居环境的变化趋势。5.3本章小结本章完成了系统的全流程测试验证工作,首先分别开展了软件与硬件的分阶段调试,完成了单元模块测试与整体系统联调,解决了软硬件运行中的各类问题。随后针对传感器模块、控制执行模块、人机交互模块、无线通信模块开展了专项功能测试,验证了系统各项功能的运行效果,测试结果表明系统所有预设功能均正常实现,运行稳定,测量精度与响应速度均满足设计要求。

结论随着物联网与嵌入式技术的快速发展,智能家居已经成为家居行业的必然发展趋势,针对传统家居控制方式单一、智能化程度低、现有智能生态成本高、兼容性差的问题,本文设计了一套基于STM32单片机的智能家居控制系统。系统以STM32F103C8T6为核心控制器,整合了环境参数采集、人机交互、执行器驱动、无线通信四大核心单元,实现了家居环境实时监测、设备自动调控、本地按键控制、离线语音控制、WiFi远程控制等完整功能,无需复杂的布线与生态适配,即可实现基础的家居智能化管控。本系统硬件电路设计简洁,整体成本低廉,所有元器件均为通用型器件,采购与维护便捷,同时具备极强的可扩展性,后续可根据需求增加人体感应、燃气泄漏检测、安防报警等功能模块,进一步完善系统的智能家居管控能力。软件程序采用模块化编程,代码结构清晰,运行稳定可靠,同时优化了自动控制逻辑与交互体验,操作简便,无需专业知识即可快速上手使用。经过系统的软硬件调试与实物功能验证,本系统的所有预设功能均正常实现,运行稳定,测量精度与控制响应速度均满足设计要求,既能满足普通家庭对智能家居的基础需求,也能为嵌入式与物联网技术的学习提供良好的工程实践案例,具备较高的实际应用价值与推广意义。参考文献[1]石磊.涉密场所使用智能家居设备的信息安全隐患与防护[J].中国科技信息,2025,(10):41-43.[2]李龙海,李毅搏,王宇,等.多功能智能家居系统设计与实现[J].科技创新与应用,2025,15(13):129-135.[3]王银,张绍杰,樊夏漪.LoRa技术在智能家居无线环境监测中的应用研究[J].家电维修,2025,(04):86-88.[4]朱冰雁.基于物联网的智能家居安全加密方法分析[J].网络安全和信息化,2025,(04):113-115.[5]高剑平.低功耗无线通信技术在智能家居中的实现[J].智慧中国,2025,(03):42-43.[6]张宇英,徐浙英.基于物联网的智能家居安全系统研究[J].电脑知识与技术,2025,21(08):83-85+89.[7]季思尧,李淮江,李淮海,等.基于STM32智能家居与安全通信系统设计[J].淮北师范大学学报(自然科学版),2024,45(04):19-23.[8]王公泽.基于单片机的智能家居控制系统设计[J].中国信息化,2024,(11):72-73.[9]宋晓虹.物联网技术在智能家居中的应用与优化[J].电子技术,2024,53(11):362-363.[10]戴小红.物联网传感器技术在智能家居中的应用[J].大众标准化,2024,(21):137-139.[11]周子楠.基于STC12C4052AD单片机的智能家居灯光控制系统设计与实现[J].家电维修,2024,(11):71-73.[12]韩耀航.基于ARM的语音控制智能家居系统设计[J].电子技术,2024,53(09):200-201.[13]任富民.基于STM32的智能家居系统设计与实现[J].电脑知识与技术,2024,20(26):80-82+94.[14]汪馨童.基于STM32的智能家居系统研究[J].长江信息通信,2024,37(09):120-122.DOI:10.20153/j.issn.2096-9759.2024.09.036.[15]刘俊峰,乔有田.基于ESP32与微信小程序的智能家居控制系统[J].科技创新与应用,2024,14(25):41-44.[16]郭书杰.基于STM32的智能家居控制系统设计[J].微处理机,2024,45(04):55-59.[17]张利.单片机技术在智能家居系统中的应用[J].电子技术,2024,53(07):338-339.[18]雷智强.基于语音识别的智能家居设计与实现[J].智能物联技术,2024,56(04):82-85.[19]马永杰,李罡,刘庭伟,等.基于树莓派的智能家居系统开发设计[J].吉林化工学院学报,2024,41(07):26-33.[20]路鹏,杨金波,詹雨萌.基于物联网技术的智能家居产品设计[J].上海服饰,2024,(07):66-68.谢辞在此,我要诚挚地感谢我的指导老师,在本次毕业设计的全流程中,从最初的选题论证、方案设计,到中期的硬件制作、软件编程,再到后期的系统调试与论文撰写,老师都给予了我悉心的指导和耐心的帮助。面对设计过程中遇到的硬件焊接、程序调试、逻辑优化等诸多难题,老师为我提供了清晰的解决思路与专业的指导意见,让我能够顺利攻克难关,完成本次毕业设计的全部内容。同时,我也要感谢大学期间所有的授课老师,是你们的专业教学,为我打下了扎实的单片机、嵌入式、电路设计等专业理论基础,让我具备了完成本次系统设计的专业能力。感谢我的同学与朋友们,在设计过程中与我交流探讨技术问题,分享开发经验,给予了我很多启发与帮助。最后,我要感谢我的家人,一直以来给予我的无条件支持与鼓励,让我能够安心完成学业与本次毕业设计。本次毕业设计的经历,让我对嵌入式系统与物联网技术有了更深入的理解,也提升了我的工程实践能力与问题解决能力。在未来的学习与工作中,我会继续深耕专业领域,不断提升自己的专业能力,以更好的表现回报老师与家人的期望。附录A原理图:

附录B/*USERCODEBEGINHeader*//*********************************************************************************@file:main.c*@brief:Mainprogrambody*******************************************************************************@attention**Copyright(c)2022STMicroelectronics.*Allrightsreserved.**ThissoftwareislicensedundertermsthatcanbefoundintheLICENSEfile*intherootdirectoryofthissoftwarecomponent.*IfnoLICENSEfilecomeswiththissoftware,itisprovidedAS-IS.********************************************************************************//*USERCODEENDHeader*//*Includes*/#include"main.h"#include"adc.h"#include"tim.h"#include"usart.h"#include"gpio.h"/*Privateincludes*//*USERCODEBEGINIncludes*/#include"./HAL/key/key.h"#include"./HAL/OLED/OLED_NEW.H"#include"./HAL/delay/delay.h"#include"./HAL/ds1302/ds1302.h"#include"./HAL/dht11/dht11.h"#include"./HAL/AliESP8266/AliESP8266.h"/*USERCODEENDIncludes*//*Privatetypedef*//*USERCODEBEGINPTD*/voidKey_function(void); //按键函数voidMonitor_function(void); //监测函数voidDisplay_function(void); //显示函数voidManage_function(void); //处理函数/*USERCODEENDPTD*//*Privatedefine*//*USERCODEBEGINPD*/uint8_tUSART1_TX_BUF[200];#defineu1_printf(...)HAL_UART_Transmit(&huart1,USART1_TX_BUF,sprintf((char*)USART1_TX_BUF,__VA_ARGS__),0xffff)uint8_tUSART2_TX_BUF[200];#defineu2_printf(...)HAL_UART_Transmit(&huart2,USART2_TX_BUF,sprintf((char*)USART2_TX_BUF,__VA_ARGS__),0xffff)uint8_tUSART3_TX_BUF[200];#defineu3_printf(...)HAL_UART_Transmit(&huart3,USART3_TX_BUF,sprintf((char*)USART3_TX_BUF,__VA_ARGS__),0xffff)/*USERCODEENDPD*//*Privatemacro*//*USERCODEBEGINPM*//*USERCODEENDPM*//*Privatevariables*//*USERCODEBEGINPV*/uint8_tkey_num,flag_display;//按键与显示变量uint16_ttime_1ms,time_500ms;//计时变量1ms,500ms//pwm控制uint32_tSG90_angle=500,light; //舵机角度控制变量(500-25000-180°)uint16_tSG90_time;uint8_tadc_ch,display_buf[20];//adc的个数uint32_tadc_buf[2];//adc数值的存储数组uint16_ttemp,humi; //雨滴传感器检测数值变量uint16_tPM2_5; //PM2.5浓度变量uint16_tgzqd; //光照强度uint16_ttemp_max=250; //温度上限uint16_thumi_min=200; //湿度下限uint16_tPM2_5_yu=100; //PM2.5阈值uint16_tgq_yu=20;//光强阈值uint8_tstart,IO_flag;//播放或停止歌曲标志位uint8_tfs_flag,ds_flag,kt_flag,beep_flag;uint16_tface_time,face_flag; //人脸识别时间周期,人脸识别标志位uint8_thour_set=12,min_set=0; //定时的小时、分钟uint8_tshi,fen,miao; //实时小时、分钟//串口1的数据获取uint8_tuart1_value;//串口传的单个数据//串口的储存数组,串口的接收时间,串口存值的数量uint8_tuart1_buf[36],uart1_time,uart1_num;uint8_tuart1_rx_flag;//串口的获取值的标志位uint16_tPublish_time; //WIFI推送计时变量uint8_tPublish_flag; //WIFI推送标志位/*USERCODEENDPV*//*Privatefunctionprototypes*/voidSystemClock_Config(void);/*USERCODEBEGINPFP*//*USERCODEENDPFP*//*Privateusercode*//*USERCODEBEGIN0*//***********按键设置函数*****/voidKey_function(void){key_num=Chiclet_Keyboard_Scan(); //按键扫描if(key_num!=0) //有按键按下{switch(key_num) { case1: //按键1,切换界面 flag_display++; if(flag_display>=12) //一共12个界面 flag_display=0; OLED_Clear(); //按一下,清屏一次 break; case2: //按键2 switch(flag_display) {case0: //界面1,调节亮度light==600?light=0:(light=600); break; case1: //设置温度上限+1if(temp_max<990)temp_max+=10; break; case2: //设置湿度下限+1 if(humi_min<990)humi_min+=10; break; case3: //界面3,PM2.5阈值+10 if(PM2_5_yu<300)PM2_5_yu+=10; break; case4: //界面4,光强阈值+1 if(gq_yu<100)gq_yu+=1; break; case5: //修改年+1 TIME[6]++; if(TIME[6]%0x10>9) { TIME[6]=TIME[6]+0x06; } Ds1302Init(); break; case6: //修改月+1 TIME[4]++; if(TIME[4]%0x10>9) { TIME[4]=TIME[4]+0x06; } if(TIME[4]>0x12) { TIME[4]=0x01; } Ds1302Init(); break; case7: //修改日+1 TIME[3]++; if(TIME[3]%0x10>9) { TIME[3]=TIME[3]+0x06; } if(TIME[3]>0x31) { TIME[3]=0x01; } Ds1302Init(); break; case8: //修改时+1 TIME[2]++; if(TIME[2]%0x10>9) { TIME[2]=TIME[2]+0x06; } if(TIME[2]>0x23) { TIME[2]=0x00; } Ds1302Init(); break; case9: //修改分+1 TIME[1]++; if(TIME[1]%0x10>9) { TIME[1]=TIME[1]+0x06; } if(TIME[1]>0x59) { TIME[1]=0x00; } Ds1302Init(); break; case10: //修改秒+1 TIME[0]++; if(TIME[0]%0x10>9) { TIME[0]=TIME[0]+0x06; } if(TIME[0]>0x59) { TIME[0]=0x00; } Ds1302Init(); break; case11: //修改星期+1 TIME[5]++; if(TIME[5]>0x07) { TIME[5]=0x01; } Ds1302Init(); break; } break; case3: //按键3 switch(flag_display) {case0: //界面1,开关if(light<1000) light+=200; break;case1: //设置温度上限-1 if(temp_max>0)temp_max-=10; break; case2: //设置湿度下限-1 if(humi_min>0)humi_min-=10; break; case3: //界面3,PM2.5阈值-10 if(PM2_5_yu>10)PM2_5_yu-=10; break; case4: //界面4,光强阈值-1 if(gq_yu>0)gq_yu-=1; break; case5: //修改年-1 TIME[6]--; if(TIME[6]%0x10==0x0f) { TIME[6]=TIME[6]-0x06; } Ds1302Init(); break; case6: //修改月-1 TIME[4]--; if(TIME[4]%0x10==0x0f) { TIME[4]=TIME[4]-0x06; } if(TIME[4]<0x01) { TIME[4]=0x12; } Ds1302Init(); break; case7: //修改日-1 TIME[3]--; if(TIME[3]%0x10==0x0f) { TIME[3]=TIME[3]-0x06; } if(TIME[3]<0x01) { TIME[3]=0x31; } Ds1302Init(); break; case8: //修改时-1 TIME[2]--; if(TIME[2]%0x10==0x0f) { TIME[2]=TIME[2]-0x06; } if(TIME[2]>0x23) { TIME[2]=0x23; } Ds1302Init(); break; case9: //修改分-1 TIME[1]--; if(TIME[1]%0x10==0x0f) { TIME[1]=TIME[1]-0x06; } if(TIME[1]>0x59) { TIME[1]=0x59; } Ds1302Init(); break; case10: //修改秒-1 TIME[0]--; if(TIME[0]%0x10==0x0f) { TIME[0]=TIME[0]-0x06; } if(TIME[

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论