夏祥祥
(菏澤學院 機電工程學院,山東 菏澤274015)
照片采集已經成為人們生活中必不可少的一部分, 傳統基于單片機裸機的照片采集系統實時性不強,使用體驗效果較差[1],早已不能滿足人們多功能、高畫質的需求,現階段均采用嵌入式及數字信號處理技術完成[2]。本設計以STM32 為核心,嵌入UCOSIII 操作系統和STemWin 圖形用戶界面設計,開發體驗效果好、低成本的嵌入式無線照片采集系統[3]。在銀行、政務大廳采集用戶照片后,需要工作人員進行審核才能進行下一步操作,這些交互式的照片采集場合可以作為部分應用場景。
系統以STM32 為核心,輔以攝像頭、TFTLCD、WIFI 等必要模塊,完成照片的拍攝、存儲、顯示、遠傳等功能,系統總體框架如圖1 所示。STM32 核心控制器嵌有UCOSIII 系統和STemWin操作界面,控制OV7670 攝像頭采集照片并在本地TFTLCD 上顯示,利用FAT 文件系統將照片保存在TF 卡中;同時通過ESP8266 無線WIFI 技術將照片信息發送至手機或PAD,方便工作人員查看信息。UCOSIII 操作系統的使用可提高系統的實時性,StemWin 技術使操作界面美觀友好,提高人機體驗效果。由于系統運行數據量較大,STM32 自帶的存儲區域有限,需要外擴SRAM和Flash,LED、按鍵等輔助硬件用于系統運行指示和用戶交互。

圖1 系統設計原理框圖
照片采集模塊采用OV7670 攝像頭,照片數據經圖像緩存器件AL422B 緩沖后再送給微控制單元,可大大減少對采集速度的要求[4],電路原理如圖2 所示。STM32 的PC6 和PC4 管腳模擬IIC 時序,通過SCCB 總線對SIOD、SIOC 引腳進行模式設置。由于使用的3.0 寸R61509VN 電阻式觸摸屏像素為240*400,可設置OV7670 輸出QVGA(圖像尺寸每行320 個像素,共240 行)、RGB565 格式,此時FIFO(first in first out)圖像緩沖器可存儲2 幀QVGA 圖片。

圖2 OV7670 電路原理圖
攝像頭采集的照片保存在TF 卡中,TF 卡小巧便攜,作為外擴存儲設備得到了廣泛應用。TF 卡使用SPI 驅動模式,控制器的PB13、PB14、PB15 管腳配置為SPI2 模式進行數據讀寫,如圖3 所。TF 卡屬于大容量存儲器,需搭配FAT 文件系統,利用FAT文件系統進行照片文件的創建、數據讀寫、文件信息查看等功能,FAT 文件系統免費開源,專門為小型嵌入式系統設計,容易移植和使用,使我們可以更為方便高效地組織數據[5]。
隨著移動互聯技術的發展,越來越多的設備要求具有無線通訊功能,免布線安裝方便。ESP8266 是比較成熟的WIFI 解決方案。本設計ESP8266 工作于AP 模式,即ESP8266 作為熱點,手機或PAD 通過WIFI 直接與模塊通信,實現局域網無線控制,如圖4 所示。圖中PA3、PA2 引腳連接控制器的UART2(串行通信2),控制器通過UART2 將數據傳輸給ESP8266,經過終端天線將數據發送給手機或PAD 端。PE6、PG7 引腳分別為ESP8266的復位和使能端,串口型WIFI 僅需4 根線控制,雖然速度比較低,但能夠滿足幾千字節內的數據傳輸,完全能夠滿足照片傳輸要求。

圖3 TF 卡電路原理圖

圖4 WIFI 電路原理圖
早期單片機程序不帶實時操作系統(RTOS),采用一個死循環和若干個中斷服務程序的方式[7],該模式開發工作量大,當功能復雜時系統實時性不好。本系統使用UCOSIII 操作系統,通過系統內核進行多任務管理,大大提高系統實時響應速度。將拍照功能劃分為5 個任務,每個任務負責實現其中的一部分功能,各任務詳細功能如下:
開始任務:用于創建其他任務,創建完成后就掛起自身。
LED1 任務:系統正常工作指示燈,每400 毫秒閃爍一次,指示系統正常運行。
TFT 觸摸任務:支持TFTLCD 的觸摸屏任務,會在觸摸的位置顯示箭頭。
觸摸屏按鍵掃描任務:掃描觸摸屏上的按鈕,并執行相應的功能。
實體按鍵掃描任務:掃描4 個實體按鍵,進行拍照、保存、瀏覽等功能。
采用STM32F103ZET6 進行實驗,系統時鐘工作頻率為72MHz。采集的照片能夠實現本地顯示與保存,也能通過按鍵進行瀏覽查看,效果如圖5 所示。理論上,OV7670 輸出VGA 格式圖像時可達30 幀/秒,由于TFTLCD 是慢速顯示設備,實際顯示速率約為12 幀/秒。該系統僅適用于對采集時間要求不高的照像場合,不能用于視頻監控。如想提高存儲速率,TF 卡可以采用SDIO 驅動,無線通信也可換成并口型WIFI。UCOSIII 沒有任務數目限制,利用該技術開發的嵌入式無線照片采集系統可以擴展更多復雜的任務,后期維護方便。

圖5 系統調試效果圖