基于Arduino平台的智能家居系统模型设计
2015-09-28佟源洋赵钰方圆刘鑫
佟源洋,赵钰,方圆,刘鑫
(1.大连理工大学软件学院,大连116600;2.中北大学,太原 030051)
TONG Yuan-yang1,ZHAO Yu1,FANG Yuan1,LIU Xin2
(1.School of Software Technology,Dalian University of Technology,Dalian 116600;2.North University of China,Taiyuan 030051)
基于Arduino平台的智能家居系统模型设计
佟源洋1,赵钰1,方圆1,刘鑫2
(1.大连理工大学软件学院,大连116600;2.中北大学,太原030051)
0 引言
随着物联网概念越来越普及,各大互联网公司例如苹果、谷歌等加快了智能家居产品推广进程,未来智能家居系统具有广泛的应用前景。智能家居系统通过整合计算机技术、嵌入式技术、传感器技术、网络通信技术以及自动控制技术,集中安防系统、家电系统、多媒体娱乐等功能于一体,为用户提供了温馨舒适、安全便利的生活条件,满足信息化时代人们追求高品质的生活需求[1]。智能家居在国内正处于发展阶段,研究并设计一款能够满足人们需求的智能家居系统模型,对智能家居的实际研发及部署具有重要意义[2]。
本文设计了智能家居系统模型,并最终完成了模型实物,为研究智能家居提供了一种设计思路。
1 系统需求描述
智能家居系统模型采用Arduino作为核心控制单元,主要由五个模块组成,即监测模块、温控模块、网络模块、报警模块和显示模块。这五个模块协调工作,共同实现系统的数据采集、数据存储、数据处理和设备远程控制等功能[3]。
监测模块主要由温度传感器、湿度传感器、烟雾传感器、火焰传感器等组成,对家居环境中温度、湿度和烟雾浓度等环境变量进行采集,并换成数字信号,然后将这些数据提供给Arduino做进一步处理。温控模块主要由温度传感器、加热设备和制冷设备共同组成,构成一个闭环温控子系统,Arduino根据温度传感器采集的温度数据操控加热和制冷设备,最终将温度控制在22-24摄氏度范围内。网络模块由ENC28J60和GSM构成,其主要任务是将本模型连接到网络,然后利用网络服务平台Yeelink实现对智能家居模型的监视和控制,以及通过GSM发送短信。报警模块主要由蜂鸣器、气体传感器和人体感应器组成,模型用蜂鸣器模拟室内报警铃声,其主要任务是实时监测家居环境安全,当监测到危险气体或有人闯入时,报警模块发出警报。显示模块由一块液晶显示屏组成,其主要任务是将采集到的环境信息显示到LCD上,将家居环境信息以数字化形式呈现到用户面前。
2 系统总体设计
系统使用增量式开发,首先实现系统的整体运行,之后逐渐添加功能。本系统每个阶段的功能设计如下:
第一阶段:通过传感器对周围环境进行信号采集,包括温度测量、湿度测量、光亮度测量、红外线检测、烟雾检测等。第二阶段:Arduino控制中心将会对采集到的信号进行安全判定,不符合的将会通过GPRS模块进行报警,同时接受指令进行门窗的开关,闭环控制系统的温度控制操作。第三阶段:实现将传感器数据存储到互联网,通过手机、网页查看传感器数据并发出指令到Arduino控制中心。第四阶段:系统实现语音交互功能,使系统具有语音控制功能。
2.1系统硬件设计
系统硬件设计包括带有处理器的核心板、监测模块、温控模块、网络模块、报警模块和显示模块及其电路设计。系统结构框图如图1所示:
图1 智能家居系统模型结构框图
Arduino开发板对智能家居其他子系统进行控制操作,为用户提供实时交互服务[4]。通过对开发板进行功能分析,得出核心开发板应满足以下设计方案:
(1)完成人机交互功能。用户可通过智能主控制模块对智能家居系统模型进行整体控制,必定会涉及到人机交互的操作[5],所以为了更好的人性化服务,可在该模块上提供LCD显示屏。
(2)完成家电控制以及获取传感器信号采集功能。Arduino开发板通过GPIO进行收发数据。
输入部分的信号包括:环境温度信号、环境湿度信号、环境光照强度信号、烟雾传感器输出信号、红外信号、网络数据、远程指令、火焰传感器信号。
输出部分的信号包括:环境温度、环境湿度、环境光照强度、烟雾指标、报警信息。
(3)及时处理各个模块的请求,通过中断方式对不同模块请求或控制指令进行处理。
Arduino核心开发板UNO上的AVR单片机AT-mega328主要封装了CPU、存储器、时钟和外围设备等[6],如图2所示。
Arduino UNO开发板拥有20个GPIO引脚且其中6个引脚具有AD转换等特性,具有功能强大的定时器/计数器及串口等通讯接口,使用RISC结构的8位单片机,采用了单级流水线、快速单周期指令系统等先进技术,具有1MIPS/MH z的高速运行处理能力[7]。其32KB的程序存储器也满足智能家居系统模型的需要[8]。
图2 Arduino开发板设备封装
2.2系统软件设计
系统软件使各个模块协调合作共同完成系统功能,这些功能包括家居环境数据采集、数据处理、数据存储和设备远程控制等功能。系统工作流程图如图3所示,系统运行包括三个组成部分,分别是中断服务部分、配置部分和执行部分,分别介绍如下。
图3 系统工作流程图
配置部分负责系统进入正常工作模式前的配置,包括Arduino核心控制单元的引脚状态设置、各设备初始化、网络连接初始化、定时器中断设置等任务。
中断服务部分通过传感器对周围环境进行信号采集。这些任务包括温度测量、湿度测量、光亮度测量、红外线检测、烟雾检测等。信息采集完毕后,Arduino核心控制单元将会对这些信息是否处于安全范围内进行分析,如发现有不符之处,则会通过GPRS模块进行报警。如温度超限,则通过闭环控制系统进行温度调节。
执行部分的任务为将传感器数据通过Yeelink平台存储到网上,通过手机和PC机浏览器可查看传感器数据,并发出指令到Arduino核心控制单元。
(1)监测模块软件设计
监测模块的主要任务是对家居环境中温度、湿度和烟雾浓度等环境变量进行采集,并将这些环境变量装换成数字化的电信号,然后将这些数据供Arduino使用。本文介绍的智能家居系统模型监控模块软件设计重点包括两个部分:一是,将湿度传感器DHT11的单总线数字信号转换成用户易识别的十进制数字;二是,对于温度传感器DS18B20采用单总线设计,便于传感器数量的扩展。其他传感器数据获取相对简单,利用Arduino引脚直接读取数据。
DHT11每次返回的数据有40bit,其中的前8bit是湿度的整数部分。由于系统对湿度的精度的要求不高,取其前8bit就能满足需求。Arduino引脚在读取DHT11的数据时是按位逐次读取,为了提高效率,只对获取的数值是1的位进行赋值,其余的位仍然保持原值0。
(2)温控模块软件设计
温控模块的主要任务是将房间2的温度控制在预先设定的温度上,当然也可以是温度范围。温控模块包含三个部:制冷设备,加热设备和温度传感器。温控模块需要这三个部分协调合作才能实现控制温度的恒定。
控制室内温度恒定的算法本文采用二值法,二值法的温度偏离在人们可以接受的范围内,而且二值法具有较高的效率。其基本工作原理是:温度传感器负责采集温度信息,这些信息会和事先设定的温度标准进行比较。若采集的温度高于设定温度则打开制冷设备,关闭加热设备,降低室内温度;若采集的温度低于设定温度则打开加热设备,关闭制冷设备,升高室内温度,直到温度达到设定温度为止。该模块的程序流程图如图4所示。
图4 温控模块流程图
(3)网络模块软件设计
网络模块采用已经集成好的Arduino网络扩展板ENC28J60。网络模块一端连接智能家居系统模型,另一端连接Yeelink网络服务平台,采集到的所有数据都可以上传到该平台。对家庭电器的远程控制也要通过Yeelink网络服务平台实现。
网络模块的主要任务是实现网络的连接,数据的上传和下载。在这一部分可以使用Arduino现成的库EtherCard,其中包含网络连接、数据上传和数据下载的基本函数。在连接网络时,Arduino属于客户端。系统作为客户端连接入网的基本过程是:首先初始化网络模块,设定获取的网络数据缓存区大小和MAC地址;然后获取IP地址,这里是连接到DHCP服务器自动获取;最后连接到Yeelink网络服务平台。每一步都有相应的库函数可以使用,按照这个顺序即可实现网络的连接。
数据的上传和下载都有相关的库函数使用。这里需要用到下面两个函数:
ether.browseUrl()函数能够从Yeelink网络服务平台上获取指定位置的开关的状态。数据包如图5所示。本文的解决方法是首先将获取的数据包转换成字符串,从字符串中截取表示你开关状态部分。
图5 数据包
ether.httpPost()函数能够将数据上传到Yeelink网络服务平台指定位置并存储。每一个设备都是一个文件,具有唯一的URL。对于数据上传,它实际上就是将数据发送到设备文件上进行保存,然后以设定的数据格式进行保存。保持上传的数据格式和设定的数据格式一致是数据上传能否成功的关键。本系统选择的是数值型传感器,其优点是所有上传的数据最终会以二位曲线图显示,便于用户观察。
这两个函数都要有回调函数,回调函数在调用它的函数执行完毕时才会被调用。可以把从数据包中截取开关状态任务交给回调函数来完成。
(4)报警模块软件设计
报警模块的主要任务是保卫家居安全,当有陌生人闯入室内,或者是检测到室内有危险气体泄漏,或者是检测到家庭意外火灾,报警模块都会发出警报声提醒住户危险。报警模块用到一个蜂鸣器和四个传感器,包括两个人体感应器HC-SR501和两个个气体传感器MQ-2。其基本工作流程是:房间1和房间2中的两个人体感应器时刻监视室内,当人体感应器监测到陌生人闯入室内时,人体感应器返回值是1,警报器(蜂鸣器)开始蜂鸣报警。同时,室内有有害气体时,警报器开始报警。其流程图如图6所示。
(5)显示模块软件设计
显示模块的主要任务是将监测模块采集到的温度、湿度、烟雾浓度和人体感应等信息实时显示出来。显示模块设计的重点是利用74HC595扩展引脚的数目。本文介绍的智能家居系统的设计中使用了两片74HC595扩展引脚,它们共用一个TH_CP引脚,这样LCD部分和LED部分数据移位保持步调一致。对于LCD部分,Arduino爱好者开发了以 74HC595驱动LCD的库LiquidCrystal595,直接调用库中相关函数就能显示想要显示的内容。对于LED部分,使用数组存放每个LED灯状态,将这些数据串行输入74HC595,然后并行输出驱动每个LED。利用74HC595控制LED分为两部,将控制LED的数据信息按顺序存放至数组中,将这个长度为8的数组装换成一个十进制的整数,最后将这个十进制数转换成二进制数据逐位输入74HC595。
图6 报警模块流程图
3 智能家居系统模型测试
3.1硬件测试
对智能家居系统模型的各个模块进行硬件测试时,通过使用万用表,对智能家居系统模型上使用到的电阻、电容等器件进行测量,确保所有元器件都能正常工作;通过使用示波器对电路的测试来确定电路中电压大小是否与设计电压相吻合,确保各芯片的接入电压介于其适用范围内。其测试项目和测试情况表1所示。
表1 智能家居系统模型硬件测试情况表
对闭环温度控制系统的制冷和加热模块,通过DS18B20温度传感器和一颗经过测试的其他类型温度传感器进行温度调节对比测试,通过设置不同的温度,发现温度最低为2摄氏度,最高可以为50摄氏度,且保持的温度越向两级设置,稳定下来的时间越久。其中最低温度需要7分钟,最高温度需要3.5分钟。
对各个传感器进行矫正测试,包括温湿度及烟雾传感器,均通过其他经过验证过的传感器进行对比,得出误差结果。结果显示均在误差范围内。
3.2软件测试
(1)监测模块测试
智能家居系统模型的测试目标为:各种传感器能准确地读取环境中的数据。其中温度精确到0.01℃,湿度精确到1%,气体传感器的数值一般认为300以内是正常值。经测试可知实际温度为26.50℃,湿度为33.00%;两个人体感应器未检测到有陌生人闯入;两个气体传感器的测量值为111和168,均符合要求。对室内进行加热,模拟室内温度变化,使环境中温度升高,测量的温度从26.50℃上升到33.94℃,这个测试结果说明温度传感器DS18B20是正常工作的。用手臂模仿模拟陌生人,当手臂在人体感应器HC-SR501周围摆动时即可以认为模拟陌生人闯入室内,两个人体感应器的返回值都从0变为为1,说明人体感应器正常工作。在模型中放入一杯开水,模拟室内湿度变化的情况,过一段时间后,湿度测量值从33.00%上升至49.00%,测试结果说明湿度传感器DHT11正常工作。点燃一根香烟放入模型内,用来模拟房间内发生火灾的危险情况。气体传感器的返回值明显升高,测试结果说明气体传感器MQ-2也正常工作。综合以上测试结果,监测模块正常工作,符合设计的要求。
(2)温控模块测试
智能家居系统模型中的温控模块采用二值算法控制温度恒定。对温控模块的数据测试结果可以通过Arduino IDE的串口监视串口进行观察。测试目标为室内温度应恒定在22摄氏度,测试过程及结果如图7所示。
图7 温度控制检测结果
由图7可知,室内温度在较小的范围内波动,但是基本稳定在22℃左右。从整体上来讲,这样小的波动并不影响人们的家居舒适度,能够满足人们的家居温度控制需求,测试结果表明温控模块工作正常。
(3)网络模块测试
网络模块的核心器件是ENC28J60,在智能家居系统模型中它的主要任务是实现和Internet网络的连接,完成系统和Yeelink服务平台的数据交互。用户可以通过PC或智能手机客户端登录Yeelink服务平台观察结果,并且可以通过手机客户端或者电脑客户端对LED进行控制。测试目标为数据上传和远程控制LED。通过电脑客户端观察气体传感器数据上传结果,在Yeelink服务平台上观察结果如图8所示。
从图8可知,上传的数据最终都被上传到Yeelink服务平台上进行存储,可在直角坐标系中观察到近期的数据记录情况。接下来测试远程控制LED灯,测试结果说明用户可以运程控制LED小灯。
(4)报警模块测试
报警模块的主要任务是当危险气体浓度超标或者有陌生人闯入时,报警模块能够发出声音通知室内的用户。测试目标为当测量到有害气体或监测到有陌生人闯入时发出警报。在未模拟陌生人闯入并未向模型中放入点燃的香烟时,测试结果如图9所示:
图8 气体曲线图
图9 正常情况下检测结果
由图9可知,烟雾警报和陌生人闯入警报的值都是0,蜂鸣器不蜂鸣。接下来模拟陌生人闯入或室内发生火灾,此时测试结果如图10所示。
此时,烟雾警报和陌生人闯入警报的值分别为1,并且可听到蜂鸣器发出警报声,测试结果说明系统的报警模块工作正常。
图10 模拟危险情况时检测结果
(5)显示模块测试
显示模块只需满足数字和英语字符的显示,测试目标为显示读取的温度值和字母字符。测试结果表明,LCD1602正常显示数字和字符,测试结果说明显示模块正常工作。
4 结语
本项目旨在设计一款性价比高,实用性广,功能多样且开发快速的智能家居系统模型模型。完成的智能家居系统模型的基本功能如下:能够远程控制模拟家电的开关状态;能够采集家庭环境信息并进行显示和远程展示;能够防护家庭安全,一旦出现异常状况,能及时发送信息至用户;用户与系统的信息交流。该智能家居系统模型运行于以ATmega328为核心处理器芯片的Arduino开发平台上,实现了全部预定目标,下一步可考虑将其设计思路移植到实际智能家居系统中进行应用。
[1]王凯明.智能家居系统的研究[D].西安:西安科技大学结构工程学院,2005.
[2]曾松伟,章云,邱伟强.基于物联网的智能家居控制系统设计[J].现代电子技术,2011,35(9):168-171.
[3]Hsien-Tang Lin.Implementing Smart Homes with Open Source Solutions[J].International Journal of Smart Home,2013,7(4):289-296.
[4]Alam MR and Reaz MB.A Review of Smart Homes-Past,Present,and Future[J].IEEE Transcation on System Man and Cybernetics Part C-Applications and Reviews,IEEE Transactions on.2012,53(6):1190-1203.
[5]Chan M.and Esteve D.A review of smart homes-Present state and future challenges[J].Computer Methods and Programs in Biomedicine,2008,24(1):55-81.
[6]程晨.Arduino开发实战指南:AVR篇[M].北京:机械工业出版社,2012.
[7]Martin Evans,Joshua Noble,Jordan Hochenbaum.Arduino实战[M].北京:人民邮电出版社,2014.
[8]Dale Wheat.Arduino技术内幕[M].北京:人民邮电出版社,2013.
刘鑫(1993~),女,山西忻州人,在读本科,研究方向为嵌入式系统开发与应用
TONG Yuan-yang1,ZHAO Yu1,FANG Yuan1,LIU Xin2
(1.School of Software Technology,Dalian University of Technology,Dalian 116600;2.North University of China,Taiyuan 030051)
Arduino;Intelligent Home;Automatic control;Remote control
Design of Smart Home System Model Based on Arduino
1007-1423(2015)31-0066-07
10.3969/j.issn.1007-1423.2015.31.017
佟源洋(1993-),男,辽宁铁岭人,在读本科,研究方向为嵌入式系统
赵钰(1994-),男,内蒙古自治区呼和浩特人,在读本科,研究方向为嵌入式系统
方圆(1996-),女,河南襄城人,在读本科,研究方向为嵌入式系统
2015-09-29
2015-10-30
提出一种基于Arduino的智能家居系统模型。该模型主要由监测模块、报警模块、网络模块、显示模块和温控模块五个部分组成,该系统利用布置在模型各个位置的传感器的环境数据,对智能家居环境进行自动控制及基于PC与移动端App的远程监控。实验表明,该系统完全达到预期目的,可有效监测及控制室内环境参数。
Arduino;智能家居;自动控制;远程控制
2014Google校企合作专业综合改革项目“大学生创新训练项目”
Presents a model of smart home system based on Arduino.The model consists of the monitoring module,alarm module,network module,display module and temperature control module.The system uses the sensors to disposed at various locations of environmental data model,whereby the smart home environment can automatic control or through PC-based remote monitoring and mobile App terminals controlling. Experiments show that the system is fully achieve the intended purpose,can effectively monitor and control the indoor environmental parameters.