初级入门篇03----远程控制
注:文中提到的软件及程序源码,请到http://blog.eeecontrol.com/software/下载
1 工作原理
在"《物联网图文教程从入门到精通》初级入门篇01----系统组成及工作原理"中的第2节已经详细讲述了远程控制的工作原理。详细操作步骤见http://www.eeecontrol.com/help/order.php。
利用"易监控"提供的软件客户端和智能联网硬件,能够完成各种类型的远程开关控制,如:手机APP远程控制、WEB网页远程控制、手机微信远程控制、PC软件远程控制。下面以远程控制继电器开关和远程控制电视两个具体实例讲解一下远程控制的详细实现流程。
2 典型案例1---远程控制继电器开关
图2-1 远程控制台灯示意图
2.1 账号注册(如果已经注册,可跳过此步骤)
注册"易监控"账号,目前仅支持通过微信注册,详细步骤见http://www.eeecontrol.com/help/register.php。
2.2 添加控制开关
在易监控官方网站(http://www.eeecontrol.com/admin-switch.php)添加一个控制开关,详细步骤见http://www.eeecontrol.com/help/sensor.php。
为了演示本功能,您的设置可以参考下图:
图2-2 参数设置图
按照上述步骤操作完成后,我们就添加了一个控制开关,页面显示见下图,开关的信息如下:
名称:台灯
ON码:1
OFF码:0
KEY:0201
图2-3 添加的第一个控制开关
2.3 硬件设置
注:如果没有联网硬件跳过此步,用模拟器代替,见2.4
2.3.1 智能网关设置及程序烧写
源程序详细位置:"物联网教程资料\硬件源程序\②易监控总程序"。开发板硬件设置、程序修改及下载详见"物联网教程资料\教程\①智能网关说明书\①《智能网关硬件说明书》"的第3.1节"物联网展示系统搭建步骤"。
注:如果对应的程序已下载,跳过此步。
2.3.2 连接要控制的设备
把台灯的控制线路连接到继电器1的常开点和公共点上,连接示意图见下图。
图2-4 连接控制台灯示意图
2.3.3 上电运行设备。
2.4 硬件模拟器设置
注:如果有联网硬件,跳过此步。
如果您没有联网硬件,为了让您快速实现远程控制,易监控为您提供了一款"易监控硬件模拟器"软件。可以安装到您的电脑上,用于模拟联网硬件,"模拟器"操作步骤见下图。软件下载地址见: www.eeecontrol.com/admin-download.php。
图2-5 "易监控硬件模拟器"操作示意图
2.5 客户端发送控制命令到"易监控",开始控制台灯
完成上述步骤之后,用客户端控制台灯其实就很简单了,其实质是通过TCP/IP协议向"易监控"服务器发送如下指令:
ORDER:0201+1
功能:打开台灯
ORDER:0201+0
功能:关闭台灯
(注意:上面所有命令格式中的":",均在英文格式下输入)
相关软件下载见http://www.eeecontrol.com/admin-download.php。
详细API指令见http://www.eeecontrol.com/help/api.php。
下面分别以APP客户端、PC软件客户端、WEB客户端和微信客户端为例讲一下具体的操作步骤。
2.5.1 手机APP控制台灯
图2-6 手机APP远程控制台灯操作步骤
注:手机APP开关控制的 ON码默认为1,OFF码默认为0。如果在第二节您设置的 ON码和OFF码不是1,0。您可以长按对应的图标编辑命令码,在图标打开状态时长按,编辑的是ON码;在图标关闭状态时长按,编辑的是OFF码。
图2-7 手机APP编辑命令码操作步骤
2.5.2 PC软件控制台灯
图2-8 PC软件远程控制台灯操作步骤
2.5.3 网页WEB控制台灯
在"开关控制"页面(http://www.eeecontrol.com/admin-switch.php)进行控制台灯。
图2-9 网页WEB远程控制台灯操作步骤
2.5.4 微信控制台灯
(注意:下面所有命令格式中的":",均在英文格式下输入)
向微信公众号发送以下命令
开关控制:0201+1
功能:打开台灯
开关控制:0201+0
功能:关闭台灯
图2-10 微信远程控制台灯操作步骤
3 典型案例2---远程控制电视
远程控制电视的实现过程中需要用到两款传感器:红外发送传感器和红外接收传感器。红外发送传感器用于模拟电视遥控器,实现通过红外线控制电视的目的。红外接收传感器模拟电视的红外接收装置,用于获取电视遥控器的红外编码。两个传感器的实物图见图3-1、图3-2。下面章节详细讲一下远程控制电视的工作原理和实现方法。
图3-1 红外发送模块
图3-2 红外接收模块
3.1 工作原理
红外发射管是一个能发射出特定波长红外光的二极管。红外遥控器就是使用的红外发射头发出一连串的二进制脉冲码信号。为了使其在无线传输过程中免受其他红外信号的干扰,通常都是先将其调制在特定的载波频率上,然后再经红外发射二极管发射头发射出去。家电的红外遥控普遍使用38kHz的载波来达到抗干扰的目的。
3.2 编码方式(NEC协议)
为了提高数据传输的准确性与可靠性,现实生活中绝大部分数据的传输都是按照一定的"协议"进行的,即要对传输的数据进行转换和编码,下面我讲解一下电视机的红外编码方式。
现有的红外遥控包括两种方式:PWM(脉冲宽度调制)和PPM(脉冲位置调制),电视红外遥控用的就是PWM。
PWM(脉冲宽度调制):以发射红外载波的占空比代表"0"和"1"。为了节省能量,一般情况下,发射红外载波的时间固定,通过改变不发射载波的时间来改变占空比。例如常用的电视遥控器,使用NEC upd6121,其"0"为载波发射0.56ms,不发射0.56ms;其"1"为载波发射0.56ms,不发射1.68ms;此外,为了解码的方便,还有引导码,upd6121的引导码为载波发射9ms,不发射4.5ms。upd6121总共的编码长度为108ms。(但并不是所有的编码器都是如此,比如TOSHIBA的TC9012,其引导码为载波发射4.5ms,不发射4.5ms,其"0"为载波发射0.52ms,不发射0.52ms,其"1"为载波发射0.52ms,不发射1.04ms。)PPM(脉冲位置调制):以发射载波的位置表示"0"和"1"。从发射载波到不发射载波为"0",从不发射载波到发射载波为"1"。其发射载波和不发射载波的时间相同,都为0.68ms,也就是每位的时间是固定的。另外,由于空调的状态远多于电视、音像,并且没有一个标准,所以各厂家都按自己的格式去做一个,造成差异更大。比如:美的的遥控器采用PWM编码,码长120ms左右;新科的遥控器也采用PWM编码,码长500ms左右。电视的遥控目前比较统一,采用PWM编码,码长108ms。
电视机红外遥控器发送数据时,是将二进制数据调制成一系列的脉冲信号红外发射管发射出去,红外载波为频率38KHz的方波,红外接收端在收到38KHz的载波信号时,会输出低电平,否则输出高电平,从而可以将"时断时续"的红外光信号解调成一定周期的连续方波信号,再经过一体化红外接收头解调便可以恢复出原数据信号。
3.3 电视编码
电视遥控编码特征如下:
1:使用38 kHz载波频率
2:以一个9ms的低电平和4.5ms的高电平为引导码,后跟32位二进制代码。
3:前16位为8位用户码及其反码,通过对用户码的检验,每个遥控器只能控制一个设备动作,这样可以有效地防止多个设备之间的干扰。编码后面还要有编码的反码,用来检验编码接收的正确性,防止误操作,增强系统的可靠性。
4:后16位为8位的操作码及其反码。
4:以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示"0"; 以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示"1"。
( 注意:接收码的脉宽与间隔是对发射码取反的,即间隔是0.565ms )
3.3.1 命令码发送
二进制信号的调制由单片机来完成,它把编码后的二进制信号调制成频率为38kHz 的间断脉冲串(周期约26us的脉冲),相当于用二进制信号的编码乘以频率为 38kHz 的脉冲信号得到的间断脉冲串,即是调制后用于红外发射二极管发送的信号,如下图二进制码的调制所示。
图3-3 二进制码调制示意图
图3-4 加38KHZ调制后"0"、"1"表示方法
下图所示为 NEC 协议的典型脉冲链。协议规定低位首先发送,如下图所示的情况,发送的地址码为"59",命令码为"16"。每次发送的信息首先是用于调整红外接收器增益的9ms AGC(自动增益控制)高电平脉冲,接着是 4.5ms 的低电平,接下来便是地址码和命令码。地址码和命令码发送两次,第二次发送的是反码 (如:1111 0000 的反码为 0000 1111),用于验证接收的信息的准确性。因为每位都发送一次它的反码,所以总体的发送时间是恒定的(即每次发送时,无论是1或0,发送的时间都是它及它反码发送时间总和)。这种发送反码的方式可以用来校验,提高按键的准确性。
除了引导码、用户码和数据码以外,协议最后还有一个1bit的停止位,用于数据发送完毕判断。另外在NEC协议中,似乎没有说明停止位的高低电平持续时间。
图3-5 一个控制命令的组成
如果你一直按住遥控器的一个按键,控制命令只能发送一次。如果一直按着按键,发送的则是以 110ms 为周期的重复码,重复码是由 9ms 的 AGC 高电平和 2.25ms 的低电平及一个 560us 的高电平组成。就是说,发了一次命令码之后,不会再发送命令码,而是每隔110ms时间,发送一段重复码。重复码由9ms高电平和2.25ms的低电平以及560us的高电平组成。如下图:
图3-6 遥控器持续按键情况
图3-7 重复码组成情况
3.3.2 命令码接收
下面的波形是从红外接收头上得到的波形:(调制信号转变成高低电平了)
图3-8 命令码接收波形1
图3-9 命令码接收波形2
3.4 电视控制实战演练
3.4.1 账号注册(如果已经注册,可跳过此步骤)
注册"易监控"账号,目前仅支持通过微信注册,详细步骤见http://www.eeecontrol.com/help/register.php。3.4.2 获取遥控器编码
①如果您有示波器,操作如下:
图3-10 红外接收模块整体连接示意图
图3-11 红外接收模块具体连接示意图
根据"电视遥控编码特征"解析示波器上的波形,获得您的电视遥控器"码值"
图3-12 示波器波形
图3-13 放大后示波器波形
②如果您没有示波器,操作如下:
A、把红外接收模块插接到无线节点上;
B、无线节点模块下载"电视遥控器红外解码程序",源程序详细位置:"物联网教程资料\硬件源程序\③无线节点模块程序\⑥HWR",程序烧写步骤详见:"物联网教程资料\教程\②无线节点模块说明书\③《无线节点模块程序烧写说明书》";
C、插接跳线帽给USB转串口电路供电(为了降低功耗,平常USB转串口电路不供电);
D、把无线节点模块通过USB线连接至电脑;
E、电脑打开串口接收软件,通过串口软件接收来自无线节点的信息;
F、电视遥控器对准红外接收模块,按下控制按键,发送红外命令。
图3-14 红外接收模块连接跳线帽给串口电路供电示意图
图3-15 红外接收模块连接示意图
注:为了降低功耗,平常USB转串口电路不供电。
图3-16 串口接收红外解码结果示意图
注:串口软件一次收到4个8位16进制数据,4个数据的定义为"用户码+用户码反码+命令码+命令码反码"。例如收到的数据位"40 BF 12 ED",则用户码为40,命令码为12。
通过以上步骤,我们就能够获取到电视机遥控器的红外命令码,只要获取了"遥控器"的编码,我们就能用"无线节点+红外发射传感器"代替它。无线节点控制红外发射传感器按照设置好的编码格式把控制命令发射出去,就能够实现对电视的红外控制。
图3-17 获取的某品牌电视机的红外遥控命令码
3.4.3 APP设置
把您获取的"电视遥控器码值"输入到手机APP电视遥控界面中对应的按键上去。
图3-18 手机APP电视遥控界面设置示意图
3.4.4 硬件设置
3.4.4.1智能网关设置及程序烧写
源程序详细位置:"物联网教程资料\硬件源程序\②易监控总程序"。开发板硬件设置、程序修改及下载详见"物联网教程资料\教程\①智能网关说明书\①《智能网关硬件说明书》"的第3.1节"物联网展示系统搭建步骤"。
注:如果对应的程序已下载,跳过此步。
3.4.4.2无线节点模块设置及程序烧写
①硬件设置
插接红外发射传感器,插接方法详见"物联网教程资料\教程\②无线节点模块说明书\①《无线节点模块硬件说明书》"的第3.4节。
②程序修改
在程序下载之前,需要将我们获得的"用户码"更新到程序中去。源程序详细位置:"物联网教程资料\硬件源程序\③无线节点模块程序\⑤HW"。修改方法如下:
需要修改的文件位置:HW.c
图3-19 红外发送程序修改示意图
③程序下载
程序烧写步骤详见:"物联网教程资料\教程\②无线节点模块说明书\③《无线节点模块程序烧写说明书》"。
3.4.5 用手机APP控制电视
图3-20 用手机APP遥控电视及电视盒子原理示意图
注:
电视盒子控制与电视控制类似,只是编码上的区别,作者手头上有两款电视盒子(品胜电视盒子和小米电视盒子)均做过测试。
品胜电视盒子遥控器的编码方式与电视相同,可按照获取电视遥控编码的方法获取其编码。
小米电视盒子遥控器的编码比较复杂,它的红外线编码是自定义的。由引导码、10个码元的数据码、结束码三个部分组成。与NEC码一样,这种编码为脉冲宽度编码,即以脉冲持续的时间来分辨码元的值。除了脉冲宽度定义与NEC码有所不同外,NEC码单码元仅有两种状态(0、1),而小米码单码元有四种状态(0、1、2、3)。图中数字单位为100us,测量精度±100us。若想获取其编码,只能通过用示波器的方法来获取。
图3-21 小米电视盒子遥控器码值示意图
特别推荐:推荐给你一本必须人手一本的《电子工程师参考手册》,扫描下面的二维码关注微信公众号(易监控),回复“获取资料”自动下载领取。
已有 1 位网友参与,快来吐槽:
发表评论