任森偉 朱麗軍* 李晨浩 薛夢(mèng)嬌 楊立娜
(嘉興學(xué)院,浙江 嘉興 314001)
目前的遠(yuǎn)程設(shè)備中,應(yīng)用于教學(xué)的數(shù)量非常少,并且由于網(wǎng)絡(luò)受限等原因,實(shí)驗(yàn)大多是用于珍貴的實(shí)驗(yàn)器材,并沒有大規(guī)模進(jìn)行研發(fā)推廣,并且范圍十分受限?;谶h(yuǎn)程監(jiān)控的晾衣架實(shí)驗(yàn)系統(tǒng)的研制,則是在網(wǎng)絡(luò)開始不斷發(fā)展,5g 的出現(xiàn),4g 與寬帶網(wǎng)絡(luò)的不斷提升,使遠(yuǎn)程監(jiān)控的實(shí)驗(yàn)系統(tǒng)的實(shí)驗(yàn)的研制推廣成為了可能。在經(jīng)歷著疫情的當(dāng)今,學(xué)校能夠進(jìn)行遠(yuǎn)程實(shí)驗(yàn)[1]培訓(xùn)能夠在為學(xué)生的實(shí)驗(yàn)課程提供更好的環(huán)境。我們的選題是對(duì)遠(yuǎn)程監(jiān)控的實(shí)驗(yàn)教學(xué)系統(tǒng)進(jìn)行嘗試,對(duì)于遠(yuǎn)程監(jiān)控實(shí)驗(yàn)教學(xué)系統(tǒng)的研制推廣和教學(xué)模式的變化具有重要意義。
我們?cè)赑C、樹莓派微型電腦的基礎(chǔ)上,采用TCP/IP 協(xié)議,設(shè)立PC 為客戶端,樹莓派為服務(wù)器。通過內(nèi)網(wǎng)穿透,使服務(wù)器能夠接收到來自不同局域網(wǎng)下的客戶端數(shù)據(jù)包。PC 與樹莓派兩者間建立TCP 連接,通過socket(套接字),PC 傳輸BIN 文件的數(shù)據(jù)到樹莓派,進(jìn)而樹莓派通過串口將文件傳輸?shù)街悄芰酪录軉纹瑱C(jī)模塊。再通過網(wǎng)絡(luò)攝像頭,對(duì)實(shí)驗(yàn)現(xiàn)象進(jìn)行拍攝,通過RTMP 地址將視頻數(shù)據(jù)流傳輸給PC。
2.1.1 硬件系統(tǒng)總體設(shè)計(jì)
基于遠(yuǎn)程監(jiān)控的智能晾衣架實(shí)驗(yàn)系統(tǒng)由PC、樹莓派微型電腦、網(wǎng)絡(luò)攝像頭、智能晾衣架單片機(jī)模塊組成。整體系統(tǒng)框圖如圖1 所示。
2.1.2 智能晾衣架單片機(jī)模塊具體設(shè)計(jì)
STM32F103C8T6 是一款基于ARM Cortex-M3 內(nèi)核的32 位的微控制器,采用LQFP48 封裝其程序存儲(chǔ)器FLASH 容量是64KB(64K x 8bit),RAM 容量是20KB(20K x 8bit)。具有優(yōu)越的FLASH 容量以及處理性能,適合于用于IAP 在應(yīng)用簡稱,因此將其作為系統(tǒng)的主控芯片。我們采用兩個(gè)按鍵、DHT11 溫濕度模塊、光敏傳感器作為系統(tǒng)獲取反饋信息途徑。通過按鍵實(shí)現(xiàn)手動(dòng)控制晾衣架收放的功能,并采用溫濕度模塊與光敏傳感器對(duì)濕度和光強(qiáng)度進(jìn)行反饋從而能夠?qū)崿F(xiàn)晾衣架受環(huán)境變量控制的功能。采用電機(jī)來展現(xiàn)實(shí)現(xiàn)的具體效果,將木棍與電機(jī)結(jié)合,使實(shí)驗(yàn)現(xiàn)象更明顯,能夠通過觀察最終木棍指向的角度來展現(xiàn)具體的實(shí)驗(yàn)效果。
PC 為客戶端,設(shè)計(jì)為各用戶進(jìn)行交互的界面,實(shí)現(xiàn)輸入服務(wù)器的IP 地址、端口,TCP 連接,選取文件路徑,傳輸文件,打開網(wǎng)絡(luò)攝像頭畫面觀察等功能。滿足用戶能夠進(jìn)行遠(yuǎn)程更新,遠(yuǎn)程實(shí)時(shí)觀察實(shí)驗(yàn)現(xiàn)象效果的需求。
樹莓派為服務(wù)器,設(shè)計(jì)為接收文件和燒錄作用。功能為建設(shè)TCP 服務(wù)器,Oray 花生殼內(nèi)網(wǎng)穿透,TCP 連接,接收文件,串口通信傳輸數(shù)據(jù)進(jìn)而用于STM32f103 的IAP 在應(yīng)用編程。
2.2.1 TCP 通訊
傳輸控制協(xié)議(TCP,Transmission Control Protocol)是為了在不可靠的互聯(lián)網(wǎng)絡(luò)上提供可靠的端到端字節(jié)流而專門設(shè)計(jì)的一個(gè)傳輸協(xié)議。與UDP 不同,TCP 允許發(fā)送和接收字節(jié)流的數(shù)據(jù),進(jìn)而在發(fā)送端和接收端各提供兩個(gè)緩沖區(qū),實(shí)現(xiàn)全雙工的通信[2]。
設(shè)立樹莓派為TCP/IP 服務(wù)器,PC 端為TCP/IP 客戶端。兩者通過TCP 協(xié)議的socket 進(jìn)行通信。兩端都建立了一個(gè)socket 對(duì)象,通過Socket 對(duì)象對(duì)數(shù)據(jù)進(jìn)行傳輸。服務(wù)器處于一個(gè)無限循環(huán),等待客戶端的連接,兩端進(jìn)行三次握手來建立連接,之后對(duì)數(shù)據(jù)進(jìn)行傳輸,再通過四次握手關(guān)閉連接。
我們采用Python[3]語言對(duì)程序進(jìn)行設(shè)計(jì),采用了Python 的socket 庫來建立socket 對(duì)象,客戶端通過connect 函數(shù)連接服務(wù)器,通過send 函數(shù)傳輸文件。服務(wù)端采用socket 庫中bind 函數(shù)綁定IP 地址與端口,listen 函數(shù)設(shè)置監(jiān)聽數(shù),通過accept 函數(shù)來接收數(shù)據(jù),使用write 函數(shù)將文件數(shù)據(jù)寫入相對(duì)應(yīng)的文件中。之后我們采用商用的Oray 花生殼[4]內(nèi)網(wǎng)穿透服務(wù)將服務(wù)端內(nèi)網(wǎng)穿透,使其客戶端可在不同的局域網(wǎng)中完成向服務(wù)器的訪問和文件傳輸,達(dá)成可遠(yuǎn)程傳輸?shù)男Ч?/p>
2.2.2 IAP(圖3)
圖3 IAP 更新應(yīng)用程序過程
IAP 是用戶自己的程序在運(yùn)行過程中對(duì)User Flash 的部分區(qū)域進(jìn)行燒寫。我們通過串口接收樹莓派傳輸過來的bin 文件并對(duì)STM32f103 固件程序進(jìn)行更新。
2.2.3 智能晾衣架模塊
我們采用光敏傳感器、溫濕度傳感器、按鍵、電機(jī)來模擬智能晾衣架。在進(jìn)行了IAP 的程序更新后,我們通過按鍵進(jìn)行模擬對(duì)晾衣架的主動(dòng)升降控制,通過溫濕度傳感器、光電傳感器,來進(jìn)行環(huán)境參數(shù)對(duì)晾衣架的自動(dòng)收回的效果比較。
2.2.4 網(wǎng)絡(luò)攝像頭(圖4)
我們采用Python 的Pyqt5 庫和Opencv2 庫對(duì)網(wǎng)絡(luò)攝像頭的畫面進(jìn)行顯示。Opencv2 具有可簡易提取視頻圖像幀的框架,可建立一個(gè)VideoCapture 對(duì)象來提取視頻中圖像幀,采用Pyqt5中的QLabel 將視頻畫面進(jìn)行播放。
開啟視頻監(jiān)控,客戶端連接服務(wù)器,并傳輸文件。(此時(shí)電機(jī)在收起區(qū))服務(wù)器接收到BIN 文件,將文件通過串口傳輸?shù)絾纹瑱C(jī)中。
燒錄成功后,電機(jī)運(yùn)作,通過光敏傳感器、溫濕度傳感器,改變電機(jī)旋轉(zhuǎn)位置(電機(jī)從收起區(qū)到晾曬區(qū))。
本實(shí)驗(yàn)系統(tǒng)以TCP 協(xié)議和內(nèi)網(wǎng)穿透實(shí)現(xiàn)BIN 文件的傳輸,通過STM32F103 單片機(jī)的IAP 功能,讓樹莓派和單片機(jī)間傳輸BIN 文件數(shù)據(jù),從而完成單片機(jī)的再更新,實(shí)現(xiàn)遠(yuǎn)程燒錄的過程。通過網(wǎng)絡(luò)攝像頭,對(duì)實(shí)驗(yàn)現(xiàn)象進(jìn)行遠(yuǎn)程觀察并顯示于PC端。本實(shí)驗(yàn)系統(tǒng)對(duì)遠(yuǎn)程監(jiān)控的實(shí)驗(yàn)教學(xué)系統(tǒng)進(jìn)行了嘗試,對(duì)于遠(yuǎn)程監(jiān)控的單片機(jī)實(shí)驗(yàn)教學(xué)系統(tǒng)的研制推廣和教學(xué)模式的變化具有重要意義。