单片机学习小组
登录
直播中
杨丽
7年用户
1289经验值
私信
关注
在nodemcu间可以通过MQTT协议进行消息传输吗
开启该帖子的消息推送
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的烟雾传感器节点,如果有报警发生,可以推送消息到订阅该主题的手机,那么从手机上就能立马知道发生了报警,并做出相应处理。
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的烟雾传感器节点,如果有报警发生,可以推送消息到订阅该主题的手机,那么从手机上就能立马知道发生了报警,并做出相应处理。
举报
更多回帖
rotate(-90deg);
回复
相关问答
MQTT
协议
怎么使用Paho来实现和
MQTT
服务器的基本通信?
2019-09-11
8097
MQTT
是什么?
MQTT
协议
的特点有哪些
2021-09-29
1482
如何
通过
PC与350个
NodeMCU
进行
通信?
2023-05-15
148
求分享连接esp8266
nodemcu
与IoT AWS
Mqtt
服务的示例代码
2023-04-27
151
什么是
MQTT
?
MQTT
功能介绍
2021-03-30
2304
Nodemcu
在
使用
MQTT
和dsleep时卡住了的原因?
2023-05-09
113
使用
mqtt
协议
通过
esp从我的控制器推送数据,有时会包含一些无效垃圾怎么解决?
2023-05-08
150
请问
MQTT
协议
的整个通信流程是怎样的?
2021-10-27
1378
MQTT
协议
及其应用开发介绍
2021-09-24
1398
MQTT
协议
和EDP
协议
该怎么选?
2023-11-09
188
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分