張洪杰 錢彭飛 劉峰
摘要:本文結(jié)合數(shù)字系統(tǒng)實(shí)驗(yàn)課程,介紹了用戶學(xué)習(xí)、教學(xué)管理、設(shè)備共享三方結(jié)合的數(shù)字系統(tǒng)半實(shí)物仿真實(shí)驗(yàn)的教學(xué)經(jīng)驗(yàn),以期能夠幫助廣大教師改進(jìn)學(xué)生對(duì)在線實(shí)驗(yàn)的學(xué)習(xí)體驗(yàn)。
關(guān)鍵詞:遠(yuǎn)程共享;數(shù)字系統(tǒng)實(shí)驗(yàn);半實(shí)物
中圖分類號(hào):G434? 文獻(xiàn)標(biāo)識(shí)碼:A? 論文編號(hào):1674-2117(2021)22-0075-04
● 引言
遠(yuǎn)程實(shí)驗(yàn)建設(shè)分虛擬仿真和半實(shí)物仿真兩種。統(tǒng)一供貨的虛擬實(shí)驗(yàn)項(xiàng)目可以滿足部分學(xué)科通識(shí)實(shí)驗(yàn),但也存在虛擬體驗(yàn)感與本地軟件仿真差距較大、實(shí)驗(yàn)內(nèi)容難覆蓋層次化實(shí)驗(yàn)教學(xué)等問題。半實(shí)物仿真較多采用真實(shí)受控對(duì)象并通過有網(wǎng)絡(luò)接口的實(shí)時(shí)仿真機(jī)來輸出控制信號(hào)和接受反饋信號(hào),如面向陸空無人機(jī)、機(jī)器人控制、伺服電機(jī)對(duì)拖、預(yù)警雷達(dá)、智能輔助駕駛等,但仿真系統(tǒng)軟硬件協(xié)同測(cè)試復(fù)雜度高。
筆者了解到,數(shù)字系統(tǒng)MCU或FPGA設(shè)備的半實(shí)物仿真往往配備本地小實(shí)驗(yàn)板硬件和軟件技術(shù),如MCU終端遠(yuǎn)程更新、專用云下掛MCU測(cè)試、FPGA內(nèi)部邏輯分析儀測(cè)試等。而遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)基本上能夠處理下發(fā)激勵(lì)輸入信號(hào)操作實(shí)物和上傳實(shí)物輸出信號(hào)觀察現(xiàn)象。文獻(xiàn)[1]映射了客戶端鼠標(biāo)與鍵盤,并將FPGA板VGA輸出信號(hào)串流推送客戶端。在安全有保障時(shí),教師也可以開放遠(yuǎn)程桌面控制實(shí)驗(yàn)用機(jī)達(dá)到共享硬件實(shí)驗(yàn)?zāi)康摹5珜?shí)驗(yàn)課程管理一般是基于Moodle開源免費(fèi)課程框架開發(fā),隨著自建課程門數(shù)和班級(jí)的逐年增多,擴(kuò)容壓力增大、環(huán)境安全維護(hù)、Moodle分組訪問限制等問題不斷出現(xiàn),因?yàn)?,必須從?shí)驗(yàn)教學(xué)信息化實(shí)際出發(fā),整合教學(xué)系統(tǒng)。
● 數(shù)字系統(tǒng)實(shí)驗(yàn)設(shè)備共享系統(tǒng)
傳統(tǒng)數(shù)字系統(tǒng)實(shí)驗(yàn)設(shè)備一般是在本地運(yùn)行,由FPGA實(shí)驗(yàn)板、USB下載線、專用IDE和PC機(jī)組成。數(shù)字系統(tǒng)實(shí)驗(yàn)設(shè)備的共享系統(tǒng)結(jié)構(gòu)分為用戶學(xué)習(xí)、教學(xué)管理和設(shè)備共享三層(如圖1)。
(1)設(shè)備共享層完成同實(shí)物設(shè)備的底層交互。主要的實(shí)物設(shè)備有FPGA實(shí)驗(yàn)板和驅(qū)動(dòng)板。在一臺(tái)可以接入校園網(wǎng)實(shí)驗(yàn)用機(jī)上掛載實(shí)驗(yàn)板和攝像頭,攝像頭可以借助網(wǎng)絡(luò)技術(shù)將實(shí)驗(yàn)板實(shí)時(shí)顯示的畫面在校園網(wǎng)內(nèi)直播,供遠(yuǎn)程觀察實(shí)驗(yàn)。同時(shí),另一路帶MQTT網(wǎng)關(guān)的驅(qū)動(dòng)板經(jīng)IO口直連接實(shí)驗(yàn)板,根據(jù)用戶遠(yuǎn)程下發(fā)指令,產(chǎn)生實(shí)驗(yàn)板操作所需的輸入激勵(lì)信號(hào),同時(shí)教師拓展物聯(lián)云后也可以采集實(shí)驗(yàn)板數(shù)據(jù)并上傳,供運(yùn)維分析。
(2)教學(xué)管理層負(fù)責(zé)運(yùn)行維護(hù)課程慕課平臺(tái)、MQTT服務(wù)器和實(shí)驗(yàn)用機(jī)。筆者所在學(xué)校和超星合作推出的免費(fèi)開放校級(jí)慕課平臺(tái)能夠有效地滿足課程教學(xué)管理信息化的一平三端要求。課程教學(xué)資料,如課程章節(jié)頁面或活動(dòng)都能夠更新至慕課,而與實(shí)驗(yàn)操作更緊密相關(guān)的工程文件則可以通過遠(yuǎn)程桌面文件操作擺上實(shí)驗(yàn)用機(jī)桌面。在這里,管理教師兼顧管理MQTT服務(wù)和視頻串流服務(wù)。
(3)用戶學(xué)習(xí)層是指用戶在教師的引導(dǎo)下自主展開實(shí)驗(yàn)并學(xué)習(xí)。具體操作為:用戶在本地安裝相同的FPGA軟件平臺(tái),根據(jù)教學(xué)進(jìn)程學(xué)習(xí)慕課章節(jié)。同時(shí),學(xué)生要先在本地完成仿真實(shí)驗(yàn)和實(shí)物驗(yàn)證前的硬件預(yù)約;預(yù)約成功后,學(xué)生在規(guī)定時(shí)間內(nèi)通過遠(yuǎn)程觀察和實(shí)驗(yàn)操作進(jìn)行實(shí)物驗(yàn)證;如果遠(yuǎn)程實(shí)驗(yàn)過程中出現(xiàn)異常,學(xué)生要排除故障并返回上一步;最后完成實(shí)物驗(yàn)證,整理數(shù)據(jù)并完成報(bào)告。
● 系統(tǒng)配置與運(yùn)行
除慕課資源在課程平臺(tái)管理學(xué)生課程信息外,實(shí)驗(yàn)設(shè)備要共享系統(tǒng)遠(yuǎn)程所涉及的能“看到”和能“手動(dòng)”技術(shù)配置、實(shí)驗(yàn)操作和預(yù)約等流程規(guī)范。
1.遠(yuǎn)程觀察服務(wù)
實(shí)驗(yàn)用機(jī)上要掛載普通攝像頭,并將其配置成內(nèi)網(wǎng)的網(wǎng)絡(luò)攝像頭。計(jì)算機(jī)的基本配置為Win7 X64系統(tǒng)、I3處理器和8G內(nèi)存。
(1)Nginx流媒體服務(wù)器
Nginx流媒體服務(wù)器啟動(dòng)的基本操作步驟為進(jìn)入Win命令提示符窗口并依次輸入如上頁圖2所示的命令。執(zhí)行后注意不要關(guān)閉窗口,此時(shí)命令行會(huì)一直處于執(zhí)行中。當(dāng)瀏覽器輸入localhost:9090時(shí),出現(xiàn)Welcome頁面則說明配置Nginx啟動(dòng)成功。
(2)OBS導(dǎo)播推流
在安裝OBS軟件后,配置場(chǎng)景,默認(rèn)場(chǎng)景1,其來源為添加視頻捕獲設(shè)備,并指定已掛載攝像頭。也可以將來源指定為本系統(tǒng)其他程序運(yùn)行窗口,也可以是多個(gè)攝像機(jī)位,并拖動(dòng)為畫中畫。接著,在右列工具箱中點(diǎn)擊進(jìn)入“設(shè)置”框,修改rtmp://內(nèi)網(wǎng)IP:1935/live,其中串碼密鑰不用。在配置完成后,在右列工具箱中點(diǎn)擊“開始推流”按鈕,進(jìn)而開啟內(nèi)網(wǎng)串碼推流服務(wù)。
(3)網(wǎng)絡(luò)播放攝像畫面
用戶所使用的計(jì)算機(jī)需認(rèn)證登錄校園網(wǎng),并在安裝VLC播放軟件后,打開網(wǎng)絡(luò)串流。同時(shí),在VLC媒體菜單下拉選擇“打開網(wǎng)絡(luò)串流”框,輸入地址rtmp://公布的內(nèi)網(wǎng)IP:1935/live/,便可遠(yuǎn)程觀察實(shí)驗(yàn)板。
2.遠(yuǎn)程操作服務(wù)
實(shí)驗(yàn)驅(qū)動(dòng)板接入的MQTT服務(wù)器可直接使用免費(fèi)公用的MQTT服務(wù)器,有條件的學(xué)校也可以上云服務(wù)器部署EMQ X物聯(lián)網(wǎng)服務(wù)。
(1)驅(qū)動(dòng)板環(huán)境
筆者所使用的驅(qū)動(dòng)板是S5開發(fā)板Air202T模塊支持四頻段GSM/GPRS,片上存儲(chǔ)和外設(shè)資源豐富且能通過睡眠省電,支持Lua腳本開發(fā)模式[2]和JSON數(shù)據(jù)格式方便物聯(lián)網(wǎng)應(yīng)用。
代碼編輯器選用的是VS Code,并安裝拓展Lua、LUAT、indent-rainbow、Rainbow Brackets插件來輔助代碼檢查、LUAT接口代碼自動(dòng)補(bǔ)全、高亮等。
LuatTools通過USB線連接開發(fā)板HOST串口,調(diào)試軟件代碼、下載底層固件和Lua腳本下載,也提供上層軟件Demo和Lib庫。
(2)main.lua啟動(dòng)
lua功能一般采用模塊化編程,只需要在main.lua中添加語句require"MqttLuatClient"就可以添加MQTT客戶端,其他默認(rèn)包含log、sys、net、wdt和netLed即可。
需要注意的是,要確認(rèn)末尾sys.init(0,0)和sys.run()語句無錯(cuò),才能啟動(dòng)Luat系統(tǒng)框架。
(3)MqttLuatClient.lua主題切換
任務(wù)事件要采用訂閱與發(fā)布模式,并依賴不同的主題名傳遞消息。不同用戶端可以訂閱同一主題而不會(huì)相互影響,但不同用戶操作指令需要發(fā)布至不同主題才能避免沖突,解決的關(guān)鍵在于主題切換。
主題還可以劃分為固定設(shè)置主題(如test0)和用戶操作實(shí)驗(yàn)板主題(如test/a),通過設(shè)置命令如set ABCD向test0主題發(fā)布消息修改test/a中的a為四位驗(yàn)證碼ABCD,切換到飛行模式20秒后再切換回工作模式,然后用戶就可以發(fā)test/ABCD操作實(shí)驗(yàn)設(shè)備。
(4)MqttLuatClient.lua操作信號(hào)
文件開頭代碼包含pm和pins庫,可以完成實(shí)驗(yàn)板上按鍵和時(shí)鐘開關(guān)的變量定義,如驅(qū)動(dòng)板GPIO的pins號(hào)和方向映射和電壓域的電壓設(shè)定。
sys.taskInit系統(tǒng)啟動(dòng)后可自動(dòng)執(zhí)行任務(wù)函數(shù),完成socket準(zhǔn)備后使用設(shè)備IMEI、用戶名和密碼創(chuàng)建MqttClient客戶端,等待TCP連接MQTT服務(wù)器地址成功后,訂閱相應(yīng)主題便一直循環(huán)等待MqttClient接收或發(fā)送消息以執(zhí)行回調(diào)函數(shù)。
mqttReceiveMsg(MqttClient)函數(shù)判斷data.topic主題類別。如果是設(shè)置主題,json.decode()解析收到的JSON數(shù)據(jù),用set鍵值對(duì)的非空值替換操作主題test/a中的a,執(zhí)行飛行模式和工作模式切換;如果是操作主題,可以按payload輸出相應(yīng)控制信號(hào)。
(5)腳本調(diào)試
當(dāng)?shù)讓雍湍_本下載到驅(qū)動(dòng)板后,在MqttLuatClient.lua代碼中,可以將添加的log.info()語句輸出到LuatTools窗口中觀察,如果加入回調(diào)消息就可發(fā)布至另一主題,如insertMsg("/test3/",data.topic.." "..data.payload),通過MQTT客戶端軟件訂閱查看消息結(jié)果。
3.實(shí)驗(yàn)操作
半實(shí)物實(shí)驗(yàn)用戶要在本地FPGA開發(fā)環(huán)境中先完成數(shù)字系統(tǒng)電路和功能仿真驗(yàn)證,才能在遠(yuǎn)程共享系統(tǒng)上進(jìn)行實(shí)物驗(yàn)證。
(1)MQTT桌面客戶端
MQTT客戶端的聊天式圖形界面簡(jiǎn)化了操作邏輯,可以快速地創(chuàng)建連接多個(gè)客戶端,進(jìn)而方便測(cè)試MQTT/TCP和MQTT/TLS連接、發(fā)布/訂閱功能及其他特性。
Windows桌面則可在應(yīng)用商店里選用MqttBox,安卓手機(jī)可選MQTT Dashboard??蛻舳伺渲脼镃lient名字任意、Protocol協(xié)議為MQTT/Tcp、Host服務(wù)器地址和1883端口、Qos默認(rèn)0等,用戶保存后進(jìn)行連接。
當(dāng)連接成功后,可以先在Topic to publish發(fā)布窗口進(jìn)而設(shè)定主題,如/test/a,Qos為0,無retain保留消息、數(shù)據(jù)Payload選擇Strings/JSON/XML/Characters。接著在Payload輸入發(fā)布消息數(shù)據(jù),再Publish即可。Topic to subscribe訂閱窗口所設(shè)定的主題如/test3,用戶可以觀察回調(diào)消息。
(2)三位數(shù)碼管掃描顯示實(shí)驗(yàn)操作
實(shí)驗(yàn)操作內(nèi)容為:學(xué)習(xí)數(shù)碼管BCD碼數(shù)據(jù)輸入和譯碼顯示結(jié)果,觀察三位數(shù)碼管動(dòng)態(tài)掃描順序并描述執(zhí)行步驟,分析時(shí)鐘頻率對(duì)三位數(shù)碼管顯示效果的影響,優(yōu)化設(shè)計(jì)譯碼部分A至F字符顯示(在不刪除7449的情況下)。
首先,學(xué)生開啟VLC播放軟件遠(yuǎn)程觀察最左邊三位數(shù)據(jù)管顯示的初始值(如523)。發(fā)布窗口Payload輸入數(shù)據(jù)(如8),并發(fā)布;訂閱窗口顯示回調(diào)消息,遠(yuǎn)程觀察實(shí)驗(yàn)板最左邊那位數(shù)碼管的顯示是否改變?yōu)?,四位key燈指示1000。
驅(qū)動(dòng)板支持clkfast、clkmid、clkslow指令,分別對(duì)應(yīng)數(shù)碼管顯示刷新速度的快、中、慢。0至F(大寫)表示最左邊數(shù)碼管顯示輸入為0000至1111。
4.課程管理
雖然學(xué)校的超星慕課平臺(tái)能夠解決目前自建教學(xué)服務(wù)器出口帶寬的問題,但還需要接入更為優(yōu)良的慕課大平臺(tái),滿足多種學(xué)習(xí)端的應(yīng)用需求。教師可以隨時(shí)分班管理,方便不同班級(jí)開始不同課程。
另外,教師也可以通過遠(yuǎn)程桌面軟件,如TeamViewer、UltraVNC Viewer等,遠(yuǎn)程訪問實(shí)驗(yàn)用機(jī),并利用桌面共享和文件傳輸來查看設(shè)備運(yùn)行、FPGA開發(fā)環(huán)境安裝、實(shí)驗(yàn)板測(cè)量。
在實(shí)驗(yàn)過程中,如果學(xué)生因?yàn)閷?shí)驗(yàn)內(nèi)容需要將電路下載至實(shí)驗(yàn)板上運(yùn)行,可以向教師申請(qǐng),授權(quán)后就可以登錄校園網(wǎng),通過遠(yuǎn)程桌面將本機(jī)上的sof文件上傳至實(shí)驗(yàn)用機(jī),再下載至實(shí)驗(yàn)板。
同樣,在進(jìn)行數(shù)碼管實(shí)驗(yàn)時(shí),學(xué)生需要測(cè)量時(shí)鐘信號(hào)和單個(gè)數(shù)碼管位選信號(hào)波形并分析周期關(guān)系,這時(shí)可以通過遠(yuǎn)程桌面操作實(shí)驗(yàn)主機(jī)外掛USB虛擬示波儀器完成實(shí)驗(yàn)板上的信號(hào)測(cè)量。
● 結(jié)語
本文采用數(shù)字系統(tǒng)實(shí)驗(yàn)設(shè)備共享系統(tǒng)來實(shí)現(xiàn)實(shí)驗(yàn)教學(xué)資源線上建設(shè)和實(shí)驗(yàn)板遠(yuǎn)程共享任務(wù)。經(jīng)過實(shí)踐筆者發(fā)現(xiàn),半實(shí)物遠(yuǎn)程共享實(shí)驗(yàn)?zāi)芎w數(shù)字電路測(cè)試數(shù)據(jù)和波形獲取、設(shè)計(jì)優(yōu)化、仿真平臺(tái)綜合驗(yàn)證,培養(yǎng)了學(xué)生使用現(xiàn)代仿真工具和進(jìn)行系統(tǒng)仿真驗(yàn)證的能力,保障了線上教學(xué)和線下實(shí)驗(yàn)的雙線教學(xué)效果。
參考文獻(xiàn):
[1]艾明晶,楊群芳.FPGA在線實(shí)驗(yàn)平臺(tái)設(shè)計(jì)與在線實(shí)驗(yàn)方法研究[J].測(cè)控技術(shù),2019,38(01):19-23+28.
[2]openluat wiki[EB/OL].https://wiki.openluat.com/.