引言
如何恰当地对子女所收看的电视节目进行监视,成为家庭教育的薄弱环节之一。子女收看电视节目属于个人爱好,且在年龄差距和叛逆时期双重作用下,不愿让家长知道。要做到在隔壁房间对其子女收看的电视节目进行监控对家长来说是一件难事。
市场上销售的电视大多支持红外遥控器近距离遥控,本设计以接收电视遥控器发出的红外信号为基础展开。
1系统硬件组成
该监视系统主要硬件有:Arduino单片机(USB供电)、CH05型蓝牙模块、红外接收头、蓝牙适配器(若电脑自带蓝牙,则不需要)、电脑。
1.1红外接收头
红外遥控器发出的信号是一连串的二进制脉冲码,为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射出去,而红外线接收装置则要滤除其他杂波,只接收该特定频率的信号并将其还原成二进制脉冲码,也就是进行解调。
市面上的一般电视遥控器发出的红外信号都遵守NEC协议。NEC协议的特点如下:
① 8位地址位,8位命令位。
② 为了保证可靠性,地址位和命令位被传输两次。
③ 脉冲位置调制。
④ 载波频率为38 kHz。
⑤ 每一位的时间为1.125 ms或2.25 ms。
红外二极管发出有规律时间间隔的红外脉冲[1],三极管将其转换为对应时间间隔的高低电平,并由三极管的VOUT极输出。高低电平定义如图1所示。
图1 逻辑0和1的定义图
1.2Arduino单片机
Arduino单片机通过如图2所示的脉冲协议将接收到的不连续的高低电平信号编码成8位的十六进制数。
图2 按下遥控板上按键立即松开的脉冲协议
1.3蓝牙模块
蓝牙模块主要负责发送数据,内置PCB射频天线和8 Mb Flash,支持SPI编程接口,支持USB、UART、SPI、PCM等接口,支持主从一体,支持软件控制主从模块,通过REACH、ROSH认证。
蓝牙模块的GND、VCC、RX、TX引脚分别与Arduino单片机的GND、VCC、TX、RX引脚相连接。Arduino单片机带有通过串口发送数据的功能(通过TX与RX引脚将信息通过蓝牙发送至电脑接收端),进而实现了10 m左右范围的通信。
2系统软件构架
2.1Arduino数据采集和处理
Arduino有着固定的流程和规范,每个Arduino程序只有一个setup函数()和一个loop()函数。setup()函数里面编写的代码只执行一次,一般在这个函数中编写一些初始化和开机动画程序,但当setup()函数执行完后,就开始循环执行loop()函数内的代码[2]。函数的程序代码基于C++语言,可从网上下载开源程序,此处不做介绍。红外信号接收头和蓝牙模块与Arduino单片机引脚连线如表1所列。
2.2LabView程序
LabView程序为G语言(图形化编程),它将对接收到的数据进行最后处理并显示所收看的电视频道(LabView程序界面板中VISA函数的具体设置为:波特率9 600、数据位(8)、奇偶校验(无)、停止位(1)、流控(无) ),并读取蓝牙串口接收到的8位十六进制数。
VISA读取函数配置中,字节总数设置为2,表示只取末尾两位命令码。
添加字符串至数值转换,将末位的两位十六进制数转换为十进制数,在前面板添加数据缓存框以便于程序面板数值比较设置中常量的确定。通过比较函数与对应的常量进行比较产生逻辑因变量(0或1),从而控制前面板的布尔指示灯,前面板布尔指示灯对应电视台标。
程序框图如图3所示,其中共设计了9个重点电视台,前面板有其对应的台标,左边部分为VISA串口的参数设置,蓝牙占用的是COM5串口。数据从最左段经串口读取后沿着程序框图向右执行。首先,选取末尾两位十六进制数,然后进行十六进制数字符串至数值转换,再进行逻辑比较,之后进行布尔灯点亮,VISA读取结束。
图3 程序框图(样本程序)
前面板如图4所示,由电视台标、布尔灯和数据缓存框组成。它们的主要功能分别是:表征不同的电视台;布尔灯点亮表示正在收看相应电视节目,未点亮则表示该电视节目并非正在收看;数据缓存框主要用来直观显示编译后的数值大小,以便于设计程序面板。
图4 前面板图(样本面板)
3系统工作原理及测试
3.1系统工作流程图
系统工作流程图如图5所示。
图5 系统工作流程图
3.2系统运行及测试
该系统在室内进行了测试,在卧室对客厅的电视节目进行监视。在满足需求的情况下,能在电脑屏幕上清楚地看到正在播放的电视节目的台标指示灯被点亮。
测试时采取的方案为控制变量法,即控制被测目标与接收端的距离,并在中间夹的墙体数不同的情况下观察电脑上前面板响应的情况来判断装置的使用范围,
无墙阻碍条件下的测试结果如表2所列。
在5m距离下阻碍墙数不同的测试结果如表3所列。
通过测试,可以发现文中设计可以适应室内的空间限制和物理障碍,能够满足用户的需求。
结语
本文利用Arduino单片机处理信号,采用电视USB电源供电,随开随启动,做到了相对的低碳,利用CH05蓝牙模块,实现了家庭内部的近程监视需求。此外,还可以给Arduino单片机配置网络模块或短信模块,这样可以通过电脑或手机对电视频道进行远程监控,以解决空间束缚的问题,实现实时监视。