基于Arduino单片机的智能家居设计.docx
《基于Arduino单片机的智能家居设计.docx》由会员分享,可在线阅读,更多相关《基于Arduino单片机的智能家居设计.docx(19页珍藏版)》请在冰豆网上搜索。
基于Arduino单片机的智能家居设计
山东科技大学
第三届学生电子设计大赛
技术报告
基于Arduino单片机的智能家居系统
学院:
电子通信与物理学院
班级:
硕研2015级
参赛者:
张荣飞曹其栋侯焕存
摘要
本文中我们基于Arduino单片机设计了一个模拟智能家居系统。
该系统以ArduinoUNOR3单片机为核心,外接光照检测、温湿度传感器、LED、风扇和无线通信等模块。
整个系统分为检测端和控制端两大部分,检测端由光敏电阻、温湿度传感器、无线通信模块和单片机组成。
控制端由无线接收、液晶显示、电灯控制和风扇控制四大模块组成,包含单片机、无线通信模块、LCD显示屏、风扇和LED等。
检测端和控制端之间借助无线通信模块进行无线通信,控制端内部的无线接收和液晶显示两个模块之间则采用串口通信。
该系统能够实现对室内温度、湿度和光照强度等参数的实时检测,并借助LCD显示温湿度值,还可以根据检测端探测到的光照强度和温度值以及预先设定的参数对室内的电灯和风扇进行智能控制。
关键词:
智能家居;Arduino单片机;自动控制;无线通信;液晶显示
§1绪论
智能家居简介
智能家居很早就出现在人们的定义当中,但很长时间以来都没有真正意义上的智能家居成型,到了1984年美国联合科技公司(UnitedTechnologiesBuildingSystem)将智能信息融入建筑设备中,在整合的基础上应用到了美国康乃迪克州哈特佛市的城市地标性建筑中时,出现了世界上的首栋智能化建筑,也正是从那时开始,智能化家居正式融入到现代生活中。
智能家居控制的发展关键在于设计理念以及经营者的心态,市场目标客户真正需要什么东西,如果只注重签单,不设身处地的为客户着想,不兼顾智能解决未来的发展,提供片面的智能家居解决方案,而不考虑客户的适用性,是不可取的,是急功近利的表现,这不仅降低了智能家居的应用效果,还不利于整个智能家居行业的发展。
智能家居控制系统的市场不是一般普通的商品买卖,而是一项系统性工程,它涉及到很多技术,涉及到人们生活的方方面面,智能家居控制系统的终极目标是一种理想,更是一种理念,要想智能家居控制系统有很好的发展,研发机构必须本着长远发展的心态,本着简化、实用、性价比高、适合市场的理念,虔诚研究人们的生活、习惯、精神文化等需要,并把它看最高目标,运用各种技术手段实现它。
在国内,智能家居不是单纯意义上的智能产品,也不能被狭义的理解为小区智能化,而是基于小区的多层次家居智能化解决方案。
它综合利用主控平台、无线连接及通信、设备管理、整体布局布线等手段,将住户智能化管理、交互共享及消费服务、小区安防监控等常见家居因素协调配合并最终整合为整体,在原有小区智能化的大面上延伸到小区内部室内家居的具体环节,构建出高效、舒适、安全、便捷的个性化住宅空间。
近几年,很多研发机构和厂商已经意识到家庭安全的重要性,把智能家居作为一个重要的方向和项目来研究,并纷纷投入大量人力财力,使智能家居真正的走向市场和产业化生产。
智能家居是一个具有交互能力的平台,并且通过平台能够把各种不同的系统、协议、信息和内容控制在相对独立的模块单元中进行传输、交换。
智能家居的研究意义
随着人们生活水平的不断提高,生活节奏的加快,人们不断的对居住环境提出更高的要求,越来越注重家庭生活中每个成员的舒适、安全和便利,因此从市场需求的角度来说,智能家居必然是前景广阔。
因此设计一个符合国家国情和规范的集远程控制和本地控制为一体的智能家居控制系统是非常具有现实意义的,且势在必行。
作为智能家居的核心系统的智能家居的控制系统,它的设计功能的完善必将推动住宅智能化的发展。
而系统功能的集成化、用户使用的傻瓜化以及市场的平民化将是智能家居控制器的发展趋势,系统也将逐步迈向绿色化。
最终,我想全人类的梦想是智能家居控制系统将囊括所有的家事杂物,让我们真正的享受舒适温馨的家庭生活。
虽然智能家居经过十几年的蓬勃发展,很多功能已趋于完善和成熟,智能化家居系统的应用也越来越广泛,然而生活中的智能家居所展现出的智能化,与业主所理想的智能化还存在较大差距。
而这也推动了智能化技术在家居领域的纵深发展,并为各类智能化家居新产品的设计和研发增加了动力,同时新产品的出现,也大大丰富了智能家居系统的厚度。
因此,将智能家居作为这次研究的主要内容具有很大的现实指导意义。
本文的目的就是设计一个简捷有效智能家居控制系统,从温度、湿度、光照强度的采集,到LCD实时显示,并根据采集的信号不同采取相应的应对机制,智能控制家中的电灯、风扇等电器设备,从而实现基本的智能家居功能。
§2系统总体设计方案
系统框图
智能家居控制系统对整个家庭内部环境进行监测和及时应对的系统,核心部分是单片机,通过与其他各监测模块和执行模块的连接,实现对室内环境的整体改变和各元件的控制。
首先,主控元件对接收到的数据(如光线强暗,温度高低)通过LCD显示模块进行实时显示,使室内情况一目了然。
然后根据各信号采集模块传送给单片机的数据,做出应对执行,实现家居系统的智能控制。
系统总体框图如下:
图系统总体框图
系统工作原理简介
本系统工作可以分为四个部分:
第一部分是传感器数据采集,将温度传感器、湿度传感器以及光敏电阻分别连接到单片机①上,单片机①会将传感器采集到的实时数据进行处理;
第二部分是数据传输,有两个无线模块,一个连接到单片机①上作为发射端,一个连接到单片机②上作为接收端,单片机①将处理过的数据通过发射端发送出去,单片机②通过接收端将数据接收进来,再次进行处理;
第三部分是控制功能,单片机②将接收到的数据与设定的阈值进行比较,当达到阈值条件时,可以启动风扇或者电灯,另外,温度和光敏设定了几个不同的阈值,当达到某一阈值会有相应的风扇转速或者电灯亮度;
第四部分,温湿度显示,单片机②将通过无线方式接收到的数据采用串口通信的方式传给单片机③,单片机③是专门用来控制LCD1602液晶显示屏的,得到数据后单片机③将数据传到液晶屏进行显示。
§3系统硬件设计
单片机的选择
首先将所需器件罗列,根据与单片机相连的各器件,确定整个系统所需与单片机连接的管脚数,通过查资料,选定Arduino单片机作为该系统的微控制器,因为它带有模拟I/O口,在外接各类传感器方面比普通的51系列单片机更为方便。
Arduino单片机的模拟I/O口可以很方便地将光敏电阻和温湿度传感器等模块采集到的模拟量经A/D转换后送给单片机进行处理,而对数字信号的识别和处理正是Arduino的优势所在。
ArduinoUNO简介
ArduinoUNO是ArduinoUSB接口系列的最新版本,作为Arduino平台的参考标准模板。
UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSPheader和一个复位按钮。
UNO已经发布到第三版,与前两版相比有以下新的特点:
在AREF处增加了两个管脚SDA和SCL,支持I2C接口;增加IOREF和一个预留管脚,将来扩展板将能兼容5V和核心板。
这样改进了复位电路设计,USB接口芯片由ATmega16U2替代了ATmega8U2。
图为改进后的ArduinoUNO。
图ArduinoUNOR3
Arduino单片机特色
1、开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改。
2、使用低价格的微处理控制器(ATMEGA8或ATmega128)。
可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。
3、Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入ATmega8或ATmega128芯片。
有了bootloader之后,可以通过串口或者USBtoRs232线更新固件。
4、可依据官方提供的Eagle格式PCB和SCH电路图,简化Arduino模组,完成独立运作的微处理控制。
可简单地与传感器,各式各样的电子元件连接(如:
红外线、超声波、热敏电阻、光敏电阻、伺服马达等)。
5、支持多种互动程序,如:
Flash、Max/Msp、VVVV、PD、C、Processing等。
6、应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。
Arduino单片机引脚简介
Arduino单片机的数字I/O被分成两个部分,其中每个部分都包含有6个可用的I/O管脚,即管脚2到管脚7和管脚8到管脚13。
在数字电路中开关(switch)是一种基本的输入形式,它的作用是保持电路的连接或者断开。
Arduino从数字I/O管脚上只能读出高电平(5V)或者低电平(0V),因此我们首先面临到的一个问题就是如何将开关的开/断状态转变成Arduino能够读取的高/低电平。
解决的办法是通过上/下拉电阻,按照电路的不同通常又可以分为正逻辑(PositiveLogic)和负逻辑(InvertedLogic)两种。
Arduino的优势在于对数字信号的识别和处理,但我们所生活的真实世界并不是数字(digital)化的,简单到只要用0和1就能够表示所有的现象。
例如温度这一我们已经司空见惯的概念,它只能在一个范围之内连续变化,而不可能发生像从0到1这样的瞬时跳变,类似这样的物理量被人们称为是模拟(analog)的。
Arduino是无法理解这些模拟量的,它们必须在经过模数转换后变成数字量后,才能被Arduino进一步处理。
Arduino单片机编程软件
Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些寄存器参数设置等都函数化了,不用我们去了解他的底层,让不太了解AVR单片机(微控制器)的朋友也能轻松上手。
图Arduino编程界面
Arduino语言是以setup()开头,loop()作为主体的一个程序构架。
官方网站是这样描述setup()的:
用来初始化变量,管脚模式,调用库函数等等,此函数只运行一次。
loop()函数是一个循环函数,函数内的语句周而复始的循环执行,功能类似c语言中的“main();”。
温湿度检测模块设计
智能家居的一个主要控制对象就是住户室内温湿度,适宜的温湿度为主人提供良好的家居环境,这样一来,温湿度检测与控制模块就变得尤为重要。
考虑到硬件电路的复杂性,本设计中选择DHT11数字温湿度传感器来检测室内的温度和湿度,这样可以用一个传感器检测两个指标,使硬件电路得以简化。
DHT11概述
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器。
它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性与卓越的长期稳定性。
传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。
因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。
每个DHT11传感器都在极为精确的湿度校验室中进行校准。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
单线制串行接口,使系统集成变得简易快捷。
超小的体积、极低的功耗,信号传输距离可达20米以上,使其成为各类应用甚至最为苛刻的应用场合的最佳选则。
产品为4针单排引脚封装。
连接方便,特殊封装形式可根据用户需求而提供。
图DHT11实物图
DHT11引脚说明
引脚号引脚名称类型引脚说明
1VCC电源正电源输入,DC
2Dout输出单总线,数据输入/输出引脚
3NC空空脚,扩展未用
4GND地电源地
图DHT11典型应用电路
电源引脚
DHT11的供电电压为3-。
传感器上电后,要等待1s以越过不稳定状态在此期间无需发送任何指令。
电源引脚(VDD,GND)之间可增加一个100nF的电容,用以去耦滤波。
串行接口(单线双向)
DATA用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次通讯时间4ms左右,用户MCU发送一次开始信号后,,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并触发一次信号采集,用户可选择读取部分数据。
从模式下,DHT11接收到开始信号触发一次温湿度采集,如果没有接收到主机发送开始信号,DHT11不会主动进行温湿度采集,采集数据后转换到低速模式。
光照检测模块设计
光敏电阻特性是在不同光照强度下,其阻值发生变化(只要是人眼可感受的光,都会引起它的阻值变化)。
利用这一特性,我们把光敏电阻接入电路实现光照强度检测。
图光照检测电路示意图
亮度检测电路工作原理:
我们把光敏电阻接入电路后,光敏电阻置于窗口处,由于光线的变化,其阻值也在一定时间内不断变化,从而产生连续的电信号,通过模拟I/O口进入单片机。
由于单片机内部自带A/D转换电路,通过相应程序,能使模拟I/O口传来的电信号转换成数字信号,单片机读取这些数字信号,就能得出相应的光照强度,并决定是否启动其他应对措施。
无线通信模块设计
考虑到系统的普遍适用性和硬件电路实现的难易程度,本次设计中选取NRF24L01无线模块作为系统的无线通信模块,该模块既可以用于发送数据,也可以用于接收数据,且易于编程操作。
NRF24L01无线模块主要特点如下:
(1)全球开放ISM频段免许可证使用;
(2)最高工作速率2Mbps,高效GFSK调制,抗干扰能力强,特别适合工业控制场合;
(3)126频道,满足多点通信和跳频通信需要;
(4)内置硬件CRC检错和点对多点通信地址控制;
(5)低功耗-工作,待机模式下状态为22uA;掉电模式下为900nA;
(6)内置天线,体积种类多样;
(7)模块可软件设地址,只有收到本机地址时才会输出数据(提供中断指示),可直接接各种单片机使用,软件编程非常方便;
(8)内置专门稳压电路,使用各种电源包括DC/DC开关电源均有很好的通信效果;
(9)间距接口,DIP封装;
(10)工作于EnhancedShockBurst具有Automaticpackethandling,Autopackettransactionhandling,具有可选的内置包应答机制,极大的降低丢包率。
液晶显示模块设计
液晶显示模块的选择
LCD1602屏幕为2行,每行显示16个字符,为字符型显示器,只能显示数字和字符,不可以显示汉字。
LCD12864屏幕为64行,每行显示128个字符,为点阵型显示器,可根据需求任意显示字符,数字,汉字和图形。
综合价格因素和实际应用的需要,选用LCD1602为改家居系统的显示器。
下面详细介绍一下LCD1602的功能实现和各项参数。
ØLCD1602主要技术参数:
显示容量:
16×2个字符
芯片工作电压:
—
工作电流:
模块最佳工作电压:
字符尺寸:
×(W×H)mm
ØLCD1602相比传统显示器的几个突出优点:
(1)显示质量高由于液晶显示器收到信号后的每一个点都会一直保持原有亮度和颜色,恒定发光。
而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点。
因此,液晶显示器既不会闪烁,又保证了画质高。
(2)数字式接口液晶显示器的输入输出采用数字量,和主控芯片(SCM)的接口连接更加简单可靠,操作也更为简便。
(3)重量轻,体积小液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多。
(4)功耗低相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其他显示器要少得多。
LCD1602分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别。
液晶显示电路设计
图液晶显示电路示意图
液晶显示电路工作原理:
液晶显示器LCD1602通过7~14管脚的数据总线与单片机进行数据传送,单片机通过输出高地电平来控制液晶显示器LCD1602的4~6管脚配合传送的数据决定读/写数据,并通过LCD显示屏显示出来。
期间单片机是控制元件,而LCD1602为显示和执行元件。
其他模块设计
电灯模块设计
本次系统设计中用发光二极管LED来替代实际场景中的电灯。
ØLED发光原理
发光二极管是由Ⅲ-Ⅳ族化合物,如GaAs(砷化镓)、GaP(磷化镓)、GaAsP(磷砷化镓)等半导体制成的,其核心是PN结。
因此它具有一般P-N结的I-N特性,即正向导通,反向截止、击穿特性。
此外,在一定条件下,它还具有发光特性。
在正向电压下,电子由N区注入P区,空穴由P区注入N区。
进入对方区域的少数载流子(少子)一部分与多数载流子(多子)复合而发光。
假设发光是在P区中发生的,那么注入的电子与价带空穴直接复合而发光,或者先被发光中心捕获后,再与空穴复合发光。
除了这种发光复合外,还有些电子被非发光中心(这个中心介于导带、介带中间附近)捕获,而后再与空穴复合,每次释放的能量不大,不能形成可见光。
发光的复合量相对于非发光复合量的比例越大,光量子效率越高。
由于复合是在少子扩散区内发光的,所以光仅在靠近PN结面数μm以内产生。
理论和实践证明,光的峰值波长λ与发光区域的半导体材料禁带宽度Eg有关,即λ≈1240/Eg(mm)式中Eg的单位为电子伏特(eV)。
若能产生可见光(波长在380nm紫光~780nm红光),半导体材料的Eg应在~之间。
比红光波长长的光为红外光。
现在已有红外、红、黄、绿及蓝光发光二极管,但其中蓝光二极管成本、价格很高,使用不普遍。
ØLED的应用
由于发光二极管的颜色、尺寸、形状、发光强度及透明情况等不同,所以使用发光二极管时应根据实际需要进行恰当选择。
由于发光二极管具有最大正向电流IFm、最大反向电压VRm的限制,使用时,应保证不超过此值。
为安全起见,实际电流IF应在以下;应让可能出现的反向电压VR0。
6VRm。
LED被广泛用于种电子仪器和电子设备中,可作为电源指示灯、电平指示或微光源之用。
红外发光管常被用于电视机、录像机等的遥控器中。
在连接电路时,首先应正确区分LED的正负极,避免正负极戒饭导致无法使用甚至烧坏元件。
LED的两只引脚中,长的一根为正极,短的一根为负极,连接电路时,正极接一个220Ω的电阻,电阻另一端接单片机的数字I/O口,负极接地。
风扇模块设计
本设计中,采用普通的直流电机带动扇叶来模拟实际场景中的风扇。
直流风扇的两个接线端不分正负,一端接地,另一端接单片机数字I/O口即可,根据系统设计的要求,通过程序控制输出到电机的电压不同来改变电机转速,从而实现根据温度变化和预设参数改变风扇转速的目的。
系统硬件实物图
根据上述各模块的硬件设计,最后做出的实物图如下:
图模拟智能家居硬件实物图
§4软件系统设计
检测端程序设计
检测端由单片机、光照检测模块、温湿度检测模块和无线通信模块组成,相应的程序包括光照检测程序、温湿度检测程序和无线通信程序,部分程序如下图所示,完整的程序在附录中。
图检测端部分程序
控制端程序设计
控制端由单片机、液晶显示模块、电灯模块、风扇模块和无线通信模块组成,相应的程序包括无线接收程序、串口通信程序、显示程序、风扇和电灯控制程序,部分程序如下图所示,完整的程序在附录中。
图无线接收部分程序
图液晶显示部分程序
§5总结
本次设计的模拟智能家居系统满足了所有的系统设计要求,完成了对温湿度的实时监测和现实,得到的最终结果误差也在要求的范围之内,而且完成了根据光照强度变化、温度变化和预设参数对电灯和风扇进行智能控制的任务,取得了令人满意的成果。
通过本次设计,使我对基于单片机的智能控制有了更多的了解和掌握,在科技飞速发展的今天,科技意味着第一生产力,机器智能正在越来越多的方面取代人工操作,作为智能控制在工业应用的代表性成果,它结合了程序调控,提供了定时控制、计数控制、步进控制以及数据处理等多种功能,具有人工作业无法比拟的优越性和精确性。
随着科技的发展,基于单片机的智能控制功能也会不断扩大,各项性能也将不断提高。
参考文献
[1]张鑫.单片机原理及应用[M].北京:
电子工业出版社,2008
[2]童诗白,华成英.模拟电子技术基础[M].北京:
高等教育出版社,2001
[3]王港元.电工电子实践指导[M].南昌:
江西科学技术出版社,2006
[4]李朝青.PC机及单片机数据通信技术,北京,北京航空航天大学出版社,2000
[5]蓝宇电子研发团队.Arduino设计[M].
[6]汤凯,刘洋,续欣.Arduino程序设计指南[M].北京:
电子工业出版社,2015
[7]赵光宙.信号分析与处理[M].北京:
机械工业出版社,2010
[8]张国雄.测控电路(第四版)[M].北京:
机械工业出版社,2011
附录:
源程序
检测端发送程序:
#include<>
#include<>
#include<>
#include<>
#defineDHT11_PIN0.");
}
voidloop(){
bytedht11_dat[5];
bytedht11_in;
bytei;
unsignedintGuangmin,WenDu,ShiDu;
pull-downi/opinfrom18ms
PORTC&=~_BV(DHT11_PIN);
delay(18);
PORTC|=_BV(DHT11_PIN);
delayMicroseconds(40);
DDRC&=~_BV(DHT11_PIN);
delayMicroseconds(40);
dht11_in=PINC&_BV(DHT11_PIN);
if(dht11_in){
("dht11startcondition1notmet");
return;
}
delayMicroseconds(80);
dht11_in=PINC&_BV(DHT11_PIN);
if(!
dht11_in){
("dht11startcondition2notmet");
return;
}
delayMicroseconds(80);
//nowreadyfordatareception
for(i=0;i<5;i++)
dht11_dat[i]=read_dht11_dat();
DDRC|=_BV(DHT11_PIN);
PORTC|=_BV(DHT11_PIN);
bytedht11_check_sum=dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];
//checkcheck_sum
if(dht11_dat[4]!
=dht11_check_sum)
{
("DHT11checksumerror");
}
WenDu=(unsignedint)(dht11_dat[2]);
ShiDu=(unsignedint)(dht11_dat[0]);
Guangmin=analogRead(A2);
//Guangmin=(unsignedint)20;
(WenDu);
(ShiDu);
(Guangmin);
fasong(WenDu);
fason