董 輝,田 叮,彭宣聰,唐旺山,吳 祥
(浙江工業(yè)大學(xué) 信息工程學(xué)院,浙江 杭州 310023)
物聯(lián)網(wǎng)技術(shù)的迅猛發(fā)展,正在引導(dǎo)一場深刻的信息技術(shù)革命[1-2]。近年來,Wi-Fi技術(shù)的不斷發(fā)展與進(jìn)步,以其傳輸可靠性強(qiáng)、速率高、傳輸距離遠(yuǎn)和組網(wǎng)靈活等優(yōu)點(diǎn)[3],使其在物聯(lián)網(wǎng)中大量應(yīng)用。新的嵌入式智能產(chǎn)品會(huì)改變傳統(tǒng)產(chǎn)品的一些缺點(diǎn),極大地方便人們的生活。便攜式智能筆主要通過筆尖的攝像頭對(duì)報(bào)紙、書刊、雜志等文檔里的文字進(jìn)行提取、摘抄存儲(chǔ)或翻譯,一般體型較小、方便攜帶,便于移動(dòng)辦公。目前,脫機(jī)智能筆具有成本高、外觀普通、功耗大、功能有限及交互能力差等缺點(diǎn)。筆者深入研究了Wi-Fi無線通訊技術(shù),對(duì)便攜智能筆控制系統(tǒng)的軟硬件進(jìn)行了協(xié)同設(shè)計(jì),實(shí)現(xiàn)了便攜智能筆的低成本要求。
基于Wi-Fi技術(shù)的便攜智能筆控制系統(tǒng)總體方案如圖1所示,整個(gè)系統(tǒng)主要由控制器模塊、數(shù)據(jù)采集模塊、顯示模塊、遠(yuǎn)程通信模塊和電源模塊組成。
圖1 便攜智能筆控制系統(tǒng)總體方案Fig.1 General scheme of portable intelligent pen control system
控制器模塊采用STM32F103RCT6,該芯片是一款基于Cortex-M3 ARM內(nèi)核的32位微處理器。微控制器集成了許多模塊,包括存儲(chǔ)器、通訊單元和JATG等豐富的硬件資源,處理器本身具有豐富的外設(shè)模塊,使系統(tǒng)變得更加可靠穩(wěn)定[4]。遠(yuǎn)程通信模塊采用ESP-12S串口Wi-Fi模塊。數(shù)據(jù)采集模塊采用由OmniVision公司生產(chǎn)的OV7725圖像感光元件組成的高清迷你攝像頭和Risym輕觸開關(guān),顯示模塊采用0.91 in的OLED顯示屏幕和LED顯示燈。
控制系統(tǒng)實(shí)現(xiàn)的整體功能主要有:設(shè)備通過Wi-Fi連接路由器或手機(jī)熱點(diǎn)上網(wǎng),實(shí)現(xiàn)設(shè)備與服務(wù)器之間的遠(yuǎn)程通訊;設(shè)備通過高清迷你攝像頭進(jìn)行圖像數(shù)據(jù)采集,通過Wi-Fi網(wǎng)絡(luò)按照http post方式傳送圖像的壓縮數(shù)據(jù)到服務(wù)器端;設(shè)備通過OLED顯示屏幕顯示文字或字符,如果文字或字符數(shù)據(jù)一個(gè)屏幕顯示不完全,則屏幕進(jìn)行滾動(dòng)顯示,OLED顯示屏幕的數(shù)據(jù)來自遠(yuǎn)端的服務(wù)器;設(shè)備通過長按開關(guān)鍵實(shí)現(xiàn)系統(tǒng)的開機(jī)和關(guān)機(jī);設(shè)備在正常的狀態(tài)下指示燈每隔5 s閃爍一次,如果出現(xiàn)異常情況,指示燈常亮;設(shè)備對(duì)鋰電池的電壓進(jìn)行實(shí)時(shí)監(jiān)測,如果電池出現(xiàn)低壓情況,通過顯示屏幕進(jìn)行提醒和顯示;設(shè)備能夠進(jìn)行遠(yuǎn)程Wi-Fi參數(shù)配置,通過服務(wù)器與設(shè)備之間建立的連接,實(shí)現(xiàn)Wi-Fi的參數(shù)動(dòng)態(tài)配置。
基于Wi-Fi的便攜智能筆控制系統(tǒng)硬件結(jié)構(gòu)如圖2所示。控制系統(tǒng)采用STM32F103RCT6微控制器,主要的模塊有:電源模塊、OLED屏幕顯示模塊、鋰電池電壓采集模塊、攝像頭模塊、按鍵模塊、Wi-Fi模塊和LED燈指示模塊。
圖2 系統(tǒng)硬件結(jié)構(gòu)Fig.2 System hardware structure
ESP-12S是一款專為移動(dòng)設(shè)備和物聯(lián)網(wǎng)應(yīng)用設(shè)計(jì)的具有超低功耗的UART-Wi-Fi芯片,該模塊為用戶提供了高度集成的Wi-Fi SOC解決方案,可以作為從機(jī)搭載于其他主機(jī)MCU運(yùn)行[5]。系統(tǒng)采用STM32F103RCT6為主控制器,ESP-12S模塊為從機(jī)使用,將Wi-Fi模塊中的RXD和TXD引腳分別與主控芯片USART3的TXD和RXD連接,實(shí)現(xiàn)主控芯片與模塊之間的數(shù)據(jù)通信。
系統(tǒng)的數(shù)據(jù)主要通過攝像頭傳感器進(jìn)行采集,攝像頭分黑白和彩色兩種,系統(tǒng)采用CMOS攝像頭,只需提供文字圖像的灰度信息,而不必提取其彩色信息。
由于系統(tǒng)對(duì)傳感器有體積限制,對(duì)圖像分辨率要求不是高,但是對(duì)幀率要求高,因此采用了低分辨率,高幀率的攝像頭。OV7725是一款低功耗、高性能的VGA(Video graphics array,視頻圖形陣列)CMOS圖像傳感器,通過SCCB接口協(xié)議配置內(nèi)部寄存器,控制CMOS傳感器的工作方式[6]。它支持連續(xù)和隔行兩種掃描方式,VGA與QVGA兩種輸出格式,最高像素為640×480,幀速度為30 fps,數(shù)據(jù)格式包括YUV,YCrCb,RGB 3 種,滿足本系統(tǒng)對(duì)攝像頭的低分辨率、高幀率要求。實(shí)際應(yīng)用測試,攝像頭采集一幀數(shù)據(jù)的時(shí)間和分辨率能夠滿足系統(tǒng)的要求。
系統(tǒng)采用400 mA的鋰電池供電。鋰電池的充電電路采用TP4056芯片設(shè)計(jì),TP4056是一款單節(jié)鋰離子電池恒流/恒壓線性充電芯片,采用底部帶散熱片的SOP8封裝以及簡單的外部應(yīng)用電路,非常適合便攜式設(shè)備應(yīng)用。LED燈D3為充電完成指示燈,當(dāng)系統(tǒng)充電完成后,LED燈亮。電容C14和C12為電壓輸入濾波電容,保證輸入電源的穩(wěn)定。引腳PROG為恒流充電電路設(shè)置,R8的阻值通過計(jì)算得到,即
(1)
式中:IBAT為1 A;在預(yù)充電階段,VPROG為0.1 V,在恒流充電階段,VPROG為1 V。TP4056設(shè)計(jì)電路圖如圖3所示。
圖3 TP4056設(shè)計(jì)電路圖Fig.3 TP4056 design circuit diagram
鋰電池不能直接向系統(tǒng)供電,需要有LDO芯片進(jìn)行穩(wěn)壓輸出,采用的LDO穩(wěn)壓芯片為RT9193-33,芯片RT9193-33為系統(tǒng)提供3.3 V的電壓輸出。LED指示燈D4為系統(tǒng)電源指示,當(dāng)系統(tǒng)電源正常供電時(shí),D4亮;當(dāng)系統(tǒng)電源異常時(shí),D4熄滅。芯片的EN端控制芯片是否工作,當(dāng)EN端口為低電平時(shí),芯片停止對(duì)外輸出電壓;當(dāng)EN端口為高電平時(shí),芯片正常對(duì)外輸出電壓,通過控制芯片的EN引腳可以控制系統(tǒng)是否開機(jī)和關(guān)機(jī)。RT9193-33設(shè)計(jì)電路如圖4所示。
圖4 RT9193-33設(shè)計(jì)電路圖Fig.4 RT9193-33 design circuit diagram
實(shí)際測試結(jié)果顯示:充電模塊輸入電源電壓范圍在-6.5~12 V之間,輸出的電壓穩(wěn)定、轉(zhuǎn)換效率高,具有過流、過溫和過壓保護(hù)功能。
系統(tǒng)采用的顯示模塊為OLED顯示屏幕。OLED屏幕為自發(fā)光材料,無需用到背光板,同時(shí)具有視角廣、畫質(zhì)均勻、發(fā)光效率高和功耗低等優(yōu)點(diǎn)。本系統(tǒng)采用的OLED型號(hào)為SSD1306,屏幕尺寸為0.91 in,其中SSD1306與控制器通訊有3 種接口可以選擇,分別為6 800/8 000串口、I2C和SPI接口。
在外接3.3 V電源的實(shí)際工作測試中,正常工作的平均電流2 mA,功耗為P1=3.3 V×2 mA=0.006 6 W,滿足系統(tǒng)的低功耗的要求。由于OLED為自發(fā)光器件,在較強(qiáng)的光照環(huán)境下具有較高的對(duì)比度,適用于多種復(fù)雜工作環(huán)境。
便攜智能筆控制系統(tǒng)軟件開發(fā)基于ARM公司推出的嵌入式軟件開發(fā)工具RealView MDK,它提供了對(duì)硬件設(shè)備的調(diào)試功能和對(duì)軟件的仿真功能,包含許多經(jīng)典開發(fā)案例模板和固件實(shí)例,同時(shí)還支持多種調(diào)試接口(如UART,JTAG,JLINK等),可大大減小軟件開發(fā)難度,縮短開發(fā)周期[7]。系統(tǒng)軟件功能如圖5所示,主要包括Wi-Fi參數(shù)配置、攝像頭數(shù)據(jù)采集、遠(yuǎn)程數(shù)據(jù)交互和數(shù)據(jù)顯示。
圖5 系統(tǒng)軟件結(jié)構(gòu)Fig.5 System software structure
微控制器上電后,先對(duì)系統(tǒng)進(jìn)行初始化,然后對(duì)攝像頭進(jìn)行參數(shù)配置,讀取微控制器內(nèi)存中的路由器賬戶和參數(shù)信息,進(jìn)行Wi-Fi聯(lián)網(wǎng)參數(shù)配置,所有參數(shù)配置完成后,系統(tǒng)進(jìn)行狀態(tài)檢測。通過ADC進(jìn)行電池電壓的實(shí)時(shí)采集,將采集到的電壓值進(jìn)行分析處理,當(dāng)采集的電壓值低于設(shè)置值時(shí),OLED屏幕顯示電池低壓進(jìn)行提醒。當(dāng)檢測拍照按鍵按下時(shí),系統(tǒng)啟動(dòng)攝像頭開始工作,進(jìn)行數(shù)據(jù)采集,數(shù)據(jù)采集完成后,開始?jí)嚎s處理,將壓縮后的數(shù)據(jù)通過網(wǎng)絡(luò)發(fā)送到服務(wù)器中。服務(wù)器向控制器發(fā)送顯示數(shù)據(jù),微控制器通過串口中斷進(jìn)行數(shù)據(jù)接收,接收數(shù)據(jù)完畢,將數(shù)據(jù)寫入相應(yīng)的OLED寄存器中。系統(tǒng)狀態(tài)指示LED每隔5 s進(jìn)行端口狀態(tài)反轉(zhuǎn)控制,當(dāng)系統(tǒng)工作異常時(shí),LED燈端口的狀態(tài)停止反轉(zhuǎn)。
ESP-12S模塊內(nèi)置32 位MCU,系統(tǒng)上電后開始初始化,設(shè)置ESP-12S模塊的工作模式、路由器連接參數(shù)、服務(wù)器的端口和IP參數(shù)。
控制器與ESP-12S模塊的參數(shù)配置通過AT指令進(jìn)行設(shè)置。微控制器通過串口向ESP-12S發(fā)送“AT+CWMODE=1”指令,將ESP-12S的工作模式設(shè)置為STA模式;發(fā)送指令“AT+CWJAP=
ESP-12S模塊初始化和微控制初始化完成后,控制板會(huì)自動(dòng)連上設(shè)置的目標(biāo)路由器和服務(wù)器,控制板與服務(wù)器建立遠(yuǎn)程連接,通過TCP/IP的數(shù)據(jù)格式進(jìn)行數(shù)據(jù)交互。
由于沒有有效的硬件輸入設(shè)備支持,整個(gè)控制系統(tǒng)工作過程中的動(dòng)態(tài)參數(shù)配置只能通過軟件設(shè)置。系統(tǒng)工作時(shí),由于工作的環(huán)境不同,ESP-12S模塊的路由器賬戶和密碼參數(shù)也是變化的。為了提高系統(tǒng)的通用性,系統(tǒng)的Wi-Fi參數(shù)配置采用動(dòng)態(tài)配置。首先,控制器與服務(wù)器通過默認(rèn)的路由器參數(shù)建立網(wǎng)絡(luò)連接,服務(wù)器發(fā)送“Wi-Fi ssid:{ssid}pwd:{password}”數(shù)據(jù)包給微控制器,微控制器接收到數(shù)據(jù)包后進(jìn)行解析,并提取路由器的賬戶和密碼信息,將提取的賬戶和密碼信息發(fā)送給服務(wù)器,服務(wù)器確定控制板的反饋信息后,發(fā)送確定數(shù)據(jù)包給控制板,控制板接收到確定信息后,將路由器的賬戶和密碼信息寫入內(nèi)部內(nèi)存中。系統(tǒng)參數(shù)配置成功后,關(guān)機(jī)重啟,ESP-12S模塊初始化時(shí),系統(tǒng)會(huì)將最新設(shè)置的參數(shù)信息寫入到模塊中,模塊聯(lián)網(wǎng)參數(shù)配置成功。采用純軟件的方式進(jìn)行參數(shù)配置可以有效減少硬件成本,提高系統(tǒng)的可操作性,系統(tǒng)Wi-Fi參數(shù)配置流程圖如圖6所示。
圖6 系統(tǒng)Wi-Fi參數(shù)配置流程圖Fig.6 System Wi-Fi parameter configuration flow chart
通過互聯(lián)網(wǎng)傳送數(shù)據(jù)時(shí),數(shù)據(jù)的每個(gè)包為1 024 Byte。由于壓縮后的一幀攝像頭圖像數(shù)據(jù)大于單個(gè)數(shù)據(jù)包傳送的最大值,所以要對(duì)圖像數(shù)據(jù)進(jìn)行拆包處理,為了使服務(wù)器接收到多個(gè)數(shù)據(jù)包后能進(jìn)行正確組合,每個(gè)數(shù)據(jù)包中包含該數(shù)據(jù)包在一幀圖像數(shù)據(jù)中的位置標(biāo)志信息,服務(wù)器首先提取每個(gè)數(shù)據(jù)包的位置標(biāo)志信息,然后將通過標(biāo)志進(jìn)行一幀完整數(shù)據(jù)的組合。
為了確保系統(tǒng)數(shù)據(jù)的可靠性,基于Wi-Fi的便攜智能筆控制系統(tǒng)采用基于TCP/IP協(xié)議設(shè)計(jì)的自定義通訊協(xié)議。該通信協(xié)議數(shù)據(jù)包格式如表1所示。
表1 通信數(shù)據(jù)包格式Table 1 Communication packet format 單位:Byte
攝像頭采集的原始數(shù)據(jù)的數(shù)據(jù)量較大,直接發(fā)送會(huì)給網(wǎng)絡(luò)造成很大的負(fù)擔(dān),給系統(tǒng)造成較大的延時(shí)。為了確保數(shù)據(jù)能夠快速有效地傳送到服務(wù)器,需要對(duì)圖像數(shù)據(jù)進(jìn)行二值化處理,將處理后的數(shù)據(jù)壓縮后再發(fā)送到服務(wù)器,可以保證系統(tǒng)傳輸?shù)膶?shí)時(shí)性。
由于系統(tǒng)采用的微控制器不能進(jìn)行復(fù)雜的算法運(yùn)算,綜合考慮后,圖像采用RLE算法進(jìn)行壓縮。RLE(Run-length encoding行程編碼)壓縮算法是Windows系統(tǒng)使用的一種圖像文件壓縮方法,其基本思想是:將一掃描行中顏色值相同的相鄰像素用兩個(gè)Byte來表示,第一個(gè)Byte是一個(gè)計(jì)數(shù)值,用于指定像素重復(fù)的次數(shù);第二個(gè)Byte是具體像素值[8-9]。編碼以(C,L)形式表示,C為數(shù)值,L為行程長度。例如對(duì)于20 個(gè)數(shù)據(jù){0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1}進(jìn)行行程編碼可得{(0,8),(1,12)} 4 個(gè)單元數(shù)據(jù)。解壓縮過程可逆,可重構(gòu)為原來的數(shù)據(jù),屬于無損壓縮,行程較短時(shí),該編碼效率比較低。
設(shè)計(jì)采用基于改進(jìn)的RLE壓縮算法對(duì)二值化圖像進(jìn)行壓縮處理。改進(jìn)的RLE壓縮算法對(duì)二值化圖像進(jìn)行壓縮的過程是:利用單個(gè)Byte表示像素值和該像素值長度信息,Byte的最高位(第7 位)記錄二值化圖像的像素信息,1表示二值化圖像的白色點(diǎn),0表示二值化圖像的黑色點(diǎn),剩余6 位記錄該像素的長度信息,如果長度大于一個(gè)Byte所能記錄的最長信息長度,則增加Byte記錄像素信息。對(duì)不同尺寸的二值化圖像進(jìn)行壓縮,壓縮率如表2所示。
表2 圖像壓縮效果Table 2 Image compression effect
系統(tǒng)采用改進(jìn)的RLE壓縮算法對(duì)二值化圖像進(jìn)行壓縮處理后再發(fā)送到服務(wù)器,可以有效解決數(shù)據(jù)傳輸過程中的延時(shí)性問題。
筆者設(shè)計(jì)的便攜智能筆硬件如圖7所示。
圖7 便攜智能筆硬件Fig.7 The hardware of portable intelligent pen
按下控制板上的拍照按鍵將采集到的圖像數(shù)據(jù)壓縮處理后發(fā)送到服務(wù)器,服務(wù)器對(duì)接收到的數(shù)據(jù)進(jìn)行解壓和解析,并同步顯示。圖8為服務(wù)器顯示的部分字符數(shù)據(jù)。服務(wù)器正常顯示圖像后,會(huì)將解析后的數(shù)據(jù)發(fā)送至控制板,控制板上的OLED屏幕顯示相應(yīng)數(shù)據(jù)。
圖8 服務(wù)器上顯示的字符Fig.8 Characters displayed on the server
該智能筆對(duì)英文字符的中文翻譯如圖9所示,服務(wù)器根據(jù)不同的需求和場合,將相應(yīng)的解析數(shù)據(jù)發(fā)送到控制板。采用這種方式,在硬件不變的前提下,服務(wù)器只需要對(duì)發(fā)送的數(shù)據(jù)進(jìn)行修改,大大提高了系統(tǒng)通用性,也降低了硬件成本。
圖9 控制板屏幕顯示Fig.9 Control panel screen display
市場上常見的智能筆是通過硬件存儲(chǔ)芯片進(jìn)行數(shù)據(jù)保存,通過輸出接口讀出數(shù)據(jù)[10],這種方式使得系統(tǒng)的硬件成本較高。目前市場上具有同樣功能的智能筆的價(jià)格在600 元左右,而筆者所設(shè)計(jì)的便攜智能筆控制系統(tǒng)的成本不足100 元,滿足市場對(duì)低成本的要求。測試表明:筆者所設(shè)計(jì)的便攜智能筆控制系統(tǒng)具有較好的通用性,只需要進(jìn)行軟件方面的調(diào)整,就可以應(yīng)用于不同語言的文字翻譯。
Wi-Fi網(wǎng)絡(luò)數(shù)據(jù)傳輸由于其傳輸速度快、可靠性高、組網(wǎng)成本低,將會(huì)是無線數(shù)據(jù)采集的發(fā)展趨勢。筆者設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于OV7725和Wi-Fi技術(shù)的便攜智能筆控制系統(tǒng),該系統(tǒng)軟件運(yùn)行在Windows平臺(tái)上,以STM32F103RCT6微控制器為硬件平臺(tái),通過OV7725采集原始圖像數(shù)據(jù),微控制器對(duì)圖像進(jìn)行壓縮,利用Wi-Fi技術(shù)和TCP/IP數(shù)據(jù)協(xié)議進(jìn)行數(shù)據(jù)傳輸,0.91 in的OLED屏幕對(duì)服務(wù)器發(fā)送給控制板的數(shù)據(jù)進(jìn)行顯示。通過微控制器的內(nèi)存實(shí)現(xiàn)對(duì)Wi-Fi聯(lián)網(wǎng)路由器賬戶和密碼參數(shù)的動(dòng)態(tài)配置,系統(tǒng)整體工作穩(wěn)定、高效。系統(tǒng)通用性較強(qiáng),硬件成本較低,具有較好的應(yīng)用前景。