【0基础可看】开源全流程解析:基于新版百度云的ESP8266和MQTT.fx点亮LED灯【小白轻松复现】【物联网专业毕设参考】

一.背景简介

1.新版百度云简介 

        百度智能云致力于为企业和开发者提供全球领先的人工智能、大数据和云计算服务,加速产业智能化转型升级。

网址:

百度智能云-云智一体深入产业百度智能云致力于为企业和开发者提供全球领先的人工智能、大数据和云计算服务,加速产业智能化转型升级https://cloud.baidu.com/

     相较于老版百度云,新版百度云在界面结构,相关名词的定义,连接的流程都有很大不同。CSDN上很多老贴都是基于老版百度云,导致很多新手完全对不上,看的云里雾里。基于此点,本文从新版百度云出发,阐述了ESP8266,MQTT.fx通过物联网进行互联的例程。

2.ESP8266简介

        ESP8266是一款功能强大、成本低廉的Wi-Fi模块,广泛应用于物联网项目。由Espressif Systems开发,集成了带有内置Wi-Fi功能的微控制器,为无线通信提供了紧凑的解决方案。其低成本、易用性以及庞大的社区支持使其在从家庭自动化到工业物联网等各种应用中备受欢迎。该模块支持使用C和Arduino等语言进行编程,适用于初学者和经验丰富的开发人员,为其在物联网生态系统中的广泛应用做出了贡献。

3.MQTT.fx简介

        MQTT.FX是一个用于MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)协议的桌面客户端工具。

        MQTT.FX提供了一个直观、易于使用的界面,用于与MQTT代理进行通信,并测试和调试MQTT消息传递。它支持发布(Publish)和订阅(Subscribe)MQTT主题,可以显示消息的内容、QoS(服务质量)级别、保留标志和其他相关数据。MQTT.FX还提供了一些辅助功能,如连接管理、多个会话支持、日志记录、SSL/TLS加密等。它还支持MQTTv3.1和MQTTv5.0协议版本,并且可扩展以适应许多不同的网络和代理配置。

        总而言之,MQTT.FX是一个方便的MQTT协议客户端工具,旨在帮助开发者进行MQTT消息传递的测试、调试和监控。

4.通信流程

        百度智能云作为物联网平台,负责中继ESP8266和MQTT.fx之间的通信。ESP8266和MQTT.fx通过向百度智能云订阅相同的主题topic,在规则设置的基础上进行通信。其中MQTT.fx作为上位机通过百度云向ESP8266发送指令并接收其反馈消息;ESP8266作为功能模块,实现MQTT.fx所要求的功能并给与其反馈。整个通信流程如下图所示:

二.准备工作

本例程采用的硬件与软件编程环境有:

1.ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板

资料地址: https://pan.baidu.com/s/1n8gJToN1acbyyiwZ5Jvcsw 

提取码: ni62

        如下图所示,上面的是NodeMCU 底座,方便接入6V~24V直流电源(采用USB供电方式也可不用此底座);下面的是NodeMCU开发板,有各类的USB接口可选,如Micro和TYPE-C接口等。注意:NodeMCU模块需要直接连计算机的USB接口,不能连在USB转接集线器(hub)上,否则会造成USB无法识别或者串口助手总是连上就掉线等问题,而且最好使用TB卖模块专用的USB-MICRO线,亲测用自己的USB-MICRO线计算机不能识别NodeMCU。

2.安信可(AIthinker-SDK)IDE v0.5环境进行开发

链接:https://pan.baidu.com/s/1FZcyE55PPOJXgaEMdeCJEA?pwd=fd37 
提取码:fd37

新版的v1.0和v1.5 IDE环境会编译错误!请下载v0.5环境进行开发!

        本例程采用安信可提供的SDK开发环境进行开发(其实就是个文件包,包含了许多开发必要的函数接口和宏定义等等),感兴趣的可以自行学习。本例程最后会直接提供代码,按照步骤修改后会成功连上百度云进行物联网操作,无需深入了解。

开发界面如下图所示:

3.mqtt.fx客户端工具

官网下载链接:Download – Softbladehttps://softblade.de/download/

可以使用官网下载的最新版进行实验。本例程用的是v1.7.0版本

安装好后的界面如下图所示:

4.源代码、串口助手及flash烧录工具 

源代码是基于B站技新科技代码优化而来,特此声明!

链接:https://pan.baidu.com/s/1l_ESU2Ykdvt713j5DMeiHg?pwd=8266 
提取码:8266

三.设置新版百度云

 1.注册账号

      1)  如图,点击右上角免费注册

      2)  进入下面页面,输入用户名账号和手机号验证码,完成注册。

        3)注册完成后,自动进入个人认证页面,根据提示完成人脸身份验证,注意不进行实名认证会导致功能受限,在这里还是尽量别嫌麻烦尽量完成。

        4)认证完成后点击我已完成刷脸。

        至此,账号注册成功完成。

 2.开通服务

        1)完成人脸认证后,会自动跳转到智能云主界面,依次点击左上角内容符号,在里面找到物联网服务下的物联网核心套件 IoT Core

        2)来到控制台界面,点击立即开通

        3)显示开通成功,点击控制管理台

         至此,账号开通服务完成。 

3.配置百度云

3.0 名词解释      

        由于各个平台对物联网套件的不同定义,使用的名词也有所不同,这也让初学者很是头疼。更甚者百度平台还会定期不定期修改升级名词和系统,弄的人摸不着头脑,下面是新版度云平台的逻辑概述图以及对名词的通俗解释:

        如果将这些套件比作是一个路由器下局域网,以下是对这些名词的通俗解释:

        1)实例——路由器

        实例相当于一个路由器,下面连接着设备1,设备2……设备N。负责消息的发布、订阅topic,设备之间的路由信息规则制定,消息的转发等等。

        2)设备——手机

        设备是云下设备实体,这里以手机为例,负责接收由路由器转发的消息。在本例程中,设备指的是ESP8266和MQTT.fx。

        3)模板——APP

        模板就是一系列发布的主题topic集合。在这里可以理解成APP。比如你在抖音里关注了某位主播,这就相当于订阅了这个topic,这个主播发布新的视频你都会收到推送到你的手机上。本例程中,模板相当于ESP8266控制的LED开灯关灯功能SW_LED。

        4)规则——路由表

        规则规定了消息的转发路径,也就是路由表。比如希望设备1和设备2进行通信,就要设置设备1可以接收设备2的消息,设备2可以接收设备1的消息。

3.1 创建实例

        1)在控制台中点击实例列表,创建IoT Core

        2)选择按需付费,点击左下角确认购买

        3)输入名称,可以随便取一个名字,就是实例的名称,点击确认购买

        4) 创建成功。

        至此,创建实例成功完成。 

 3.2 创建模板

        1)点击上图创建好的实例ESP8266_MQTT,进入如下界面,依次点击模板添加模板

        2)弹出的串口中输入模板名称,首先创建ESP8266的topic。

        3) 创建成功,列表出现模板的名称。

         4)点击创建好的模板IoT_topic,进入如下界面,点击添加主题

        5)弹出的列表中选择高级模式(标准模式容易订阅失败),给主题起个名字,一般以其实现的功能命名,这里起名为SW_LED,同时勾上发布和订阅。一定要记住该名称,因为后面ESP8266程序与MQTT.fx都需要在订阅时都需要输入这个主题的名称!

        6)列表中出现刚刚建立的模板,创建模板成功。

        7)继续添加MQTT的模板,步骤与上面相同,topic也为SW_LED。建立好后如下。

        至此,创建模板成功完成。 

3.3 创建设备

        1)点击返回,回到ESP8266_MQTT实例列表,点击设备列表新增设备

        2)输入设备名称,以实体设备名命名,选择密钥认证,选择刚刚建立的模板IoT_topic_ESP8266,点击提交

        3) 弹出设备的key设备的密码注意这两条一定要记住,后面生成mqtt账号密码需要用到!

        4) 设备列表中出现刚才建立的设备。 

 

        5)相同的方法建立第二台设备MQTT.fx,注意模板是IoT_topic_MQTT,同样记住设备的key和设备的密码! 添加完成后如下。

3.4 创建规则

        1)实例界面内依次点击规则列表创建规则

        2) 规则取名,名字随便取,不过按路由方式取名更容易理解,如ESP8266到MQTT的传输起名为ESP8266_MQTT_COM,MQTT到ESP8266的传输起名为MQTT_ESP8266_COM。

        3) 列表显示刚刚建立的规则。

        4)点击编辑调试,进入配置界面。

        5) 进入配置界面,在数据来源中点击获取topic模板,因为是交互通信,所以ESP8266的数据来源是MQTT,如图进行选择。

        6) 在数据目的地中点击添加目的地,弹出的串口中的topic选择刚刚建立的topic SW_LED,其他选项默认,点击左下角保存

        7) 相同方法创建新规则MQTT_ESP8266_COM,配置MQTT到EPS8266的传输路径。

        8) 点击启用,状态显示运行中。

        至此,创建规则成功完成。新版百度云配置至此完成。 

3.5 消息套餐

        百度云提供了100万条/月的免费消息流量,足够初学者使用。注意消息的计算方式是以百度智能云接收和转发的消息总量为计算单位,既包括上行消息也包括下行消息,即既包括接收消息也包括转发消息。比如ESP8266向MQTT.fx通过订阅的消息发送了一条反馈信息,这个过程是百度云先接收了ESP8266产生的消息,然后转发给MQTT.fx,所以实际计算量是2条消息。当每条消息不超过512Bytes,算作一条消息,超出这个数值,每512Bytes算作1条消息。

 四.MQTT连接计算

  1.获取设备的连接信息

        第三章红字强调了设备的连接信息IoTCoreId、DeviceKey、DeviceSecret的重要性。下面开始获取这三项。

        1)在实例界面点击设备MQTT,进入设备信息界面。

        2)复制MQTT设备的IoTCoreId、DeviceKey、DeviceSecret信息到记事本。

         3)相同的操作复制ESP8266的IoTCoreId、DeviceKey、DeviceSecret信息到记事本。

2.生成MQTT连接信息

        上述的IoTCoreId、DeviceKey、DeviceSecret并不是真正的MQTT连接信息,百度云通过加将上述三项进行一定的加密算法才获得真正的MQTT连接信息。加密网站如下:

MQTT 连接信息计算器 – 百度天工 IoT Core (bcebos.com)https://iotcore-dev-tool.gz.bcebos.com/mqtt-sign/       1)  打开上述网页,将刚刚保存在记事本里的IoTCoreId、DeviceKey、DeviceSecret数据复制到对应的选项中。注意地域选广州(博主在山东,本以为服务器在北京,结果始终无法成功连接,MQTT.fx报错MQTTException,切换为广东后此问题解决),别的地域根据实际情况选择。

        2) 保存生成的 Broker 地址、MQTT 用户名、MQTT 密码、ClientID到记事本。重复操作,将ESP8266和MQTT的连接信息全部保存到记事本。

        至此,MQTT必要的登录信息获取完成。

五. MQTT.fx上云

        MQTT在本例程中的作用是上位机,通过向ESP8266发送约定的指令实现相应功能(点亮关闭LED)

         1)打开MQTT.fx,点击齿轮图标进行设置。

        2)根据记事本的内容进行配置。注意Broker Port1883,其他自由命名。 

         3)配置完后点击Apply。回到主界面,点击Connect如果右边图标为绿色,则表明成功连接上百度云。

        至此,MQTT.fx配置成功完成。 

六. ESP8266上云

1.导入文件并配置

       1)解压下载好的程序文件ESP8266_MQTT.rar

       2)打开安装好的安信可(AIthinker-SDK)IDE v0.5环境,在左边列表串口右键->Import

       3)选择Existing Code as Makefile Project.,点击Next

        4) 按图中选项进行配置。

2.修改必要上云配置

        1)这里只需要配置ESP8266_MQTT->esp_mqtt_proj->mqtt文件夹下的mqtt_config.h文件。

        2) 根据图片和代码备注提示,输入ESP8266的MQTT的登录信息

        3) 修改完成后,点击左上角保存按钮。右键ESP8266_MQTT项目,点击Clean Project

        4)继续右键ESP8266_MQTT项目,点击Build Project进行编译。

         5)编译完成后,控制台出现下列表示编译成功。

3.文件烧录 

        打开烧录软件,按照下面配置进行烧录。烧录的两个文件分别是ESP8266_MQTT->bin文件夹下的eagle.flash.bineagle.irom0text.bin文件

七. ESP8266与MQTT通信 

      1.MQTT端

        1)正确连接后,在Subscribe订阅SW_LED主题,订阅消息不计入消息流量。这时按下NodeMCU上的Rst复位键,经过一段时间后,MQTT.fx收到ESP8266发来的ESP8266_Online消息,说明NodeMCU ESP8266->MQTT.fx这条上行路径已经打通。

        2)在Publish界面填入SW_LED,在发送框内LED_ON指令,

        3)小灯成功被点亮(LED接在GPIO_4口,即底座的D2口)。说明收到NodeMCU ESP8266收到MQTT.fx发来的LED_ON指令,说明MQTT.fx->NodeMCU​​​​​​​ ESP8266这条下行路径也已经打通。

2.ESP8266端

        ESP8266向串口打印了正确信息。

        至此,全部功能得以实现。 

八.总结

        本例程成功完成ESP8266与MQTT.fx通过新版百度云的物联网通信。后续将在硬件上添加更多的传感器与交互工具,在软件上加入更复杂的逻辑算法,进一步将功能完善化。

物联沃分享整理
物联沃-IOTWORD物联网 » 【0基础可看】开源全流程解析:基于新版百度云的ESP8266和MQTT.fx点亮LED灯【小白轻松复现】【物联网专业毕设参考】

发表评论