趙鑫海
(國防科學技術大學 航天科學與工程學院, 長沙 410072)
?
基于LabView和Arduino的電視頻道無線監視系統
趙鑫海
(國防科學技術大學 航天科學與工程學院, 長沙 410072)
設計了一種能幫助父母在另一個房間對電視節目進行監控的系統。系統使用基于ATmega328P單片機的Arduino UNO硬件平臺處理紅外脈沖信號,實現對不同紅外信號的十六進制編碼。藍牙模塊負責將編碼后的信息發送至電腦,再由LabView程序處理后實現電視頻道的判讀,從而實現對電視頻道的無線監視。
藍牙;Arduino;LabView;紅外信號處理
如何恰當地對子女所收看的電視節目進行監視,成為家庭教育的薄弱環節之一。子女收看電視節目屬于個人愛好,且在年齡差距和叛逆時期雙重作用下,不愿讓家長知道。要做到在隔壁房間對其子女收看的電視節目進行監控對家長來說是一件難事。
市場上銷售的電視大多支持紅外遙控器近距離遙控,本設計以接收電視遙控器發出的紅外信號為基礎展開。
該監視系統主要硬件有:Arduino單片機(USB供電)、CH-05型藍牙模塊、紅外接收頭、藍牙適配器(若電腦自帶藍牙,則不需要)、電腦。
1.1 紅外接收頭
紅外遙控器發出的信號是一連串的二進制脈沖碼,為了使其在無線傳輸過程中免受其他紅外信號的干擾,通常都是先將其調制在特定的載波頻率上,然后再經紅外發射二極管發射出去,而紅外線接收裝置則要濾除其他雜波,只接收該特定頻率的信號并將其還原成二進制脈沖碼,也就是進行解調。
市面上的一般電視遙控器發出的紅外信號都遵守NEC協議。NEC協議的特點如下:
① 8位地址位,8位命令位。
② 為了保證可靠性,地址位和命令位被傳輸兩次。
③ 脈沖位置調制。
④ 載波頻率為38 kHz。
⑤ 每一位的時間為1.125 ms或2.25 ms。
紅外二極管發出有規律時間間隔的紅外脈沖[1],三極管將其轉換為對應時間間隔的高低電平,并由三極管的VOUT極輸出。高低電平定義如圖1所示。

圖1 邏輯0和1的定義圖
1.2 Arduino單片機
Arduino單片機通過如圖2所示的脈沖協議將接收到的不連續的高低電平信號編碼成8位的十六進制數。

圖2 按下遙控板上按鍵立即松開的脈沖協議
1.3 藍牙模塊
藍牙模塊主要負責發送數據,內置PCB射頻天線和8 Mb Flash,支持SPI編程接口,支持USB、UART、SPI、PCM等接口,支持主從一體,支持軟件控制主從模塊,通過REACH、ROSH認證。

圖3 程序框圖(樣本程序)
藍牙模塊的GND、VCC、RX、TX引腳分別與Arduino單片機的GND、VCC、TX、RX引腳相連接。Arduino單片機帶有通過串口發送數據的功能(通過TX與RX引腳將信息通過藍牙發送至電腦接收端),進而實現了10 m左右范圍的通信。
2.1 Arduino數據采集和處理
Arduino有著固定的流程和規范,每個Arduino程序只有一個setup函數()和一個loop()函數。setup()函數里面編寫的代碼只執行一次,一般在這個函數中編寫一些初始化和開機動畫程序,但當setup()函數執行完后,就開始循環執行loop()函數內的代碼[2]。函數的程序代碼基于C++語言,可從網上下載開源程序,此處不做介紹。紅外信號接收頭和藍牙模塊與Arduino單片機引腳連線如表1所列。

表1 引腳連接
2.2 LabView程序
LabView程序為G語言(圖形化編程),它將對接收到的數據進行最后處理并顯示所收看的電視頻道(LabView程序界面板中VISA函數的具體設置為:波特率9 600、數據位(8)、奇偶校驗(無)、停止位(1)、流控(無) ),并讀取藍牙串口接收到的8位十六進制數。
VISA讀取函數配置中,字節總數設置為2,表示只取末尾兩位命令碼。
添加字符串至數值轉換,將末位的兩位十六進制數轉換為十進制數,在前面板添加數據緩存框以便于程序面板數值比較設置中常量的確定。通過比較函數與對應的常量進行比較產生邏輯因變量(0或1),從而控制前面板的布爾指示燈,前面板布爾指示燈對應電視臺標。
程序框圖如圖3所示,其中共設計了9個重點電視臺,前面板有其對應的臺標,左邊部分為VISA串口的參數設置,藍牙占用的是COM5串口。數據從最左段經串口讀取后沿著程序框圖向右執行。首先,選取末尾兩位十六進制數,然后進行十六進制數字符串至數值轉換,再進行邏輯比較,之后進行布爾燈點亮,VISA讀取結束。
前面板如圖4所示,由電視臺標、布爾燈和數據緩存框組成。它們的主要功能分別是:表征不同的電視臺;布爾燈點亮表示正在收看相應電視節目,未點亮則表示該電視節目并非正在收看;數據緩存框主要用來直觀顯示編譯后的數值大小,以便于設計程序面板。

圖4 前面板圖(樣本面板)
3.1 系統工作流程圖
系統工作流程圖如圖5所示。

圖5 系統工作流程圖
3.2 系統運行及測試
該系統在室內進行了測試,在臥室對客廳的電視節目進行監視。在滿足需求的情況下,能在電腦屏幕上清楚地看到正在播放的電視節目的臺標指示燈被點亮。
測試時采取的方案為控制變量法,即控制被測目標與接收端的距離,并在中間夾的墻體數不同的情況下觀察電腦上前面板響應的情況來判斷裝置的使用范圍,無墻阻礙條件下的測試結果如表2所列。

表2 無墻阻礙條件下的測試結果
在5 m距離下阻礙墻數不同的測試結果如表3所列。

表3 在5 m距離下阻礙墻數不同的測試結果
通過測試,可以發現文中設計可以適應室內的空間限制和物理障礙,能夠滿足用戶的需求。

[1] 博陸科電子./ BLK-MD-HC-05藍牙模塊技術手冊,2014.
[2] Dale Wheat.Arduino技術內幕[M].北京:人民郵電出版社,2013:113-119.
[3] Michael McRoberts.Arduino從基礎到實踐[M].北京:電子工業出版社,2013:130-135.
[4] 劉君華,賈惠芹,丁暉,等.虛擬儀器圖形化編程語言LabView教程[M].西安:西安電子科技大學出版社,2001:141-144.
趙鑫海(本科生),主要研究方向為飛行器系統與工程。
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)