APP下载

基于Zigbee技术和ESP8266WIFI平台的移动端光照度采集控制程序设计

2019-10-08王浩

软件工程 2019年9期
关键词:无线传感网络

摘  要:随着Zigbee无线传感通信技术和WIFI通信技术的快速发展,为了实现安卓移动端无线采集光照度信息,以及控制步进电机设备功能,本文设计一种基于Android studio开发平台,采用JAVA语言编程实现光照度信息采集,以及步进电机控制操作。系统硬件由基于CC2530芯片和ESP8266芯片组成的智能网关模块、Zigbee终端通信模块、光敏传感器,以及步进电机设备组成。实验测试结果表明:该系统运行性能稳定,操作方便,具有一定的应用前景。

关键词:无线传感网络;Zigbee;ESP8266;Android studio;光敏传感器

中图分类号:TP273     文献标识码:A

Abstract:With the rapid development of Zigbee wireless sensor communication technology and WIFI communication technology,in order to realize android mobile terminal wireless collection of illumination information and control stepper motor devices functions,a system is designed based on Android Studio development platform to realize the acquisition of illumination information and stepper motor control operation using JAVA programming.The system hardware is composed of intelligent gateway modules based on CC2530 chip and ESP8266 chip,Zigbee terminal communication module,photosensitive sensor and stepper motor equipment.The experimental results demonstrate that the system performance is stable and the operation is convenient with certain application prospects.

Keywords:wireless sensor network;ESP8266;Zigbee;Android Studio;photosensitive sensor

1   引言(Introduction)

随着Zigbee无线传感网络技术和WIFI无线通信技术在各行各业中的应用不断扩大,人们对智能设备现场中传感器数据采集和控制提出了更高的要求,通过常规有线通信方式实现对现场传感器数据采集和执行机构控制,就会产生一定的弊端,同时维护成本也较高,而智能设备采用WIFI无线通信方式与移动终端进行交互,可以方便快捷地实现对现场设备的无线局域网采集控制[1]。因此,本文提出一种基于ZigBee无线传感模块和ESP8266WiFI通信模块,利用JAVA语言在Android studio开发平台上编程,实现无线局域网光照度信息采集和步进电机控制设计方案。首先构建一个ZigBee无线传感网络,然后可以将采集的数据通过智能网关中ESP8266的WIFI模块传输至移动端App中实时显示,另一方面可以通过移动端发送控制命令至智能网关,并最终到达ZigBee终端模块,以完成无线控制功能。

2   总体设计(The overall design)

为了提高移动终端通过WIFI通信方式对现场设备采集和控制的灵活性和可扩展性,使采集控制设备更加智能化[2],首先将带有传感器和执行机构的Zigbee终端模块与智能网关中ZigBee协调器模块组成无线传感网络,当Zigbee终端模块将数据采集到之后,通过无线传感网络传输至智能网关中的ZigBee协调器模块,然后通过ESP8266串口转WIFI模块可以将采集到信息通过WIFI方式无线传输至移动端设备上,反之,通过移动端设备APP界面发送控制指令至智能网关WIFI模块,继而再通过ZigBee协调器模块,最后通过无线传感网络到达Zigbee终端模块控制步进电机设备,本系统的整体架构如图1所示。

3  系统的硬件设计(The hardware design of the system)

3.1   智能网关硬件设计

智能网关模块主要包括Zigbee协调器模块和ESP8266WIFI无线通信模块组成,其中Zigbee协调器模块采用德州仪器公司的CC2530芯片,芯片内部已固化了ZigBee协议栈的物理层和MAC层[3],这样CC2530芯片通过运行Zigbee协议栈建立无线传感网络之后,能够构建适应超低功耗要求的系统。另外ESP8266WIFI无线通信模块是一款超低功耗的UART转WIFI的无线通信模块,其硬件接口丰富,可支持STA/AP/STA+AP三种通信模式[4],本文主要使用UART转WIFI的RX和TX引脚接入CC2530芯片的P0.3和P0.2引脚,这样就使得Zigbee協调器和ESP8266模块进行双向数据传输通信,另外WIFI无线通信方式采用AP热点模式,即智能网关作为WIFI服务器,移动端作为客户端连接通过ESP8266模块,这样就可以实现局域网无线采集和控制现场设备,如图2所示智能网关模块硬件结构。

3.2   Zigbee终端采集控制模块硬件设计

Zigbee终端采集控制模块有Zigbee模块、光敏电阻传感模块以及步进电机控制模块组成。光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器,其工作原理是基于内光电效应。光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低[5],这里光敏电阻传感模块接入Zigbee模块的P1_2引脚,通过检测P1_2引脚的高低电平,可以判断当前环境是有无光照信息。

步进电机控制模块采用24BYJ48五线四相减速步进电机+

ULN2003驱动芯片,这里以ULN2003为例用来驱动步进电机,只需要选择Zigbee模块的四个GPIO引脚P0.0、P0.1、P0.2和P0.3分别连接驱动板的IN1、IN2、IN3、IN4,再用外置电源连接驱动板的5V接口,并把电源和Zigbee模块的地(GND)与驱动板的(-)共线即可[6],上述线路连接完成之后,就完成了整个步进电机的硬件电路搭建。Zigbee终端采集控制模块硬件结构如图3所示。

4   系统的软件设计(System software design)

4.1   Zigbee无线传感层设计

无线传感网络系统的核心为Zigbee协调器,其上电启动之后负责建立网络,当Zigbee终端采集控制模块上电启动之后加入Zigbee协调器网络,一旦组网成功之后,一方面可以将采集到光照度信息通过无线传感网络发送至智能网关中的Zigbee协调器模块,另一方面可以通过Zigbee協调器模块发送控制步进电机命令给Zigbee终端采集控制模块,从而可以控制步进电机正转或者反转。Zigbee通信节点程序流程如图4所示。

4.2   Android移动端程序设计

移动端通过Android studio开发平台,利用JAVA语言编程实现光照度信息采集,以及步进电机控制[7]。一方面Zigbee采集终端控制模块周期性的采集光照度信息,通过Zigbee无线传感网络发送至智能网关中Zigbee协调器,然后经过ESP8266WIFI模块以WIFI方式至移动端,另一方面移动端发送控制命令给智能网关,在经过Zigbee网络到达Zigbee采集终端控制模块,这里可以选择手动方式和联动方式进行控制步进电机正转或者反转,如图5所示Android移动端程序设计流程。

移动端App客户端程序通过编程实现Socket套接字对象连接服务器端智能网关ESP8266WIFI模块Socket套接字对象,一旦连接成功之后,开启接收线程,实现光照度信息数据在receiveThread线程中实时接收,主要实现代码如下:

Runnable  Connectthread=new Runnable(){

@Override

public void run(){

NetIp=EtIp.getText().toString();

NetPort=Integer.valueOf(EtPort.getText().toString());

try {

socket=new Socket(NetIp,NetPort);//创建客户端Socket套接字对象

isConnect=true;

receiveThread=new ReceiveThread(socket);//创建光照度接收线程

receiveThread.start();//开启接收线程

} catch (IOException e){

e.printStackTrace();

}

}

};

这里通过自定义AutoControl函数实现联动控制,如果检测到当前环境有光照,ESP8266WIFI模块向Zigbee协调器模块自动发送“297”字符串命令,并通过Zigbee无线传感网络到达Zigbee终端模块控制步进电机反转,反之发送“2A7”字符串命令控制步进电机正转,主要实现代码如下:

void AutoControl(){

if (isAuto){

if (lightvalue=="有光照"){

if (!flagstep){

flagstep=true;

btnStep.setText("步进电机反转");

printWriter.println("297");

printWriter.flush();

}

} else {

if (lightvalue=="无光照"){

if (flagstep){

btnStep.setText("步进电机正转");

flagstep=false;

printWriter.println("2A7");

printWriter.flush();

}

}

} } }

5   系统测试(System testing)

为了验证Android移动端运行界面能够正常采集光照度信息和控制步进电机设备,首先将带有光敏电阻传感器和步进电机控制设备的Zigbee终端节点与智能网关中Zigbee协调器组成一个星型无线传感网络[8],然后将移动端WIFI网络连接到智能网关ESP8266WIFI模块的AP热点中,最后运行光照度采集控制程序,如图6所示,在界面上通过WIFI网络无线通信实现现场设备的光照度信息采集和无线控制步进电机设备[9]。通过验证和测试,性能稳定,功能符合要求。

6   結论(Conclusion)

文中基于Zigbee无线传感网络技术和ESP8266WIFI平台,提出了一种光照度采集控制系统解决方案,设计了Zigbee协调器模块和ESP8266WIFI无线通信模块组成智能网关模块,结合Zigbee节点之间通信,实现Android智能终端进行无线光照度采集控制功能。运行试验表明:基于Zigbee无线传感技术和ESP8266WIFI平台的移动端光照度采集控制系统具有通信可靠、抗干扰性好等优点。

参考文献(References)

[1] Xu Wang,Song-Ling Zhang,Guo-Xiang Song.Remote measurement of low-energy radiation based on ARM board and ZigBee wireless communication[J].Nuclear Science and Techniques,       2018,1:31-36.

[2] Ying Qiu,Shining Li,Zhigang Li,et al.Multi-Gradient Routing Protocol for Wireless Sensor Networks[J].China Communications,2017,3:118-129.

[3]  Xia Li,Dongxue Zhao.Capacity Research in Cluster-Based Underwater Wireless Sensor Networks Based on Stochastic Geometry[J].China Communications,2017,6:80-87.

[4] 王浩,王伟旗.物联网信息技术应用[M].北京:中国水利水电     出版社,2018:110-115.

[5] 何福贵.Android物联网开发[M].北京:电子工业出版社2017:137-140.

[6] 陈志德.安卓编程指南及物联网开发实践[M].北京:电子工业出版社,2016:121-130.

[7] 范兴隆.ESP8266在智能家居监控系统中的应用[J].单片机与嵌入式系统应用,2016,16(9):47-50.

[8] 唐远鸿,李岩.基于WiFi环境下LED照明智能化控制系统的设计与实现[J].单片机与嵌入式系统应用,2016,16(8):20-24.

[9] 林若玺.基于ESP8266平台的汽车蓄电池电量远程监控系统设计[J].电脑编程技巧与维护,2016,16(24):36-39.

作者简介:

王  浩(1971-),男,硕士,副教授.研究领域:物联网工程应用研究.

猜你喜欢

无线传感网络
基于物联网ZigBee技术的智能家居监控系统 
甲醛监测仪设计及其低功耗研究
试论无线传感网络动态休眠通信协议
基于CC2530的智能照明控制系统设计