?

面向云環境的敏捷物聯網應用開發平臺研究

2021-09-14 03:27江先亮朱家驊
寧波大學學報(理工版) 2021年5期
關鍵詞:開發板外設代碼

張 騰,金 光,江先亮,朱家驊

(寧波大學 信息科學與工程學院,浙江 寧波 315211)

隨著物聯網及嵌入式技術的發展,物聯網應用已遍布各行各業,物聯網應用開發教學也成為了當前信息技術教育的主流內容之一.不同于其他工程開發,物聯網應用開發中硬件及接口的差異化會造成學習者在設備選型、線路連接、環境部署時的困難,進一步增加了學習成本及開發周期.

目前主流的快速物聯網開發平臺大多采用瀏覽器端編寫代碼,云端服務器進行編譯并燒錄程序的方式.其中,OElab 采用B/S及C/S兩種架構結合云端編譯器及管理器,實現了電源管理、代碼下載及視頻監控等功能[1].該平臺針對專業嵌入式開發人員,能夠有效降低相關的測試及開發門檻,但仍需在本地進行代碼編寫,然后進行云端編譯并下載代碼運行.ARM mbed 可以完成基于ARM 系列內核的開發板編程工作,采用瀏覽器端代碼編寫并完成編譯,編譯后的文件由本地PC 端程序存入開發板并完成代碼運行[2].Arduino Web Editor 是一款針對于Arduino 開發套件的瀏覽器編程方案,免去了開發環境的安裝,但需要通過瀏覽器插件進行設備連接及下載,對系統及瀏覽器版本有一定要求[3].Tinyink 注重于降低初學者的硬件學習成本,根據用戶代碼采用智能決策算法來生成所需的硬件及其連接方案,免去了用戶設備選型的麻煩[4].但該系統需用戶本地進行代碼編寫及硬件開發,不適用于初學者.micro:bit 是一款針對于低齡物聯網及嵌入式學習者的實驗套件,目前支持網頁端的圖形化編程及Python語言編程[5].該系統通過瀏覽器頁面編程,并將二進制文件下載到本地,然后通過本地工具燒錄進開發板中.該系統有較好的模塊化設計,但仍需在本地安裝驅動及軟件.LinkLab 通過瀏覽器頁面進行代碼編寫,并在云端完成編譯,編譯后的文件發送給遠程終端設備,再通過串口完成物聯網設備燒錄[6].該方式適用于面向軟件編程的用戶,缺少了硬件編程的直觀性和趣味性.

綜上所述,目前缺乏一款面向初學者的免環境安裝、接口統一、步驟簡單、系統穩定可靠的物聯網在線開發平臺,使初學者能更好地學習業務邏輯開發,了解軟件驅動與硬件之間的關系,而不必在意開發及硬件燒錄過程中的繁瑣步驟.因此,本文設計了面向云環境的敏捷物聯網應用開發平臺,該平臺是一個屏蔽硬件差異化的分布式遠程物聯網應用開發平臺,沒有代碼編譯過程,無需任何輔助設備及軟件,用戶可直接在瀏覽器端進行物聯網開發、實驗及教學.并且平臺實現了在線編程、一鍵運行的功能,達到了屏蔽硬件、忽略差異化的目的.

1 平臺架構設計

與上述技術及系統采用的硬件完全抽象化及部分步驟精簡化不同,本文進一步分析了用戶在學習及開發時的需求,將物聯網開發中不太相關的繁瑣部分進行了抽象化,并完整地保留對學習及開發者有用的部分,使得本方案能夠有效地保證學習的完整性及高效性.

如圖1 所示,本平臺與其他方案及系統相比,將環境安裝、代碼燒錄等與物聯網開發技術關聯不強的繁瑣程序進行抽象化,轉移到云端平臺進行.同時,針對于能夠鍛煉用戶開發及具備有效體驗實驗效果的WebIDE 及模塊化開發板對用戶可見.所以,本平臺能夠在極大地減少用戶使用成本的同時,給予用戶完整的物聯網開發體驗及流程,更便于用戶了解物聯網開發學習及實驗時所需的知識點及操作步驟.

圖1 平臺可視化示意圖

平臺采用B/S 架構,用戶在瀏覽器端進行線上物聯網實驗及開發.相應系統架構如圖2 所示,平臺分為應用層、服務層、設備層.應用層采用在線集成開發環境(Web Integrity Develop Environment,WebIDE)方式,在有效降低用戶使用難度、減少學習成本的同時,達到跨平臺的目的.服務層選用微服務架構[7]進行設計和搭建,相比其他架構擁有更好的魯棒性及擴展性,能夠更好地滿足用戶的功能需求.設備層主要由配套實驗開發板及實驗模塊組成,該實驗套件具有接口統一、易用的特點,更加便于用戶的學習及開發.

圖2 平臺系統架構

平臺主要工作流程如圖3 所示.當用戶將通過應用層瀏覽器編寫完成之后的代碼傳送給服務層的云端微服務,其中的代碼推送服務負責將代碼從服務器推送到設備層開發板.手機APP 用于第一次使用時對開發板的初始化配置工作.

圖3 系統工作流程概述

本系統無需編譯流程,具體代碼運行及反饋流程如圖4 所示.步驟1:用戶在WebIDE 編寫完代碼之后,前端服務通過HTTP 協議將代碼發送給圖3 服務層所示的一對一推送服務.步驟2:一對一推送服務對代碼進行語法處理后,將代碼通過MQTT 服務器推送給開發板.步驟3:開發板運行Python 代碼后,通過控制I/O 引腳完成物理上的實驗現象演示.步驟4:通過MQTT 協議將實驗結果反饋給物聯網開發服務.步驟5:物聯網開發服務將數據進行格式化處理后,通過WebSocket 協議將代碼運行結果反饋給前端服務器,并在前端頁面顯示出來.

圖4 代碼運行及反饋流程

本平臺主要功能如下:

(1)應用層及服務層設計與開發.應用層主要由前端頁面及前端服務構成,包括登錄注冊功能的設計與開發、WebIDE 功能的設計與開發、用戶中心功能的設計與開發.

服務層主要是后端微服務設計與開發,包括基于Spring Cloud 架構進行系統架構設計,完成微服務相關組件搭建,完成鑒權認證服務、物聯網開發服務、用戶信息服務及一對一代碼推送服務的設計與開發.

應用層前端功能與服務層對應服務見表1.

表1 應用層與服務層對應關系表

(2)物聯網代碼推送機制設計.旨在設計一種能夠連接后端服務與開發板的推送機制,該機制以微服務形式部署在線上編程系統的服務器端.

(3)設備層實驗開發板設計與制作.開發板設計與制作需針對功能要求進行PCB(印刷電路板)的設計及制作,并根據電路原理圖完成開發板及相關外設的驅動開發及固件燒錄.

針對于實驗開發板參數初始化需要,完成基于藍牙通信手機的配套APP 編寫.

2 核心功能設計

本系統核心內容包括三部分:(1)設計適用于物聯網開發環境下的一對一推送機制;(2)設計和實現支持拓展的易用性物聯網實驗套件;(3)設計基于TEA 加密算法[8]的動態口令認證協議[9].

2.1 適用于高并發場景的一對一代碼推送機制

滿足高并發和一對一(一個用戶針對一套開發板)的通信需要是本系統的關鍵點,傳統TCP 連接服務器在合法性檢測、確認重傳機制的設計、對高并發量的支持等方面都無法滿足實際需求.此外,適于物聯網設備的MQTT 協議雖具有消耗小、高并發的特點[10],但其協議采用發布/訂閱的模式,適于一對多通信的場景,無法滿足一對一通信要求.針對此應用場景,本文設計了一種基于MQTT的一對一代碼推送機制.

如圖5 所示,在對開發板進行配網時,配網軟件會獲取開發板的唯一ID,當與用戶ID 進行綁定后,存儲到數據庫中.配網完成后,開發板會訂閱以自身ID+“00”命名的主題,發布以自身ID 為主題的廣播.用戶完成線上代碼編寫,并將代碼發送至物聯網服務器,后端服務通過讀取數據庫以獲取開發板ID,創建以開發板ID+“00”為主題的廣播進行代碼傳輸,訂閱以開發板ID 命名的主題完成開發板運行信息的接收,達到雙向一對一通信的目的.

圖5 一對一代碼推送機制流程

2.2 模塊化主控板電路設計

為實現用戶代碼完成推送后自動在開發板上的運行,本文設計的開發板采用MicroPython 系統為底層固件.MicroPython 是Python 3 語言的精簡高效實現,可在微控制器和受限環境中運行[11].因Python 為解釋性語言,開發板在接收代碼后,可直接調用此Python 代碼,實現自動運行功能.

開發板設計及開發架構如圖6 所示.以ESP32為核心,且根據需要可更換不同性能的芯片,如stm32、ARM 系列Soc 等.此外,還根據功能需要設計了外設電路及外設模塊,且實驗板與外設之間采用易用性接口連接.

圖6 開發板硬件系統結構

對于本場景,本文針對主板的充電、穩壓供電、下載通信、外設驅動等電路進行了重新設計,其中開發板的主控芯片電路如圖7 所示.

圖7 主控芯片電路圖

2.3 基于TEA 加密算法的動態口令認證協議

為防止非法設備接入及網絡漏洞導致用戶信息泄露等問題,結合開發板核心性能不高的限制,本文設計了一種基于TEA 加密算法的動態口令認證協議.

該協議選用時間同步方式作為不確定因子,采用SHA256 哈希算法和TEA 加密算法完成認證及傳輸加密,以進一步提高系統安全性和破解難度,本認證協議符號和相關表示見表2.

表2 認證協議算法符號和標識

本文選用CID、CB_MAC、CW_MAC 組合,并經過SHA256 加密之后作為請求信息,公式如下:

在發送請求信息時,將開發板獲取的TC、CID信息進行TEA 加密操作,得到REQSE作為加密請求數據,公式如下:

服務器接收到請求信息后,對數據進行解密操作,公式如下:

執行過程如圖8 所示.步驟1:開發板Ci向時間同步服務器ST獲取時間.步驟2:開發板將CID、TC數據與SHA256 加密后的CID、CB_MAC、CW_MAC 組合數據作為請求數據,經過TEA 加密算法加密后,向認證服務器發出請求.步驟3:服務器解密獲取TC、CID 及REQSE數據,校驗TC,并比對數據庫中的REQSE數據,完成開發板認證.步驟4:服務器將TS以及SHA256 加密后的CID、CB_MAC、CW_MAC 數據發送給開發板.步驟5:開發板驗證TS以及解壓后的REQSE.

圖8 雙向口令認證流程

3 系統部署及功能驗證

3.1 系統部署

平臺開發完成后,我們將軟硬件系統進行了部署.軟件部分,在內存為32 GB、CPU 為E5-2630 V3 的服務器上使用19.03.5 版本Docker 容器化部署了線上編程系統各項服務,使用Android 6.0.1 系統安裝了藍牙配網App.硬件部分,運行平臺為

2.2 節所述物聯網配套開發板.

我們以按鍵與指示燈外設模塊為例進行實驗測試,以驗證本方案主控電路、外設電路接口方案的可行性.該外設模塊使用易用性接口,能更方便地完成安裝和卸載工作.具體開發板電路如圖9(a)所示,外設模塊電路如圖9(b)所示,安裝有外設模塊的開發板實物如圖9(c)所示.目前,本系統已實現的實驗套件外設模塊見表3.

圖9 開發板、外設電路及實物

表3 目前已實現外設模塊

3.2 功能測試

用戶完成登錄后,進入線上編程界面,輸入測試代碼,并點擊運行按鈕開始運行程序.待程序成功運行后,可以看到如圖10 所示的實驗現象:開發模塊上的紅、黃、綠3 種顏色LED 燈以1s 的間隔進行周期性閃爍.

圖10 配套物聯網開發實驗效果

3.3 系統對比

本文方案與LinkLab、Arduino Web Editor、Arm Mbed 等系統的功能進行了對比.由表4 可見,本系統具有跨設備、無需編譯、無需軟硬件輔助設備等優點,能明顯降低使用難度、提升用戶體驗.

表4 本平臺與主流系統功能對比

4 結語

當前物聯網應用系統開發門檻高、開發環境復雜,導致物聯網開發相關課程的實驗教學難以在線上開展,針對該類問題,我們設計并實現了一套基于微服務架構的線上物聯網實驗平臺.考慮到已有通信協議無法滿足實際需求,同時設計了一種新的基于MQTT 的一對一推送機制.并根據實際需求,設計并制作了一款基于ESP32 的物聯網開發板及手機端配網APP.此外,設計了一種基于TEA加密算法的動態口令認證協議,以進一步保障設備及用戶信息的安全.經過系統部署及實際功能測試,表明該系統方案能夠有效完成預期功能,具有較好的實用價值,為工科類尤其是物聯網嵌入式課程開展線上實驗教學提供了一種新的方案.未來我們將針對該平臺進一步深化設計細節,拓展應用場景,提升用戶體驗,使其逐步得以廣泛應用.

猜你喜歡
開發板外設代碼
基于STM32H7的FDCAN通信系統設計與實現?
開發板在單片機原理及接口技術課程教學中的應用
神秘的代碼
一周機構凈增(減)倉股前20名
一行代碼玩完19億元衛星
ARM宣布mbed Enabled Freescale FRDM—K64F開發板通過微軟認證
近期連續上漲7天以上的股
外設天地行情
外設天地行情
外設天地行情
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合