这期我们介绍如何使用Ardunio IDE实现ESP32上云。步骤非常简单:
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();
}
}

