基于ZigBee和树莓派的个人气象系统设计与实现

2020-12-24 08:01杨宸彭洋刘延军
软件 2020年7期
关键词:树莓局域网网关

杨宸 彭洋 刘延军

摘  要: 本文基于ZigBee无线传感网,树莓派设计了一款个人气象系统。该系统选择温湿度,雨量,光照传感器对环境参数进行实时的采集与存储。系统利用CC2530射频芯片完成Zigbee协议功能,结合ESP8266作为网关将数据传给树莓派,树莓派作为服务器实现对相关数据的存储。用户通过访问树莓派即可实时掌握天气的变化情况。实验结果表明,该系统能实现一定的环境监测,可扩展的范围广。

关键词: ZigBee;ESP8266;树莓派;局域网;传感器

中图分类号: TP393    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.07.008

本文著录格式:杨宸,彭洋,刘延军. 基于ZigBee和树莓派的個人气象系统设计与实现[J]. 软件,2020,41(07):42-44+102

Design and Implementation of Personal WeatherSystem Based on ZigBee and Raspberry Pi

YANG Chen, PENG Yang, LIU Yan-jun

(School of Computer And Information Technology, Northeast Petroleum University, Daqing 163318, China)

【Abstract】: This article is based on ZigBee wireless sensor network, Raspberry Pi has designed a personal weather system. The system selects temperature and humidity, rainfall, and light sensors to collect and store environmental parameters in real time. The system uses the CC2530 radio frequency chip to complete the Zigbee protocol function, combines ESP8266 as a gateway to transmit data to the Raspberry Pi, and the Raspberry Pi acts as a server to store relevant data. By accessing the Raspberry Pi, users can grasp the changes of the weather in real time. The experimental results show that the system can achieve certain environmental monitoring and can be expanded in a wide range.

【Key words】: ZigBee; ESP8266; Raspberry Pi; LAN; Sensor

0  引言

随着我国生产力的不断进步,实现小范围地区环境参数的监测具有重要的战略应用价值。目前,我国的公共气象数据的来源都是基于地面上的气象观测基站,其分辨率较低,并且计算出的结果仅是该区域的平均值,无法提供较为准确的气象数据[1]

除此之外,气象站的服务对象是城市而不是单独的个人,气象站处理的信息量庞大,从监测到发布程序多,使得气象站的信息不能提供实时的环境数据,其数据价值也就大打折扣。

本文针对上述问题设计了一个基于ZigBee技术的个人气象系统。该系统在ZigBee无线传感网的

基础上开发,结合ZigBee低功耗,低成本,扩展性强的优势[2-4],使得该个人气象系统能够以较低的成本监测较大规模的气象环境。系统采用ZigBee技术与树莓派相结合的方式,能够存储实时的气象数据,为智能家居或其他开发提供气象方面的数据支持。

1  总体设计

该系统的结构大致分为两个部分,一部分是基于ZigBee协议的无线传感网,另一部分是以服务器为核心搭建的无线局域网。将ZigBee网络抽象为树形拓扑结构,局域网抽象成星形结构,系统整体结构图如图1所示。

ZigBee无线传感网方面,该网络利用CC2530作为ZigBee网络的终端节点和协调器。各个终端节点收到协调器发来的指令后便将传感器采集到的数据发送给协调器。协调器通过网关将数据上传给服务器。

无线局域网方面,树莓派服务器一方面存储WSN传来的数据,另一方面响应用户发来的请求,即用户可利用PC或手机获取实时的气象数据。

2  详细设计

2.1  ZigBee无线网络结构设计

本系统的ZigBee无线网络可以划分为四个部分,包括传感器模块、终端、协调器、路由器以及电源。本系统的ZigBee网络结构示意图如图2所示。

由于市面上的传感器种类繁多,在传感器选型时,综合考虑功耗、成本、外设接口、可靠性、抗干扰性、精度等多方面因素,本系统选择DHT22温湿度传感器,YL-83雨量传感器,BH1750FVI光照度传感器。

本系统使用德州仪器(TI)公司生产的CC2530芯片,该芯片基于IEEE802.15.4标准协议开发。软件方面,利用TI公司开发的半开源Z-Stack协议栈和IAR集成开发环境开发ZigBee无线传感网络。ZigBee网络的终端节点和协调器都由CC2530模块组成。

2.2  通讯协议设计

ZigBee网络部署好之后,当协调器向终端节点发送指令,终端将传感器采集到的数据上传到协调器。为了数据处理的方便,本系统在无线传感网与局域网之间的数据传递规定了简单的数据通讯协议,该协议结构如表1所示。终端将采集到的数据信息封装成该协议格式并上传至协调器。协调器将终端发来的数据报文发送至网关。

协议由5个部分组成。若程序检测到报文的开始单元则继续往下读取。地址单元表示该报文的来源,记录了ZigBee终端节点的地址,不同的节点地址用于记录编号。数据单元存储着传感器采集到的数据。校验位单元表示校验位,对之前的数据进行校验。结束单元表示该报文的结束。

2.3  网关设计

网关在本系统中是通信链路中不可或缺的一个部分,由于无线局域网采用的协议标准IEEE802.11与ZigBee协议标准IEEE802.15.4并不兼容,两者无法直接通信,因此在ZigBee网与WLAN之间需要构建一个连接两个网络的网关。

在网关硬件选择上,ESP8266WIFI模块价格低廉,性能稳定,能够支持标准的IEEE802.11b/g/n协议和完整的TCP/IP协议栈。ESP8266在STA通信模式下,获得路由器分配的本地IP地址,实现其与无线传感网的通信。在与ZigBee网络通信时,ESP8266WIFI模块处理协调器UART串口发来的数据,并将数据上传到局域网中。

2.4  服务器设计

考虑到系统长时间运作的需求,本系统采用树莓派作为个人服务器的硬件载体,并由无线局域网为其分配IP地址。

TCP/IP协议是网络中使用最基本的协议,包括了应用层、运输层、网络层、网络接口层四个层次,而Socket作为TCP/IP与服务器进程之间连接的接口,为服务器应用层与TCP运输层之间的通信建立起了桥梁,如图3所示。

本系统在Socket网络编程的程序中利用推迟调用线程时间的方法,使程序能够周期性的自动访问路由器分配给网关ESP8266的IP地址,向分配好的端口发送指令,ESP8266接收到指令后,接收ZigBee经由串口发送的信息,并经由局域网上传到个人服务器,个人服务器收到局域网传来的数据并存储到数据库。

Python内置的SQLite3数据库作为一款小体积的嵌入式开源数据库软件,其驱动内置在Python标准库中,本身没有独立的维护进程,所有的维护也都来自于程序本身,从而避免了复杂的数据库环境搭建工作,因此本系统选用Python内置的SQLite3作为存储气象数据信息的数据库。

Socket程序将获取到数据进行处理后存入数据库中。一方面,用户请求数据时,服务器返回给他最新的气象数据。另一方面,数据库存储了当地的气象数据,为大数据分析提供数据支持。

个人服务器在提供数据存储功能的同时,也要满足用户读取气象数据的需求。本系统在服务器的程序设计语言及应用选择方面,选用基于Python的Flask框架来开发响应局域网服务器的程序,服务器整体通信结构设计图如图4所示。

uWSGI作为Web服务器,担负着与Flask框架进行数据交换的任务,考虑到局域网安全防护能力较弱,uWSGI不足以应对局域网可能出现的安全问题以及个人服务器可能出现多个应用同时运行监听80端口的情况,本系统在用户与uWSGI服务器之间加入一层Nginx服务器。

3  系统测试

系统测试通过分析传感器采集到数据的流向,确认系统正确运行。从系统的数据库部分,用户访问部分出发,结合环境中的实际情况,分别对它们收集到的数据进行对比分析,以检查各部分数据发送和接收的可靠性。

3.1  数据库部分

系統采集到的样本数据结果如表2所示。

从数据库表中采集到的数据可以推断出传感器、ZigBee网及无线局域网之间的通信正常。

3.2  用户访问部分

用户在浏览器中输入正确的URL地址,获取到的数据结果显示如图5所示。

实时环境下采集到的样本数据温度为22℃,湿度为32%RH,光照为146lx,雨量为162(占比5%)。环境中采集到的数据与数据库存储及用户访问到的数据一致,用户访问部分运行良好。

4  结束语

个人气象节点作为一个能够采集局部气象数据的个人系统,采用ZigBee无线传感网技术收集并传递数据,其能量消耗低,续航时间长。利用树莓派作为服务器对数据进行存储,实现了对环境的实时监控,服务器存储的数据也可以为大数据分析提供数据支撑。另外,系统本身具有结构简单,成本低廉等优点,具有一定的市场应用前景,对智能家居的发展具有一定的积极意义。

参考文献

  1. 顾建兵, 姚淑萍. 地面气象观测工作在现代农业生产中的应用及对策[J]. 现代农业科技, 2018(12): 209+211.
  2. 李仁杰. 基于ZigBee与WiFi的温湿度监控系统的设计与实现[D]. 武汉邮电科学研究院, 2016.
  3. 管超, 邵小桃. 基于ZigBee 的振动报警系统的设计与实现[J]. 软件, 2015, 36(6): 146-151.
  1. 王凯巍, 孙康, 张子伊, 陈美娟, 朱晓荣. 基于ZigBee与树莓派的环境信息采集系统[J/OL]. 实验科学与技术: 1-6 [2019-11-07].
  2. 张涛, 刘朝华, 夏维曦. 基于物联网的家用智能药箱应用系统的设计[J]. 软件, 2016, 37(02): 39-41.
  3. 陈诠, 毕忠勤, 刘大明. 基于树莓派的物联网ZigBee网关的设计与实现[J]. 上海电力学院学报, 2016, 32(06): 599- 602.
  4. 张艺粟, 李鸿彬, 贾军营, 于波. 物联网ZigBee网关的设计与实现[J]. 计算机系统应用, 2013, 22(06): 34-38.
  5. 丁琳, 李蒙蒙. 基于 ZigBee 和 4G 技术的门窗智能控制系统的设计[J]. 软件, 2018, 39(11): 36-38.
  6. 沈翔. 基于硬件TCP/IP协议的物联网网关设计[J]. 物联网技术, 2019, 9(10): 35-37.
  7. 耿达. 基于物联网楼房照明系统设计和实现[J]. 软件, 2018, 39(12): 222-225.
  8. 牛作东, 李捍东. 基于Python与flask工具搭建可高效开发的实用型MVC框架[J]. 计算机应用与软件, 2019, 36(07): 21-25.
  9. 王浩. 基于Zigbee技术和ESP8266WIFI平台的移动端光照度采集控制程序设计[J]. 软件工程, 2019, 22(09): 28-30+56.
  10. 张艺. 基于WebSocket 的即时通信系统研究与实现[J]. 软件, 2015, 36(3): 89-94.
  11. 朱苗苗, 牛国锋, 程宏斌. 基于Z-Stack协议栈的无线温湿度采集系统[J]. 计算机系统应用, 2016, 25(10): 258-262.

猜你喜欢
树莓局域网网关
轨道交通车-地通信无线局域网技术应用
基于VPN的机房局域网远程控制系统
基于树莓派的骑行智能头盔设计
基于802.1Q协议的虚拟局域网技术研究与实现
基于树莓派的远程家居控制系统的设计
局域网性能的优化
响应面法优化红树莓酒发酵工艺
应对气候变化需要打通“网关”
一种实时高效的伺服控制网关设计
基于Zigbee与TCP的物联网网关设计