ESP32是一系列低成本,低功耗的單晶片微控制器,集成了Wi-Fi和雙模藍牙,所以在物聯網領域應用廣泛。arduino是一個廣受歡迎的開源硬件平臺,藉助arduino-esp32,我們可以使用arduino開發esp32。今天這篇文章介紹下如何通過arduino將esp32連接到騰訊雲物聯網開發平臺
準備
- esp32-devkit-v1/v4
- arduino IDE
接下來安裝esp32_arduino的開發庫,官網給了通過Arduino IDE,platform IO或者手動安裝方式,這裏介紹下通過Arduino IDE安裝:
一. 打開文件>首選項
二. 將下面的地址添加到附加開發板管理器網址
https://dl.espressif.com/dl/package_esp32_index.json,http://arduino.esp8266.com/stable/package_esp8266com_index.json
三. 打開開發板管理器
四. 搜索 esp32,然後選擇安裝
安裝好後,我們可以在開發板中找到 esp32的開發板
安裝其他依賴
由於esp32是通過MQTT協議連接到物聯網平臺的,所以我們需要一個實現了mqtt client的庫,幫助我們發佈訂閱相關的topic,需要一個JSON庫,幫我們解析JSON。具體步驟是,在工具>管理庫中,查找PubSubclient
和EspMQTTclient
,並安裝
下面是我安裝好之後的截圖:
此外,同樣按照上面的方式來安裝ArduinoJSON
,用來序列化和反序列化物模型的JSON數據
編寫代碼
上面的庫安裝好之後,在物聯網平臺創建設備之後,我們就可以開始連到MQTT broker了。直接上代碼,這裏要注意的一點是username和password是在連接到雲端mqtt broker的時候需要填入的,可以通過這個在線工具生成。
#include "EspMQTTClient.h"
#include <ArduinoJson.h>
EspMQTTClient client(
"", // wifi賬號
"", // wifi密碼
"Z9R4GLTFW4.iotcloud.tencentdevices.com", // MQTT Broker server ip
"username",
"password",
"TestClient" // Client name that uniquely identify your device
);
void setup() {
Serial.begin(115200);
}
void onConnectionEstablished() {
Serial.println("connect to mqtt success ");
// 訂閱控制指令的topic
client.subscribe("$thing/down/property/Z9R4GLTFW4/dev1", [] (const String &payload) {
Serial.println(payload);
DeserializationError error = deserializeJson(doc, payload);
// Test if parsing succeeds.
if (error) {
Serial.print("deserializeJson() failed: ");
Serial.println(error.f_str());
return;
}
if (doc["params"]["temperature"] == 1) {
digitalWrite(LED_BUILTIN, HIGH);
} else {
digitalWrite(LED_BUILTIN, LOW);
}
});
}
void loop() {
client.loop();
publish();
}
燒錄
在工具>開發板中選擇正確的開發板esp32-devkit-v1, 在工具>端口中選擇正確的串行端口,最後點擊上傳即可
總結
本文主要講了如何通過arduino將esp32連接到騰訊雲物聯網平臺,如有錯誤,還望指正