1、基于GPRS技术化工企业排放废水质量在线监测系统硬件设计中文摘要本文主要介绍了无线传感器节点和GPRS无线传输数据的实现,基于虚拟仪器技术化工企业废水质量的检测,传感器节点采用温度传感器、PH传感器、溶解氧传感器和浊度传感器,通过GPRS模块向云端发送测量到的废水中的温度、PH、溶解氧、浊度等参数,上位机LabVIEW则调取云端数据进行处理并采取相应的控制,从而达到远程实时监测和控制的功能。本设计主要应用于企业废水质量参数监测,对监测的数据进行相应处理并建立温度、浊度、溶解氧、PH的数据库信息。同时设定温度、浊度、溶解氧、PH的参数阈值,当采集到的参数超过所设定的阈值范围时,上位机监测界面就会
2、及时报警提醒相关工作人员。该系统传感器节点可以进行拓展,上位机用户可以随时对系统软件进行修改以满足新的需求,更新速度快、开发和维护费用低,具备极高的社会效益和经济效益,有非常高的推广实用价值。关键词:实时监测,传感器节点,GPRS, LabVIEW, 上位机外文摘要Title The Software Design of Chemical Enterprises Discharge Waste Water Quality Monitoring System Based on Virtual Instrument TechnologyAbstractThis paper describes th
3、e wireless sensor nodes and GPRS wireless data transmission, the use of a temperature sensor, PH sensors, dissolved oxygen sensors and turbidity sensors are based on waste water quality of virtual instrument technology to detect chemical companies, the sensor node sends a measurement to the cloud th
4、rough GPRS module to the waste water temperature, PH, dissolved oxygen, turbidity and other parameters, the PC LabVIEW is retrieved cloud data processing and take appropriate control, so as to achieve real-time monitoring and remote control functions. This design is mainly used in the monitoring of
5、waste water quality parameters, the monitoring data to establish a database of information and corresponding processing temperature, turbidity, dissolved oxygen, PH. At the same time the set temperature, turbidity, dissolved oxygen, PH parameter threshold, when the collected parameter exceeds the se
6、t range, the PC interface will monitor the timely warning to remind the relevant staff. The system sensor nodes can be expanded, the PC user can at any time modify the software system to meet new needs. With update speed, low development and maintenance costs, the system has high social and economic
7、 benefits, very high practical promotion value.Keywords:Real-time Monitoring, Sensor Nodes, GPRS,LabVIEW,Position Machine1、绪论目前,环境问题是影响世界各国可持续发展的一个重要因素,水环境的污染日益严重,不仅严重影响人们的健康,还加速了水资源的短缺。众所周知,中国的水资源非常的缺乏,是世界13个缺水国家之一。生命最初诞生于水中。水是生命的物质基础。水不仅是维持生命所不可缺少的,也是我们在生活中所不可或缺的物质。但是,随着人类经济活动加剧,工业生产,化工企业的发展,社会经济的
8、繁荣,在消耗了大量能源的同时,将大量的工业废水和城市生活污水不经处理排入水中,水污染日益严重。水污染对水体周围的环境和各种微生物等都存在非常大的危害。久而久之,也会威胁到人类的安全与健康。所以,我们必须要重视水环境污染。1.1课题研究的背景及意义传统的环境水质监测工作主要都是以人工现场采样、实验室仪器分析为主。虽然在实验室中分析手段完备,但实验室监测存在不能及时反映污染变化状况、采样误差大、监测频次低、监测数据分散等缺陷,难以满足人们有效的进行水环境管理的需求。而实现了废水质量的在线监测,只需经过几分钟的数据采集,水源地的水质信息就可发送到环境分析中心的服务器中。只要观察到有某种污染物的浓度发
9、生了异常的变化,环境监管部门就可以立刻采取相应的措施,取样具体分析,可快速而准确地获得水质监测数据1.2本课题的主要工作及要求本课题是以云服务为平台,利用GPRS技术、虚拟机技术,设计一种集监测、显示与报警为一体的远程实时监测系统。其主要内容有以下几个方面。(1)深入化工企业对工业废水进行研究,了解工业废水主要的污染成分,选择各类合适传感器类型;(2)构建无线传感器网络。在化工企业废水排放口以及相关区域布置无线传感器节点,节点监测数据通过设置在监测区域内的GPRS模块,将监测数据定时传至云服务平台,最后在上位机中实时显示与监测,并将数据存入到数据库;(3)如果监测节点上传的数据超过规定的标准值
10、时,上位机会发出报警并显示废水具体的排放情况。云服务器也会触发报警机制,进行简单的报警,提醒管理人员及时查找和分析原因,从而采取相应控制措施。2 总体方案设计21 检测原理本课题采用了单片机技术、无线网络传输技术、传感器技术和集成技术,对水环境进行实时监测温度、氧含量和PH值参数变化等信息,通过传感器感测信号,通过数据打包发送到上位机,并在上位机监测界面上显示实时数据。22 系统网络结构图本系统主要由无线传感器网络节点(负责采集节点周围水域温度、溶解氧浓度、PH、浊度等数据)、网络云平台和上位机监测中心(对上传的数据进行数据融合并直观显示数据)等几部分组成。无线传感器节点安装在企业废水排放池,
11、对池中的废水实现PH、温度、浊度、溶解氧进行检测,将得到的参数经无线传感网络传输到网络云平台,然后上位机调用网路云平台数据,对数据进行分析、处理、超限报警和控制,因此系统的设计较为简单明了,化工企业废水质量远程监测网络结构如图1所示。GPRSGPRS云服务平台 图1 化工企业废水质量远程监测网络结构2.3 无线传感器网络节点无线传感器网络节点需要完成信息采集和数据传递的功能,节点在结构上可分为五个模块:电源模块、控制报警模块、数据采集模块(传感器数据采集)、数据处理模块(单片机处理系统)和无线传输模块(SIM808无线传输系统)。本设计采用AVR单片机Atmega328p的Arduino开发板
12、作为微处理器,传感器分别采用DS18B20温度传感器、浊度传感器、PH传感器、溶解氧传感器检测温度、浊度PH和溶解氧,无线传输模块采用SIM808开发板作为与云平台实现数据传输。无线传感器节点如图2所示。图2 无线传感器节点24 采集模块2.4.1 温度传感器DS18B20是最常用的一种温度传感器,它具有抗干扰能力强、体积小、硬件开销低、精度高、数字信号输出等特点。DS18B20采用的是一线通信接口,通信时只要接一条口线就可以通信多个点的能力,不同于之前的分布式传感器需要多点接口,应用时不需要接外部的元件,可以直接用数据总线供电,电压的范围为3.0 V到5.5 V,测量的温度最低为-55 最高
13、为+125 。用DS18B20进行温度测量之前,必须要先完成ROM的设定,否则记忆功能和控制功能就没法使用。首先提供以下功能命令:读ROM、ROM匹配、搜索ROM、跳过ROM、报警检查。如果在之前已经使DS18B20成功的完成了温度的测量,测量到的数据存储在DS18B20内部的存储器中。存储器能完整的确定一线端口的通讯,数据开始用写寄存器的命令写进寄存器,接着也可以用读寄存器的命令来获取这些数字。当确认以后就可以用复制寄存器的命令来将这些数字转移到可电擦除RAM中。当修改过寄存器中的数时,这个过程能确保数据的完整性。高速寄存器RAM是由8个字节的存储器组成。用读寄存器的命令能读出第九个字节,这
14、个字节可以对前面的八个字节进行校验。DS18B20外形结构图如图3所示。图3 DS18B20外形结构图2.4.2浊度传感器检测溶液浑浊度的传感器如图4所示。图4 GE_TS型浊度传感器该浊度传感器输出为模拟电压输出0到5V,工作电压为5V,工作电流为50mA,工作时响应时间小于500ms。该传感器输出的是模拟信号,所以输出端连接在Arduino的PC1口进行数据采集。2.4.3 PH传感器检测溶液PH值的传感器,如图5所示。图5 E-201-C型PH传感器该传感器输出方式为模拟电压信号输出1695mV到3832mV,工作电流为5mA到10mA,检测浓度范围为PH0到PH14,响应时间小于5s,
15、稳定时间小于60s。该传感器输出的是模拟信号,所以输出端连接在Arduino的PC3口进行数据采集。2.4.4溶解氧传感器检测溶液溶解氧含量的传感器,如图6所示图6 罗素501ORP溶解氧传感器该传感器输出的是模拟电压信号,电极的电位为245mV到270mV,电极的参比电极内阻小于10 k,电极的稳定性为8mV/24h。该传感器输出的是模拟信号,所以输出端连接在Arduino的PC2口进行数据采集。2.5 Arduino开发板Arduino是一款方便上手、便捷灵活的开源电子原型平台,具有以下特点:1、含有开放的源代码,程序开发可免费下载也可以根据紫的要求自己编写或修改。2、内部含有低价格的AV
16、R系列的微处理器。3、烧录方式支持ISP在线烧录,可以把新的 Bootloader 固件烧入到AVR芯片。有了Bootloader之后,可以通过串口或者串口转RS232线更新固件。5、支持多种互动程序。Arduino开发板的处理器核心为AVR系列的Atmega328p单片机,Atmega328p内部含有 32KB的闪存容量1KB的 EEPROM存储器容量,20MHz的时钟频率,I2C, SPI, USART的接口类型,最小1.8V 电源电压最大5.5V电源电压,32个IO口,2KB RAM存储器, 23个输入/输出线数,8个模数转换器输入数,20MHz速度,32KB程序存储器容量内部含有振荡器
17、。Arduino界面如图7所示。 图7 Arduino界面Arduino编程采用Arduino语言1、声明变量及接口名称(例如:int ledPin=13;)。2、Setup():函数在程序开始时使用,可以初始化变量、接口模式、启用库等(例如:pinMode(ledPin,OUTUPT);)。3、loop():在setup()函数之后,一个循环函数。Arduino基本函数1、PinMode:定义接口为输入或输出型接口,在setup()函数里使用。2、DigitalWrite:置位,把数字端口的值置高或者置低。3、DigitalRead:读出数字接口的值。4、AnalogWrite:给一个接口写
18、入模拟值(PWM波)。对于 ATmega168芯片的Arduino(包括Mini或BT),该函数可以工作于3,5,6,9,10和11号接口。老的ATmega8芯片的USB和Serial Arduino仅仅支持9,10和11号接口。5、AnalogRead:读取ADC端口转的值,把一个模拟值转换为数字值6、delay():延时函数,delay(1000)为一秒。7、Serial.begin(波特率)-设置串行每秒传输数据的速率(波特率)。在同计算机通讯时,要是用相同的波特率才能通讯,在Setup()函数里使用8、Serial.read():读取持续输入的数据。9、Serial.print:串行口
19、的数据输出。Serial.print(数据)默认为十进制等于Serial.print(数据,DEC)。10、Serial.println:串行口的数据输出,在输出最后跟随一个回车和一个换行符。这个函数所取得的值与 Serial.print()一样。2.6无线传输模块YIXIN_SIM808_A模块是一款高性能工业级的GSM/GPRS/GPS三合一模块(开发板)。YIXIN_SIM808_A模块采用SIMCOM公司的工业级四频(全球通用)GSM/GPRS/GPS模块:SIM808,GSM/GPRS的工作频段四频为:GSM850、EGSM900、DCS1800、PCS1900MHz,适用于全球各地
20、区,可以低功耗实现语音、短信、彩信、数据和传真信息的传输。同时SIM808还具有全球卫星定位GPS功能,适用于各类GPS定位导航应用。其性能稳定,外观精巧,性价比高。SIM808采用工业标准接口,内嵌TCP/IP协议,可以低功耗实现语音、短信(SMS)、数据和传真信息的传输。同时SIM808还具有全球卫星定位GPS功能,适用于各类GPS定位导航应用。SIM808如图8所示SIM808 GPRS通信需要用到的指令 :(1)AT+CGCLASS:用于设置移动台类别。(2)AT+CGDCONT:用于设置PDP上下文。 (3)AT+CGATT,用于设置附着和分离GPRS业务。 (4)AT+CIPCSG
21、P:用于设置CSD或GPRS链接模式。(5)AT+CLPORT,用于设置本地端口号。(6)AT+CIPSTART:用于建立TCP连接或注册UDP端口号。 (7)AT+CIPSEND:用于发送数据。(8)AT+CIPSTATUS:用于查询当前连接状态。 (10)AT+CIPSHUT:用于关闭移动场景。 图8 SIM808开发板3.系统的软件设计3.1总体流程图图9 系统总体流程图系统总体流程图如图9所示,本设计上位机采用LabVIEW,节点不断地对检测区的废水参数进行采集,数据经过Arduino处理,从SIM808向云端发送,上位机设定检测周期,等待到检测时间就向云端获取数据,判断数据是否超过报
22、警界面,如果超过界限,上位机就会返回报警和控制信号,并且上位机报警灯也会亮,节点接收到了控制信号就会立即采取控制措施,打开阀门等一系列动作。3.2节点软件设计3.2.1总体设计流程Arduino初始化后处于等待数据采集阶段,将采集到的数据按照特定格式发送给无线传输模块,SIM808处于接收状态,等到Arduino数据传到SIM808,则向无线云平台传输数据。Arduino流程图如图10所示。图10 Arduino软件流程图首先对Arduino初始化,Arduino采用的是上电复位,给Arduino上电即完成初始化,初始化完成后,Arduino向温度传感器发送接收数据请求,然后处于等待传感器数据
23、传输的状态,直到所有传感器检测完成向控制板发来数据后,Arduino对收到的数据进行处理标定,然后向SIM808发送无线传输指令,同时不断地对SIM808进行获取信号请求,如果检测到有控制信号,就执行控制和报警操作(电磁阀控制和报警灯点亮)。3.2.2数字信号软件设计温度传感器输出为数字信号,信号输出连接在Arduino的PB2引脚,DS18B20软件设计如下:初始化:(1) 把数据线拉高置1;(2) 延时几个s;(3) 数据线拉到低电平0;(4) 延时750s(延时范围为480s至960s);(5) 数据线拉高置1;(6) 延时,等待(如果初始化已经成功,会在15到60s内产生一个由DS18
24、B20返回的低电平。根据这个状态可以来确定是否初始化成功,但是不能无限的等待,否则程序会进入死循环,应该要进行超时控制)。(7) 若CPU接收到了数据线上返回的低电平,再做个延时,延时的时间从第五步发出的高电平算起至少应该要480s。(8) 最后再次将数据线拉高1后结束。DS18B20的初始化函数Void DS18B20_Init(void)Uchar x=0;DQ=1;Delay10us(9); /约90sDQ=0;Delay10us(80); /约800sDQ=1;Delay10us(37); /约370s读操作:(1)将数据线拉高1;(2)延时2s;(3)将数据线拉低0;(4)延时3s;
25、(5)将数据线拉高1;(6)延时5s;(7)读取数据线上的状态,得到1个状态位,然后进行数据处理;(8)延时60s。 DS18B20读1个字节函数 uchar DS18B20 _ Rbyte(void) uchar i=0; uchar dat =0; for(i=8;i0;i-) DQ = 0; dat = 1; DQ = 1; If(DQ) dat | = 0x80; Delay10us(5); /约54s return(dat);写操作:(1) 先将数据线置低电平0;(2) 延时时间为15s;(3) 按从低到高的顺序依次发送字节(每次只发送一个字节);(4) 延时时间为45s;(5) 将
26、数据线拉到高电平1;(6) 重复以上操作一直到所有的字节全部发送完为止;(7) 最后将数据线拉高。DS18B20写一个字节函数Void DS18B20 _ Wbyte(uchar dat) uchar i = 0; for(i=8;i0,i-) DQ=0; DQ=dat&0x01; Delay10us(5); /约54s DQ=1; dat=1;3.2.3模拟信号软件设计浊度传感器、PH传感器、溶解氧传感器输出信号都为模拟信号,Atmega328p单片机内部含有8个模数转换的I/O口,采集数据时只需要把三种传感器的数据端接到Arduino板子的PC1、PC2、PC3接口,软件设计时直接读取PC
27、1、PC2、PC3端口的数据就能对三种传感器发送的数据进行采集。1、浊度传感器的数据输入及处理程序:int val = analogRead(zdPin); double zd = 6.3-val*4.9*1.367*0.001;2、溶解氧传感器的数据输入及处理程序:int val2 = analogRead(rjyPin); double rjy = val2*4.9*0.005-2.5;3、PH传感器的数据输入及处理程序:int val3 = analogRead(PHPin); double PH = -val3*0.02753+21.530;3.2.4节点程序Arduino的编程代码如
28、下:#include #define zdPin A1 /zd引脚配置#define rjyPin A2 /rjy引脚配置 #define PHPin A3 /PH引脚配置#define PHPin A4 /预留A引脚配置#define PHPin A5 /预留B引脚配置OneWire ds(10); / 连接arduino10引脚/* SIM808的网络配置及发送指令 */String str = AT+CGCLASS=Brn;String str1 = AT+CGDCONT=1,IP,CMNETrn;String str2 = AT+CGATT=1rn;String str3 = AT+C
29、IPCSGP=1,CMNETrn;String str4 = AT+CLPORT=TCP,2000rn;String str5 = AT+CIPSTART=TCP,183.230.40.33,80rn;String str6 = AT+CIPSENDrn;String str7=POST/devices/776354/datapointsHTTP/1.1rnapi-key: IOHbMfkGhNgn5 =aAR5ucU7DW3E=rnHost:rnContent-Length:;String str8 = id:wd,datapoints:value:;String str9 = id:zd,
30、datapoints:value:;String str10 = id:rjy,datapoints:value:;String str11 = id:PH,datapoints:value:;String str12 = rn; String str13 = rnrndatastreams:;/* 设置波特率、发送网络配置 */void setup(void) Serial.begin(9600); /设置波特率为9600delay(100);Serial.println(str); /发送str字符串delay(100);Serial.println(str1); /发送str1字符串delay(100);Serial.println(str2); /发送str2字符串delay(100);Serial.println(str3); /发送str3字符串delay(100);Serial.println(str4); /发送str4字