logo资料库

基于MQTT协议的智慧农场智能化管理系统.pdf

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
62   Microcontrollers &Embedded Systems  2018年第9期www.mesnet.com.cn 基于MQTT协议的智慧农场智能化管理系统谢琳,庄建(四川大学锦城学院计算机与软件学院,成都610041)摘要:智慧农场的运用成为当代农业发展的必然趋势,利用MQTT协议的消息发布/订阅机制,通过远程移动端设备监控智慧农场各项数据并对智慧农场实施智能化管理十分有必要。在智慧农场中,MQTT协议网络接口可通过开发板中的代码移植和外接设备实现,以此达到智慧农场中数据与外部的交流和命令的接收,并使这些消息的交互相比其他方式更加简单快捷,实现对农场的智能控制并及时反馈的目的。关键词:智慧农场;MQTT协议;发布/订阅机制中图分类号:TP319    文献标识码:AIntelligent Management System of Intelligent Farm Based on MQTT ProtocolXie Lin,Zhuang Jian(School of Computer and Software,Jincheng College of Sichuan University,Chengdu 610041,China)Abstract:Using intelligence farm and MQTT protocol’s publish/subscribe messaging have become a trend of the current agriculture.It’snecessary to monitor all data in intelligent farm and implement the smart management via remote mobile devices.The MQTT protocol’snetwork port in intelligent farm can come true by coding to demo board and connecting external modules,so that the data in intelligentfarm can be transfered to servers and receive the commands from servers.By this way,the message exchange is more simple and conven-ient than others,which can attain intelligent control and timely feedback.Key words:intelligent farm;MQTT protocol;publish/subscribe mechanism引 言将智慧农场作为一个实际项目用来开发研究,就需要在硬件、所用协议这些方面作出选择,开发人员要根据实际情况,在考虑成本、功耗、可靠性和可操作性等方面提出较为优化的方案。在本文中,笔者选用的开发环境以STM32开发板作为基础,运用RS485总线及MODBUS协议将农场中各传感器串联后接入单片机,以外接的W5500模块实现STM32开发板到服务器的连接通信,最后采用MQTT协议实现农场数据的远程监控和命令接收,并通过STM32开发板上另一外接模块———继电器执行接收到的命令。开发环境连接结构概念图如图1所示。1 智慧农场及MQTT协议说明1.1 智慧农场简介智慧农场就是运用一系列嵌入式技术,如传感器技术、实时操作系统多任务技术、单片机技术、物联网技术等实现农场环境数据化并远程传输,保证了对农场情况的实时有效监控,更加利于农场中作物的生长。在智慧农场图1 开发环境连接结构概念图中,一切的行为基于数据,农作物的生长依靠数据监控,不同于以往依据经验对作物的环境进行选择或改变,如此标准化生产能够提供给作物最适合的环境,培养出最优质的作物。智慧农场是现代农业发展的必然趋势,它通过数据采集、数据处理、数据传输、数据应答这几个步骤,对农场环境有效监控并根据不同环境变化进行远程硬件控制来改变农场环境,使得农场决策更加智能有效,管理更加精准高效。1.2 MQTT协议简介MQTT协议是一个支持所有平台,几乎可以把所有联网物品和外部连接起来,通过特定的主题进行数据发布/订阅的工具。在智慧农场中通过该协议将传感器采集
 敬请登录网站在线投稿 2018年第9期   63   并汇集在STM32开发板上的各项数据在云服务器中进行发布,通过手机APP端进行订阅,实时远程监控各项数据。同时也可以通过手机APP端进行农场操作命令的发布,由STM32开发板进行订阅后对命令进行解析,控制农场中的硬件执行相应动作。MQTT协议中独特的发布/订阅模式使发布者与订阅者之间没有直接关系,不需要建立直接的连接,只需要通过同一个消息代理即可进行消息的通信,且在消息传输过程中发布者不会被锁定,订阅者也可以随时选择时间进行消息的订阅,使得消息的传输更加自由。在一定程度上来说,MQTT协议就如同电子邮箱,作为收件人与发件人交流的平台,提供了一个消息的容器,但却并不会妨碍双方的取出和继续放入。MQTT系统模型图如图2所示。图2 MQTT系统模型图2 智慧农场网络通信实现传感器数据在采集完成后均需通过RS485总线的传输传送到单片机上,由单片机进行数据的汇总后再打包通过网络发布,因此实现单片机的网络通信是MQTT协议移植实现的前提条件。由于STM32开发板并无网络模块,所以为了使其能够联网与服务器进行数据交互,在实际开发过程中需要外接一片W5500有线网络连接模块。W5500芯片是一款集成全硬件TCP/IP协议栈的嵌入式以太网控制器,为单片机提供了更加简单、快速、稳定、安全的以太网接入方案。其与STM32开发板采用SPI接口进行连接,然后借助TCP/IP协议,在已知服务器的IP地址及所用端口号的情况下,与服务器进行点对点的即时信息传输。农场网络通信这一部分的设计可以分为服务器通信和网络连接两个小模块,分别实现W5500模块通过TCP/IP协议与外接设备通信和W5500模块联网这两个功能。在开发初期可先使用计算机作为服务器,将W5500模块通过网线与计算机实现硬件连通,然后借用YAT软件实现计算机到服务器的模拟,将连接和通信过程可视化,在YAT软件端输出一串字符并通过回传机制再次在YAT中打印出来,测试W5500模块的传输功能是否实现,完成第一个小模块的设计。W5500模块传输功能测试图如图3所示。图3 W5500模块传输功能测试图  在确定W5500模块传输功能无误后,便可进入第二个小模块的设计。将W5500模块通过网线与农场中的路由器进行有线连接,使其能够通过网络远程连接云服务器,这个过程中可以采用PUTTY软件对远程云服务器是
64   Microcontrollers &Embedded Systems  2018年第9期www.mesnet.com.cn 否接收到消息进行监听。在PUTTY中登陆项目的云服务器,通过nc对该云服务器中在代码段内被设置的端口进行监听,同时也可在PUTTY中直接通过该端口向STM32开发板端发送消息,由W5500模块接收并在串口中打印回传。可参考WIZNET官网中的STM32+W5500实现客户端的代码,这样就完成了MQTT协议移植的前提工作。PUTTY软件监听服务器连接图如图4所示。图4 PUTTY软件监听服务器连接图3 MQTT移植实现图6 串口打印信息3.1 MQTT代码包移植在确认STM32开发板可经由W5500模块联网与云服务器进行通信后,即可开始做代码段中MQTT协议的移植了。MQTT协议的移植首先需要从eclipse paho中的Embedded MQTT C/C++Client Libraries中下载MQTT协议的代码包,将代码包中的MQTTClient及MQTTPacket文件夹以包的形式添加到W5500的工程中。MQTTClient包中只需包含原文件夹中名为MQTTClient.c和MQTTClient.h的文件即可,而在MQTTPacket包中则需包含原文件夹中src目录下的所有.c和.h文件。除此之外,MQT-TClient包中还需根据MQTTClient.c中程序的需要新编写一个.c程序及其对应的.h文件,根据项目实际情况可命名为MQTTInterface.c和MQT-TInterface.h,主要目的为对MQT-TClient.c程序中出现的函数及类进行定义,使其可以正图5 MQTT协议包移植图常使用。至此,MQTT协议的植所需要新添加的包及文件已添加完毕,但需要注意的是在进行MQT-TInterface.c和MQTTInt-erface.h的编写时需要耐心对照,认真剖析MQT-TClient.c文件中各个函数的功能和作用。MQTT协议包移植图如图5所示。3.2 主函数编写包移植完成后开始编写主函数,主函数编写可直接在W5500工程的main.c文件中完成。在原有基础上,将移植了MQTT协议后添加的库文件名加入头部,再将main函数中的自while语句开始的执行回环功能的代码部分进行删除。然后调用MQTT协议相关的MQTTConnect、MQTTSubscribe和MQTTPublish等函数,实现STM32开发板端对MQTT的连接和对MQTT协议发布/订阅的运用,并可在调用成功后加入打印的语句,将调用成功的信息通过串口打印进行提示。最后在main函数之前编写一个对接收到的消息进行打印的mes-sageArrived函数,messageArrived函数和main函数的编写都可借鉴之前下载的MQTT协议代码包中的MQTTClient-C目录下的sample目录中的MQTTEcho.c文件,至此便基本完成了MQTT协议基于STM32开发板的移植。串口打印信息如图6所示。
 敬请登录网站在线投稿 2018年第9期   65   3.3 移植实现测试在代码编写完成并且串口能将预设的信息进行打印时,便可使用MQTT.fx软件登陆云服务器对其进行MQTT协议的运用。MQTT.fx是一款常用的MQTT协议调试软件,包含了MQTT常见的发布/订阅两个选项,可在设置中输入自己的云服务器地址及发布/订阅的topic后进行连接。在这里可以通过MQTT.fx对STM32开发板端发布的各项传感器数据进行订阅,也可在发布选项中向STM32开发板端发布一些命令,由单片机端进行订阅后解析执行。MQTT.fx订阅单片机端数据图如图7所示。MQTT.fx发布命令图如图8所示。图7 MQTT.fx订阅单片机端数据图图8 MQTT.fx发布命令图结 语MQTT的设计思想是开源、可靠、轻巧、简单,这在一定程度上拓宽了其应用范围,而且由于开源,符合智慧农场中低成本的要求,且它拥有QOS0、QOS1和QOS2三种不同的服务质量,可以保证消息传输的可靠性,用户可在第一时间了解农场中的环境变化,以便尽快发布命令,由STM32开发板端控制农场中的硬件做出相应的操作。这就最大限度地保证了农场环境可以保持在最适合作物生长的各项数值范围内,同时也保证了各项资源81 
 敬请登录网站在线投稿 2018年第9期   81   节点容量=时段值-从节点上传数据用时任意两个从节点的最大时钟误差×时段值(1)数据采集周期≥时段值×节点容量(2)  以数据采集周期为12小时,时段值为1s,从节点上传数据用时600ms为例,任意两个从节点的最大时钟误差是基准误差的两倍,即5×10-6×2=10-5,由式(1)可得节点容量为40 000个;由式(2)可得节点容量≤43 200个。综合来看,这个无线采集网络的节点容量为40 000个。结 语本文讨论的无线采集网络具有硬件成本低、超低功耗、协议简单易用的特点,适用于小区域(半径小于500m)、采集周期较长、节点数量巨大的无线星型网线,在电力抄表、燃气抄表、无线水表热表等领域具有良好的适用性。参考文献[1]李树鲁.时分多址(TDMA)在点对多点无线通信系统中的应用[D].济南:山东大学,2005.[2]樊昌信,张甫翊,徐炳祥,等.通信原理[M].北京:国防工业出版社,2006.[3]安峡.小型化微处理机温度补偿晶体振荡器的研究[D].成都:电子科技大学,2006.[4]孙兴红.微处理机补偿晶体振荡器的设计[D].成都:电子科技大学,2005.[5]张新政.现代通信系统原理[M].北京:电子工业出版社,1995.[6]黄亚平.信道的复用技术与多址技术[J].电子工程师,2000(11).[7]洪家平,董武世.基于嵌入式系统的时分多址通信协议的实现[J].微计算机信息,2005(7).[8]钟晓峰,王有政,梅顺良,等.基于时分系统的无线自组织网络同步算法[J].清华大学学报:自然科学版,2005(1).崔永旭(中级工程师),主要研究方向为电力电子、嵌入式设备开发。(责任编辑:杨迪娜 收修改稿日期:2018-05-14)27 [6]周伟,杜玉晓,杨其宇.FPGA跨时钟域亚稳态研究[J].电子世界,2012(3):87-89.[7]胡昌顺,高嵩,吴春瑜,等.SoC设计中多bits数据跨时钟域的解决方法[J].辽宁大学学报,2011,38(1):11-15.[8]王杰,王诚,谢龙汉.Xilinx FPGA/CPLD设计手册[M].北京:人民邮电出版社,2011:297-299.[9]Steve Kilts.高级FPGA设计:结构、实现和优化[M].孟宪元,译.北京:机械工业出版社,2009:22-25.[10]唐辉艳,李绍胜.FPGA设计中跨时钟域同步方法的研究[J].铁路计算机应用,2011,20(2):43-47.[11]王晓婷.跨时钟域设计方法研究[D].西安:西安电子科技大学,2012.[12]熊红兵,陈琦.基于FPGA的异步FIFO设计与实现[J].微计算机信息,2006,22(6-2):216-218.[13]黄忠朝,赵于前.一种实现高速异步FIFO的FPGA方法[J].计算机工程与应用,2010,46(3):13-15.[14]王娜,孙钰林,袁素春,等.一种多输入情况下FPGA跨时钟域的解决方法[J].空间电子技术,2014(4):74-76.[15]梁骏,唐露,张明.基于随机延时注入的跨时钟域信号验证方法[J].微电子学与计算机,2014,31(2):1-4.宋文强(工程师),主要从事软件可靠性测试和FPGA验证技术研究。(责任编辑:薛士然 收稿日期:2018-05-25)65 的高效利用,从而实现智慧农场的开发目标。并且因为MQTT协议无需订阅者与发布者进行直连,这在一定程度上降低了农场设备随时进行消息传输的功耗,增强了农场通过移动设备进行远程操控的可行性。MQTT协议作为一个为低带宽和不稳定的网络环境中的物联网设备提供可靠网络服务的传输协议,非常适合用于智慧农场项目。随着智慧农场的不断普及和推广,相信在未来将MQTT协议与智慧农场技术相结合必将成为智慧农场开发的一大趋势。参考文献[1]陈兴,翟林鹏.智慧农场信息化应用研究[J].农业网络信息,2014(1):11-13.[2]姚丹,谢雪松,杨建军,等.基于MQTT协议的物联网通信系统的研究与实现[J].信息通信,2016(3):33-35.[3]陈学泉,关宇东.嵌入式TCP/IP协议单片机技术在网络通信中的应用[J].电子技术应用,2002(8):48-49.(责任编辑:薛士然 收稿日期:2018-06-25)
分享到:
收藏