基于物联网的温室环境管控系统设计与实现_第1页
基于物联网的温室环境管控系统设计与实现_第2页
基于物联网的温室环境管控系统设计与实现_第3页
基于物联网的温室环境管控系统设计与实现_第4页
基于物联网的温室环境管控系统设计与实现_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

[22]。在本设计中主要用于对应用层的微信小程序开发时使用,通过原生的WXML/WXSS语言开发,适应性更好,可以开发出需要页面结构与内容,以及对页面显示的优化。

第3章温室农业环境管控系统需求分析3.1系统概述本系统在整个温室内分布了多个ZIGBEE终端节点进行数据搜集,终端节点按时往协调器发送数据,协调将数据整理发到ESP8266网关上,ESP8266经过设置Station模式连接到ONENET物联网云平台的MQTT协议服务器并将完整数据打包发送至ONENET云平台。整个设计是由感知、网络传输、应用,三层结合而来。感知层:主要由传感器、控制设备、ESP8266以及CC2530等硬件构成,其中CC2530负责处理传感器收集的各种温室环境数据,并对于环境调整。根据采集到的信息实时传输至云服务器,并由云服务器负责转发到特定设备;且为了更加智能加入了语音控制。网络传输层:是建立感知层的设备与ONENET物联网云服务器之间的重要路径,保证数据的安全与传递;由CC2530的ZIGBEE自组网与ESP8266网关、无线接入点(AP)等构成,通过网关ESP8266模块将终端采集发送给协调器后打包好的数据通过无线AP接入点发送到网络再与ONENET云服务器进行数据交互。应用层:主要由微信小程序与OneNet物联网云平台应用组成,云平台应用以及微信小程序通过ONENET云服务器对数据进行实时获取,进行图形化显示与管理,对环境作出相应控制,并对温室内的安全情况进行监测。经由传感器与管制设备的结合,实现了物与物之间沟通的可能性,利用ZIGBEE无线传感网络和ESP8266的透传,实现了整体系统从感知层到传输层再到应用层的联动,使得温室环境管控和调节更加智能,用户随时随地只要有网络的地方都可以监控数据和控制灌溉系统、加湿系统、排气系统等。3.2系统功能描述整个系统架构主要分为感知层、网络传输层和应用层,感知层内包含CC2530和ESP8266以及传感器等硬件设备,网络传输层主要用ZIGBEE自组网和ESP8266,应用层主要使用微信小程序和云平台应用、云服务器。如图3-1所示:图3-1温室农业环境管控系统功能结构图(1)采集节点采集节点由多个不同位置和不同类型的传感器组成,是感知层中最重要的部分,主要负责准确采集温室内环境的数据,并将采集的数据在各自连接的ZIGBEE终端内整合,为后续发送至协调器做准备。节点内有多种环境监测传感器,其中温湿度监测传感器,对温室内整体的温度以及湿度进行实时监测;土壤湿度监测传感器,负责对土壤水分的实时监测;光照监测传感器,用于实现对温室亮度值的数据观察;二氧化碳监测功能:使用CO2传感器,负责实现CO2检测功能,对温室内CO2浓度进行检查;人体红外传感器,负责对是否有人进入进行监测,主要用于实现人来亮灯人走灯灭或者有人入侵时报警。(2)微控制单元本系统的微控制单元由CC2530和ESP8266进行组合搭配使用,CC2530在农业温室环境是充当每个节点的主控芯片。ESP8266在系统中是感知层连接到互联网的重要芯片,连接于ZIGBEE协调器,负责将数据上传互联网以及将互联网下发的控制命令发送到控制节点,终端上的CC2530主要用于加入ZIBEE网络,对接收ZIGBB协调器下发的命令以及上传数据到协调器;协调器的CC2530主要用于初始化建立ZIGBEE星型网络和ESP8266芯片,将数据串口传输给ESP8266进行上传云端服务器。(3)控制节点控制节点由灯光、水泵、加湿器、排气扇、遮阳帘等控制电路组成,在此基础上还扩展了语音识别控制。在这里从传统控制,改变为自动和远程控制,也可以在农业温室内使用语音对设备进行控制,需要先使用语音“你好小度”唤醒语音模块。自动控制例如:当温湿度达到阈值,进行温湿度调节动作;光照强度或温度达到阈值,进行遮阳帘调节;土壤湿度低于或高于阈值的时候,进行水泵调节;湿度低于或高于阈值进行加湿器调节等。(4)无线传感网络无线传感网络,通过将协调器节点和终端节点加入同一ZIGBEE网络下实现数据的交互,由协调器进行初始化并创建一个ZIGBEE星型结构网络,而终端则在设备初始化完成以后加入该星型结构网络。终端通过该网络实时发送采集的数据给协调器开展数据整合,并接收协调器对于其发送的命令。(5)ESP8266ESP8266采用其ESP-07型号。

它以Station工作,以透传模式与协调器通信。

ESP8266的TX、RX与CC2530的TX、RX反向连接,实现数据通信

;通过ESP8266连接的AP,与云端ONENET云平台建立连接,发送数据到云平台和接收云平台下发的命令,再通过ESP8266透传发送给CC2530协调器,实现感知层与应用层的联动。(6)应用层部分 应用层部分主要由微信小程序、ONENET云平台应用、IAR嵌入式程序编程、云服务器等组成,通过IAR对CC2530芯片的嵌入式编程才能实现感知层的大部分功能;使用ONENET云服务器,感知层的设备经由MQTT协议订阅对应的主题来实现数据上传云端和接收命令,微信和ONENET云平台应用程序可以获取数据并发送命令;通过移动端的微信小程序通过编写相关界面以及后台程序可以实现在随时随地查看实时数据与图形化历史数据,对智能控制进行自定义和手动开关控制设备,而ONENET云平台应用则是以网页的形式对数据进行查看和下发控制指令以及开启默认自动模式。第4章温室农业环境管控系统设计本设计分为三层架构主要由感知层硬件设计与嵌入式软件设计、网络传输层ONENET物联网云平台MQTT服务器与应用层的微信小程序和ONENET平台应用这几个部分组成。智慧园区系统的总体架设方案结构图如下图4-1所示:图4-1系统总体架构图4.1感知层硬件设计4.1.1系统硬件整体架构在本设计的感知层硬件设计部分,主要由主控制核心、无线传感器网络、无线通信ESP8266以及控制与采集模块四个部分组成。主控制核心,是以装载CC2530主控芯片的核心控制板,主要实现数据解析收集以及转发数据过程;无线传感器网络,有单个协调器节点与四个终端节点组成,多个终端则负责搜集处理和转发数据,协调器则担任搜集多个终端搜聚的环境数据的任务,实行整合显示以及打包发送给下一级的过程;无线通信ES8266,则负责连接无线AP,与云端服务器建立连接,将上一级发送的所有数据发送到云端服务器,并接收其下发的控制命令转发于上一级设备,实现数据的实时传输;控制与采集模块,控制与采集模块是与装载CC2530芯片的开发板模块进行配合,将采集到数据发送给该开发板进行转换与收集,同时控制模块负责接收CC2530加入的网络所传递的控制命令进行操作,如下图4-2所示系统硬件整体架构:图4-2系统硬件整体架构图4.1.2系统主控制核心在本设计中,主控制核心采用的是德州仪器生产的增强型8051内核的CC2530微控制器,本设计内采用的是CC2530F256这款,内置ZIGBEE协议栈,使用方便大大减少开发时长,在该装载有CC2530F256芯片的开发板上,集成了CH340的USB转串口功用和LDO稳压电路等电路。如图4-3所示详细电路:图4-3CC2530F256核心板电路原理图在本设计中的主要用于对传感器得到的数据进行读取并将其通过ADC转换成可读数据,对完整数据进行JSON数据封装,满足MQTT协议的报文要求,芯片内还写入了对云端下发数据的解析,得以实现操控各种控制设备的作用,对ESP8266发送MQTT串口数据,将数据交由ESP8266负责上传。在本次的设计中有多个CC2530F256节点,每个节点的功能和引脚的引用都是不同。4.1.3无线传感网络无线传感器网络主要以CC2530为核心组成的,具有协调节点和多终端节点组成具有传感信息搜集、数据处理和无线通讯能力的自组织无线网络,协调器节点负责创建网络,继而终端节点或路由器请求进入网络,进入后,进行分配地址,后网络成功时形成无线网络,终端节点通过PANID加入相应的该无线网络。在本设计中,终端以点对点的形式进行数据传输,将搜集到的数据发送给协调器,而协调器以广播即0XFFFF,加入到ZIGBEE无线传感网络中去,将串口接受的数据发送给ZIGBEE无线传感网络中的终端节点。4.1.4无线通信ESP8266模块在本设计使用的ESP8266芯片为ESP-07,ESP-07 采用的容量为1MB,集成业界领先的超低功耗32位微型MCU,使得连接简单易行,还设置了TCP/IP协议栈且集成了WIFI陶瓷天线,使得为设备添加联网功能更为方便。模块与CC2530开发板连接时使用的引脚详情如表4-1所示:表4-1ESP8266模块的引脚说明表引脚符号功能说明8VCC接电源电源正极9GND接地线地线15RX串口接收端口连接CC2530的TX16TX串口发送端口连接CC2530的RX如图4-4所示详细电路:图4-4ESP8266电路原理图该模块在本设计中的作用是用来与ONENET云服务器进行连接和收发来自服务器的消息,通过与CC2530与ESP8266的TX\RX反接,使两个串口处于正常连接传输状态时,与ONENET云平台的MQTT服务器连接的代码和需要发送至云端的数据块以及云端下发的命令,都是通过该方式进行两端的交流,在本设计中ESP8266主要与处在ZIGBEE协调器上的CC2530相连接,CC2530开发板负责对其3.3V的供电,而ESP8266则负责数据传输。4.1.5控制模块与采集模块本设计的采集模块由5种不同的传感器构成。主要用于农业温室的环境数据监测,通过与CC2530芯片开发板相连接,由CC2530对传感器数据进行转换。控制模块主要有排气、遮阳帘、加湿、警报以及水泵灌溉等设备,通过与CC2530芯片开发板的IO口相连接,由CC2530进行初始化并控制这些设备。还加入了语音控制设备,通过识别语音,模块上的TX与CC2530的RX相连,实现数据通信后,将特定语音通过处理解析成串口数据发送至CC2530,由CC2530进行处理启动相应的设备。(1)温湿度传感器在本设计中使用DHT11作为温湿度传感器,主要通过其DATA数据口获取农业温室内环境的温湿度,其供电电压为3V3-5V,其DATA口与CC2530终端1的P0_7相连。详细引脚的说明见下面的温湿数据采集传感器引脚说明表4-2所示:表4-2引脚说明表引脚符号功能说明1VCC电源口接CC2530终端1的3.3V2DATA数据口接CC2530终端1的P0_73GND地线接GND与之共地如下图4-5所示温湿度传感器:图4-5温湿度传感器模块如下图4-6所示温湿数据采集传感器原理图:图4-6温湿数据采集传感器原理图(2)MQ2传感器MQ2传感器负责模拟CO2的值,其电导率随空气中可燃气体浓度的增加而变化。在本设计中主要通过读取其AO数据进行ADC转换得到数据,将该数据作为二氧化碳溶度,其供电电压为3V3V,AO/DO口分别与CC2530终端1的P0_6与P0_5相接。详细引脚的说明见下面的MQ2传感引脚说明表4-3所示:表4-3引脚说明表引脚符号功能说明1VCC电源口接CC2530终端1的3.3V2AO模拟信号口接CC2530终端1的P0_63DO数字信号口接CC2530终端1的P0_54GND地线接GND与之共地如下图4-7所示MQ2传感器:图4-7MQ2传感器模块如下图4-8所示MQ2传感器原理图:图4-8MQ2传感器原理图(3)土壤湿度传感器土壤湿度数据采集传感器内有LM393比较器,工作稳固信号不杂,感应面积宽提高了高导电性。在本设计中经过与CC2530终端2的AD模块相连,实行ADC转换的过程,获得土壤湿度的精确值。其供电电压为3V3,AO/DO口分别与CC2530终端2的P0_6与P0_5相接。详细引脚的说明见下面的土壤湿度数据采集传感器引脚说明表4-4所示:表4-4引脚说明表引脚符号功能说明1VCC电源口接CC2530终端2的3.3V2AO模拟信号口接CC2530终端2的P0_63DO数字信号口接CC2530终端2的P0_54GND地线接GND与之共地如下图4-9所示土壤湿度数据采集传感器:图4-9土壤湿度传感器模块如下图4-10所示土壤湿度数据采集传感器原理图:图4-10土壤湿度数据采集传感器原理图(4)光照传感器光照传感器是将其光敏电阻收集的光信号转换成电信号的传感器。再经过LM393比较器得到实时数字信号值,将电信号转换成ADC得到模型信号值。采用的双输出模式,整体对信号值的获取简单且精确。在本设计中通过与CC2530终端2的AD模块进行连接获取ADC转换后的环境光照值,供电电压在3V3,AO与其P0_7口相连。详细引脚的说明见下面的光照数据采集传感引脚说明表4-5所示:表4-5引脚说明表引脚符号功能说明1VCC电源口接CC2530终端2的3.3V2AO模拟信号口接CC2530终端2的P0_73DO数字信号口悬空4GND地线接GND与之共地如下图4-11所示光照传感器:图4-11光照数据采集传感器如下图4-12所示光照传感器原理图:图4-12光照数据采集传感原理图(5)人体热释电红外数据检测传感器HC-SR501热释电红外传感器负责将活体散发的红外线转为电信号。该传感器在默认的阻值下在人体离开150或200秒内才会转变为无人,经过代码与阻值调整可在10秒内进行变化。在本设计中主要用于对农业温室内人体的监测,实现人来灯亮人走灯灭或在防盗模式下监测到人体进行警报提醒的效果。其OUT口与终端4的IO口P0_5口进行连接,需要给其提供5V电压才能正常工作,详细引脚的说明见下面的人体热释电红外数据采集检测传感器引脚说明表4-6所示:表4-6引脚说明表引脚符号功能说明1VCC电源口接CC2530终端4的5V2OUT信号输出口接CC2530终端4的P0_53GND地线接GND与之共地如下图4-13所示人体热释电红数据采集监测传感器:图4-13人体热释电红外数据采集监测传感器如下图4-14所示人体热释电红外数据采集监测传感器原理图:图4-14人体热释电红外数据采集监测传感器原理图(6)排气设备、加湿器设备、水泵灌溉设备在本设计中,排气、加湿器、水泵灌溉这些设备都是由一路继电器进行控制,通过终端3上的CC2530的IO口对继电器进行拉高与拉低电平,以实现继电器的吸合与断开,实现控制所连接的排气、加湿器、水泵灌溉设备进行开关动作。一路继电器控制模块如图4-15所示:图4-15一路继电器模块排气控制设备详细引脚的说明如下表4-7所示:表4-7引脚说明表引脚符号功能说明1VCC电源口接CC2530终端4的5V2IN信号接收口接CC2530终端4的P0_53GND地线接GND与之共地如下图4-16所示排气设备:图4-16排气设备模块如下图4-17所示排气设备原理图:图4-17排气设备原理图加湿器设备详细引脚的说明如下表4-8所示:表4-8引脚说明表引脚符号功能说明1VCC电源口接CC2530终端4的5V2IN信号接收口接CC2530终端4的P0_53GND地线接GND与之共地如下图4-18所示加湿器设备:图4-18加湿器设备模块如下图4-19所示加湿器设备原理图:图4-19加湿器设备原理图水泵灌溉控制设备详细引脚的说明如下表4-8所示:表4-8引脚说明表引脚符号功能说明1VCC电源口接CC2530终端4的5V2IN信号接收口接CC2530终端4的P0_53GND地线接GND与之共地如下图4-20所示水泵灌溉设备:图4-20水泵灌溉设备模块如下图4-21所示水泵灌溉设备原理图:图4-21水泵灌溉设备原理图(7)灯光设备在本设计中,灯光设备用于照明使用,通过终端3上的CC2530的IO口对灯光进行拉高与拉低电平,实现控制所连接的灯光设备进行开关动作。灯光设备详细引脚的说明如下表4-7所示:表4-7引脚说明表引脚符号功能说明1+正极接CC2530终端4的3.3V2-负极接CC2530终端4的P0_1如下图4-22所示灯光设备:图4-22灯光设备模块如下图4-23所示灯光控制设备原理图:图4-23灯光设备原理图(8)遮阳帘设备遮阳帘设备主要由4相步进电机进行控制,本设计使用的是8拍驱动方式,其减速比是64比1,需要内部转动64圈才能达到外部转动一圈的效果,将帘子与步进电机进行组装,通过转半圈达到控制农业温室顶部遮阳帘的开关。其IN1、IN2、IN3、IN4口连接于CC2530开发板的P1_7、P1_6、P1_5、P1_4,使用5V电压为其供电,可控制其按角度进行以对开启角度进行控制。遮阳帘设备详细引脚的说明如下表4-9所示:表4-9引脚说明表引脚符号功能说明1VCC电源口接CC2530终端3的5V2IN1信号接收口1接CC2530终端3的P1_73IN2信号接收口2接CC2530终端3的P1_64IN3信号接收口3接CC2530终端3的P1_55IN4信号接收口4接CC2530终端3的P1_46GND地线接GND与之共地如下图4-24所示遮阳帘设备:图4-24遮阳帘设备模块如下图4-25所示遮阳帘控制设备电机原理图:图4-25遮阳帘控制设备电机原理图(9)警报设备警报设备采用有源蜂鸣器作为警报,采用S8550三极管驱动,低电平触发模式,其内部带有震荡源,只需连接IO口输出低电平即可使其发声,采用3.3V供电。警报控制设备详细引脚的说明如下表4-10所示:表4-10引脚说明表引脚符号功能说明1VCC电源口接CC2530终端4的5V2IO信号口接CC2530终端4的P0_53GND地线接GND与之共地如下图4-26所示警报设备:图4-26警报设备模块如下图4-27所示警报设备原理图:图4-27警报设备原理图(10)语音识别设备语音识别设备采用的是全球鹰电子开发的LD3322语音识别主控板,集成了功率放大器和麦克风模块,支持全双工UART串口,最高速率可达3Mbps,通过设置写入相应的固件即可实现语音识别相对应的语音则发送对应的串口数据,连接CC2530终端3的RX端口,通过CC2530嵌入式代码接收并处理输入后,执行相应的控制模块。采用5V电源。语音识别控制设备详细引脚的说明如下表4-11所示:表4-11引脚说明表引脚符号功能说明10VCC电源口接CC2530终端3的5V14TX串口发送口与CC2530终端3的rx连接9GND地线接GND与之共地如下图4-28所示语音识别控制设备:图4-28语音识别设备模块如下图4-29所示语音识别控制设备原理图:图4-29语音识别设备模块4.2感知层软件功能设计4.2.1MQTT协议连接与收发功能在本设计中CC2530协调器通过ESP8266透传,发送MQTT协议连接请求接入ONENET云服务器的多协议接入服务,并实时发送心跳包连接保活,公布MQTT主题功能经过设置相应的QoS服务质量以及Topic主题信息的数据到平台,平台成功收到消息后,对消息进行释放,这一系列操作下来完成消息的发布;接收功能,经由订阅已发送的主题请求,确认订阅后,即可实时接收MQTT主题内的控制指令了。如图4-30所示其功能流程图:图4-30MQTT连接及收发功能流程图MQTT连接云端服务器核心实现代码:_BoolOneNet_DevLink(void){MQTT_PACKET_STRUCTUREPacket={mqttpacket_buff,0,packet_maxlen,MEM_FLAG_STATIC};//协议包unsignedchar*dataPtr; _Boolstatus=1;debug("OneNet_DevLink\r\nPROID:%s,AUIF:%s,DEVID:%s\r\n",PROID,AUTH_INFO,DEVID); if(MQTT_PacketConnect(PROID,AUTH_INFO,DEVID,256,0,MQTT_QOS_LEVEL0,NULL,NULL,0,&Packet)==0) { ESP8266_SendData(Packet._data,Packet._len); //上传平台 MQTT_DeleteBuffer(&Packet);//删包 } Else{ debug("WARN: MQTT_PacketConnectFailed\r\n"); } returnstatus;}上传数据核心实现代码:if(onenet_login_ok==2){P1_4=0;//D3亮//发送数据到onenetOneNet_SendData(end5_Peop,end1_Temp,end1_Hum,end1_Mq2,end2_Soilhum,end2_Luminosity,end3_Pump,end3_Beep,end3_Humidifier,end3_Shadow,end3_Light,end3_Win);}osal_start_timerEx(TaskID,SAMPLEAPP_ONENET_EVT,5000);return(events^SAMPLEAPP_ONENET_SEND_DATA_EVT);}订阅主题核心实现代码:constsignedchar*mqtt_topics[]=deviceSubTopic;if(0==onenet_mqtt_subscribe_topic(mqtt_topics,1))//订阅主题(订阅的topic,订阅的个数){ HalLcdWriteString("keysucc",HAL_LCD_LINE_4);//LCD显示}4.2.2环境数据采集功能多个传感器搜集的环境数据主要为温室温湿度、温室光照度、温室土壤湿度、温室二氧化碳溶度、人体红外监测。如图4-31所示其功能流程图:图4-31环境参数搜集流程图一开始,CC2530终端节点和协调节点首先形成ZIGBEE无线传感器网络。终端节点的CC2530主控芯得到传感器搜集到的温室环境数据,将ADC转换成数字量,经由ZIGBEE无线传感器网络发送给协调节点。调器节点的CC2530主控芯片对数据进行网络传输封包后,发送给ESP8266,由其将数据发往ONENET云平台的MQTT服务器。环境数据采集核心代码:voidSampleApp_Send_P2P_Message(void){uint8data[30]={0};uint8strTemp[20]={0};intlen=0;DHT11();//获取温湿度data[0]=1;//用于表示终端的flag标志data[1]=wendu;//温度data[2]=shidu;//湿度data[3]=GetMq2();//气体浓度len=4;sprintf(strTemp,"温&湿:%d%d",data[1],data[2]);HalLcdWriteString(strTemp,HAL_LCD_LINE_3);//LCD显示sprintf(strTemp,"MQ2:%d",data[3]);HalLcdWriteString(strTemp,HAL_LCD_LINE_4);//LCD显示AF_DataRequest(&SampleApp_P2P_DstAddr,&SampleApp_epDesc,SAMPLEAPP_P2P_CLUSTERID,len,data,&SampleApp_TransID,AF_DISCV_ROUTE,AF_DEFAULT_RADIUS);HalLedSet(HAL_LED_2,HAL_LED_MODE_TOGGLE);}4.2.3设备控制功能设备控制功能主要是由串口程序发送控制指令,协调器的CC2530主控芯片对命令进行解析判断,有效就通过ZIGBEE无线传感网络发送解析后的指令至管制终端,使其经由控制IO口继而产生对设备的控制,设备状态同步到界面程序,如图4-32所示其功能流程图:图4-32设备控制流程图设备控制核心代码:caseSAMPLEAPP_PERIODIC_CLUSTERID://收到协调器广播消息/*排气扇—继电器1*/if(pkt->cmd.Data[0]=='F'){if(pkt->cmd.Data[1]=='1'){if(end3_Win==0){//判断是否关闭DATA_PIN_2=0;end3_Win=1; SampleApp_Send_P2P_Message();//发送执行后的设备状态}}else{if(end3_Win==1){//判断是否开启DATA_PIN_2=1;end3_Win=0;}SampleApp_Send_P2P_Message();}}4.2.4自动控制功能自动控制功能是由环境数据采集功能与设备控制功能两个组成的,通过将传感器数据发送到CC2530协调器上,打开设备触发器后,CC2530协调节点对传感器数据进行解析,经由ZIGBEE无线传感器网络发送给控制终端节点。控制终端节点对指令进行解析,启动或关闭响应设备。默认自动控制是通过CC2530协调器内部写好的程序进行控制的,例如温室环境温度阈值设为30℃,当采集的温度数值超过30℃,则发送控制排气扇或加湿器进行降温处理,如图4-33所示其功能流程图:图4-33自动控制流程图自动控制核心代码:/*排气扇自动-温度大于30或湿度大于70或Mq2大于36*/voidWinAuto(){if(end1_Temp>=30||end1_Hum>=70||end1_Mq2>=36){SampleApp_SendPeriodic_TO_Enddevice("F1");//排气扇开}else{SampleApp_SendPeriodic_TO_Enddevice("F0");//排气扇关}}/*水泵自动-土壤湿度低于10启动*/voidPumpAuto(){if(end2_Soilhum<=10){SampleApp_SendPeriodic_TO_Enddevice("C1");//水泵开}else{SampleApp_SendPeriodic_TO_Enddevice("C0");//水泵关}}...4.2.5语音控制功能语音控制功能由语音辨别模块以及设备管制模块构成。将模块刷好自定义编辑的固件后,用“你好,小度”的声音唤醒,对其说出与设备操作字段,例如“打开排气扇”,语音识别字段是否符合,并通过喇叭播放反应状态,串口发送16进制的操控命令至CC2530的控制终端,控制终端经由串口接收回调函数对命令实行解析的过程后,管制设备产生动作。如图4-34所示其功能流程图:图4-34语音控制流程图自动控制核心代码:voidSampleApp_CallBack(uint8port,uint8event){(void)port;staticuint8a;RxLen=Hal_UART_RxBufLen(SAMPLE_APP_PORT);//先读取串口0监测是否有消息if(SampleApp_RxLen){//有消息进入这里HalUARTRead(SAMPLE_APP_PORT,SampleApp_RxBuf,SampleApp_RxLen);//读取消息,读到的值是16进制的,使用switch对其进行判断switch(SampleApp_RxBuf[0]){//只存了一位值,所以取数组的第一位case0xE1://开启遮阳帘if(end3_Shadow==0){for(a=0;a<=250;a++){//转的角度MotorCW();//正转}MotorStop();//停end3_Shadow=1;//开启遮阳帘}SampleApp_Send_P2P_Message(); HalLcdWriteString("Shadowon",HAL_LCD_LINE_2);//LCD显示 break;SampleApp_RxLen=0;//清空这次的消息}}4.3网络传输层设计4.3.1ONENET云平台的MQTT产品搭建在本设计中,使用ONENET的物联网云服务器,使得数据可以在云端存储并接收来自微信小程序的指令,将上传的传感器数据以数据流方式存储,提供全云端在线应用构建能力,API文档清晰,具有丰富的第三方读取与发送数据的API接口,可视化UI拖动流程编排,帮助用户更快生成应用。如图4-35、4-36所示ONENET云平台MQTT产品界面与数据流展示界面:图4-35ONENET云平台MQTT产品图4-36设备数据流界面4.4应用层程序设计4.4.1微信小程序设计(1)界面设计微信小程序设计的界面分别是授权登录页、主页、设备详情页、传感器数据页、传感器数据历史页、控制中心页、自定义控制页、我的页面,每个界面的功能都不一样,每个页面的上方都有天气预备和当天空气质量,以及当前位置信息。授权登录页用于对微信小程序所需要的权限进行授权登陆和订阅设备报警信息,如4-37所示界面图;主页用于显示ONENET上建立的设备,界面图如4-38所示;设备概况页仅用于表现对应查看的ONENET设备的概况信息,界面图如4-39所示;传感器数据页主要用来对农业温室环境内部署的各个传感器实时数值的表现,界面图如4-40所示;控制中心页用于对感知层环境调节设备的控制,有启动CC2530协调器写好默认的感知层环境调节设备自动控制的按钮,也可以通过点击手动控制按钮达到手动控制的效果,手动控制时自动控制默认关闭,界面的每个开关按钮都是随设备状态实时显示开关。界面图如4-41所示;我的页面用于显示运行时所登录的微信的头像以及名称,包括各项关于该程序的信息以及退出按钮,如4-42所示界面图;传感器数据历史页用于对每个传感器的历史数据进行查看,通过日期区间进行搜索观察,历史数据以折线图的样式进行展示,界面图如4-43所示;自定义控制页面用于对每个对应的环境调节设备启动时的环境上限或下限阈值进行设定,实现自定义化自动控制,界面图如4-44所示;图4-37系统授权登录界面图4-38系统主界面图4-39系统设备概况界面图4-40系统传感器数据界面图4-41系统控制中心界面图4-42系统我的界面图4-43系统传感器数据历史界面图4-44系统自定义控制界面(2)显示传感器数据功能的实现显示传感器数据功能主要由是硬件和服务器相互配合后,小程序通过onLoad()页面监听函数,函数内调用request函数访问ONENET平台服务器的API接口,由于获取的数据是JSON数据,需要对其进行拆解后,再赋值给页面变量,开启周期定时器定时更新数据并对云数据库进行每15分钟一次的数据存储。如图4-45所示为对数据获取的流程图:图4-45获取数据流程图实际显示效果如图4-46所示:图4-46显示效果图核心代码:onLoad:function(options){

varthat=this;

that.setData({

location:app.globalData.location,

weather:app.globalData.weather,

weatherAir:app.globalData.weatherAir,

TwoDayWeather:app.globalData.TwoDayWeather

});

//获取OneNet平台传感器数值

that.getDataPoints(onenetid,onenet.API_KEY);

},(3)云数据库存储功能的实现云数据库存储功能主要用于每15分钟存储一次传感器数据。使用的数据库是微信小程序云开发内的云数据库。如图4-47所示为云数据库流程图:图4-47存储数据至云数据库流程图实际效果如图4-48所示:图4-48存储效果图核心代码:/*定时添加数据到数据库

15min*/that.data.sqlintervalid

=

setInterval(function

()

{

that.AddDataInfoToSQL(that.data.temp,that.data.hum,that.data.mq2,that.data.soil,

that.data.guanzhao,that.data.ren,dataUtil.formatDateThis(new

Date()))},1000*60*15)

//十五分钟存一次(4)设备控制的实现对设备的控制主要通过switch开关控件实现,通过绑定每个设备的开关事件达到控制效果,发送控制命令的主题信息至ONENET云平台MQTT服务器,硬件部分订阅该主题获取指令,将指令数据发送到对应的节点,实现设备控制;switch开关状态随硬件设备的状态而实时同步,例如通过别方式开启了控制设备后,switch开关按钮也会同步开启时的开关状态。如图4-49所示为设备控制流程:4-49设备控制流程图实际显示效果如图4-50所示:图4-50显示效果图核心代码://灯光开关

btn_led_func:function(e){

varthat

=

this;

this.controldevice(e.detail.value,topic,"D");

clearInterval(app.globalData.Light_time)//自定义自动控制

定时器关闭

if(this.data.LedBtnFlag

||

app.globalData.Light_state){

that.setData({

LedBtnFlag:false

})

app.globalData.Light_state

=

false;//自定义自动控制

定时器开启标志位

wx.showToast({

title:

'关闭灯光自动',

icon:

'success',

duration:

1000

})

}

},(5)简单自动化控制的实现自动化控制实现时通过点击带自动控制命令的button按钮,将指定命令通过云端MQTT服务器,发送给感知层应用设备,唤醒内部写好的自动化代码,设备状态改变实时同步至界面。如图4-51所示为默认简单控制设备自动化流程:图4-51自动控制流程图核心代码:

/*************

*

自动

*

*

************/

LedAuto:function(e){

varthat

=

this;

that.controlAuto(topic,"DA");

that.setData({

LedBtnFlag:true

});

clearInterval(app.globalData.Light_time)//自定义自动控制

定时器关闭

app.globalData.Light_state

=

false;

},(6)自定义自动化控制的实现自定义自动化控制实现时通过点击控制中心界面的每个设备框下的设置按钮进入对应设备的阈值自定义界面,拉取slider或勾选checkbox控件后,点击确认按钮完成对设备开关阈值的设定,小程序开始周期监测数值是否超过或低于阈值,发送指令至云端MQTT服务器,感知层硬件设备接收到对设备进行开启或关闭。如图4-52所示为自定义控制设备自动化流程:图4-52自动控制流程图核心代码:/*自定义水泵启动数据-自动控制

*/PumpformSubmit:function(e){

var

that

=

thisapp.globalData.Pump_state

=

true;//定时器开启标志位,放这里,以达到手动控制时,可以马上提示关闭自动

clearInterval(app.globalData.Pump_time);//在确认之前先清除定时器,否则每点击一次定时器就会累加一次

app.globalData.Pump_slider

=

e.detail.value.slider;

//记录当前slider数值位置

if(app.globalData.Pump_slider==0){

wx.showToast({

title:

'不能都为空',

icon:

'error',

duration:

888

})

}else{

app.global.Pumptime=setInterval(function(){

//启动定时器

if(that.data.soil<=app.globalData.Pump_slider){

onenet.SendCmdData(topic,"C1")

}else{

onenet.SendCmdData(topic,"C0")

}

},8000)

//八秒判断一次

}

},4.4.2ONENET云平台网页端应用ONENET云平台网页端的设计,主要以显示和简单控制设备为主要功能,通过拉取ONENET平台应用提供的可视化UI控件,属性绑定对应传感器与管制设备的数据流,将传感器转成图形化界面便于观察,设定对应的开关值达到控制设备的目的,控制设备状态改动后也同时返回设备当前情况以供实时观察。ONENET云平台网页端总体设计和设备数据流界面详见图4-53所示ONENET平台网页端实体设计:图4-53ONENET网页段自定义实体设计图

第5章系统整体测试5.1感知层硬件部分测试5.1.1整体设备连接与ZIGBEE无线传感网络测试将设备整体按照设计连接好并将环境搭建好,测试终端设备连接与控制为正常后,观察协调器串口数据,观察终端经由ZIGBEE无线传感网络上传到协调器的数据是否正常无乱码。如图5-1、5-2所示为各个设备与ZIGBEE各个节点连接实物:图5-1多个设备与多个ZIGBEE节点之间连接实物图图5-2ZIGEBEE无线传感网络测试图5.1.2设备通过ESP8266联网测试将CC2530设备与ESP8266模块进行相接,CC2530内有ONENET云平台的MQTT接入协议代码,ESP8266连接WIFI后,经过ESP8266透传进行与云端ONENET平台数据的传输。如图5-3ESP8266联网测试所示: 图5-3ESP8266联网测试图5.2通讯测试5.2.1硬件与ONENET平台MQTT产品发送通讯测试通过ONENET平台界面管擦硬件设备是否与云端建立连接,查看是否成功上传数据、成功接收到云端的下发命令并响应收到的内容,发送内容为16进制的命令。如图5-4所示硬件与ONENET平台MQTT产品通讯测试:图5-4硬件与ONENET平台MQTT产品通讯测试图5.2.2MQTT通讯测试使用simulate-device软件用于模拟设备接入查看主题信息,通过感知层硬件发送带有传感器等数据主题和微信小程序下发指令主题,观察数据正常与否,是否存在乱码等情况。如图5-5所示MQTT通讯测试:图5-5MQTT通讯上方下行测试图5.2.3应用层微信小程序与ONENET云平台通讯测试微信小程序经由访问ONENET云平台供给的API接口查询所有传感器数据,以JSON的数据格式接收,拆解解析具体数值通过控制台打印出来以便观察数据是否正常。如图5-6所示为应用层微信小程序端与ONENET通讯测试:图5-6应用层微信小程序与ONENET云平台通讯测试图5.3综合性测试整体环境搭建好并正常运行应用层对界面与状态的显示。如图5-7所示整体环境运行时的界面:图5-7整体环境运行时的界面5.4遇到的问题及解决方案(1)协议栈下协调器开发板的按键按下无反应,无法正确实现按下执行相应内容,即订阅MQTT的主题和消息,在上电一开始便是执行的,按下按钮无反应,达不到我在按下按键在执行的要求。解决方案:经排查发现,发现在协议栈的hal_key.c文件中有一个专门用于轮询密钥的HalKeyPoll函数,在该处代码运行开始时,检测并获取hal_key_joy,假设当电路中该位置一直为高电平,函数就会判定hal_key_joy按键是按下的,因为key==halKeySavedKeys这条语句会一直返回,所以不能对HAL_KEY_SW_6按键事件进行判断,导致按键按压后无反应。将hal_key.c文件中KEY_JOY相关代码屏蔽即可并对HAL_PUSH_BUTTON1()函数返回值进行取反即可。(2)微信小程序获取云开发数据库数据每次只能最多返回20条解决方案:通过查阅文档,发现小程序中发有为了防止误操作保护,默认每次返回不过20条记录。后面通过云函数去数据库里拿数据,使用for循环做多次请求,并把多次请求的数据再通过concat方法组装拼接到一个数组里,继而对云函数进行获取得到返回的数据,将云函数作为中转站。

总结本次设计,是为了实现对传统人工机械操作模式,对作物的生长过程和环境管控缺乏科学有效的监督,基本上是“依赖天气”的,低技术和低生产力的缺点进行了改善。通过分析多种物联网技术应用的优缺点以及温室农业环境管控未来的发展趋势以及国内外目前的发展现状。通过对相关资料的查阅,给设计确定需求分析,并实现需求分析的内容,即实现一个软硬结合让用户在随时随地都可以观察温室数据、异常警报和自动化自定义环境控制的系统。在确定了需求后采用物联网三层架构、Z-Stack协议栈、微信小程序,MQTT通讯、C语言、串口通信等技术来完整搭建一个基于物联网的农业温室环境管控系统。硬件设备通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论