趙鑫海
(國(guó)防科學(xué)技術(shù)大學(xué) 航天科學(xué)與工程學(xué)院, 長(zhǎng)沙 410072)
?
基于LabView和Arduino的電視頻道無(wú)線監(jiān)視系統(tǒng)
趙鑫海
(國(guó)防科學(xué)技術(shù)大學(xué) 航天科學(xué)與工程學(xué)院, 長(zhǎng)沙 410072)
設(shè)計(jì)了一種能幫助父母在另一個(gè)房間對(duì)電視節(jié)目進(jìn)行監(jiān)控的系統(tǒng)。系統(tǒng)使用基于ATmega328P單片機(jī)的Arduino UNO硬件平臺(tái)處理紅外脈沖信號(hào),實(shí)現(xiàn)對(duì)不同紅外信號(hào)的十六進(jìn)制編碼。藍(lán)牙模塊負(fù)責(zé)將編碼后的信息發(fā)送至電腦,再由LabView程序處理后實(shí)現(xiàn)電視頻道的判讀,從而實(shí)現(xiàn)對(duì)電視頻道的無(wú)線監(jiān)視。
藍(lán)牙;Arduino;LabView;紅外信號(hào)處理
如何恰當(dāng)?shù)貙?duì)子女所收看的電視節(jié)目進(jìn)行監(jiān)視,成為家庭教育的薄弱環(huán)節(jié)之一。子女收看電視節(jié)目屬于個(gè)人愛(ài)好,且在年齡差距和叛逆時(shí)期雙重作用下,不愿讓家長(zhǎng)知道。要做到在隔壁房間對(duì)其子女收看的電視節(jié)目進(jìn)行監(jiān)控對(duì)家長(zhǎng)來(lái)說(shuō)是一件難事。
市場(chǎng)上銷(xiāo)售的電視大多支持紅外遙控器近距離遙控,本設(shè)計(jì)以接收電視遙控器發(fā)出的紅外信號(hào)為基礎(chǔ)展開(kāi)。
該監(jiān)視系統(tǒng)主要硬件有:Arduino單片機(jī)(USB供電)、CH-05型藍(lán)牙模塊、紅外接收頭、藍(lán)牙適配器(若電腦自帶藍(lán)牙,則不需要)、電腦。
1.1 紅外接收頭
紅外遙控器發(fā)出的信號(hào)是一連串的二進(jìn)制脈沖碼,為了使其在無(wú)線傳輸過(guò)程中免受其他紅外信號(hào)的干擾,通常都是先將其調(diào)制在特定的載波頻率上,然后再經(jīng)紅外發(fā)射二極管發(fā)射出去,而紅外線接收裝置則要濾除其他雜波,只接收該特定頻率的信號(hào)并將其還原成二進(jìn)制脈沖碼,也就是進(jìn)行解調(diào)。
市面上的一般電視遙控器發(fā)出的紅外信號(hào)都遵守NEC協(xié)議。NEC協(xié)議的特點(diǎn)如下:
① 8位地址位,8位命令位。
② 為了保證可靠性,地址位和命令位被傳輸兩次。
③ 脈沖位置調(diào)制。
④ 載波頻率為38 kHz。
⑤ 每一位的時(shí)間為1.125 ms或2.25 ms。
紅外二極管發(fā)出有規(guī)律時(shí)間間隔的紅外脈沖[1],三極管將其轉(zhuǎn)換為對(duì)應(yīng)時(shí)間間隔的高低電平,并由三極管的VOUT極輸出。高低電平定義如圖1所示。
圖1 邏輯0和1的定義圖
1.2 Arduino單片機(jī)
Arduino單片機(jī)通過(guò)如圖2所示的脈沖協(xié)議將接收到的不連續(xù)的高低電平信號(hào)編碼成8位的十六進(jìn)制數(shù)。
圖2 按下遙控板上按鍵立即松開(kāi)的脈沖協(xié)議
1.3 藍(lán)牙模塊
藍(lán)牙模塊主要負(fù)責(zé)發(fā)送數(shù)據(jù),內(nèi)置PCB射頻天線和8 Mb Flash,支持SPI編程接口,支持USB、UART、SPI、PCM等接口,支持主從一體,支持軟件控制主從模塊,通過(guò)REACH、ROSH認(rèn)證。
圖3 程序框圖(樣本程序)
藍(lán)牙模塊的GND、VCC、RX、TX引腳分別與Arduino單片機(jī)的GND、VCC、TX、RX引腳相連接。Arduino單片機(jī)帶有通過(guò)串口發(fā)送數(shù)據(jù)的功能(通過(guò)TX與RX引腳將信息通過(guò)藍(lán)牙發(fā)送至電腦接收端),進(jìn)而實(shí)現(xiàn)了10 m左右范圍的通信。
2.1 Arduino數(shù)據(jù)采集和處理
Arduino有著固定的流程和規(guī)范,每個(gè)Arduino程序只有一個(gè)setup函數(shù)()和一個(gè)loop()函數(shù)。setup()函數(shù)里面編寫(xiě)的代碼只執(zhí)行一次,一般在這個(gè)函數(shù)中編寫(xiě)一些初始化和開(kāi)機(jī)動(dòng)畫(huà)程序,但當(dāng)setup()函數(shù)執(zhí)行完后,就開(kāi)始循環(huán)執(zhí)行l(wèi)oop()函數(shù)內(nèi)的代碼[2]。函數(shù)的程序代碼基于C++語(yǔ)言,可從網(wǎng)上下載開(kāi)源程序,此處不做介紹。紅外信號(hào)接收頭和藍(lán)牙模塊與Arduino單片機(jī)引腳連線如表1所列。
表1 引腳連接
2.2 LabView程序
LabView程序?yàn)镚語(yǔ)言(圖形化編程),它將對(duì)接收到的數(shù)據(jù)進(jìn)行最后處理并顯示所收看的電視頻道(LabView程序界面板中VISA函數(shù)的具體設(shè)置為:波特率9 600、數(shù)據(jù)位(8)、奇偶校驗(yàn)(無(wú))、停止位(1)、流控(無(wú)) ),并讀取藍(lán)牙串口接收到的8位十六進(jìn)制數(shù)。
VISA讀取函數(shù)配置中,字節(jié)總數(shù)設(shè)置為2,表示只取末尾兩位命令碼。
添加字符串至數(shù)值轉(zhuǎn)換,將末位的兩位十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),在前面板添加數(shù)據(jù)緩存框以便于程序面板數(shù)值比較設(shè)置中常量的確定。通過(guò)比較函數(shù)與對(duì)應(yīng)的常量進(jìn)行比較產(chǎn)生邏輯因變量(0或1),從而控制前面板的布爾指示燈,前面板布爾指示燈對(duì)應(yīng)電視臺(tái)標(biāo)。
程序框圖如圖3所示,其中共設(shè)計(jì)了9個(gè)重點(diǎn)電視臺(tái),前面板有其對(duì)應(yīng)的臺(tái)標(biāo),左邊部分為VISA串口的參數(shù)設(shè)置,藍(lán)牙占用的是COM5串口。數(shù)據(jù)從最左段經(jīng)串口讀取后沿著程序框圖向右執(zhí)行。首先,選取末尾兩位十六進(jìn)制數(shù),然后進(jìn)行十六進(jìn)制數(shù)字符串至數(shù)值轉(zhuǎn)換,再進(jìn)行邏輯比較,之后進(jìn)行布爾燈點(diǎn)亮,VISA讀取結(jié)束。
前面板如圖4所示,由電視臺(tái)標(biāo)、布爾燈和數(shù)據(jù)緩存框組成。它們的主要功能分別是:表征不同的電視臺(tái);布爾燈點(diǎn)亮表示正在收看相應(yīng)電視節(jié)目,未點(diǎn)亮則表示該電視節(jié)目并非正在收看;數(shù)據(jù)緩存框主要用來(lái)直觀顯示編譯后的數(shù)值大小,以便于設(shè)計(jì)程序面板。
圖4 前面板圖(樣本面板)
3.1 系統(tǒng)工作流程圖
系統(tǒng)工作流程圖如圖5所示。
圖5 系統(tǒng)工作流程圖
3.2 系統(tǒng)運(yùn)行及測(cè)試
該系統(tǒng)在室內(nèi)進(jìn)行了測(cè)試,在臥室對(duì)客廳的電視節(jié)目進(jìn)行監(jiān)視。在滿(mǎn)足需求的情況下,能在電腦屏幕上清楚地看到正在播放的電視節(jié)目的臺(tái)標(biāo)指示燈被點(diǎn)亮。
測(cè)試時(shí)采取的方案為控制變量法,即控制被測(cè)目標(biāo)與接收端的距離,并在中間夾的墻體數(shù)不同的情況下觀察電腦上前面板響應(yīng)的情況來(lái)判斷裝置的使用范圍,無(wú)墻阻礙條件下的測(cè)試結(jié)果如表2所列。
表2 無(wú)墻阻礙條件下的測(cè)試結(jié)果
在5 m距離下阻礙墻數(shù)不同的測(cè)試結(jié)果如表3所列。
表3 在5 m距離下阻礙墻數(shù)不同的測(cè)試結(jié)果
通過(guò)測(cè)試,可以發(fā)現(xiàn)文中設(shè)計(jì)可以適應(yīng)室內(nèi)的空間限制和物理障礙,能夠滿(mǎn)足用戶(hù)的需求。
[1] 博陸科電子./ BLK-MD-HC-05藍(lán)牙模塊技術(shù)手冊(cè),2014.
[2] Dale Wheat.Arduino技術(shù)內(nèi)幕[M].北京:人民郵電出版社,2013:113-119.
[3] Michael McRoberts.Arduino從基礎(chǔ)到實(shí)踐[M].北京:電子工業(yè)出版社,2013:130-135.
[4] 劉君華,賈惠芹,丁暉,等.虛擬儀器圖形化編程語(yǔ)言LabView教程[M].西安:西安電子科技大學(xué)出版社,2001:141-144.
趙鑫海(本科生),主要研究方向?yàn)轱w行器系統(tǒng)與工程。
Remote Monitor of TV Channel Based on LabView and Arduino
Zhao Xinhai
(College of Aerospace Science and Engineering,National University of Defence Technology,Changsha 410072, China)
The paper designs a system which can help parents to monitor the TV programs in another house.The system uses the Arduino UNO hardware platform based on the ATmega328P microcontroller to process the infrared pulse signals,then achieves hexadecimal coding different infrared signals.The coded information will be sent to the computer through Bluetooth,then can distinguish the TV channel after processing by LabView,so the parents can monitor the TV channels easily.
Bluetooth;Arduino;LabView;infrared signal process
TP274
A
迪娜
2015-01-11)