单片机学习小组
直播中

杨丽

7年用户 1298经验值
私信 关注

在nodemcu间可以通过MQTT协议进行消息传输吗

nodemcu是什么?有哪些特点呢?
在nodemcu间可以通过MQTT协议进行消息传输吗?

回帖(1)

李宁

2022-2-15 11:30:03
nodemcu介绍

nodemcu是一款开源快速硬件原型平台,包括固件和开发板,用几行简单的Lua脚本就能开发物联网应用。特点包括开源,交互式,可编程,低成本,简单,智能,WI-FI硬件。
最新版的nodemcu开发板是基于ESP-12E的,具有GPIO、PWM、I2C、1-Wire、ADC等功能。
实物图

新版引脚图

更对关于nodemcu的介绍可以参考其中文官网,或者其在Github上的地址
nodemcu固件定制

nodemcu采用Lua脚本作为编程语言,在使用之前需要定制需要使用的模块,比如gpio,wifi,net,mqtt等,更多模块介绍和使用请参考nodemcu的API文档
项目中给出了三种定制固件的方法,这里采用最简单的一种,云定制,可以访问云定制网站通过以下步骤来定制。

  • 填写邮箱以便接收定制好的固件;
  • 选择分支,这里选master;
  • 勾选需要定制的模块,这里选择勾上cjson, file, gpio, mqtt, net, node, tmr, uart, wifi;
  • 勾上加密传输;
  • 点击按钮提交,开始编译固件。

登陆你填写的邮箱,大概十分钟左右就能接受到邮件,告诉固件和下载工具的下载地址


下载固件到nodemcu

这是使用ESP8266Flasher来下载固件,打开软件后,在“config”中选择要下载的固件。在“operation”中选择串口号,点击“flash”即开始下载。

上传脚本到nodemcu

为了查看效果,这里需要专用串口调试软件ESPlorer,打开软件后,选择串口号和波特率,点击“open”开始连接,点击开发板上的复位按钮,软件中打印出固件的一些信息。


在左边的编辑区中新建脚本文件“mqtt.lua”,编辑脚本如下

点击“save to esp”完成脚本上传。
使用相同方法将“mqtt.lua”脚本上传到另一块开发板上,为了区别,最好将客户端id修改一下,这里修改成“nodemcu2“。
连接MQTT服务器并测试

在服务器上开启代理服务
mosquitto -v
在开发板1和2上再次执行”mqtt.lua”,确保连接服务器成功,如下


在右下角的命令框中输入
m:subscribe("blinkdr",0, function(conn) print("subscribe success") end)
并点击”send”发送命令到开发板,实现对主题”blinkdr”的订阅成功。分别对开发板1和2执行以上操作。

在开发板2的命令框中输入
m:publish("blinkdr","hello from nodemcu2",0,0, function(client) print("sent") end)
并发送命令,推送消息”hello from nodemcu2”到主题”blinkdr”,则所有订阅了该消息的设备都能接收到该消息。

同理可以从开发板1发送一条”hello from nodemcu1”到主题”blinkdr”。
则最终开发板1收到的效果如下

开发板2收到的效果如下

而服务器端的效果如下

总结

从以上的实际操作中可以看到,在nodemcu间可以通过MQTT协议进行消息传输。当然,不仅仅是nodemcu之间,还可以是其它可以实现mqtt协议的客户端,比如说安卓手机等嵌入式设备。举一个例子,在安防应用中,如果有nodemcu的烟雾传感器节点,如果有报警发生,可以推送消息到订阅该主题的手机,那么从手机上就能立马知道发生了报警,并做出相应处理。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分