使用WIFI模块与MQTT服务器进行透传数据通讯(M0E1系列)

前言

M0E1系列模组,是基于ESP8266开发的WIFI模块。经过固件的不断迭代,目前已经演化出两个版本的标准固件,其中之一就是MQTT的透传固件。使用M0E1系列模块的MQTT透传固件,可以通过AT指令设置保存后实现开机MQTT数据的透传,可以方便的将数据直接发送到阿里云物联网套件百度天工IOT HUB或者自己搭建的MQTT服务器上。

注意:模块出厂默认波特率为57600,模块串口工作模式有两种,一是AT指令模块,二是透传模式,模块默认为透传模式。

具体步骤

进入AT指令模式

通过串口工具入模块输入+++(3个字节),当模块输入a以后在3秒内往模块输入a(1个字节),模块输出+ok,则表示模块则进入了AT指令模式。

配置相应的AT指令

注意:AT指令在输入时,必须结尾带回车换行,C语言中则为“\r\n”。
1.设置WIFI模块工作模式

设置返回
AT+WMODE=STA+ok
查询返回
AT+WMODE+ok=STA(模式有:APSTA,STA,AP)

2.设置连接路由器的账号和密码

设置返回
AT+WJAP=APtest,12345678+ok(APtest为路由器的AP,12345678为路由器的密码)
查询返回
AT+WJAP+ok=APtest,12345678 (APtest为路由器的AP,12345678为路由器的密码)

3.设置透传发布号

设置返回
AT+MPT=1,testmqttsend+ok (1:QOS1,testmqttsend为发布号)
查询返回
AT+MPT+ok =1,testmqttsend(1:QOS1,testmqttsend为发布号)

4.设置透传订阅号

设置返回
AT+MST=1,testmqttrecv+ok (1:QOS1,testmqttrecv为订阅号)
查询返回
AT+MST+ok =1,testmqttrecv(1:QOS1,testmqttrecv为订阅号)

5.设置登陆用户名

设置返回
AT+MUSER=user+ok
查询返回
AT+MUSER+ok =user

6.设置登陆的密码

设置返回
AT+MPASS=password+ok
查询返回
AT+MPASS+ok =password

7.设置CLIENT ID

设置返回
AT+MCID=client_mqtt_test_001+ok
查询返回
AT+MCID+ok=client_mqtt_test_001

8.设置LAST WILL MSG

设置返回
AT+LWT=lwt,offline+ok
查询返回
AT+LWT+ok=lwt,offline

注意:当模块掉线以后,并未再上线,服务器将往lwt的主题发送offline的数据内容。

9.连接MQTT服务器

设置返回
AT+MSOCK=1883,mqlinks.tpddns.cn+ok
查询返回
AT+MSOCK+ok=1883,mqlinks.tpddns.cn

注意:我们将提供一个永久免费的服务器,域名mqlinks.tpddns.cn,此服务器是没有用户名和密码的,只方便大家用于测试,请勿用于商用。

10.设置串口波特率

设置返回
AT+UART=115200,8,1,NONE,NFC+ok
查询返回
AT+UART+ok=115200,8,1,NONE,NFC

注意:串口设置完毕以后会回立刻生效,请使用新的波特率进行通信。

11.保存并重启

设置返回
AT+Z+ok

注意:至些模块每次重启,都会加载上面设置的参数。

使用MQTT.fx进行测试

电脑端MQTT工具下载:点击下载
按下下图设置:
在这里插入图片描述

选择刚才的配置,点击"Connect",后在Publish中往刚才模块订阅的主题testmqttrecv发送hello,mylinks,这些模块直接在串口透传出hello,mylinks的数据
在这里插入图片描述

在MQTT.fx订阅选择中,使用testmqttsend主题进行订阅,此时模块通过串口发送数据,则PC工具可接收到数据。
在这里插入图片描述
至此,M0E1的WIFI mqtt固件版本双向串口透传通信完成。

MQTT控制模块引脚功能

从030版本后,我们的模块增加了2个GPIO4和GPIO5引脚,可提供给用户进行远程控制,以方便用户的设计和后使用,两个引脚上电后初始化为低电平,具体步骤如下:
1.打开GPIO引脚的使能功能:

设置返回
AT+GPIOEN=on+ok
查询返回
AT+GPIOEN+ok=on(模式有:on和off)

2.保存并重启

设置返回
AT+Z+ok

2.等待模块连接上阿里去服务器后,往模块订阅号发送JSON数据:
{“mylinks4_gpio4”:“on”,“mylinks5_gpio5”:“off”}

注:此时GPIO4会变成高电平,GPIO5变成低电平,如果只需要对一个引脚操作,则只需要发送对应的json格式就可以了。on表示对应的引脚高电平,off表示对应的引脚低电平。

说明

如果遇到模组使用上的问题,可以进群号为519630819的QQ群进行交流。
相关产品,请关注:shop.mqlinks.com

  • 1
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
连接 MQTT 服务器需要使用 WiFi 模块进行网络连接和 MQTT进行 MQTT 协议通信。下面是一个示例代码,演示了连接到 MQTT 服务器的基本步骤: ```cpp #include <WiFi.h> #include <PubSubClient.h> // WiFi 参数 const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; // MQTT 服务器参数 const char* mqtt_server = "your_MQTT_SERVER"; const int mqtt_port = 1883; const char* mqtt_username = "your_MQTT_USERNAME"; const char* mqtt_password = "your_MQTT_PASSWORD"; const char* mqtt_topic = "your_MQTT_TOPIC"; // WiFi 客户端对象 WiFiClient wifiClient; // MQTT 客户端对象 PubSubClient mqttClient(wifiClient); void setup() { // 连接 WiFi WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } // 连接 MQTT 服务器 mqttClient.setServer(mqtt_server, mqtt_port); while (!mqttClient.connected()) { if (mqttClient.connect("ESP32Client", mqtt_username, mqtt_password)) { mqttClient.subscribe(mqtt_topic); } else { delay(1000); } } } void loop() { // 在循环中进行 MQTT 通信 mqttClient.loop(); } // 处理 MQTT 消息的回调函数 void callback(char* topic, byte* payload, unsigned int length) { // 处理 MQTT 消息 } ``` 以上代码仅供参考,具体的实现可能需要根据不同的 WiFi 模块MQTT进行调整。需要注意的是,连接 MQTT 服务器之前需要先连接 WiFi,否则无法进行网络通信。另外,MQTT 客户端对象需要在 `setup()` 函数中进行初始化,并在 `loop()` 函数中调用 `mqttClient.loop()` 进行 MQTT 通信。最后,处理 MQTT 消息的回调函数需要根据具体的需求进行编写。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值