资源描述
基于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 电路设计本设计总模块框图图2-1 总模块框图 电路设计主要分为电源模块,红外接受模块、STM32控制模块、人体感应模块、DHT11温湿度检测模块和风扇驱动模块组成。其中电源模块采用电源适配器负责为其他模块电路提供稳定的5V电压。红外模块负责与手机红外经行相互通信,传递控制信息;单片机控制模块负责识别以及处理从红外模块传递过来的控制信息。手机加载数据库信息到PWM调制38KHz载波上驱动红外发射模块进行红外波发射。2.2.1单片机模块单片机模块中的单片机采用STM32F103ZET6芯片,如图2-2所示。它是基于ARM Cortex-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和NAND Flash 接口的16位总线-FSMC;3路共16通道的12位AD输入,2路共2 通道的12位 DA 输出.支持片外独立电压基准;CPU操作电压范围:2.0-3.6V。图2-2 STM32F103V单片机封装图时钟电路 STM32F103ZET6芯片上有两种时钟源,如图2-3所示:(1)8MHz晶振X2作为MCU的时钟源(2)32.768KHz晶振X1作为RTC的时钟源图2-3 时钟电路电源电路本设计模块通过USB线供电,如图2-4所示。为保证芯片因电压过高不被烧毁,设置一个自恢复保险丝,在电路短路的情况下,自恢复保险丝发热断开,保护了硬件和电脑的USB接口免遭烧毁。图2-4 电源模块2.2.2红外接收模块本设计的红外接收模块是基于HL-A838红外一体化接收头的红外接收模块,电路图如图2-5所示。与单片机相连时,接PA3引脚。可接收红外发射模块(内链接)发来的调制成38KHz的红外信号,并解调成逻辑电平,即收到调制的红外信号即输出低电平,否则输出高电平,在程序上应用编解码即可完成红外遥控功能。模块特点如下:低功耗、宽角度及长距离接收供电电压可为3.3V5.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、温度补偿:在夏天当环境温度升高至3032,探测距离稍变短,温度补偿可作一定的性能补偿。3、两种触发方式:(可跳线选择) a、不可重复触发方式:即感应输出高电平后,延时时间段一结束,输出将自动从高电平变成低电平; b、可重复触发方式:即感应输出高电平后,在延时时间段内,如果有人体在其感应范围活动,其输出将一直保持高电平,直到人离开后才延时将高电平变为低电平(感应模块检测到人体的每一次活动后会自动顺延一个延时时间段,并且以最后一次活动的时间为延时时间的起始点)。4、具有感应封锁时间(默认设置:2.5S封锁时间):感应模块在每一次感应输出后(高电平变成低电平),可以紧跟着设置一个封锁时间段,在此时间段内感应器不接受任何感应信号。此功能可以实现“感应输出时间”和“封锁时间”两者的间隔工作,可应用于间隔探测产品;同时此功能可有效抑制负载切换过程中产生的各种干扰。(此时间可设置在零点几秒几十秒钟)。2.2.5风扇驱动电路风扇电机的驱动模块比较简单,与红外接受模块的电路类似,就是主控芯片控制一个三极管的通断实现对风扇启停。此外,可通过调制PWM波的方式对风扇的转速进行相应调节。为了丰富风扇的功能,除了红外遥控风扇开关和调速外,本设计引入智能控制模式,即无需手动调节,通过人体感应传感器和DHT11温湿度传感器检测风扇下有无人员,及当前温度和湿度。在检测到有人的前提下,主控芯片根据当前的温度和湿度值给出相应的PWM来控制风扇电机的转速,实现风扇电机的智能运行。系统的总体实物图如2-9所示。图2-9 系统设计实物图第三章 遥控器软件设计STM32程序主要是用来接收、分析、处理红外模块过来的数据,完成以后通过给出相应的控制信号到电器上,最终达到遥控电器的目的。3.1遥控器软件流程框图软件采用模块化编程,把系统运行分成两种模式:智能模式:用户无需调节风扇,主控芯片会对人体传感器与DHT11传感器的信号处理,并根据其给出相应的速度信号给风扇。手动控制模式:该模式下,用户可以通过手机对风扇的启停、速度进行调节控制另外,两种模式间的切换只需要手机应用端调节。图3-1 遥控器软件流程框图3.2红外编码程序 本软件包含了3种红外编码格式:三星的TC9012,松下的LC7464M和NEC的uPD6121G。受篇幅限制,这里主要介绍TC9012编码。 1、红外载波程序TC9012载波要求:频率 38KHz 占空比 1/3 图3-2载波波形参考图:38KHz 1/3 载波实测波形图:38.46KHz 1/3占空比由载波实测波形图可以看出,实测波形与参考波形频率误差为1.2%,占空比误差为-0.6%,满足TC9012载波要求,说明我们用PWM产生的38KHz载波的程序是正确的,下面是具体的程序代码。38KHz载波核心代码:SYSclk = 22118400Hz,PWM0频率为:SYSclk /(65536-TH0,TL0)/64= 22118400 /(65536-TH0,TL0)/64=38400Hz 2、红外发送数据程序 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.1 Android应用流程介绍下面是应用的具体流程;图4-1应用流程图图4-2 应用界面4.2 资源规划和权限配置为了兼容不同手机屏幕尺寸和分辨率,放了三套不同分辨率和尺寸的图片分放在res/drawable-hdpi,res/drawable-mdpi,res/drawable-xhdpi目录。 本应用设计用到本地红外适配器功能,多分辨率支持功能,窗体纵向显示功能的使用,在AndroidMainfest.xml中添加允许使用红外功能的权限。并且界面的窗体均为纵向显示,这里设置窗体显示通过标签属性 android:screenOrientation=“portrait”。设置多屏幕分辨率支持4.3 欢迎窗体的设计与实现应用启动后是一个欢迎窗体,欢迎窗体全屏显示,3秒钟后自动跳转到TV主窗体。欢迎窗体的实现:1) 在onCreate()方法中初始化窗体信息,加载background为drawable目录下的welcome图片的布局文件activity_welcom.xml。2) 创建一个线程类实现3秒后自动跳转。4.4红外服务红外服务是一个service类,提供红外的连接,状态反馈,线程读写数据,启动和停止方法。红外连接: device.createRfcommSocketToServiceRecord(MY_UUID)获取套接口,mySocket.connect()套接口远程连接遥控器。并且通过bundler传递message给UI界面更新。获取连接状态方法:返回当前红外服务的状态。Start和Stop方法:线程的初始化和关闭线程。同步Write方法:防止多线程的干扰,采用关键字synchronized同步写方法。创建一个线程类,传递参数byte写到套接口的字节流outputstream中。第五章 实物调试5.1 手动控制模式手动控制模式下风扇的启停与速度调节实验测试图如图所示: 图5-1 风扇停止工作与正常工作图5-3 上位机显示风扇手动模式下各工作状态5.2智能模式智能模式下风扇的启停与速度自动调节实验测试图如图所示: 图5-1 风扇智能模式下的启停图5-3 上位机显示智能模式下风扇运行状况第六章 总结本文设计的基于Android的红外智能风扇,通过手机客户端发射红外信号给STM32主控芯片,对系统进行各种操作,能够实现对风扇的手动调节控制,并能够进行模式切换。实验调试能够实现各模式的功能,基本满足预期实验要求。基于安卓手机的智能遥控器设计新颖,实用方便,倡导绿色、环保的生活理念,具有经济、社会效益。从用户的角度出发,多功能、低成本、强适应和人性化使得该产品将会获得发展契机。在以后居家生活中,手机远程遥控不仅仅如此,未来人类的生活更加便捷,物联网带给人们的效益将越来越多。参考文献1 Ed Burnette.Hello,AndroidM.USA:Pragmatic Programmers,LLC,2010年2 林小茶.C语言程序设计(第二版)M.北京:中国铁道出版社,2007年. 3 郭现杰,张权.从零开始学JavaM.北京:电子工业出版社,2012年.4 翟大昆,陈春茶.Android项目开发详解M.北京:机械工业出版社,2012年.5 刘焕成.工程背景下的单片机原理及系统设计M.北京:清华大学出版社,2008年.6 高彩丽,许黎民,袁海等.Android应用开发范例精解M.北京:清华大学出版社,2012年. 本设计以STM32F103为主控芯片,使用安卓手机红外遥控APP作为移动控制终端,通过PC上位机实时显示系统各模块的工作状态,便于用户的监测与控制。 系统包括3个功能模块,分别为风扇控制模块、盆景供水模块和照明控制模块。每个功能模块具有2种工作模式,手动调节模式和智能模式。系统通过安卓手机红外遥控应用发射红外信号,红外接受端将接受到的红外信号传送至主控芯片,主控芯片根据其内容进行相应模块的控制操作,且各模块相互独立,互不干扰。其中各模块的工作方式的切换也是通过APP上的相应操作实现。系统各模块的工作状态通过串口传送至PC上位机进行显示。 该系统解决家用电器在遥控方面的缺陷,结合智能家居的相关概念和技术,从用户的角度出发,集多功能、低成本、强适应和人性化于一体,为人们的工作和生活带来了极大的便利。
展开阅读全文