温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
2023
基于
MQTT
协议
远程
路灯
控制系统
设计
基于基于 MQTTMQTT 协议的远程路灯控制系统的协议的远程路灯控制系统的设计设计 【摘要】近年来随着信息数据产业的迅速发展,使得数字经济掀起了很高的的浪潮。人工智能,虚拟现实,物联网,车联网等技术也相继行驶在了信息高速路上。能源的消耗也越来越备受人们的关注,因此节能减排势在必行,本文介绍一种使用 IBM 公司的 MQTT 协议制作的远程路灯控制系统并进行设计,经过初步实验与设计能够实现手机对路灯进行实现远程开关控制,从而达到节能的目的。1.系统设计 整個系统设计构想如图一所示,远程路灯控制系统主要由 MQTT 协议手机客户端,WiFi 无线收发路由器,Mosquitto MQTT 服务器,安信可推出的 ESP8266-12F WiFi 模组,继电器控制模组以及路灯组成。当手机客户端向服务器发布主题为/mqtt/led,消息为 LED=1 并且 ESP8266 组成的 MQTT 客户端订阅主题为/mqtt/led 的时候,服务器通过无线路由器向 ESP8266 模组推送 LED=1 的消息,ESP8266 模组发出指令使继电器吸合从而打开路灯,当手机客户端发布主题为/mqtt/led 消息内容为 LED=0 的时候,ESP8266 模组接受到消息后经过处理发出指令使继电器释放从而关闭路灯,以这样的方式实现对路灯高效方便的控制管理。2.MQTT 协议及 MQTT 服务器搭建 MQTT 协议是 IBM 公司推出的一种可以以 TCP/IP 为基础的轻量级,低速率的传输协议,此协议可以在现有的网络协议上运行起来,不用再部署新的网络就能使用,在物联网中大多数需要传输的数据都非常小,而且大多数的终端嵌入式设备的运算处理能力非常有限网络吞吐量等性能都不是很可靠,低速率的 MQTT协议很适合来做数据传送,MQTT 协议实现流量开最小化,最小只有两个字节,降低了流量的消耗。MQTT 协议具有三种质量的消息发布标准即:只有一次,至少一次,至多一次的 QOS 质量标准适合在不同的场合下使用。关于 MQTT 服务器的种类也有许多例如 EMQ 百万级的开源服务器,apache-apollo MQTT 服务器以及 mosquitto 服务器等,为了简便实用本实验采用 mosquitto 轻量级 MQTT 服务器。首先在 Eclipse 官方网站上下载 moquitto 安装包,下载完毕后双击mosquitto 的 exe 可执行文件根据提示点击下一步直到安装完成,然后将安装包里面的 pthreadVC2.dll 文件复制粘贴到 mosquitto 的安装目录下面,最后将安装的 SSL 下的两个文件 libeay32.dll 与 ssleay32.dll 复制下来粘贴到mosquitto 安装目录下,这样就完成了 MQTT 服务器的安装。3.ESP8266WiFi 模组及 MQTT 客户端的搭建 ESP8266 是一款物美价廉的 Wi-Fi 芯片,集成 Tensilica L106 钻石系列的 32 位处理器和片上 SRAM,多达 17 个 GPIO 口,并拥有 IIC、IIS、UART、PWM、IR遥控等片上资源。还有一个重要的宏定义CFG_HOLDER,因为这个 MQTT 示例在 ESP8266 运行过一次后会把这些信息保存到 FLASH 中,如果要继续修改这些信息,记得要修改 CFG_HOLDER 这个宏定义,改成另一个数值即可。不修改CFG_HOLDER 的话可能会发觉明明用户名和密码都正确但是就是连接不上去。根据上面分析,下面我们就可以修改示例代码:1.把 STA_SSID 和 STA_PASS 修改为自己的 WiFI 名和密码;2.修改 MQTT_USER 和 MQTT_PASS 为对应的 MQTT 服务器的用户名和密码,3.修改 MQTT_HOST 和 MQTT_PORT 为 MQTT 服务器 IP 和 PORT,目前是使用本地的 MQTT 服务器,所以是修改为自己电脑的 IP 和 1883 端口,PORT 是整型值;4.根据 MQTT 服务器的协议不同,可能需要使用 MQTT v3.1.1 版本,所以把 PROTOCOL_NAMEv31 注释掉,使用 PROTOCOL_NAMEv311。源码的PROTOCOL_NAMEv311 前面没有#define,自己加上就行。5.修改 CFG_HOLDER,以让这些配置生效,直接给原来 CFG_HOLDER 定义的数值加 1 即可。6.修改订阅主题为/mqtt/led,将函数回调部分程序修改成当接收到消息内容为 LED=1 时GPIO4 输出低电平,当接收到消息内容为 LED=0 时 GPIO4 输出高电平。最后进行编译下载:编译,查看 Console 窗口,如果没有报错并且生成了 bin 文件,说明代码已经编译成功。另外要注意,ESP8266 SDK v2.0 版本生成的eagle.irom0text.bin 烧写起始地址是 0 x10000,而之前的版本烧写地址是0 x40000;eagle.flash.bin 还是 0 x00000。由于本实验使用的是 4MB Flash 的ESP8266,所以也建议确定手头的 ESP8266 是不是 4MB Flash(即 32Mbit Flash,注意单位!4MB=32Mbit,Flash 一般是以 bit 计算!)。4.系统整体测试 完成了 MQTT 服务器安装以及搭建好 ESP8266 客户端后,将服务器开启运行,ESP8266WiFi 模组与继电器模组连接起来,再将继电器模组与灯具连接上,打开 ESP8266 的电源开关,开启无线路由器,这时候 ESP8266 会通过无线路由器连接上 MQTT 服务器,打开手机上的 MQTT Client 软件,输入无线路由器的密码,以及 MQTT 服务器的 ip 地址端口号点击连接,这样手机端就与 MQTT 服务器建立了连接。在手机端的主题栏目输入/mqtt/led,消息栏目输入 LED=1,点击发送这时候继电器吸和灯亮,反之在消息栏目输入 LED=0,点击发送这时候继电器释放灯灭,系统测试完成。结束语 手机移动终端对路灯设备的控制非常方便只要有网络的地方就可以实现远程控制,能提高对路灯的管理效率,也有实现节约电能的目的,具有广泛的应用前景。参考文献:1王浩,浦灵敏,物联网技术应用开发(M).北京.中国水利水电出版社.2014 2刘火良,杨森,STM32 库开发实战指南(M).北京.机械工业出版社.2013 作者简介:谢祥兵,1991 年 2 月,男,汉,籍贯:重庆市江津区,职称:助理实验师,学历:本科单位:重庆师范大学涉外商贸学院教务处实践教学管理科,研究方向为电子科学与技术,物联网,单片机应用与开发。