从零开始开发物联网项目(5)——用ESP8266作Mqtt客户端

在前几节我详细介绍了Mqtt协议的具体实现,使用了网络调试助手来作为客户端进行数据的收发。在这一节我们将使用最常见的WIFI模块ESP8266来作为客户端进行Mqtt数据的收发。我使用一个USB串口模块连接ESP8266,在电脑端使用串口调试助手通过AT指令控制ESP8266。下面来看看具体的实现过程吧。

(1) ESP8266与电脑的连接

ESP8266有很多型号,我使用的是最基本的ESP8266-01
从零开始开发物联网项目(5)——用ESP8266作Mqtt客户端_第1张图片
从零开始开发物联网项目(5)——用ESP8266作Mqtt客户端_第2张图片
这个模块很便宜,某宝上卖不到10块一个。它一共有8个管脚,具体的管脚名称如图。为了连接电脑,我们还需要一个USB串口模块,我用的模块:
从零开始开发物联网项目(5)——用ESP8266作Mqtt客户端_第3张图片
同样很便宜的模块,某宝上5块不到。

接下去就是连接这两个模块,理论上应该是

Esp8266 usb串口模块

Vcc ------------- 3V3

CH_PD ------------ 3V3

GND ------------- GND

URXD ------------- TXD

UTXD ------------- RXD

不过很可惜,由于esp8266工作时耗电量比较大,我这个USB串口模块的3V3端口供电不足,导致esp8266无法正常工作,所以需要外接两节干电池来供电,连接方式如下

Esp8266Vcc ------电池正极

Esp8266CH_PD --电池正极

Esp8266GND --电池负极-- usb串口模块GND,

Esp8266URXD ----usb串口模块TXD

Esp8266UTXD ----usb串口模块RXD

注意电池负极、esp8266的GND和USB串口模块的GND要连在一起共地。干电池要两节串联哦!

连接时最好先断开电池正极连线,待USB串口模块插到电脑后再接入电池正极,主要为了防止串口热插拔损坏,所以先插上串口再通电,要拔出时也最好先断开电池再拔出USB串口模块。

(2)使用串口调试助手控制ESP8266

打开串口调试助手,我这个是买lora模块是商家给我的,还挺好用,大家可以自己去百度了搜索下载,不一定非要这种,其他的也可以。选择好USB串口模块对应的COM号,波特率选择115200,然后点击“打开串口”,然后再单条发送里输入AT,发送新行打勾,再点击发送按钮,可以看到返回了“OK”,说明模块正常。
从零开始开发物联网项目(5)——用ESP8266作Mqtt客户端_第4张图片
接下去我们要开始设置ESP8266,此时可以使用多条发送界面,这样多次输入时可以方便一些。

这个模块可以设置很多功能,我这里不一一介绍了,只挑我们用的到的,因为要连接Mqtt服务器,而Mqtt服务是附着在TCP协议上的,所以要将ESP8266设置成TCP Client透传模式,具体要用到的指令如下:

1、 AT+CWMODE=1 设置模组为STA模式。

2、 AT+CWLAP 查询附近 WIFI

3、 AT+CWJAP="***","***" 连接WIFI路由器,用户名和密码自己填

4、 AT+CIFSR 查看路由器分配给模组的IP地址,例如192.168.43.103

5、 AT+CIPMUX=0 设置单连接

6、 AT+CIPMODE=1 设置透传模式

7、 AT+CIPSTART=“TCP”,“10.0.0.252”,1883 连接服务器,IP地址就是之前网络调试助手用到过的,端口1883也与之前相同

8、 AT+CIPSEND 开始发送数据

(前面的指令全部要选择发送新行)

9、 +++ 退出透传,直接发送。注意要取消发送新行

将这些指令写在多条发送里方便操作
从零开始开发物联网项目(5)——用ESP8266作Mqtt客户端_第5张图片
依次点击0-7按钮(注意2对应的******要填入你自己的路由器名称和密码,6对应的IP地址和端口号也要填入你自己的,还要注意先启动emqx哦,我第一次忘记启动了,所以失败了,启动后就连接成功了)。
从零开始开发物联网项目(5)——用ESP8266作Mqtt客户端_第6张图片

(3)用ESP8266作为Mqtt的客户端

按了7输入了AT+CIPSEND后就会返回“>”,此刻已经进入了透传模式了,也就是说接下去的操作就等同于我们之前在网络助手里操作一样了。我们在多条发送里再添加一个页码,将上两节课要用到的指令先写在里面,注意取消发送新行,16进制发送打勾,16进制显示也打勾!打完勾发现原来的字符全变成16进制了。
从零开始开发物联网项目(5)——用ESP8266作Mqtt客户端_第7张图片
先清除接收,然后就可以按照之前的指令进行测试了,我“10”里填的是连接Mqtt服务器的指令,“11”里是发布主题“s”的消息“h”,“14”里是订阅主题“r”的消息,你想测试什么就先实现填好,然后点击对应的数字按钮即可。
从零开始开发物联网项目(5)——用ESP8266作Mqtt客户端_第8张图片
好了,此时的ESP8266模块其实已经成为了Mqtt的一个客户端了,虽然现在还需要通过电脑端的串口调试助手来控制它,不过下一节马上就会使用Arduino来控制了。
测试完毕后,发送e0 00断开Mqtt连接,然后再回到上一个多条发送界面,取消16进制发送和16进制显示,点击“+++”对应的数字按钮;之后再选中发送新行,发送“AT”,看看此时模块是否又回到了AT指令模式。在透传模式下,无论你输入什么都会被发送到服务器端,只有发送不带新行发送的“+++”才能退回到AT模式。
从零开始开发物联网项目(5)——用ESP8266作Mqtt客户端_第9张图片
好了,ESP8266就介绍到这里,这一节我们通过AT指令连接上TCP服务器,然后又在透传模式下连接Mqtt服务器和订阅发布消息,虽然都是通过电脑端指令来控制的,不过下一节我们就将这个工作交由Arduino来完成,实现TCP自动连接和Mqtt数据的自动发送。

你可能感兴趣的:(物联网)