ESP32+阿里雲+vscode_Pio

lorem万俟發表於2022-05-18

用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是它的識別符號,一定不能寫錯的。

不知道怎麼建立物理模型的自行百度,不難。
本人能力有限,如有不足歡迎指正。

相關文章