曹佳璐,余宝莲,邵佳慧,陈姝羽,马华红
(河南科技大学信息工程学院,河南 洛阳 471023)
随着5G技术与物联网技术的发展,人们的生活方式逐渐发生改变,传统家居已经不能满足人们对美好生活的向往。智能家居基于生活环境,通过控制技术、传感器等对家居进行控制,提高了家居的便利性、实用性和拓展性[1]。目前的智能风扇研究和应用,在功能上具有智能感温感湿、节能、降噪等特点,在控制方面具有红外遥控、语音控制等控制方式[2]。智能风扇在功能方面大同小异,在控制方面缺少控制方式的多样性。本设计的智能风扇系统选择比较符合人们生活习惯的多种控制方式,适合各类用户群体。
图1 系统总体设计框图
本设计使用STM32F103ZET6作为主控芯片,智能风扇控制系统的功能模块有电源模块、人体检测模块、温度检测模块、按键检测模块、用户指示灯模块、串口调试模块、电机模块、触摸显示屏模块。电源模块为智能风扇系统各个模块供电;用户指示灯用于指示系统工作状态;串口调试模块用于调试程序功能;触摸显示屏模块实时显示温湿度、工作模式及风扇转速等相关信息。
智能风扇系统的供电电源是电压为5 V的USB电源。单片机正常工作的电源是3.3 V,其他模块的供电范围均是5 V或者3.3 V。电源转换芯片使用AMS1117-3.3,只需少量的外围器件,就可以实现将5 V电源转换成稳定的3.3 V电源,使用方便,输出电压稳定。
本设计采用STM32F103ZET6为主控芯片,包含电动机控制外围设备以及CAN和USB全速接口。STM32系列ARM Cortex-M3 32位闪存微控制器工作时具有低功率、低电压,并结合了实时功能的极佳性能。其中电源电路采用0 Ω电阻保护MCU的供电,并采用多个电容并联达到电源滤波效果,下载电路采用SWD下载电路。
本设计采用HC-SR501红外检测模块进行人体检测[3]。该模块是全自动模块,当有人进入其工作范围则输出高电平,当人离开后则开启延时,输出低电平。通过跳线对其功能进行选择,采用重复触发模式,即在人体离开其工作范围后,在其延时开启过程中,若再次有人体出现在其工作范围内,则继续保持输出端的高电平。人体检测模块接口如图3。
图2 主控电路
图3 人体检测模块接口
本设计采用DHT11模块为温度检测模块,DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。传感器检测到超出建议的工作范围可能导致高达3%RH的临时性漂移信号,返回正常工作条后,传感器会缓慢地向校准状态恢复。DHT11的温度测量范围是-20 ℃~60 ℃,误差是±2 ℃度。
本模块采用L9110S全桥驱动芯片,电路如图4。该芯片抗干扰性极佳,输入由两个TTL/CMOS共容电平组成,其中两个信号输出端可以通过对高低电平的控制,实现电机正反转。在本设计中通过对输入驱动的不同占空比的PWM信号值进行调控,L9110S输出相同且满足电机正常转动的PWM信号[4-5],从而实现对风扇转速的控制。
图4 直流电机驱动电路
显示屏的驱动芯片选择的是ILI9341,显示屏是2.8英寸,其分辨率为240*320,颜色深度是16位RGB565,本设计采用8080并口时序驱动LCD显示。STM32F103ZET6自带有FSMC外设,使用FSMC_NE4,内部地址接A10,操作内部寄存器的读写,就可以模拟8080并口的读写时序,进而实现对显示屏数据的读写。
用户指示灯模块是为了显示设备运行状态。LED用户灯指示智能风扇系统是否正常工作,智能风扇系统正常工作的时候,LED1指示灯慢闪。
W25Q64芯片的内存大小是64 MB,其读写方式采用4线SPI串行同步的通信方式,标准SPI读写速度最高支持80 MHz。本设计将W25Q64的SPI通信管脚与STM32F103ZET6的SPI2外设相连。
该模块采用上拉电阻,用户可以通过按键实现对该产品的开关控制,风力调节等功能。
软件设计的方法采用“模块化编程”的思想,同时使用系统定时器给每个模块任务都分配一个“时间片”,在主循环中持续轮询时间片,任务时间到来就立即执行任务。系统主程序设计流程如图5所示。在传感器自动控制方面,获取环境因素作为人体检测结果,从而决定风扇是否运转。检测无人时,输出低电平关闭风扇;检测有人时,实时获取环境温度转化为对应转速。在用户界面控制方面,通过移植STemWin界面程序,获取当前触摸点的信息,界面状态发生改变时,系统就会进入回调函数,查找到被触摸的位置后控制风扇的运行状态和转速,并在界面系统中实时更新设备的状态。
图5 程序设计框图
将人体检测模块与MCU相连的控制管脚为PD12,配置为下拉输入。主控每秒读取一次输入管脚的电平,判断输出状态。MCU读取到PD12管脚对应电平设置风扇状态及转速。
温度检测模块与MCU相连的控制管脚为PG11,MCU配置PG11管脚为输出模式并发送“起始信号”,DHT11温湿度传感器检测到起始信号之后,会持续输出40 bit的数据;MCU配置PG11管脚为输入模式并接收40 bit的数据。本设计使用非线性变换将环境温度值转换为风扇转速值,具体转换为:在温度值小于20 ℃的时候,将风扇转速设置为0%;在温度值小于25 ℃的时候,温度值与风扇转速的对应关系为6*T-100;当温度值小于40 ℃的时候,温度值与风扇转速的对应关系为2*T;其中T表示环境温度值。
电机的驱动芯片使用的是L9110S,通过改变输出电压的占空比从而控制风扇转速。M_IA对应管脚输出低电平设置风扇正转,控制M_IB对应管脚输出的PWM信号占空比,调整风扇的转速。获取当前状态下的风扇转速,进行转速限幅处理。通过改变TIM4->CCR3寄存器的值,控制M_IB输出不同占空比的PWM信号,进而实现风扇转速的控制。
打开电源,发现电机开始转动并传送自然风,温度也开始实时显示,说明按键模块和电机驱动模块还有温度传感器功能正常。之后测试温度传感器功能,用手触摸温度传感器部分,当温度升高时,会自动改变风速。此次测试电机能按照本次设计要求进行转动,说明各项功能完好,本次初步成功。
本设计是基于STM32对传统风扇的智能优化,主要实现了对风扇的智能控制,能根据环境自动设定相应功能。多功能和多种控制方式并存的智能风扇系统,能自如应对生活中的多样化,给用户提供更多选择的同时,也让用户体验到快节奏时代的便利和快感。