您当前的位置:首页 > 电子 > 单片机

ESP32教程之MQTT(Ardunio IDE)

时间:08-15来源:作者:点击数:

这期我们介绍如何使用Ardunio IDE实现ESP32上云。步骤非常简单:

  1. 导入MQTT相关库
  2. 配置MQTT连接信息
  3. 连接MQTT
  4. 注册响应回调函数
  5. 实现响应回调函数

ESP32 是一款低成本、低功耗的微控制器,集成了 Wi-Fi 和蓝牙。它是 ESP8266 的后继产品,ESP8266 也是一款低成本 Wi-Fi 微芯片,尽管功能非常有限。它是一个集成天线和射频巴伦、功率放大器、低噪声放大器、滤波器和电源管理模块。整个解决方案占用的印刷电路板面积最少。该板采用台积电40nm低功耗技术的2.4GHz双模Wi-Fi和蓝牙芯片,功率和射频性能最佳,安全可靠,可扩展到各种应用。

首先,打开Ardunio IDE,导入相关MQTT库(关于如何安装Ardunio 以及ESP32库的下载不做介绍请自行搜索)

在IDE右侧,输入MQTT,选择MQTT进行安装,此时我们就可以导入WiFI以及服务器连接库(WiFi不需要进行安装)

接着我们配置Wifi连接密码以及MQTT连接信息。

const char* ssid = "1cm";
const char* password = "a1234555";
const char* mqtt_server = "altnlnn.iot.gz.baidubce.com";
const int mqtt_port = 1883;
const char* mqtt_user = "thingidp@altnlnn|ESP32|0|MD5";
const char* mqtt_password = "9aeec4289c816ecfdb0de7ed3b164bf6";
const char* mqtt_topic = "TEST";

配置好MQTT及Wifi信息后,我们在setup函数中配置启动信息,连接到Wifi之后,ESP32会自动尝试连接MQTT服务器,连接完成后进入循环函数,执行我们的主循环。

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);//连接Wifi
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);//等待WIfi连接成功
  }
  client.setServer(mqtt_server, mqtt_port);//连接MQTT服务器
  client.setCallback(callback);//注册接收回调函数
  while (!client.connected()) {//等待连接成功
    if (client.connect("ESP32Client", mqtt_user, mqtt_password )) {
      client.subscribe(mqtt_topic);//订阅需要的主题
    } else {
      Serial.println("Failed to connect to MQTT Broker");
      delay(5000);
    }
  }
}

主循环的内容非常简单,主要是检查MQTT连接是否正常以及向云端发送心跳报文和处理消息。

void loop() {
  if (!client.connected()) {
    reconnect();//检查MQTT是否连接断开,如果连接超时,则尝试重新连接
  }
  client.loop();//MQTT发送响应报文(还活着)
}

在相应回调函数中,我们判断接收的字符是否为LED_ON,如果接收到的字符等于LED_ON的话,我们则让ESP32板载LED灯亮起。

void callback(char* topic, byte* payload, unsigned int length) {
  Serial.print("Message received in topic: ");
  Serial.println(topic);
  Serial.print("Message:");
  char * ss = (char*)payload;
  if(strcmp(ss,"LED_ON")==1)
  {
    LED_ON();
  }
}
 
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐