天使之翼遥控晾衣架分析

来自Jack's Lab
(版本间的差异)
跳转到: 导航, 搜索
(编码分析结果)
(结论验证)
第98行: 第98行:
  
 
=== 结论验证 ===
 
=== 结论验证 ===
 +
 +
发射的波形从左到右按位发射,可成如下的函数:
 +
 +
<source lang=cpp>
 +
void RadioTX::issue_airer(uint32_t code1, uint32_t code2)
 +
{
 +
int i;
 +
 +
sync_airer();
 +
 +
for(i=31; i>=0; i--)
 +
{
 +
switch ((code1 >> i) & 0x1) {
 +
 +
case 1:
 +
RadioTX::_1();
 +
break;
 +
 +
case 0:
 +
RadioTX::_0();
 +
break;
 +
}
 +
}
 +
 +
for(i=31; i>=0; i--)
 +
{
 +
switch ((code2 >> i) & 0x1) {
 +
 +
case 1:
 +
RadioTX::_1();
 +
break;
 +
 +
case 0:
 +
RadioTX::_0();
 +
break;
 +
}
 +
}
 +
}
 +
</source>
  
  

2014年7月9日 (三) 11:01的版本

目录

1 概述

天使之翼遥控晾衣架.jpg

天使之翼自动晾衣架,淘宝销量第一的自动晾衣架,内部带有电机,可通过遥控器控制灯光的开、关,晾衣架的升、停、降



2 遥控器

遥控器是这样的:

天使之翼遥控器.jpg


发射部分是一颗433MHz的超外差模块:

DSC09987.JPG


发射编码部分没有用通常的PT2262/eV1527编码芯片,而是用的一片 EM78P153 单片机,通过程序控制发射



3 遥控编码分析工具

315MHz,433MHz的简单无线控制,皆可用“红外遥控编码分析仪”来做分析:

DSC09989.JPG


在预留的四孔插座上插一个433MHz 的接受模块,将跳线设置到RF即可:

DSC09990.JPG


软件界面:

红外分析工具界面.jpg




4 编码分析

4.1 初步分析结论

参照捕获的波形,及上下文环境,得到一个初步的结论:


前导码:H_5924(6000) L_700(600)

1/0: H_580(600) L_276(200)

0/1: H_156(200) L_704(600)


灯:
1010 0011 0001 0000 1000 0000 1111 1101 0000 0010 0000 0000 01_01 0011 1110 0010
A    3    1    0    8    0    F    D    0    2    0    0    5     3    E    2

0xA310 80FD 0200 53E2


UP
1010 0011 0001 0000 1000 0000_1111 1101 0000 0010 0000 0000 0000 1011 1001 1010
A    3    1    0    8    0    F    D    0    2    0    0    0    B    9    A

0xA310 80FD 0200 0B9A


STOP
0110 0110 0001 0000 1000 0000 1111 1101 0000 0010_0000 0000 0010 1101 1011 1100
6    6    1    0    8    0    F    D    0    2    0    0    2    D    B    C

0x6610 80FD 0200 2DBC


DOWN
1010 0011 0001 0000 1000 0000 111_1 1101 0000 0010 0000 0000 0100 1011 1101 1010
A    3    1    0    8    0    F     D    0    2    0    0    4    B    D    A

0xA310 80FD 0200 4BDA



4.2 结论验证

发射的波形从左到右按位发射,可成如下的函数:

void RadioTX::issue_airer(uint32_t code1, uint32_t code2)
{
	int i;

	sync_airer();

	for(i=31; i>=0; i--)
	{
		switch ((code1 >> i) & 0x1) {

			case 1:
				RadioTX::_1();
				break;

			case 0:
				RadioTX::_0();
				break;
		}
	}

	for(i=31; i>=0; i--)
	{
		switch ((code2 >> i) & 0x1) {

			case 1:
				RadioTX::_1();
				break;

			case 0:
				RadioTX::_0();
				break;
		}
	}
}










































个人工具
名字空间

变换
操作
导航
工具箱