日期:2023-01-24 阅读量:0次 所属栏目:软件技术
0 引言
随着计算机技术、智能控制技术、通信技术和移动终端系统的高速发展及人们生活水平的日益提高,智能家居逐渐被越来越多的人所关注。与此同时,人们对智能家居系统的操作简易化与人性化有了更多要求。
智能家居系统,即智能住宅(Smart Home),是以住宅为平台,利用综合布线技术、智能控制技术、网络通信技术、安全防范技术等将家庭内各个设备进行物联集成,以建立方便、舒适、安全的家居控制系统。目前智能家居系统的控制方案与实现的功能都很多,但一般过于复杂和闭源,电子爱好者们难以对其进行扩展和创新。随着Arduino开源平台、开源共享库Github,以及无数Arduino配套传感器模块[1]的出现,电子爱好者们完全可以通过Arduino搭建一个个性化的家居中控平台。
在现代社会中,智能手机、平板电脑等智能手持设备已得到广泛普及,智能手机的关键就是对智能手机功能进行扩展的应用程序(Application),开发者可以通过设计各种应用程序实现智能手机的智能化与个性化。
本文设计采用Arduino开源平台作为主控,通过YeeLink云计算平台与Android手机进行数据通信,以实现具有智能安防监控与家庭环境监控功能的智能家居系统。
1 系统组成
本系统主要由Arduino UNO及无线模块扩展板、传感器模块、Yeelink云计算平台和远程Android用户终端组成。系统中受控端与服务器,服务器与Android用户终端均通过无线网络方式连接,保证了手持终端的便携性与数据交换的连续性。
1.1 Arduino UNO及无线模块扩展板
Arduino是一个开源的硬件项目平台,本设计采用的Arduino UNO(见图1)核心器件是一块AVR ATmega128MCU。该平台相较其它主控板的优势在于开源、简易,Arduino所使用到的开发软件都可以免费下载[2]。硬件参考设计(CAD文件)也遵循开源共享协议,可以进行个性化修改。因而本设计中采用集成化设计,将Arduino开源模块、家庭智控系统传感器,以及WIFI通信模块集成到一个受控端中,以实现受控端的便携化、集成化且便于安装。
图1 Arduino UNO开发板
无线扩展模块采用WiFi Shield V3 WiFi扩展板,该扩展板支持AP和STA双模式,便于将模块通过无线路由器连接Internet网络,以实现与云计算平台及远程客户端的通信。
1.2 传感器模块
本设计中,智能家居系统主要实现家庭环境监控与家庭安防监控。家庭环境监控主要通过DHT11温湿度传感器模块[3]对家庭中温湿度进行检测;家庭安防监控主要通过MQ-2可燃性气体传感器模块对甲烷、天然气等可燃性气体的检查[4]以及陀螺仪模块对运动门窗的监控,实现当有人入侵推开门时系统将通过网络通知到用户的Android终端。
1.3 Yeelink云计算平台
Yeelink是国内较早提供免费传感器数据接入管理的互联网服务提供商[5]。在Yeelink网站上能够完成对传感器数据的接入管理、数据存储,以及将数据随时呈现给用户。该平台能够让用户完成海量传感器数据的存储,并根据用户设置触发一系列动作,如发送邮件或微博信息,还能够实现家庭电器的控制功能。通过移动互联网设备安装的应用程序,可随时随地查看传感器数据,并控制远程开关。如图2所示,可利用PC接入互联网访问Yeelink网站,查看Arduin UNO接收到的CPU温度数据。
图2 温度传感器得到的CPU温度变化
1.4 Android用户终端
Android是一种以Linux为基础的开放源码操作系统,主要应用于移动设备[6]。使用Android手机作为智能家居手持终端具有很多优点,如开发门槛及成本低、功能可扩展性强、软件可移植性好等。而随着智能家居的普及,手机这种使用率极高的通讯设备成为未来智能家居的手持终端的可能性非常高,因此,在Android手机上进行手持终端软件的开发研究有着十分重要的意义。
2 系统程序设计
2.1 Arduino UNO 主控板程序设计
Arduino程序设计语言类似C语言,由于Arduino开源平台预先在集成软件IDE开发环境中提供了常用的库文件,因此在使用其基本功能时只需在共享平台Github上下载所需要的库并调用即可[7]。这些基础函数包括I/O控制、时间函数、数学函数等。这种设计突出体现了其低门槛的特点,使电子爱好者们能够快速上手,不需考虑硬件底层函数,而把注意力集中在所要设计的程序本身。
为了实现无线数据的传输与控制,采用了WiFi Shield V3 WiFi扩展板[8],如图3所示。WiFi Shield V3是一款支持WiFi无线传输的网络接口芯片,内部集成串口WiFi控制器、PCB板载天线等,可以实现没有操作系统的无线Internet连接。无线模块提供TTL电平串口到IEEE802.11b/g/n无线通信的桥接,并且既可以通过串口的AT命令进行控制,也可以用模块自带的AP热点方式登录到路由器的WiFi网络,非常快捷方便。
图3 WIFI Shield V3 WIFI扩展板
如何向Yeelink云计算服务器发送数据是整个程序的关键,编写流程如图4所示。
图4 Arduino程序流程
首先定义在Yeelink上申请到的API KEY、DEVICEID(设备代号)和SENSORID(传感器代号),服务器指向"",并在setup函数中对传感器、串口等进行初始化。在loop循环函数中,编写一个发送数据的函数sendData,流程如图5所示。通过该函数可将Arduino传感器采集到的数据上传到Yeelink云服务器内。在函数中,变量thisData可存放获取到的传感器数据。
void sendData(int thisData, int sensor_id)
{
("POST /v1.0/device/");
(DEVICEID);
("/sensor/");
(sensor_id);
("/datapoints");
n(" HTTP/1.1");
n("Host: ");
("Accept: *");
("/");
n("*");
("U-ApiKey: ");
n(APIKEY);
("Content-Length: ");
int thisLength = 10 + getLength(thisData);
(thisLength);
n();
n("Content-Type: application/x-www-form-urlencoded");
n("Connection: close");
n();
("{\"value\":");
(thisData);
n("}");
lastConnectionTime = millis();
}
图5 数据上传函数流程
通过以上函数,可将Arduino获取到的传感器数据通过串口WIFI模块上传到Yeelink云计算服务器进行处理,接下来通过Android上的APP进行接受和图表化显示。
2.2 Android 数据接受与通信程序设计
Android系统架构为4层结构,分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层。
本设计选用HTC的t328w安卓智能手机,其具有Android4.0操作系统、Contex A9处理器与512MB内存,并支持无线网络连接,可以支持远程服务器的数据交换。
借助Android的开源环境与Yeelink的api,通过Google Development Kit即能很快搭建出所需的开发环境[9]。数据处理与远程通信模块的Android程序由UI层、Service层和持久层组成,在UI层进行用户交互与传感器数据显示设计,在Service层创建线程执行并进行Web数据的交互处理,在持久层通过SQLite小型数据库储存传感器相关数据与信息,并进行文件读写。
图6 Android客户端程序UI界面
图7 测得的家庭温度折线图
3 结语
本文采用开源Arduino平台、Android智能终端成功搭建出小型智能家居系统,在实际应用中获得了较为理想的效果,对电子爱好者搭建个性化平台可起到一定参考作用。由于采用开源环境,系统搭建过程简单快捷,稳定性及效果完全不亚于市场上的商用系统,而且在扩展性和个性化上还有更优秀的表现。此外,电子爱好者们还可以基于本系统设计出更高级的功能,如视频监控等。
参考文献:
\[1\] Arduino[EB/OL].http://wiki/Arduino.
[2] ArduinoADK[EB/OL].http://en/Main/ArduinoBoar dADK.
[3] DHT11[EB/OL].http://?id=109.
[4] 吴蒋,任崇勋.基于ZigBee技术的饮用水水源地水质远程监控系统[J].东北农业大学学报,2010(10): 120-123.
[5] Yeelink[EB/OL]. http://.
[6] Android—an open handset alliance project[EB/OL]. http://.
[7] 袁本华,董铮.基于Arduino控制板的温室大棚测温系统设计[J].安徽农业科学,2012(8):5049-5050.
[8] 周力,吴康雄.基于Internet和浏览器的远程监控系统[J].装备制造技术,2010(6):101-103.