ESP32C3在Arduino下的MQTT操作

1.安装库:工具->管理库->库管理->填入"MQTT",选择"MQTT by Joel Gaehwiler",安装后效果如下:

2.下载调试软件通信猫-Windows下全能调试助手_通信猫云平台资源-CSDN下载,安卓手机也可安装一个调试APP:MyMQTT2.3.3_通信猫云平台资源-CSDN下载

3.利用通信猫测试和MyMQTT测试免费MQTT Broker:public.cloud.shiftr.io,端口是1883,账号密码都是public,利用MyMQTT连接时要选择"MQTT V3"。

4.按照顺序:示例->来自自定义库的示例->MQTT->ESP32DevelopmentBoard,打开Demo程序:

5.ssid和pass根据自己的实际情况加以修改,并做以下修改:

client.subscribe("/hello");->client.subscribe("sdau");

client.publish("/hello", "world");->client.publish("2005", "hello world")

上传到ESP32C3小板,并打开串口监视器,波特率改为115200,同时通信猫订阅主题设为2005,并发布主题为sdau,内容为2005的消息,如下图所示,很明显可以看出ESP32C3和通信猫建立了通信联系。

6.进一步修改,通信猫发送数字0,1,2,3分别控制两个led的亮灭,在setup()函数里增加两个led对应引脚配置,messageReceived函数增加digitalWrite(payload.toInt()/2+12, payload.toInt()%2)命令,完整程序如下:

复制代码
#include <WiFi.h>
#include <MQTT.h>
const char ssid[] = "XXX";
const char pass[] = "12345678";
WiFiClient net;
MQTTClient client;
unsigned long lastMillis = 0;
void connect() {
  Serial.print("checking wifi...");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(1000);
  }
  Serial.print("\nconnecting...");
  while (!client.connect("arduino", "public", "public")) {
    Serial.print(".");
    delay(1000);
  }
  Serial.println("\nconnected!");
  client.subscribe("sdau");
}
void messageReceived(String &topic, String &payload) {
  Serial.println("incoming: " + topic + " - " + payload);
  digitalWrite(payload.toInt()/2+12, payload.toInt()%2);//1,3分别点亮12,13脚led;0,2分别熄灭
}
void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, pass);
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  client.begin("public.cloud.shiftr.io", net);
  client.onMessage(messageReceived);
  connect();
}
void loop() {
  client.loop();
  delay(10);  // <- fixes some issues with WiFi stability
  if (!client.connected()) {
    connect();
  }
  // publish a message roughly every second.
  if (millis() - lastMillis > 1000) {
    lastMillis = millis();
    client.publish("2005", "hello world");
  }
}

7.推荐另外一个免费的MQTT Broker:broker.emqx.io,wss端口是8084,TCP端口1883,账号密码都可用public,操作界面如下:

8.Dfrobot的easy-iot物联网平台,网址:.

http://iot.dfrobot.com.cn/

需要在线注册,免费享有1万条消息存储,服务器地址:iot.dfrobot.com.cn,端口1883。

每个设备对应一个Topic,不可更改,支持在线发送消息。不支持SSL。

用户名、密码由系统产生,不可自行修改,不能订阅自定义Topic消息。运行效果如下:


9.通信猫提供的免费Broker:mq.tongxinmao.com,TCP端口:18830,WS端口:18832,用户/密码:空,如下:

相关推荐
codeGoogle6 小时前
自研 IM 还是选择第三方 SDK?企业开发者应该如何权衡?
前端·后端·程序员
ltl6 小时前
纠删码原理与存储效率
linux
ltl6 小时前
MinIO 原理和架构:机制、AGPL 与上游 archived 风险
linux
林浩杨_7 小时前
linux搜索命令(grep+sed)
linux·命令模式
W.W.H.7 小时前
将驱动编译成模块并安装到rootfs
linux·物联网·wifi·rootfs·驱动
ltl7 小时前
io_uring 在生产环境翻车实录:内核 bug、资源泄漏和你不知道的限制
linux
ltl7 小时前
内存分配器擂台:jemalloc vs tcmalloc vs mimalloc vs glibc
linux
ltl7 小时前
Zero Copy 的肮脏秘密:在什么时候反而更慢
linux
用户938515635077 小时前
React Context 与自定义 Hook 从底层到实践:「跨层级通信 + 副作用封装」全解析
前端·javascript·react.js
数据知道7 小时前
宽字节注入、二次注入、堆叠注入:高级 SQLi 专题
linux·运维·安全·网络安全