您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 基于stm32的红外遥控风扇设计
基于Android的红外智能风扇摘要:为了解决家用电器在遥控方面的缺陷,结合智能家居的相关概念和技术,本文提出了一种基于Android手机的红外智能风扇设计方案。利用Android平台的应用软件,将智能风扇分为两种模式,一种模式是手动调节模式,通过红外模块把控制信号发送到STM32控制模块,而后由主控芯片STM32控制风扇的启停以及速度调节;另一种模式是智能模式,利用人体红外感应器和温湿度传感器,当检测到是否有人存在,且当前的温湿度(可通过设置数值大小)是否超出设定值,风扇将自动开关,调节风速大小,从而实现智能手机遥控电器的功能。关键词:智能家居;Android;红外线;STM32;风扇第一章概述目前,市面上的家用电器如电视、空调、DVD等都有自己专用的红外遥控器;另外,还有一种叫万能遥控器,可以实现控制不同品牌的家用电器。但是遥控器过多,也给用户带了不便,可以通过手机集成红外遥控功能,实现简化。该方法通过手机发射红外信号,主控芯片接受到该红外信号后,对与之连接各种电器设备进行相应控制。Android系统是Google公司推出的开源手机平台,采用Linux内核,是一个标准化的、开放式的手机平台[1]。它具有强大的无线网接入能力,丰富、便捷的开发工具,和开放的平台等特点。STM32F1系列属于中低端的32位ARM微控制器,该系列芯片是意法半导体(ST)公司出品,其内核是Cortex-M3。该控制芯片具有低功耗、高稳定、大容量等特点,适合多场合的控制应用。基于当前安卓智能手机的普及,为了满足智能家居的需求,本文设计了一款基于Android手机控制的智能风扇。把安卓智能手机作为控制平台,采用红外通信接口,把安卓智能手机与家用电器结合在一起,从而实现手机的无线智能遥控的功能。另外,本文还对风扇工作的模式进行了拓展,使其能够红外遥控调节模式与智能调节模式之间切换。第二章硬件设计2.1方案选择红外协议需要载波调制信息,设计方案有:方案一:采用555定时器调制38KHz载波信号供单片机加载信息;555定时器成本低,性能可靠,但占空比调制困难,频率确定无法改变。方案二:采用单片机内部的PWM机制调制38KHz载波信号加载信息;这个方案节约空间、抗噪性能强,可随时改变频率与占空比,但程序不易编写众多遥控器一体对数据库存储需求大,方案设计有:方案一:采用AT24Cxx扩展外部存储器;方案二:采用自带高存储容量的存储器;综合以上考虑,本设计采用STM32系列单片机,这款单片机有脉宽调节模式,能满足本方案的38KHz需求,且此单片机Flash程序存储区有512K,不需要扩展存储空间也能满足加载万能遥控器的数据库。功能满足的情况下,也为了不让硬件过剩的原则,我们采用了载波方案二和数据库存储方案二。2.2电路设计本设计总模块框图STM32F103红外接受模块红外人体感应模块DHT11温湿度模块风扇通断电路电源模块红外发射图2-1总模块框图电路设计主要分为电源模块,红外接受模块、STM32控制模块、人体感应模块、DHT11温湿度检测模块和风扇驱动模块组成。其中电源模块采用电源适配器负责为其他模块电路提供稳定的5V电压。红外模块负责与手机红外经行相互通信,传递控制信息;单片机控制模块负责识别以及处理从红外模块传递过来的控制信息。手机加载数据库信息到PWM调制38KHz载波上驱动红外发射模块进行红外波发射。2.2.1单片机模块单片机模块中的单片机采用STM32F103ZET6芯片,如图2-2所示。它是基于ARMCortex-M3核心的32位微控制器,LQFP-144封装,512K片内FLASH(相当于硬盘),64K片内RAM(相当于内存,片内FLASH支持在线编程(IAP);高达72M的频率,数据,指令分别走不同的流水线,以确保CPU运行速度达到最大化;通过片内BOOT区,可实现串口下载程序(ISP);片内双RC晶振,提供8M和32K的频率;支持片外高速晶振(8M),和片外低速晶振(32K).其中片外低速晶振可用于CPU的实时时钟,带后备电源引脚,用于掉电后的时钟行走;42个16位的后备寄存器(可以理解为电池保存的RAM),利用外置的纽扣电池,和实现掉电数据保存功能;多达80个IO,4个通用定时器,2个高级定时器,2个基本定时器,3路SPI接口,2路I2S接口,2路I2C接口,5路USART,一个USB从设备接口,一个CAN接口,SDIO接口,可兼容SRAM,NOR和NANDFlash接口的16位总线-FSMC;3路共16通道的12位AD输入,2路共2通道的12位DA输出.支持片外独立电压基准;CPU操作电压范围:2.0-3.6V。图2-2STM32F103V单片机封装图时钟电路STM32F103ZET6芯片上有两种时钟源,如图2-3所示:(1)8MHz晶振X2作为MCU的时钟源(2)32.768KHz晶振X1作为RTC的时钟源图2-3时钟电路电源电路本设计模块通过USB线供电,如图2-4所示。为保证芯片因电压过高不被烧毁,设置一个自恢复保险丝,在电路短路的情况下,自恢复保险丝发热断开,保护了硬件和电脑的USB接口免遭烧毁。123J1PWR2.5S2SWSPDTC1104100uF/16VE2R510KLED3LEDVCCGND图2-4电源模块2.2.2红外接收模块本设计的红外接收模块是基于HL-A838红外一体化接收头的红外接收模块,电路图如图2-5所示。与单片机相连时,接PA3引脚。可接收红外发射模块(内链接)发来的调制成38KHz的红外信号,并解调成逻辑电平,即收到调制的红外信号即输出低电平,否则输出高电平,在程序上应用编解码即可完成红外遥控功能。模块特点如下:低功耗、宽角度及长距离接收供电电压可为3.3V~5.5V输出匹配TTL,CMOS电平,低电平有效4个M2螺丝定位孔,便于安装。发射的红外线信号是手机通过两个并联的红外二极管发射的。具体实物图如图2-6所示。图2-5红外发射接收电路图图2-6本设计自制的红外发送模块2.2.3温湿度检测模块温湿度检测模块采用DHT11温湿度传感器,它包括一个电阻式测湿元件和一个NTC测温元件,并与单片机的PA4引脚相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O口。传感器内部湿度和温度数据40Bit的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11功耗很低,5V电源电压下,工作平均最大电流0.5mA。图2-7温湿度传感器的连接图2.2.4人体红外感应模块图2-8人体红外感应模块人体红外感应模块是基于红外线技术的自动控制模块,电路图如图2-8所示。与单片机PA2引脚相连,电源采用5V电压供电,其功能特点:1、全自动感应:人进入其感应范围则输出高电平,人离开感应范围则自动延时关闭高电平,输出低电平。2、温度补偿:在夏天当环境温度升高至30~32℃,探测距离稍变短,温度补偿可作一定的性能补偿。3、两种触发方式:(可跳线选择)a、不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平;b、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。4、具有感应封锁时间(默认设置:2.5S封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒—几十秒钟)。2.2.5风扇驱动电路风扇电机的驱动模块比较简单,与红外接受模块的电路类似,就是主控芯片控制一个三极管的通断实现对风扇启停。此外,可通过调制PWM波的方式对风扇的转速进行相应调节。为了丰富风扇的功能,除了红外遥控风扇开关和调速外,本设计引入智能控制模式,即无需手动调节,通过人体感应传感器和DHT11温湿度传感器检测风扇下有无人员,及当前温度和湿度。在检测到有人的前提下,主控芯片根据当前的温度和湿度值给出相应的PWM来控制风扇电机的转速,实现风扇电机的智能运行。系统的总体实物图如2-9所示。图2-9系统设计实物图第三章遥控器软件设计STM32程序主要是用来接收、分析、处理红外模块过来的数据,完成以后通过给出相应的控制信号到电器上,最终达到遥控电器的目的。3.1遥控器软件流程框图软件采用模块化编程,把系统运行分成两种模式:智能模式:用户无需调节风扇,主控芯片会对人体传感器与DHT11传感器的信号处理,并根据其给出相应的速度信号给风扇。手动控制模式:该模式下,用户可以通过手机对风扇的启停、速度进行调节控制另外,两种模式间的切换只需要手机应用端调节。开始各模块初始化模式判定手动模式MODE0自动模式MODE1调用函数调用函数图3-1遥控器软件流程框图3.2红外编码程序本软件包含了3种红外编码格式:三星的TC9012,松下的LC7464M和NEC的uPD6121G。受篇幅限制,这里主要介绍TC9012编码。1、红外载波程序⑴TC9012载波要求:频率38KHz占空比1/3图3-2载波波形参考图:38KHz1/3载波实测波形图:38.46KHz1/3占空比由载波实测波形图可以看出,实测波形与参考波形频率误差为1.2%,占空比误差为-0.6%,满足TC9012载波要求,说明我们用PWM产生的38KHz载波的程序是正确的,下面是具体的程序代码。⑵38KHz载波核心代码:SYSclk=22118400Hz,PWM0频率为:SYSclk/(65536-[TH0,TL0])/64=22118400/(65536-[TH0,TL0])/64=38400Hz2、红外发送数据程序TC9012的一帧数据中含有32位码,包含两次8位用户码,8位数据码各8位数据码的反码。引导码由4.5ms的载波和4.5的载波关断波形所构成,以作为用户码、数据码的先导。图3-3引导码参考图图3-4引导码实测:有载波4.52ms图3-5引导码实测:无载波4.52ms由以上两实测图可以看到,引导码有载波误差0.4%,无载波误差0.4%,是满足TC9012引导码开载波4.5ms+关载波4.5ms的要求的。图3-6数据0实测:高电平0.56ms图3-7数据0实测:高低电平总长1.14ms由以上两实测图可以看到,数据0高电平误差0%,高低电平总长误差1.3%,是满足TC9012数据0高0.56ms,总长1.125ms的要求的。图3-8数据1实测:高电平0.56ms图3-9数据1实测:高低电平总长2.26ms由以上两实测图可以看到,数据0高电平误差0%,高低电平总长误差0.4%,是满足TC9012数据1高0.56ms,总长2.25ms的要求的。第四章Android应用软件设计本应用软件的设计是为了使我们的手机能够发射红外信号给主控芯片,从而实现远程控制目的。开发工具:Eclipse集成开发环境,JDK,Android-SDK。编译版本:android2.3.3。4.1Android应用流程介绍下面是应用的具体流程;初始化模式匹配打开遥控器控制遥控器后台运行启动应用退出程序手动自动模式返回图4-1应用流程图图4-2应用界面4.2资源规划和权限配置为了兼容不同手机屏幕尺寸和分辨率,放了三套不同分辨率和尺寸的图片分放在res/drawable-hdpi,res/drawable-mdpi,res/drawable-xhdpi目录。本应用设计用到本地红外适配器功能,多分辨率支持功能,窗体纵向显示功能的使用,在AndroidMainfest.xml中添加允许使用红外功能的权限uses-permissionandroid:name=android.permiss
本文标题:基于stm32的红外遥控风扇设计
链接地址:https://www.777doc.com/doc-1750772 .html