极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14264|回复: 2

基于无线传感器网络的水质监测系统+乐联数据上传

[复制链接]
发表于 2016-7-8 11:31:39 | 显示全部楼层 |阅读模式
本帖最后由 孙坚 于 2016-7-8 11:37 编辑

本系统基于当前热门的物联网技术,应用于水质监测。作为对水质环境监测系统,本系统可以实时准确地监测水环境的各种参数,本设计的系统主要包括水环境监测网络和实时监测平台两部分。
3.1水质量监测网络
    水环境监测网络主要由两种节点构成:传感节点和网关节点。
3.1.1传感节点
传感节点由三个模块构成:传感器模块、控制器模块、无线通信模块。
传感器模块主要由各种传感器构成,由于在各水域监测的水环境质量参数不同,所以每个节点的传感器模块搭载的传感器也会有所不同。
   (1)温度、压强传感器我们选用的是MS5541,MS5541C是一款综合了温度和压力测量的微型数字型传感器,我们可以根据:
                       P = P0 + ρgh                                      
   计算水深。其中P是水下压强,P0 是大气压强(约为1帕),ρ,g,h分别是水的密度、重力加速度和水的深度。这样我们就可以结合簇头节点上GPS模块实现水域的三维监测。由于压强传感器的输出电压受温度等因素的影响较大,需要通过外围处理器进行补偿。
(2)本系统测量pH值采用的雷磁公司的E-201-C传感器,输出信号为微弱的直流信号,大小与pH值存在线性关系,但范围在-450~450 mV之间,不便于采集,于是通过调理模块对该信号进行线性处理,最终得到便于采集的0-3V范围的电压信号。
图1展示的便是调理电路,由跟随、线性放大和反向放大三部分组成。VOUT :调理电路的输出;VIN :pH传感器信号。最终两者间服从关系如下:

  这里我们取R2、R3、R4、R7皆为1K,则上式为:


   得到的输出可直接送至处理器读取进行A/D转换。由于实际情况多变,调理电路的放大倍数和电平抬升量均是可调节的,可以减小误差,更好的适应多样化的环境。

图1 调理电路原理图
(3)电导电极我们选用的是DJS-10E传感器,该传感器价格低廉,加入BNC接口可直接读取相应的模拟电压。
    浊度传感器选用 TS 浊度传感器,本模块利用光学二极管和晶体管对特写波长的折射作用,来测量脏水的不透光度或者其它物质的浓度。
    这些传感器采集到数据后输出电压,通过接口电路进行放大和 A/D 变换后传递给控制器模块。
控制器模块和无线通信模块选用的是OCROBOT HoneyBee;首先介绍一下源自意大利的Arduino家族的ATmega328处理器模块。它是一个源代码开放的硬件项目平台,十分适用于开发交互性产品。它的资源丰富,包括14个数字I/O口、6个模拟I/O口,支持PWM输出、串行通信、SPI通信和TWI通信。由于I/O口丰富,可以支持更多种类和更大数量的传感器,实现更多水质参数的监测;OCROBOT HoneyBee是一款兼容Arduino的开发板,板内集成802.15.4协议无线模块,支持任何基于802.15.4协议的无线模块,包括ZigBee,MAC/6LoWPAN和 RF4CE。支持几乎所有的开源无线传感器网络操作系统,如Contiki、TinyOS、Nank-RK等,也支持Atmel 的BitCloud ZigBee协议栈。OCROBOT HoneyBee将控制器模块和无线通信模块集成在一块板子上,降低了模块之间通信的复杂度,极大简化了无线通信的方式,我们不需要经过复杂的ZigBee协议栈开发调试,就可以实现传感节点与网关节点的组网通信。
通过“#include<Zigbee.h>”调用库文件,在库文件里我们定义好了无线通信的协议,在编程实现时只需要调用相关的函数就可以实现无线通信。HoneyBee发送数据的核心代码如下:
    Zigbee.begin(11);  // 初始化Zigbee,定义信道
    Zigbee.beginTransmission(); // 启动传输
    Zigbee.write(Data); // 传输数据
    Zigbee.endTransmission(); // 结束传输
我们要启动Zigbee首先要通过Zigbee.begin()函数初始化及信道,Zigbee在2.4G频段下的信道是11-26。如果要发送数据我们首先需要通过Zigbee.beginTransmission()函数启动传输过程,然后通过Zigbee.write()发送数据,发送数据完毕后通过Zigbee. endTransmission()来结束传输。
HoneyBee的接收数据的核心代码如下:
    Zigbee.begin(11);  // 初始化Zigbee,定义信道  
    if (Zigbee.available()>0) // 判断Zigbee数据接收缓冲区是否有数据
   {
     while(Zigbee.available())
     Serial.write(Zigbee.read());// 读取缓冲区数据,通过串口输出。
    }
对于接收端,我们同样需要使用Zigbee.begin()初始化及定义信道,HoneyBee数据的无线传输是基于相同信道实现的,所以发送方和接收方必须在初始化时定义同一个信道;可以直接使用Zigbee.read()读取缓冲区数据,不过最好是通过Zigbee.available()判断缓冲区是否有数据后再获取。


2网关节点
    网关节点由三个模块构成:无线通信模块、控制器模块、网络通信模块。
无线通信模块和控制器模块依然选用 HoneyBee,其搭载的无线接收模块接收到数据之
后传送处理器处理并显示。
    控制器模块后期选用使用 ARM10 作为处理器的树莓派(RaspberryPi)开发平台。控制
器模块通过串口接收无线通信模块传来的数据,之后经过处理器的处理,将数据转发给与
之相连的网络通信模块。此外,控制器模块还可通过板载的 HDMI 接口连接电视机显示信
息。
   网络通信模块前期通过串口通信;该模块负责完成网络层的功能,将从控制器模块收到
的数据上传至互联网,最后放送至实时监控平台;搭载 GSM 和 GPRS 模块,进一步解决了有线电缆的限制。
   为了解决户外长期监测的功能问题,我们在网关节点加入太阳能功能模块,在网关节点
休眠期间利用太能充电板给锂电池充电,实现夜间和长期监测的供能。
3.2实时监控平台
实时监控系统对水质环境监测网络采集并传输来的数据进行实时更新和显示,并支持用户的自定义设置。具体包括 PC 端监控系统和移动终端监控系统。
   PC 端监控系统是通过乐联物联网平台接入云端网络实现数据显示。用户可以通过 PC 端监控界面详细查询水环境的各种详细参数信息,并且支持用户设置报警阈值、下载数据等功能;同时可根据监测数据和实时地理位置信息构造水域水质三维模拟图像。
移动终端监控系统是基于乐联物联网平台,利用 JAVA 语言编写的软件。同时乐联物联网平台有专属的手机微信公众账号,只要关注该公众账号,用户可以利用手机或者平板电脑方便及时地查看相关的监测信息。



系统硬件






PC端显示
我们将数据接入乐联物联网平台,可以实现数据云端显示,可在PC端和手机微信乐联公众账号里进行实时监控。



乐联真的很好用,我觉得比什么yeelink等一些免费的物联网平台好用多了,就是设备的接入量有限制,我这个只是一个簇内的节点,整个项目是要拿到太湖去做实验,一共分了四个簇,一个簇就要五个节点,所以希望乐联恩那个多开放一些设备接入。我的需求:需要接入四个设备,每个设备里有5个传感器。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-7-8 12:16:21 | 显示全部楼层
好文!

发邮件给他们客服申请,附上你的这个文章链接,一定可以增加的。
回复 支持 反对

使用道具 举报

发表于 2016-7-8 22:30:34 | 显示全部楼层
本帖最后由 迷你强 于 2016-7-8 22:31 编辑

可以考虑采用MQTT方案来做,话说你的EC用的是直流还是交流?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 18:45 , Processed in 0.053082 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表