赵丽+张信民+张宝芳+田会峰
摘要:针对传统温室系统存在的问题,设计1种基于微信平台的智能温室监控系统。利用微信公众平台进行远程监控与管理,以新浪云服务器为中介,通过WiFi模块实现单片机Arduino与微信服务器的数据交互。借助微信实现远距离监控,这样可以随时随地读取温室环境信息参数,然后根据相关参数,发送目标指令,启动相应的调节设备如喷水机、送风机、加热器、降温器等,调节大棚内的环境参数,以达到最适宜条件,实现对温室内设备的远程操作。
关键词:微信平台;智能温室;WiFi模块;数据交换;远距离监控
中图分类号: YP277.2文献标志码: A文章编号:1002-1302(2017)23-0231-04
目前我国智能手机普及率较高,微信简单、方便操作,利用手机微信平台可以实时监控温室系统。微信平台与传感器技术、网络技术相结合,可实现温室监控系统的无线化、网络化、智能化。
1温室监控系统总体方案设计
智能温室控制系统采用分布式的体系结构,与以往的主机-终端模式相比,具有分布灵活、成本较低的优点。本系统采用计算机作为监控中心,主要负责温室控制器上传数据的存储、显示,可与多个温室控制器组网通信,实现一机控制多温室的集中管理模式。温室控制器、数据采集模块、开关量控制模块都是基于单片机的嵌入式系统,计算机通过无线传输与温室控制器通信,解决了现场布线不方便的问题,温室控制器通过现场控制器局域网络(controller area network,简称CAN)总线与数据采集模块和开关量控制模块通信。在本系统中每个温室都有1个温室控制器,可完成对数据的采集和控制,有独立的液晶显示器和键盘系统,可独立地完成智能控制,同时把本温室的各种环境参数和系统的运行状态传输给上位机的计算机系统。温室监控系统总结构如图1所示。
2智能温室系统硬件设计
2.1系统硬件组成与工作原理
智能温室系统主要由单片机、串口WiFi、温湿度、光照、CO2浓度、有机发光二极管(organic light-emitting diode,简称OLED)显示、电机驱动等模块构成[3],系统组成框架如图2所示。
根据农作物最佳生长环境条件的需求,通过Arduino单片机[4-6]将传感器感应检测到的温室大棚环境信息参数,如空气、土壤温湿度、二氧化碳浓度、光照度等参数,传输给显示屏,再通过单片机实时显示在微信上,同时将编程里设定好的农作物最佳生长环境参数与实际环境参数范围进行比较,如果存在偏差,则可以通过由单片机控制的外围设备(水泵、通风扇、遮阳帘、电磁阀、补光灯、暖风机等)工作来改善环境信息參数,当达到农作物最佳生长条件时,设备则会停止工作。
2.2智能温室系统硬件电路设计
2.2.1串口WiFi模块硬件设计本设计中的ESP8266WiFi模块用于连接路由器,然后接收手机端发送的信号,对单片机进行控制。ESP8266是一款超低功耗的模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和互联网的应用设计,可将用户的物理设备连接到WiFi无线网络上,进行互联网或局域网通信,实现联网功能。ESP8266可广泛应用于智能电网、智能交通、智能家具、手持设备、工业控制等领域。温室系统硬件连接情况如图3所示。
2.2.2CO2模块硬件设计CO2模块选用的是MG811。MG811是常用于家庭环境二氧化碳探测的装置,二氧化碳气体敏感元件测试浓度的范围为0~10 000 μmol/mol。CO2模块原理如图4所示。
2.2.3OLED模块硬件设计与阴极射线管(cathode ray tube,简称CRT)相比,OLED具有驱动电压低、体积小、质量轻等优点,OLED显示屏的响应时间超过薄膜晶体管液晶显示器(thin film transistor-liquid crystal display,简称TFT-LCD)液晶屏。TFT-LCD的响应时间为几十毫秒,现在做得最好的TFT-LCD 响应时间也只有12 ms。而 OLED显示屏的响应时间是几微秒到几十微秒。OLED与单片机的连接线如图5所示。
3智能温室系统软件设计
3.1下位机软件设计
智能温室系统通过传感器实时检测温室的信息,如温湿度、CO2浓度、光照度等,当这些参数与系统设定参数有偏差,即不是农作物生长的最有利条件时,可以通过由单片机控制的外围设备(水泵、通风扇、遮阳帘、电磁阀、补光灯、暖风机等)工作来改善环境信息参数,当达到农作物最佳生长条件时,设备就会停止工作。主程序流程如图6所示。
3.2微信平台的设计[7-8]
3.2.1订阅号的建立(1)在浏览器地址栏中输入https://mp.weixin.qq.com进入页面后点击右上角“立即注册”链接,如图7所示。
(2)输入邮箱、密码及验证码,勾选“我同意并遵守《微信公众平台服务协议》”进行注册。
(3)登录注册时在填写的邮箱里查找微信激活邮件,点击其中的链接激活微信公众账号。
(4)根据需要选择订阅号、服务号、企业号。在这里选择注册订阅号,如图8所示。
(5)提交完成后进入微信公众账号信息注册界面,填写公众账号名称、上传账号头像、生成订阅号二维码等相关信息。
(6)为与新浪应用引擎(sina app engine,简称SAE)关联,即实现通过在SAE中编写程序来检测微信接收端接收到的信息并发送相关内容,必须在订阅号中设置为开发者模式来进行自定义菜单(控制订阅号接收信息及发送内容)并获取相关APP ID(应用ID)和APP secret,两者的作用相当于密码,只有知道两者参数,才能在新浪SAE服务器中编写程序,然后正确的关联到该账号。如图9所示。endprint
3.2.2新浪云的搭建新浪SAE的地址为http://sae.sina.
com.cn/,进入界面选择“注册账号”链接,开始进入注册新浪云账号流程,该流程与微信公众账号注册流程一致,在此就不再累赘,填写完账户信息之后,进入账户信息界面。
在控制台界面,点击“创建新应用”按钮,SAE可以免费申请10个应用。创建后选择二级域名和应用名称,开发语言选择超文本预处理器(hypertext preprocessor,简称PHP)编写。SAE中的应用即为服务器,可以在服务器中编写程序并建立数据库,将其他软件平台链接到该应用对应的域名,即可根据程序反馈相应信息并改变或者记录信息到数据库内部。创建完成后生成的应用界面如图10所示。在微信开发界面中填写参数如图11所示。URL为服务器域名,Token填写为weixin,Token的作用是作为通信密码在PHP编程中使用。
3.3.3数据库的设计在SAE中建立数据库的目的是当用户发送控制信号到公众平台时,使数据库中的参数发生改变,
然后通过WiFi模块传输到单片机当中作为控制信号。数据库内包含两大部分内容,一方面为各种传感器采集的信息,另一方面为控制量当前的状态值(0位和1位)建立过程。
3.3.3.1传感器信息数据库建立在控制台,选中左侧菜单栏中的“数据库与缓存服务”,进入界面之后点击管理MySQL,进入数据库建立界面如图12所示。根据传感器采集的参数信息,定义变量,建立数据如图13所示。
3.3.3.2控制变量数据库建立按照与传感器数据建立一致的方式建立如图14所示变量数据库,各个变量代表的含义:TF为通风扇;YL为遮阳帘;NF为暖风机;BG为补光灯;PT为喷头。变量类型选择int,当变量值为1时, 表示该变量
控制下的机器为打开状态;当变量为0时,表示该变量控制下的机器为关闭状态。
3.3.4PHP语言编写[9]点击应用中的代码管理,然后进入编写代码界面(图15),当然也可以用专门的应用编译软件,如dreamweaver、zend studio。
编程步骤如下:(1)首先利用上述获得的APP ID和APP secret获取access_token进行代码和微信公众账号的关联,程序如下:
//curl模拟GET请求,获取access_token
$appid=“wx1715b63756afcceb”;
$appsecret=“4c4b23176296723f43d0403b7307bac3”;
$access_token_url=“https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$appid}&secret={$appsecret}”;
$access_token_arr=json_decode($outopt,true);
$access_token=$access_token_arr[‘access_token];
(2)当用户发送“查询参数”文本时,反馈信息内容编程,部分程序如下:
function receiveText($obj){
$content=$obj->Content;
$content1=“温度”;//温度查看
if (strstr($content,“查询参数”))
{$con=mysql_connect(SAE_MYSQL_HOST_M.′:′.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
mysql_select_db(“app_mao18862601272”,$con);//修改数据库名
$result=mysql_query(“SELECT*FROM sensor”);//“SELECT*FROM humidity”
(3)当用户发送控制信号时改变数据库变量如下程序所示:if (strstr($content,“打开通风扇”)){$con=mysql_connect(SAE_MYSQL_HOST_M.′:′.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
$dati=date(“h:i:sa”);
mysql_select_db(“app_mao18862601272”,$con);//修改数据库名
$sql=“UPDATE switch SET timestamp=‘$dati,TF=‘1
WHERE ID=‘1”;//修改开关状态值
if(!mysql_query($sql,$con))
{
die(‘Error: . mysql_error());
}
else{
mysql_close($con);
$reply=“好的!!/n已经打开!”;
}
}
(4)其他控制方式与(3)类似,当接收相关信息时,改变数据变量状态,并且反馈给用户界面。
4系统运行与改进
对系统进行测试发现,系统运行良好,微信平台能正常实时显示数据,同时能利用微信控制相应的调节设备,如水泵、暖风机等。本系统还有许多不足需要下一步的改进:(1)无线通信的传输速率在稳定性方面须要进一步加强,传输的距离受环境的影响较大,可根据情况采用有线的方式实现上位机和下位机的通信,改进无线传输模块,采用具有自组网和路
由功能的ZigBee模块进行数据无线传输。(2)可以选用更高级的微信公众账号,如企业号,让微信二级菜单更加形象化,而不是使用测试号推广应用产品。(3)在上位机上建立不同农作物的专家系统,可以根据不同作物的生长阶段自动地修改系统控制参数以达到适宜作物生长的最佳环境,这可能与微信有一定的冲突。
5结论
设计1种以Arduino UNO R3单片机为控制核心,基于微信公众平台远程监视和控制,将采集数据实时通过WiFi传到新浪云服务器数据库中,用户实时通过移动终端远程操作的现代农业智能监控系统。采用物联网技术,突破传统方式,方便及时获得监控数据,便于温室的管理。
參考文献:
[1]马增炜,马锦儒,李亚敏. 基于WIFI的智能温室监控系统设计[J]. 农机化研究,2011(2):154-157.
[2]秦琳琳,陆林箭,石春,等. 基于物联网的温室智能监控系统设计[J]. 农业机械学报,2015,46(3):261-267.
[3]盛夕清. 数字化温室智能监控系统的设计与应用[J]. 农业网络信息,2006(6):21-23.
[4]李永华,高英,陈青云. Arduino软硬件协同设计实战指南[M]. 1版. 北京:清华大学出版社,2015.
[5]李明亮. Arduino项目DIY[M]. 1版. 北京:清华大学出版社,2015.
[6]Margolis M. Arduino权威指南[M]. 2版. 北京:人民邮电出版社,2015.
[7]易伟. 微信公众平台搭建与开发揭秘[M]. 2版. 北京:机械工业出版社,2015.
[8]方倍工作室. 微信公众平台开发最佳实践[M]. 2版. 北京:机械工业出版社,2015.
[9]刘中华,潘凯华. PHP编程宝典[M]. 北京:人民邮电出版社,2011.江苏农业科学2017年第45卷第23期高雄,汤岩,陈铁英,等. 基于图像处理的甘蓝虫害识别研究[J]. 江苏农业科学,2017,45(23):235-238.endprint