天天看點

遠端AIoT教育科研平台LinkLab遠端AIoT教育科研平台LinkLab

遠端AIoT教育科研平台LinkLab

目前,物聯網應用開發過程普遍存在缺少硬體上手難、技術繁雜開發難、場景複雜部署難等痛點。本文介紹遠端AIoT教育科研平台LinkLab,初步探讨物聯網開發、教學和實訓等方面的內建解決方案。平台由阿裡巴巴-浙江大學前沿技術聯合研究中心(AZFT)和杭州開物教育科技有限公司聯合研發。

1. LinkLab簡介

傳統的物聯網程式開發需要使用者自己選購開發闆、傳感器等硬體裝置并完成裝置組裝,還要進行驅動程式以及一些連結庫的源代碼編寫,給使用者帶來麻煩的同時也提高了物聯網開發的門檻。那麼,能不能讓使用者在自己家裡,隻用打開浏覽器即可進行物聯網遠端實驗呢?為了解決這些問題,我們開發了LinkLab遠端物聯網實驗系統。那麼,LinkLab的優勢有哪些?可以主要歸納為三點:

  1. 遠端開發。使用者無需采購群組裝物聯網裝置,登入平台就可以直接編寫自己的代碼。平台背景部署了大量物聯網裝置供使用者遠端使用。
  2. 快速開發。系統支援包括AliOS Things在内的多個物聯網作業系統,這些系統提供了豐富的系統調用和驅動支援。使用者可以将注意力集中于應用邏輯上,加快了開發速度。
  3. 線上教學。LinkLab系統提供了豐富的線上教學功能。學員可以在系統上學習物聯網相關課程、觀看教學視訊以及鍛煉物聯網程式設計能力。

LinkLab是一個提供線上課程學習、視訊播放、實驗題做題、場景程式設計和考試認證的物聯網實驗平台,包括遠端裝置和相應的系統軟體。其中系統軟體部分一共包含以下幾個子產品:判題系統,負責對使用者做題的輸出進行判斷;裝置中心,負責裝置管理和燒寫;線上編譯器,負責使用者代碼的編譯;WebIDE負責代碼編輯工作。使用者可以用于學習AIoT知識,鍛煉程式設計能力,并且可以根據自己的想法自由進行實驗。

AliOS-Things可以結合阿裡雲物聯網平台使用。阿裡雲物聯網平台為裝置提供安全可靠的連接配接通信能力,向下連接配接海量裝置,支撐裝置資料采集上雲;向上提供雲端API,服務端通過調用雲端API将指令下發至裝置端,實作遠端控制。

本文接下來使用ESP32開發闆,使用AliOS-Things的mqtt相關接口,實作資料上雲的全鍊路實驗。我們使用WebIDE和阿裡雲網際網路平台完成實驗,共分為四步:

  1. 在阿裡雲物聯網平台建立物模型;
  2. 在代碼編輯器中編寫AliOS-Things應用代碼;
  3. 連接配接遠端裝置;
  4. 送出代碼并等待系統判題結果。

下面通過一個簡單的傳感資料上雲的例子介紹如何使用LinkLab。

2. WebIDE的使用

  1. 登陸LinkLab平台後,在首頁可以看到實驗清單。
    遠端AIoT教育科研平台LinkLab遠端AIoT教育科研平台LinkLab
  2. 選擇實驗并點選對應的“開啟”按鈕,進入WebIDE界面。
  3. 點選左上角的實驗名稱按鈕,打開題目描述資訊和代碼編輯器。下面對WebIDE頁面布局做簡單介紹:
  • 紅色框内為實驗題清單(以“序列槽列印”實驗為例)。
  • 黃色框内為目前實驗題題目描述資訊。
  • 藍色框内為實驗操作(包括“連接配接”、“送出”,其中“連接配接”按鈕用來連接配接遠端物聯網裝置,“送出”按鈕用于當代碼編寫完成時送出運作)。
  • 綠色框内是代碼編輯器。
  • 灰色框内是Shell,負責顯示系統日志和使用者程式輸出資訊(使用者輸出為綠色)。
    遠端AIoT教育科研平台LinkLab遠端AIoT教育科研平台LinkLab

接下來在綠色的代碼編輯器使用AliOS Things,編寫C代碼,實作簡單的資料讀取和上傳至物聯網平台功能。

3. 阿裡雲物聯網平台配置

在編寫代碼之前,需要先在阿裡雲物聯網平台中建立産品與裝置,并定義産品的物模型,具體可參考阿裡雲的文檔:

建立産品與裝置

為産品定義物模型

  1. 建立産品。建立裝置模型,名稱任意,分類為“自定義品類”,聯網方式為“WiFi”,資料格式為“ICA 标準資料格式(Alink JSON)”。
  2. 在所建立産品的“功能定義”中為裝置模型添加“自定義功能”。我們新增四個屬性,分别是“溫度(CurrentTemperature)”、“濕度(CurrentHumidity)”、“光照度(mlux)”和“判題密鑰(key)”。
  3. 新增測試裝置。裝置三元組資訊位于裝置詳情中,可以直接複制。
    遠端AIoT教育科研平台LinkLab遠端AIoT教育科研平台LinkLab

4. 代碼編寫

接下來在WebIDE中編寫代碼。先填寫PRODUCT_KEY,PRODUCT_SECRET,DEVICE_NAME與DEVICE_SECRET,這些資訊可以在阿裡雲控制台中找到。程式的大體架構已經給出,隻需要填寫循環内部的邏輯。

首先要根據題目的要求,确定循環的次數與每一次循環後的等待時間。然後,按照阿裡雲文檔中

關于Alink協定上報裝置屬性

的說明,準備好上報裝置屬性CurrentTemperature和CurrentHumidity的MQTT消息,存入變量msg_pub中(可以考慮使用sprintf)。然後在循環中,使用IOT_MQTT_Publish方法,将消息發送到阿裡雲物聯網平台。AliOS MQTT的相關函數可參考

AliOS源代碼中對應函數的注釋的說明
while (cnt < 5) {
    cnt++;
    int ts = time(0);
    msg_len = snprintf(msg_pub, sizeof(msg_pub), "{"
                            "\"id\": \"123\","
                            "\"version\": \"1.0\","
                            "\"params\": {"
                            "\"CurrentTemperature\": {"
                            "\"value\": 20.0,"
                            "\"time\": %d"
                            "},"
                            "\"CurrentHumidity\": {"
                            "\"value\": 25.0,"
                            "\"time\": %d"
                            "}"
                            "},"
                            "\"method\": \"thing.event.property.post\""
                            "}", ts, ts);

    topic_msg.payload = (void *)msg_pub;
    topic_msg.payload_len = msg_len;


    rc = IOT_MQTT_Publish(pclient, TOPIC_PROPERTY_POST, &topic_msg);
    
    EXAMPLE_TRACE("packet-id=%lu, publish topic msg=%s", (uint32_t)rc, msg_pub);
    IOT_MQTT_Yield(pclient, 200);

    aos_msleep(1000);
}
           

儲存以上代碼。然後點選“連接配接”按鈕,連接配接遠端裝置,如果連接配接成功會在 Shell出現以下提示,可以進行下一步的操作。

遠端AIoT教育科研平台LinkLab遠端AIoT教育科研平台LinkLab

如果在Shell出現連接配接失敗的提示,需要繼續等待,直至連接配接成功。連接配接裝置成功後,可以點選“送出”按鈕送出代碼,系統将自動完成代碼的線上編譯和遠端燒寫等工作,程式的執行結果将顯示在Shell中。如果編譯出錯的話,Shell将給出相應的提示:

遠端AIoT教育科研平台LinkLab遠端AIoT教育科研平台LinkLab

判題系統會根據使用者程式輸出的資料的正确性、輸出的次數和時間間隔設定若幹得分點,使用者可以在最後面看到通過的得分點和具體的得分。

遠端AIoT教育科研平台LinkLab遠端AIoT教育科研平台LinkLab

以下是該實驗可能部分錯誤類型清單。

錯誤 原因
次數錯誤 列印次數與要求不比對
時間間隔錯誤 列印時間間隔與要求不比對
消息内容錯誤 列印内容錯誤

5. 實驗結果

程式顯示在Shell中的執行結果,如果程式的輸出和期望輸出一緻,系統會提示“ACCEPT”,否則提示為“WRONG ANSWER”,具體參考以上截圖。

程式運作成功後,我們可以登入到阿裡雲物聯網平台,在裝置運作狀态下檢視上傳的裝置資料。

遠端AIoT教育科研平台LinkLab遠端AIoT教育科研平台LinkLab

6. 總結和展望

本文介紹了如何使用LinkLab物聯網實驗平台和AliOS Things将傳感器資料上傳到阿裡雲物聯網平台。由于篇幅有限,LinkLab的更多教育教學功能沒能得到充分的展現,未來免費版本、英文版本、考試認證、批量組織實驗和自主節點選擇等功能将陸續上線,敬請期待!