陳朋誼,房宇佳,甘偉鵬,邵萬鵬,王 燕,夏思雨,阮偉華,王海鵬
(三江學院 電子信息工程學院,江蘇 南京210012)
近年來隨著人工智能的火熱,在圖像識別的方向也有了長足的進步,有越來越多的成熟物體檢測和識別的模型。而對于微控制器這種級別的芯片如果想要實現復雜的識別和大量的計算,目前來說很難實現,但是通過圖像無線傳輸的方法將微控制器和計算能力強大的設備結合起來,即由本地采集圖像,然后通過無線Wi-Fi將圖像數據傳輸給計算機[1],在計算機端進行復雜的識別運算算法,再將算法處理結果通過無線網絡傳輸到微控制器,最后再由微控制器做出決策。在這種拓撲結構中,圖像的傳輸具有極其重要的作用:第一,圖像的傳輸技術能夠采集具有高清晰度的圖像,這樣可以提高識別的準確度;第二,更快的傳輸速度可以使計算終端接收幀率更高的圖像,提升識別速度和實時性。所以圖像傳輸和人工智能的結合在未來將大有潛力。
在無人機中經??梢钥吹綀D像傳輸(簡稱“圖傳”)系統的身影[2],而圖傳系統在安防系統中的地位更是舉足輕重。在移動的嵌入式設備上很多時候也需要將圖像傳輸到其他終端上,以便觀察或者完成其他的操作[3-10],本文提出并設計一種基于Wi-Fi無線傳輸的低成本圖傳系統。
圖1 所示為整個原型系統框圖,主要包括兩端,是圖像的采集和發(fā)送端,其中包含攝像頭模塊(OV2640),負責圖像的采集和壓縮。微控制MCU(STM32F407ZGT6)用來接收攝像頭模塊發(fā)送過來的數據[6],并將數據通過SPI接口傳輸到Wi-Fi模塊。Wi-Fi模塊(ALK8266)轉發(fā)數據到圖像的接收端,也可轉發(fā)另一端消息MCU,另一端圖像接收端用來查看Wi-Fi發(fā)送過來的圖像,這一端是終端接收設備,可以是一臺電腦或者手機,并運行上位機軟件或者瀏覽器。
圖1 基于STM32微控制器的Wi-Fi圖傳原型系統框圖
整個系統采用由下而上開發(fā)的順序,如圖2所示。軟件開發(fā)總體分成四層結構,首先要確定最底層的硬件接口,保證所有接口合理分配并和MCU資源接口匹配,例如Wi-Fi模塊需要串行外設接口(SPI)方式通信,不可以隨意分配端口。上一層需要完成底層驅動的編寫,初始化所有外設,使MCU控制所有外設模塊。再上一層就需要完成2個部分的內容,一個是對于Wi-Fi模塊中TCP/IP協議棧配置[7],另一個是對于圖像數據的采集和存儲。頂層為應用層,主要負責完成發(fā)送圖像到其他終端,由于需要發(fā)送圖像到瀏覽器,所以包含WEB服務器的實現。
圖2 基于STM32微控制器的圖傳原型系統軟件開發(fā)順序框圖
首先對核心板通電,燒錄測試代碼,觀察到核心板上綠色LED燈進行閃爍。實物效果如圖3所示,通過串口查看獲取到的圖像數據。最終檢測Wi-Fi模塊,通電啟動后查看Wi-Fi模塊狀態(tài)指示燈是否正常,供電電壓是否達到3.3V,通過連接熱點進行數據的發(fā)送,串口打印接收到的數據。
圖3 圖傳系統整體實物圖
連接好各模塊后,就可以將圖像數據通過TCP服務器發(fā)送到連接上的客戶端。圖像發(fā)送的格式為JPEG格式,這是一種壓縮后的圖像格式,JPEG圖像以二進制打開會看到編碼是以0XFF、0XD8開頭,以0XFF、0XD9結尾,通過編寫函數來查找特定開頭和結尾的十六進制數,就可以得到寫入SRAM中一幅完整JPEG圖像的開頭地址和數據的長度,特別需要注意的是在向瀏覽器每次發(fā)送圖片之前都要加入如下幀頭:
" --camera "
"Content-Type:image/jpeg "
"Content-Length:"+ "jpeg_data_len"+" "
需要注意參數“jpeg_data_len”是圖片大小,發(fā)送是需要將整型轉化為字符串,這樣瀏覽器就可以一直顯示視頻流直到關閉瀏覽器。圖像的發(fā)送核心的代碼如圖4所示:
圖4 圖像的發(fā)送核心的代碼截圖
搭建好原型系統之后,運行調試程序,攝像頭會采集圖像信息,傳輸到STM32微控制器開發(fā)平臺中進行處理,調用圖像發(fā)送函數,經過Wi-Fi傳輸到上位機和瀏覽器中,打開圖像接收上位機軟件,輸入代碼中設置的IP地址和端口號,然后點擊啟動。實驗現象如圖5所示,上位機程序接收圖像。瀏覽器接收到的圖像如圖6所示。
圖5 上位機接收圖像
圖6 瀏覽器接收到的圖像
本論文設計實現了一套基于微控制器的低成本無線圖傳系統,可通過Wi-Fi技術實現較高幀率的無線圖像傳輸,利用成本較低、在資源有限的微控制器上實現攝像頭數據的采集和發(fā)送,Wi-Fi模塊可以讓嵌入式設備連接網絡,并且可以通過瀏覽器直接查看視頻,整套系統成本約為150元。傳輸的速度超過許多同類原型系統,為后來此類圖傳問題提供了一種可行的解決思路。