ESP32+阿里雲+vscode_Pio
用ESP32在vscode使用PlatformPIO寫的程式碼。(程式碼是摺疊程式碼,不能一眼瞧見,我也不太會使用編輯器哈,剛寫博不久,望諒解。)
功能:esp32聯網,能夠通過聯網打開在阿里雲平台控制設備在線狀態。我這個只是初步的能夠接入阿里雲。
一、我用的模組是ESP32-WROOM-32的開發板,什麼外設都沒接,就直接插入一根USB接電就行,小白也比較容易上手。
二、聯網的話,需要一些資訊,可以在阿里雲中設備DeviceSecret查看。
三、再連個熱點,電腦也可以提供熱點的,我也是孤陋寡聞,現在才知道。
四、其實這個esp32的框架是基於arduino的,所以說是可以調庫的。就改一下參數,然後傻瓜式的進行。
說這麼多,上程式碼。
點擊查看程式碼
#include <main.h>
static WiFiClient espClient;
AliyunIoTSDK iot;
void powerCallback(JsonVariant p);
void wifiInit(const char *ssid, const char *passphrase)
{
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, passphrase);
WiFi.setAutoConnect (true);
WiFi.setAutoReconnect (true);
while (WiFi.status() != WL_CONNECTED)
{
delay(1000);
Serial.println("WiFi not Connect");
}
Serial.println("Connected to AP");
}
void setup()
{
Serial.begin(115200);
wifiInit(WIFI_SSID, WIFI_PASSWD);
AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);
// 綁定屬性回調
AliyunIoTSDK::bindData("PowerSwitch", powerCallback);
}
unsigned long lastMsMain = 0;
void loop()
{
AliyunIoTSDK::loop();
if (millis() - lastMsMain >= 5000)
{
lastMsMain = millis();
// 發送事件到阿里雲平台
AliyunIoTSDK::sendEvent("xxx");
// 發送模型屬性到阿里雲平台
AliyunIoTSDK::send("temperature", 30);
}
}
void powerCallback(JsonVariant p)
{
int PowerSwitch = p["PowerSwitch"];
if (PowerSwitch == 1)
{
//
}
else
{
//
}
}
這個就是主要的程式碼,很簡單,把人家的example粘貼過來改一下就行。
有些地方要注意一下。
1.添加庫。
點開PIO螞蟻頭。
搜索AliyunIoTSDK庫和PubSubClient庫。
然後我們複製example的時候,把頭文件的esp8266改為WiFi,不然會報錯。
還有就是它有個使用方法,記得按照他說的把一些參數改一下,一開始我就是因為參數值沒改,雖然下載成功了,但是卻連不上網,不能使設備在線。
2.程式碼中有個temperature,那個是我定義的一個物理模型,temperature是它的標識符,一定不能寫錯的。
不知道怎麼建立物理模型的自行百度,不難。
本人能力有限,如有不足歡迎指正。