遠端AIoT教育科研平台LinkLab
目前,物聯網應用開發過程普遍存在缺少硬體上手難、技術繁雜開發難、場景複雜部署難等痛點。本文介紹遠端AIoT教育科研平台LinkLab,初步探讨物聯網開發、教學和實訓等方面的內建解決方案。平台由阿裡巴巴-浙江大學前沿技術聯合研究中心(AZFT)和杭州開物教育科技有限公司聯合研發。
1. LinkLab簡介
傳統的物聯網程式開發需要使用者自己選購開發闆、傳感器等硬體裝置并完成裝置組裝,還要進行驅動程式以及一些連結庫的源代碼編寫,給使用者帶來麻煩的同時也提高了物聯網開發的門檻。那麼,能不能讓使用者在自己家裡,隻用打開浏覽器即可進行物聯網遠端實驗呢?為了解決這些問題,我們開發了LinkLab遠端物聯網實驗系統。那麼,LinkLab的優勢有哪些?可以主要歸納為三點:
- 遠端開發。使用者無需采購群組裝物聯網裝置,登入平台就可以直接編寫自己的代碼。平台背景部署了大量物聯網裝置供使用者遠端使用。
- 快速開發。系統支援包括AliOS Things在内的多個物聯網作業系統,這些系統提供了豐富的系統調用和驅動支援。使用者可以将注意力集中于應用邏輯上,加快了開發速度。
- 線上教學。LinkLab系統提供了豐富的線上教學功能。學員可以在系統上學習物聯網相關課程、觀看教學視訊以及鍛煉物聯網程式設計能力。
LinkLab是一個提供線上課程學習、視訊播放、實驗題做題、場景程式設計和考試認證的物聯網實驗平台,包括遠端裝置和相應的系統軟體。其中系統軟體部分一共包含以下幾個子產品:判題系統,負責對使用者做題的輸出進行判斷;裝置中心,負責裝置管理和燒寫;線上編譯器,負責使用者代碼的編譯;WebIDE負責代碼編輯工作。使用者可以用于學習AIoT知識,鍛煉程式設計能力,并且可以根據自己的想法自由進行實驗。
AliOS-Things可以結合阿裡雲物聯網平台使用。阿裡雲物聯網平台為裝置提供安全可靠的連接配接通信能力,向下連接配接海量裝置,支撐裝置資料采集上雲;向上提供雲端API,服務端通過調用雲端API将指令下發至裝置端,實作遠端控制。
本文接下來使用ESP32開發闆,使用AliOS-Things的mqtt相關接口,實作資料上雲的全鍊路實驗。我們使用WebIDE和阿裡雲網際網路平台完成實驗,共分為四步:
- 在阿裡雲物聯網平台建立物模型;
- 在代碼編輯器中編寫AliOS-Things應用代碼;
- 連接配接遠端裝置;
- 送出代碼并等待系統判題結果。
下面通過一個簡單的傳感資料上雲的例子介紹如何使用LinkLab。
2. WebIDE的使用
- 登陸LinkLab平台後,在首頁可以看到實驗清單。
遠端AIoT教育科研平台LinkLab遠端AIoT教育科研平台LinkLab - 選擇實驗并點選對應的“開啟”按鈕,進入WebIDE界面。
- 點選左上角的實驗名稱按鈕,打開題目描述資訊和代碼編輯器。下面對WebIDE頁面布局做簡單介紹:
- 紅色框内為實驗題清單(以“序列槽列印”實驗為例)。
- 黃色框内為目前實驗題題目描述資訊。
- 藍色框内為實驗操作(包括“連接配接”、“送出”,其中“連接配接”按鈕用來連接配接遠端物聯網裝置,“送出”按鈕用于當代碼編寫完成時送出運作)。
- 綠色框内是代碼編輯器。
- 灰色框内是Shell,負責顯示系統日志和使用者程式輸出資訊(使用者輸出為綠色)。
遠端AIoT教育科研平台LinkLab遠端AIoT教育科研平台LinkLab
接下來在綠色的代碼編輯器使用AliOS Things,編寫C代碼,實作簡單的資料讀取和上傳至物聯網平台功能。
3. 阿裡雲物聯網平台配置
在編寫代碼之前,需要先在阿裡雲物聯網平台中建立産品與裝置,并定義産品的物模型,具體可參考阿裡雲的文檔:
建立産品與裝置,
為産品定義物模型。
- 建立産品。建立裝置模型,名稱任意,分類為“自定義品類”,聯網方式為“WiFi”,資料格式為“ICA 标準資料格式(Alink JSON)”。
- 在所建立産品的“功能定義”中為裝置模型添加“自定義功能”。我們新增四個屬性,分别是“溫度(CurrentTemperature)”、“濕度(CurrentHumidity)”、“光照度(mlux)”和“判題密鑰(key)”。
- 新增測試裝置。裝置三元組資訊位于裝置詳情中,可以直接複制。
遠端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出現以下提示,可以進行下一步的操作。
如果在Shell出現連接配接失敗的提示,需要繼續等待,直至連接配接成功。連接配接裝置成功後,可以點選“送出”按鈕送出代碼,系統将自動完成代碼的線上編譯和遠端燒寫等工作,程式的執行結果将顯示在Shell中。如果編譯出錯的話,Shell将給出相應的提示:
判題系統會根據使用者程式輸出的資料的正确性、輸出的次數和時間間隔設定若幹得分點,使用者可以在最後面看到通過的得分點和具體的得分。
以下是該實驗可能部分錯誤類型清單。
錯誤 | 原因 |
---|---|
次數錯誤 | 列印次數與要求不比對 |
時間間隔錯誤 | 列印時間間隔與要求不比對 |
消息内容錯誤 | 列印内容錯誤 |
5. 實驗結果
程式顯示在Shell中的執行結果,如果程式的輸出和期望輸出一緻,系統會提示“ACCEPT”,否則提示為“WRONG ANSWER”,具體參考以上截圖。
程式運作成功後,我們可以登入到阿裡雲物聯網平台,在裝置運作狀态下檢視上傳的裝置資料。
6. 總結和展望
本文介紹了如何使用LinkLab物聯網實驗平台和AliOS Things将傳感器資料上傳到阿裡雲物聯網平台。由于篇幅有限,LinkLab的更多教育教學功能沒能得到充分的展現,未來免費版本、英文版本、考試認證、批量組織實驗和自主節點選擇等功能将陸續上線,敬請期待!