您好, 访客   登录/注册

基于Android操作系统的智能家居系统设计

来源:用户上传      作者:

  摘 要:针对智能家居市场的消费者需求,设计了一款基于Android操作系统的智能家居系统。该系统以ARM处理器为控制核心,借助ZigBee搭建家庭局域网以实现家居产品之间的互联,通过GPRS技术实现微处理器与服务器的通信,基于Android操作系统设计用户应用实现用户对家居系统的远程监测和控制。经测试,系统运行稳定,数据通信状态良好,用户可实时监测家居环境参数和控制各类家电的工作状态。
  关键词:ARM;智能家居;ZigBee;GPRS;Android操作系统;STM32
  中图分类号:TP29 文献标识码:A 文章编号:2095-1302(2020)03-00-03
  0 引 言
  从最初提出的设备信息化,时至今日,在物联网技术日趋成熟的条件下,形形色色的智能家电产品不断在市场涌现。但现状是不同品牌产品之间相互独立,无法互联,因此,对于大多数中低收入人群而言,智能家居还仅仅是独立的智能家具。当下家电行业竞争激烈,商场中尚无普遍认可遵循的标准,基于此,团队使用ZigBee搭建家庭局域网来连接家居系统,使其成套化,解决不同产品之间的通信障碍问题。
  1 智能家居系统总体设计方案
  系统总体设计方案如图1所示。
  STM32通过网络模块接收来自服务器的指令,根据指令向ZigBee传感网络发送信号控制相应继电器通断[1],以此实现用户对家居系统的控制;同时,家居工作状态和室内烟雾浓度以及温湿度通过网络反馈至ARM芯片,经网络模块发送至服务器。服务器通过广域网接收和发送Android终端的数据,以实现用户对家居系统的远程监控。
  1.1 硬件设计
  ARM处理器选用型号为STM32F103ZET6的芯片,它是基于高性能ARM?CortexTM-M3的32位RISC内核处理器,芯片主频高达72 MHz,拥有I2C,SPI,PWM等总线接口,同时具有体积小、性能强、便携性好等优点,能够用于实现设备的控制。
  传感器用于获取家居环境参数,主要检测对象为烟雾浓度和温湿度。前者选用MQ-2模块,其输出电压信号类型为模拟量,与被检测烟雾浓度成正比[2]。其输出信号为电压模拟量,该引脚接ARM芯片的I/O口,处理器对模拟量进行A/D转换后输出数字量,即为检测到的烟雾浓度值。温湿度传感器选用DHT11模块,与MQ-2不同的是其输出信号为数字量,传输参数无需预处理。
  网络模块选用GPRS GA6模块,编程使用串口发送AT指令形式的字符串即可实现ARM处理器与服务器的连接。
  1.2 软件平台
  用户层基于Android操作系统开发,使用Java語言编写APP。Android操作系统是基于Linux平台开源的移动设备操作系统,该系统具有良好的可植入性、独立性以及开放
  性[3]。本设计基于软件的以上特性得以实现,个人设计的软件只需经过系统测试即可接入Android系统,供安卓手机用户使用。
  2 ZigBee家居局域网络的组建
  本系统使用ZigBee射频模块组建星形网络拓扑结构[4],由1个网络协调器节点和4个家居终端节点组成。协调器作为“网关”,负责组建家居局域网并与广域网进行连接。首先以能量扫描和主动扫描方式进行信道扫描,选择一个存在最少ZigBee网络的信道作为创建网络并选定网络标识符,等待终端节点加入网络。局域网组建设计流程如图2所示。
  当终端节点申请入网时,ZigBee协调器根据ARM命令审核申请,本系统的星形网络结构决定终端节点与协调器节点只能以点播方式通信。协调器接收主机命令数据或向主机发送家居监控数据。局域网通信设计流程如图3所示。
  终端节点包括烟雾浓度采集节点、温湿度采集节点以及各类电器控制节点。STM32接收到用户通过Android应用程序设置的命令数据,立即发送给协调器节点,后者以点播方式将控制信号发送给家居终端节点;家居终端节点以反向路径将环境数据显示至Android应用程序中,从而实现对家居的远程控制与环境数据的采集。
  3 套接字-客户/服务器通信模式的建立
  客户端和服务器端程序使用Java语言编写,分别在软件Android Studio和Eclipse上进行程序打包,两者的连接基于套接字Socket。套接字可以分成两个部分,即IP地址和端口号[5]。在TCP/IP协议的基础上实现两者通信的关键在于指定服务器IP地址和客户端连接端口Port。具体实现方法:服务器端创建一个服务器套接字ServerSocket和一个Socket,前者初始化为new ServerSocket(Port),后者初始化为ServerSocket.accept();对应地,客户端创建一个Socket,其输入参数有两个,分别为所连接服务器的IP地址和Port。双方的套接字创建成功后,服务器端将开启对Port的监听,即等待用户连接[6]。服务器端和客户端程序设计流程分别如图4和图5所示。
  Android程序成功连接服务器后,调用Socket的成员函数.getInputStream()和.getOutputStream()便可分别获取套接字的输入流和输出流,从而进行数据和指令的发送和获取。需要注意的是,Android程序中,不允许在主线程里连接服务器,否则会导致程序崩溃而闪退。因此,使用Java在客户端创建套接字时应把相关代码放入一个新的子线程中进行处理。
  4 GPRS技术-ARM和服务器的数据传输
  GPRS GA6使用串口发送字符串建立ARM处理器与服务器的信息传输通道。GPRS模块内部嵌有TCP/IP协议,STM32处理器通过串口与GPRS模块通信,以实现无线网络的连接[7]。GPRS的上网过程可以分为两个步骤,即附着和上下文激活。前者建立移动设备和GPRS网络之间的通信通道,后者连接移动设备和外部数据网。GPRS和服务器的连接同样基于TCP/IP协议,只需在发送的字符串中包含IP地址和端口号Port即可。   使用GPRS模块的移动设备可以通过串口发送AT指令形式的字符串实现设备的附着和激活以及连接服务器。AT指令的本质是字符串,其特点是以AT开头。上述过程中,附着请求通过“AT+CGATT=1”发送,上下文激活请求通过“AT+CGACT=1,1”发送,连接服务器请求通过“AT+CIPSTART=TCP,IP,PORT”发送,其中IP和PORT分别对应前述创建服务器套接字时的两个输入参数。
  5 系统检测与测试
  模拟系统分别处于安全范围和危险范围时进行测试,得到图6所示的测试结果。其中,图6(a)为正常情况下将吊灯亮度调至3档的测试结果,图6(b)为报警状态下将风扇挡位设置为2档的测试界面。
  系统硬件检查无误并正常连接移动网络后,使用安装终端APP且正常联网的安卓手机可在30 km外控制家居系统,对家居系统的控制情况以及各类传感器数据的采集情况并记录[8]。测试结果见表1所列。
  6 结 语
  论文基于TCP/IP协议、GPRS通信技术、ZigeBee组网技术以及各类传感器的使用实现了基于Android操作系统的智能家居系统设计。
  安卓系统发展至今,就国内情况而言,其用户群体庞大,市场前景可观。使用者通过安卓应用可对家居系统进行远程控制并对家居环境参数进行实时监测,操作快捷,交互方便,契合智能家居未来的发展方向。
  注:本文通讯作者为韩树人。
  参 考 文 献
  [1]刘太钢,刘响响,周克良,等.基于STM32智能家用车库控制系统设计[J].传感器与微系统,2016,35(8):98-100.
  [2]许伦辉,李鹏,周勇.基于ZigBee和GPRS的农业区域气象环境远程监测系统设计[J].江苏农业科学,2015,43(6):380-383.
  [3]张驰.Android操作系统移植及关键技术研究[J].物联网技术,2016,6(1):49-51.
  [4]李时辉.基于无线传感器网络的温室智能监测系统研究[J].江西理工大学学报,2013,34(1):70-73.
  [5]龙军.基于Java语言的流式套接字编程探析[J].电脑知识与技术(学术交流),2013(10):2339-2340.
  [6]吴凤祥,孙新胜,苑迎春.Java中基于TCP/IP的Socket编程[J].河北农业大学学报,2004(2):101-104.
  [7]鲍尚东,洪震.嵌入式GPRS数据采集模块设计[J].阴山学刊,2018,24(4):63-65.
  [8]刘晋,张帆,冯佳玉,等.基于云平台技术的智能家居系统设计
  [J].自动化仪表,2019,40(1):31-35.
  [9]陳东伟,吴延超,李伟杰,等.基于物联网的智能家居系统设计与实现[J].信息技术,2014(5):67-70.
  [10]臧大进,刘增良,高干,等.基于物联网的智能家居系统设计与实现[J].襄樊学院学报,2010(11):37-39.
转载注明来源:https://www.xzbu.com/8/view-15151402.htm