基于LabView和Arduino的电视频道无线监视系统
2015-07-02赵鑫海
赵鑫海
(国防科学技术大学 航天科学与工程学院, 长沙 410072)
基于LabView和Arduino的电视频道无线监视系统
赵鑫海
(国防科学技术大学 航天科学与工程学院, 长沙 410072)
设计了一种能帮助父母在另一个房间对电视节目进行监控的系统。系统使用基于ATmega328P单片机的Arduino UNO硬件平台处理红外脉冲信号,实现对不同红外信号的十六进制编码。蓝牙模块负责将编码后的信息发送至电脑,再由LabView程序处理后实现电视频道的判读,从而实现对电视频道的无线监视。
蓝牙;Arduino;LabView;红外信号处理
引 言
如何恰当地对子女所收看的电视节目进行监视,成为家庭教育的薄弱环节之一。子女收看电视节目属于个人爱好,且在年龄差距和叛逆时期双重作用下,不愿让家长知道。要做到在隔壁房间对其子女收看的电视节目进行监控对家长来说是一件难事。
市场上销售的电视大多支持红外遥控器近距离遥控,本设计以接收电视遥控器发出的红外信号为基础展开。
1 系统硬件组成
该监视系统主要硬件有: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 系统软件构架
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 系统工作原理及测试
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)