《基于arduino的智能家居设计与实现.docx》由会员分享,可在线阅读,更多相关《基于arduino的智能家居设计与实现.docx(27页珍藏版)》请在优知文库上搜索。
1、西南科技大学毕业设计题目:基于ARDUlNO的智能家居设计与实现学习形式:成人高等教育专业:机械设计制造及其自动化层次:本科姓名:学号:指导老师:【摘要】基于arduino的智能家居控制系统,以arduino为核心,通过结合wifi转串模块搭建本地tcp/ip服务器。ArdUinO进行数据采集,发送,接受和处理。然后通过Wifi转串口模块和远端安卓客户端通信,实现家居环境信息的智能采集和控制。本文抛砖引玉,实现安卓客户端灯光亮度调节,舵机角度控制,以及家居温度和光照度采集显示在安卓客户端。本设计采用arduino为核心,arduino具有外围电路简单,程序开源,扩展模块丰富等优点,设计难度在于
2、程序中数值的处理,以及客户端软件的编写。【关键词】arduino;智能家居;Wifi转串口模块;服务器;客户端。目录1、概述错误!未定义书签。1.1 课题研究背景错误!未定义书签。1.2 本课题的研究的内容及目的错误!未定义书签。1. 4系统的控制思路与流程错误!未定义书签。2、软件、硬件介绍错误!未定义书签。1.1 客户端软件错误!未定义书签。2. 2arduino介绍错误!未定义书签。2. 2.1ardino研发过程错误!未定义书签。3. 2.2arduino编程软件错误!未定义书签。4. 2.3Arduino硬件错误!未定义书签。5. 2.4Arduino编程语言简介错误!未定义书签。2
3、. 3WIFI模块介绍错误!未定义书签。3、硬件连接错误!未定义书签。3.1温度传感器错误!未定义书签。3. 2光线传感器错误!未定义书签。3. 3伺服舵机错误!未定义书签。3. 4灯光控制错误!未定义书签。4、通讯错误!未定义书签。3.1 串行通讯错误!未定义书签。3.2 异步通讯错误!未定义书签。4. 3Arduino与wifi模块连接错误!未定义书签。5. 4通讯协议错误!未定义书签。5、成品展示错误!未定义书签。参考文献错误!未定义书签。致谢错误!未定义书签。附录错误!未定义书签。西南科技大学成人教育学院自动化专业姓名:罗永勇学号:61、概述1.1 课题研究背景近年来随着现代互联网技术
4、的发展,智能生活的理念深入人心,物联网和智能家居真正开始走向人们的视野。随着现代电力电子技术和电子元件制造工艺的发展,物联网设备的自动化程度和稳定性得到很大的提高,物联网设备也逐步向轻量化、自动化和智能化发展,还有高可靠性、高可控性、高效率等特点,功能不断增强和完善,这推动了智能家居技术的迅速发展,相继出现了多种多样的智能家居设备,如NEXT恒温器,空气净化器等,但国内外对本课题的研究尚存在待解决的问题:(1)家居智能化水平较低;(2)使用的平台不统一,功能单一且不完善;(3)价格相对昂贵,普及的难度比较大。1.2 本课题的研究的内容及目的本系统以ArduinoUNO为核心,联合hlk-rm0
5、4wifi转串口模块,通过安卓客户端使用tcp/ip协议连接外围电路及各类传感器,实现室内家居的远程监控及智能控制。研究目的基于家居生活的便捷高效的方向出发,主要是为了改进当下传统家居的控制方式落后及使用不方便等缺点,本设计的智能远程控制代替了传统家居设备手动机械控制,不仅效率高、成本低、使用方便、可控性强,更能提升家居便利性、舒适性、艺术性,并实现环保节能的居住环境。1.3 系统结构分析系统由七部分组成(如图一):安卓APP客户端、灯光控制、arduino以及Wifi模块、光敏电阻、舵机、温度传感器、外围电路。各部分组成如下:(1) APP客户端为易安卓软件用易语言编写的安卓客户端;(2)灯
6、光亮度控制采用PWm调节(3) 核心模块通过ArduinoUno单片机连接wifi转串模块组成,核心模块不仅是本系统的中央处理器,而且通过连接无线路由器搭建了本地的tcpip服务器;(4) 温度传感器采用单总线dsl8b02集成温度传感器,该传感器可以在一个io上并接多个dsl8b02,大大的节约了CPU的硬件资源。(5)光线的测量采用光敏电阻;(6)伺服舵机;(7)外围电路由简单的发光二极管及各类元器件组无物r号(图一)1.4系统的控制思路与流程APP客户端使用tcp/ip协议,远程无线连接上工作在服务器模式的Wifi模块,wifi模块连接上家庭路由器,需要注意的是家庭网络要处于公网模式,在
7、APP客户端发送控制命令,wifi模块接受命令转成串口数据输出,arduino读取串口数据实现LED灯光亮度智能调节,舵机角度控制,同时arduino模块读取温度传感器数值,采样光敏电阻电压转换为光照度,然后arduino把数据通过串口传给Wifi模块,wifi模块发送数据,客户端接收数据然后显示在安卓手机上;控制流程如图二;APP客户端ITCP/IP协议(图二)控制流程图2、软件、硬件介绍2.1客户端软件采用安卓智能手机作为命令发送和接受端,通过因特网传输数据,实现家居的智能监控和远程操控,操作简单,使用方便。客户端软件采用中文版的安卓编写软件,本文主要专注于整体框架的实现,在此就不再对开发
8、软件进行详细介绍,对软件界面的美观性和舒适性未做过多的修饰。如有不足之处,请指教!客户端软件界面如图三:环境光强度舵机角度控制界面环境温度19.50摄氏度721.0勒克斯(图三)2.2arduino介绍2.2.1arduino研发过程MassimoBanzi之前是意大利IVrea一家高科技设计学校的老师。他的学生们经常抱怨找不到便宜好用的微控制器。2005年冬天,MaSSinIoBanZi跟DaVidCuartielles讨论了这个问题。DavidCuartielles是一个西班牙籍晶片工程师,当时在这所学校做访问学者。两人决定设计自己的电路板,并引入了Banzi的学生DaVidMeniS为电
9、路板设计编程语言。两天以后,DaVidMeniS就写出了程式码。又过了三天,电路板就完工了。这块电路板被命名为ArdUirio。2.2.2arduino编程软件ArduinoIDE基于processingIDE开发的。对于初学者来说,极易掌握,同时有着足够的灵活性。ArdUino语言基于Wiring语言开发,是对AVRGCC库的二次封装,不需要太多的单片机基础、编程基础,简单学习后,你也可以快速的进行开发。(图四)ARDUINO编程软件界面2.2.3Arduino硬件Arduino发展至今,出现了适应各种环境的硬件版本,如ArduinoUno.ArduinoNano、ArduinoNano、A
10、rduinoLilyPad,ArduinoMega2560。本文采用ArduinoUno为主控器,ArduinoUNO是ArdUinoUSB接口系列的最新版本,作为ArdUinO平台的参考标准模板。UNO的处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PwM输出),6路模拟输入,一个16MHZ晶体振荡器,一个USB口,一个电源插座,一个ICSPheader和一个复位按钮。UNO已经发布到第三版,与前两版相比有以下新的特点:1、在AREF处增加了两个管脚SDA和SCL,支持I2C接口;2、增加IoREF和一个预留管脚,将来扩展板将能兼容5V和3.3V核心板。3、改
11、进了复位电路设计,USB接口芯片由ATlnega16U2替代了ATmega8U2,如图五为改进后的ArdUinOUN0。GNDGNDVln(D14) PC 0 : AINO (D15) PC 1 : AIN1 ID16) PC 2 : AIN2 D17) PC 3 : AIN3 D18) PC 4 : AIN4 D19) PC 5 : AIN55432BBBB111OPPPP*B*BFPpJ9321O :RRlllI98AgddddddISCKIMISOPWM T2A. MOSII PWM T1B, SS PWM T1A Input Capture76543210Dddddddd7654321
12、0DdddddddPpppppppPWMTOAPWMTOBPWMT2B.Ext Int 1ExtInt0USARTTXUSARTRX(图五)ARDUINOUNO硬件图2. 2.4Arduino编程语言简介ArdUinO语言是建立在C/C+基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让我们不了解AVR单片机(微控制器)的朋友也能轻松上手。关键字: if if.else for switchcase while do.while break continue return goto语法符号:/数据类型:bo
13、olean布尔类型char字符类型unsignedint无符号整数类型long长整数类型unsignedlong无符号长整数类型float浮点类型double双精度浮点类型string字符数组型array数组类型void无类型数据类型转换:char()byte()int()long()float()常量:HIGHILOW:表示数字IO的电平,HIGH表示高电平(1),LOW表示低电平(O)oINPUTIOUTPUT:表示数字IO的方向,INPUT表示输入(高阻态),OUTPUT:表示输出(AVR能提供5V电压40mA电流)。trueIfalse:true表示真(1),false表示假(O)o程
14、序结构:声明变量及接口名称(例如:intval;intledPin=13;)ovoidsetup()函数在程序开始时使用,初始化变量,管脚模式,调用库函数等(例如:pinMode(IedPin,OUTUPT);),voidIoopO在SetUP()函数之后,即初始化之后,IoopO让你的程序循环地被执行。使用它来运转ArdUino。数字I/O:pinMode(pin,mode):数字IO口输入输出模式定义函数,pin表示为013,mode表示INPUT或OUTPUTodigitalWrite(pin,value):数字IO口输出电平定义函数,Pin表示为013,ValUe表示为HIGH或LoW
15、。必须先定义为输入或输出模式digitalWrite才能生效。intdigita!Read(pin):数字IO口读输入电平函数,Pin表示为0-13,value表示为HIGH或LoTV。比如可以读数字传感器。模拟I/O:intanalogRead(pin):模拟IO口读函数,pin表示为05(ArdUinODiecimila为05,Arduinonano为07)。比如可以读模拟传感器(10位AD,05V表示为0Io23)。analogWrite(pin,value)-PWM:数字IO口PwM输出函数,ArdUinO数字IO口标注了PWM的IO口可使用该函数,pin表示3,5,6,9,10,11,value表示为0-255。比如可用于电机PWM调速或音乐播放。时间函数:unsignedlongmill