近年来,智能家居行业迅速发展,但许多市场上的风扇功能依然简单。我们的智能风扇以STM32单片机为核心,提供三种工作模式:自动模式通过温度传感器检测环境温度变化,自动调整风扇转速以优化效果;手动模式允许通过按键或语音控制调整风扇设置;人体识别模式则在检测到人靠近时自动启动。额外的定时功能支持设置自动关闭时间,为用户带来更智能和便捷的使用体验。
引言
本文设计的智能风扇具备以下功能:自动控制,根据外界温度调整风扇转速;人体检测,靠近时自动开启,离开时自动关闭;声音控制,利用LD3320语音芯片识别命令控制风扇;灯光控制,通过语音或按键控制灯光;睡眠定时,设置定时时间后自动关闭风扇。
系统设计
该设计选用的核心控制芯片是基于Cortex-M3内核的STM32F103C8T6,它是一款高性能、高兼容、易开发、低功耗、低工作电压以及具有实时数字信号处理的32位闪存微控制器产品。智能风扇系统是由单片机、语音识别模块、温度传感器模块、红外传感器模块等组成,系统的结构图如图1所示:
图1 系统结构图
语音识别模块
语音识别模块内部包含LD3320芯片和STC11L08XE单片机,LD3320芯片由ICRoute公司设计,语音识别模块集成麦克风口、声音输出接口等外部电路,该芯片通过特别的算法可以完成非特定的语音识别,语音识别无需事先训练和录音,只要说出相应关键字,语音识别就可以完成,使用起来非常方便。
语音识别开始时,模块的麦克风接收周围的声音,这些声音不一定是带有关键字的声音,也可能是一段没有意义的声音,语音识别芯片对接收的声音进行频谱分解,根据声音特征提取相应的频率,然后与芯片数据库中进行关键字的匹配,将会对不同关键词进行打分,哪个分数高就选择相应的结果作为输出。
DS18B20温度传感器
为了实现对周围温度的检测该系统选用的是DS18B20可编程数字温度传感器,它具有抗干扰能力强、价格便宜、使用方便等优势[5]。传感器测温结果是通过其内部精密晶振振动频率随温度变化的特性得到的。传感器内部独立包含一个独立的测量芯片,芯片内置存储单元,包含64位的ROM和9字节的RAM,64位ROM用于存放产品编码,9字节RAM的前两字节用于保存温度信息。
温度传感器DS18B20的高度集成化,大大降低了外接放大转换等电路的误差因素,测量出的温度误差很小[6]。检测到的温度数值可以在器件内部转换成数字量直接输出,这样方便了系统程序设计。温度传感器的详细参数如下:
(1) DS18B20温度传感器与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。
(2) 工作电压范围1.8V~5.5 V。
(3) 测温范围:-55~+125°C,默认测温分辨率为0.5°C。
(4) 可实现9~12位的数字读数方式。
(5) 可以将多个传感器并联在一条总线上,测量多个地方的温度。
(6) 传感器不会因为电源反接而损坏。
OLED显示屏
屏幕选用的是4针9.6寸OLED屏幕,这是一种新型的屏幕技术,拥有自发光的特性,具有可视角度大、功耗低、对比度高等优势。对比lcd屏屏幕,OLED显示效果更好、功耗更低、适合小系统。OLED屏幕支持3.3V~5V供电,所以不用修改模块电路。OLED屏幕包含4个引脚分别是GND、VCC、SCL和SDA。GND和VCC接地和电源,SCL连接PA0,SDA连接PA1。OLED屏幕可以根据需要显示出字符、数字、汉字等,使用起来简单方便。
红外传感器模块
该系统选用红外对管传感器检测人体,该传感器具有干扰小、便于装配、使用方便等特点。红外对管传感器是由红外发射管与光敏接收管等构成,红外对管传感器工作时发射管会发出人眼不可见的红外线,当检测方向遇到障碍物时,红外线就会反射回来被接收管接收,经过LM393比较器电路处理之后,输出指示灯会亮起,OUT口输出低电平数字信号[7]。
传感器的工作电压为3.3V~5V,传感器模块输出端口可以与单片机IO口直接相连,传感器模块检测到人体时会持续输出低电平信息。
直流风扇
目前,市面上的220V风扇使用起来不安全且不容易控制,所以该系统选用的是一个5V供电的直流风扇,这是一种小型风扇,使用起来更加安全,并且容易被单片机所控制。
因为是使用PWM波控制风扇速度,所以直流风扇可以有多种挡位选择,可以根据自己需要调整合适的速度。直流风扇的噪音很小,使用的时候不会影响到工作和休息,而且使得语音识别更加的可靠准确。
灯光模块
该系统选用一个5V供电的LED灯光用于照明,LED学名叫做发光二极管,这种发光材料由N、P、As等多种化合物制成,当电子与空穴相遇就能够产生光。这种灯光可以有多种颜色,本设计选用的是白色LED灯。
设计选用的灯光可以用于在晚上阅读时候照明,也可以用来装饰家居环境等等,可以满足大部分的照明需要。将照明功能加入智能风扇当中丰富了产品功能,还能够节省台灯占用的空间。智能风扇中含有一个专门用于控制灯光的按键,除了按键之外,也可以用语音控制灯光,只要说出打开灯光、关闭灯光等关键词就可以控制灯光运行。
按键模块
该系统选用的是轻触式开关,该按键内部有弹簧,这种按键只需要施加一个很小的力就能够使开关闭合,松手时按键会自动弹起,手感很好,有段落感,发出清脆的声音,容易辨别。
轻触开关应用于遥控器、玩具、家用电器等等,使用方面非常广。影响轻触按键使用的因素有很多,主要在于开关的防腐蚀性、寿命、按压手感,一般开关为了降低接触电阻,采用镀银方式,将按键引脚的基材进行镀银。
弹簧的好坏取决了按键的手感,目前使用最多的是日本的冲压技术,采用这种技术的按键可承受数万次的按压,非常耐用手感也非常好。设计采用7个按键组成独立式按键,每个按键直接用IO口线组成单个键盘电路,配置灵活,软件设计非常方便。
电源控制模块
该系统采用的5V的micro usb向stm32最小系统板供电,因为stm32f芯片需要3.3V的电压才能正常工作,所以利用单片系统板上的线性稳压器将5V电压转化为3.3V。这种线性稳压器成本非常低,只需要几分钱就可以买到,体积非常小,可以非常方便地安装在其他器件上,工作的时候噪音很小,输出电流可靠稳定,因此十分适合在单片机系统上使用。
系统电路设计
单片机供电电路
单片机的正常工作的电压是2.0~3.6V,断电时VBAT引脚为RTC和备份寄存器提供电源。稳定良好的电源供应是实现各种功能的基础,设计采用micro usb为系统板供电,供电电压为5V,最小系统板内部包含ME6211稳压芯片,该芯片可以将5V电压转化置3.3V,输出电流为100MA,C1、C2、C3、C4均为滤波电容,过滤掉电流的交流部分,从而使得电流更加平滑。稳压芯片如图2所示:
图2 电源稳压芯片
单片机复位电路
复位电路可以实现单片机的初始化,系统稳定运行需要上电复位和按键复位,图中电路为低电平复位电路,通电时,由于电容两端电压无法突变,所以NRST为低电平复位,然后电容在缓慢充电,NRST端电压缓慢升高,当上升到一定的高电平时,单片机开始正常工作。
当按下RST时NRST又变为低电平复位,复位电路是系统中不可或缺的一部分。单片机的复位电路如图3所示:
图3 单片机复位电路
灯光控制模块电路
图4 灯光控制电路
灯光需要5V的电压供电,单片机最多输出3.3V的电压,所以需要一个继电器和三极管来控制电路,由此可以实现弱电控制强电。一般动触点K1和常闭引脚闭合,电灯不工作。当单片机IO口输出信号时,继电器产生磁效应吸合衔铁,动触点K1和常开触点闭合,电灯亮起。
当灯光停止工作时,为了防止继电器的反电动势对继电器造成损害,所以并联一个续流二极管保护继电器。灯光控制电路如图4所示。
温度传感器模块电路
DS18B20智能温度传感器,属于新一代适配微处理器的智能温度传感器,全部传感器原件及转换电路集成在形如一只三极管集成电路内,可以直接读出数据,温度传感器的DQ口连接单片机PB6引脚。温度传感器电路如图5所示:
图5 温度传感器电路
红外对管传感器电路
红外对管传感器采用3.3V供电,输出端口连接单片机的PA6。红外对管传感器模块电路如图6所示:
图6 红外对管传感器模块电路
OLED屏幕电路
本设计采用4脚的0.96寸OLED屏幕作为显示屏,它的分辨率为128x64,意思就是它有这么多的像素点,所有像素点都可以自发光,然后通过程序将对应像素点点亮就组成了自己想要的文字或图案。
OLED的屏幕采用I2C通信方式,stm32作为主机输入,OLED作为从机接收信息,采用软件vwin I2C通信方式,将PA0设置为时钟线,PA1设置为数据线。数据传输是根据时钟线的电平信息进行相应的操作,数据线用于传输信息。OLED显示电路如图7所示:
图7 OLED显示模块电路
系统软件设计
主程序设计
风扇系统的程序设计使用的是C语言编程。除主程序外,还有多种子程序,分别执行温度读取,电机控制,定时设置等,风扇一共有人体识别模式、手动模式和自动模式三种模式。系统的程序流程图如图8所示:
图8 系统流程图
电机驱动程序设计
电机设置由定时器TIM4产生的PWM波控制,首先利用Timer4_Init(0,7200)初始化的TIM4定时器,设置定时器,使TIM4_CH4输出PWM波,TIM_Set Compare4(TIM_Type Def*TIMx,uint16_t Compare4)函数可以调整输出PWM波的占空比达到控制风扇挡位的效果。
自动模式程序设计
自动模式下风扇的挡位是根据温度传感器检测到的周围温度变化而变化,并且传感器检测到周围温度低于20℃时,风扇不会工作。温度的读取程序中,首先使用DS18B20_Init()初始化DS18B20,使能IO时钟,设置IO口并根据时序检测传感器是否存在,若传感器存在则通过DS18B20_Get_Temp()输出温度数值。单片机主函数中会一直读取感器检测到的温度数值,并根据相应的温度数值改变风扇至相应的挡位,挡位选择程序流程图9所示:
图9 挡位选择流程图
按键模块程序
风扇启动时默认为手动模式,手动模式下可以通过语音和按键来控制风扇。使用按键前先利用Init_Key_Pin()初始化按键IO,将IO设置为上拉输入模式。主函数中通过循环While(1)执行按键输入判断,当一个按键按下时,按键所处引脚接地,单片机通过读取IO口处于电平变化判断哪个按键被按下并执行相应的操作。为了消除按键机械抖动对判断的影响,当检测到按键被按下后会使用delay_ms(10)函数延时10ms后再对IO口的电平进行一次判断。
语音识别模式程序
语音识别模块的LD3320芯片与51单片机采用SPI通信,语音识别模块的程序是在其模块内部编译的,使用前在51单片机程序中设置LD3320语音识别芯片寄存器,将关键字以字符串的形式保存在一个二维数组之中,并对每一个关键字设置相应的识别码。
主函数首先初始化系统,初始化51单片机,对LD3320芯片做复位操作激活其内部DSP,51单片机反复启动语音识别模块的ASR(非特定人语音识别技术)识别,当识别到声音时使用Process Int0()函数发生中断,读取LD3320寄存器中的识别码并返回到LD_Get Result()函数中,根据语音识别码选择语音识别结果,并在对应引脚输出低电平信息,stm32根据接收到不同引脚的电平信息对风扇系统做出相应的操作。
5系统测试
智能风扇的组成包括stm32最小系统板,语音识别模块,PWM调速风扇,led灯光等。
运行测试
智能风扇包含三种工作模式,手动模式下通过按键和语音控制风扇,自动模式下,风扇挡位根据周围温度高低做出变化,人体识别模式是检测到人出现在风扇前就会启动,当人离开时风扇会自动关闭。本章主要对自动模式和人体识别模式进行测试。
自动模式测试
风扇切换成自动模式时,风扇开始自动转动,OLED屏幕显示挡位为1,周围温度为21℃。实物图如图10所示:
图10 自动模式测试
用手将温度传感器捂热,OLED屏幕显示的温度数值逐渐升高,当温度到达25℃,挡位升至2档,实物如图11所示:
图11 自动模式测试
将手松开后,OLED显示的温度在慢慢下降,最终回到21℃,风扇挡位为1。
人体识别模式测试
风扇切换成人体识别模式,OLED屏幕显示模式为Introduction。没有人体靠近时,风扇默认为待机状态,输出信号指示灯为熄灭状态,电源指示灯长亮,红外传感器运行实物如图12所示:
图12 人体识别模式测试
当用手靠近红外传感器时,传感器输出指示灯亮起,风扇开始转动,把手远离红外传感器时,经过5s后,风扇停止转动。传感器响应时实物如图13所示:
图13 人体识别模式测试
该智能风扇系统不仅支持传统的手动模式下通过按键控制灯光、风扇开关、风扇挡位和定时功能,还提供了更先进的功能。语音识别系统可以准确识别指令,控制风扇和灯光的运行。
在自动模式下,风扇根据温度传感器检测到的温度自动调整挡位:温度升高时增加挡位,温度降低时减少挡位。人体识别模式通过红外传感器检测到人体时启动风扇,若5秒内未检测到人体,则风扇自动关闭。
-
传感器
+关注
关注
2550文章
51035浏览量
753044 -
STM32
+关注
关注
2270文章
10895浏览量
355709 -
智能风扇
+关注
关注
1文章
46浏览量
18296
发布评论请先 登录
相关推荐
评论