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,用户/密码:空,如下:

相关推荐
syt_10131 小时前
grid布局之-子项放置1
前端·javascript·css
恒创科技HK1 小时前
新站起步,租用香港服务器适合不?
运维·服务器
梁正雄1 小时前
linux服务-RabbitMQ 原理与安装
linux·rabbitmq·ruby
Henry Zhu1231 小时前
VPP中的DPDK插件源码详解第三篇:DPDK插件的数据接收和发送
运维·服务器·网络·tcp/ip·计算机网络
HIT_Weston1 小时前
59、【Ubuntu】【Gitlab】拉出内网 Web 服务:Gitlab 配置审视(三)
前端·ubuntu·gitlab
syt_10131 小时前
grid布局之-子项放置2
前端·javascript·css
韩曙亮1 小时前
【Web APIs】JavaScript 动画 ② ( 缓动动画 | 步长计算取整 )
前端·javascript·动画·web apis·缓动动画·匀速动画
fruge1 小时前
Vue3 响应式原理深度解析:Proxy 实现与依赖收集逻辑
前端
骇客野人1 小时前
Java @Mapper 使用注解的方式注入SQL
linux·服务器·windows