打印
[51单片机]

无线遥控器编码协议

[复制链接]
3445|28
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
沙发
mylsf| | 2014-2-22 17:10 | 只看该作者
看不出啦,看不出啦,逻辑分析

使用特权

评论回复
板凳
FAQ| | 2014-2-22 18:38 | 只看该作者
按键波形?不对吧,要按键的波形有什么用。你的是433MHz还是315MHz通信,还是什么?

使用特权

评论回复
地板
lnulibin| | 2014-2-22 21:13 | 只看该作者
本帖最后由 lnulibin 于 2014-2-22 21:14 编辑

C:\Documents and Settings\Administrator\桌面\未命名.bmp

使用特权

评论回复
5
dirtwillfly| | 2014-2-22 21:18 | 只看该作者
楼主要解码别人的无线遥控器?

使用特权

评论回复
6
lnulibin| | 2014-2-22 21:20 | 只看该作者
呵呵,是不是很简单。想学习一台遥控器发出的波形,关键就是知道,码头,代码1,及代码0的高低电平时间。
而后,将遥控器发出的波形进行解码。就可以了。

使用特权

评论回复
7
51DPJLT| | 2014-2-23 10:34 | 只看该作者
对最近我也在玩这个,不过不知道为什么,用逻辑分析仪老是采不到信号,LZ你用的是开发板,还是自己搭建的接收电路呢,可以参考参考吗??感激不尽,对了你的遥控是是么牌子的,开发板送的那种吗~~~??、

使用特权

评论回复
8
xuliya282| | 2014-2-23 10:38 | 只看该作者
这个必须要支持~~

使用特权

评论回复
9
KENJI_ZEBRA| | 2014-2-23 13:50 | 只看该作者
留言待結果

我只知道IRDA 协议

使用特权

评论回复
10
KENJI_ZEBRA| | 2014-2-23 13:53 | 只看该作者
這是接收的C語言
void IrInit()
{
        IT0=1;//狟蔥朓揖楷
        EX0=1;//湖羲笢剿0埰勍
        EA=1;        //湖羲軞笢剿

        IRIN=1;//場宎趙傷諳
}
/*******************************************************************************
* 滲杅靡         : ReadIr()
* 滲杅髡夔                   : 黍綻俋杅硉腔笢剿滲杅
* 怀           : 拸
* 怀堤                  : 拸
*******************************************************************************/

void ReadIr() interrupt 0
{
        unsigned char j,k;
        unsigned int err;
        Time=0;                                         
        DelayMs(70);

        if(IRIN==0)                //岆瘁淩腔諉彶善淏腔陓瘍
        {         
               
                err=1000;                                //1000*10us=10ms,閉徹佽隴諉彶善渣昫腔陓瘍
                /*絞謗跺沭璃飲峈淩岆悜遠ㄛ彆衄珨跺沭璃峈樑腔奀緊泐堤悜遠ㄛ轎腕最唗堤渣腔奀
                綜ㄛ最唗侚婓涴爵*/       
                while((IRIN==0)&&(err>0))        //脹渾醱9ms腔腴萇徹                 
                {                       
                        DelayMs(1);
                        err--;
                }
                if(IRIN==1)                        //彆淏脹善9ms腴萇
                {
                        err=500;
                        while((IRIN==1)&&(err>0))                 //脹渾4.5ms腔宎詢萇徹
                        {
                                DelayMs(1);
                                err--;
                        }
                        for(k=0;k<4;k++)                //僕衄4郪杅擂
                        {                               
                                for(j=0;j<8;j++)        //諉彶珨郪杅擂
                                {

                                        err=60;               
                                        while((IRIN==0)&&(err>0))//脹渾陓瘍醱腔560us腴萇徹
                                        {
                                                DelayMs(1);
                                                err--;
                                        }
                                        err=500;
                                        while((IRIN==1)&&(err>0))         //數呾詢萇腔奀潔酗僅﹝
                                        {
                                                DelayMs(1);//0.14ms
                                                Time++;
                                                err--;
                                                if(Time>30)
                                                {
                                                        EX0=1;
                                                        return;
                                                }
                                        }
                                        IrValue[k]>>=1;         //k桶尨菴撓郪杅擂
                                        if(Time>=8)                        //彆詢萇堤珋湮衾565usㄛ饒繫岆1
                                        {
                                                IrValue[k]|=0x80;
                                        }
                                        Time=0;                //蚚俇奀潔猁笭陔董硉                                                       
                                }
                        }
                }
                if(IrValue[2]!=~IrValue[3])
                {
                        return;
                }
        }                       

使用特权

评论回复
11
zhimagod| | 2014-2-23 14:16 | 只看该作者
可以从两个方面入手:
1、知道其编码芯片型号,自然就能找到其对应资料
2、采集相同遥控不同按键的码和不同遥控器相同按键的码进行比较,若编码未加密则很容易找到其意义

使用特权

评论回复
12
yuanquan12345| | 2014-2-23 15:51 | 只看该作者
KENJI_ZEBRA 发表于 2014-2-23 13:53
這是接收的C語言
void IrInit()
{

怎么注释,显示不是中文。

使用特权

评论回复
13
samsunghellome|  楼主 | 2014-2-24 08:21 | 只看该作者
FAQ 发表于 2014-2-22 18:38
按键波形?不对吧,要按键的波形有什么用。你的是433MHz还是315MHz通信,还是什么? ...

433通信,这个是逻辑分析仪捕获的波形,想利用此波形,用单片机解码。

使用特权

评论回复
14
samsunghellome|  楼主 | 2014-2-24 08:25 | 只看该作者
zhimagod 发表于 2014-2-23 14:16
可以从两个方面入手:
1、知道其编码芯片型号,自然就能找到其对应资料
2、采集相同遥控不同按键的码和不同 ...

编码解码芯片都是单片机软件完成的,没有特定的编码解码芯片。第二条倒是可以TRY TRY,呵呵

使用特权

评论回复
15
samsunghellome|  楼主 | 2014-2-24 08:29 | 只看该作者
51DPJLT 发表于 2014-2-23 10:34
对最近我也在玩这个,不过不知道为什么,用逻辑分析仪老是采不到信号,LZ你用的是开发板,还是自己搭建的接 ...

接收用一个红外接收头,通电,共地就可以了,把逻辑分析仪的通道连接到接收头OUT端,采样深度/采样频率 几秒钟就可以了,普通的遥控器24M足够了。

使用特权

评论回复
16
samsunghellome|  楼主 | 2014-2-24 08:33 | 只看该作者
lnulibin 发表于 2014-2-22 21:20
呵呵,是不是很简单。想学习一台遥控器发出的波形,关键就是知道,码头,代码1,及代码0的高低电平时间。
...

标准的遥控协议很明了,0和1的波形周期不同,有一定时间差。但是这个波形,怎么不按套路出牌呢?虽说波形长短有规律,但高电平和低电平时间分类多于两种,莫非还有除了0和1之外,其他的参数??

使用特权

评论回复
17
samsunghellome|  楼主 | 2014-2-24 08:35 | 只看该作者
dirtwillfly 发表于 2014-2-22 21:18
楼主要解码别人的无线遥控器?

最近入手一款小型逻辑分析仪,一直以来对遥控这块很感兴趣,就拿着手头的各种遥控器开刀了,哈哈

使用特权

评论回复
18
gx_huang| | 2014-2-24 08:39 | 只看该作者
samsunghellome 发表于 2014-2-24 08:33
标准的遥控协议很明了,0和1的波形周期不同,有一定时间差。但是这个波形,怎么不按套路出牌呢?虽说波形 ...

还是有规律的,就是0和1的不同编码而已。
前面一个同步码,后面就是宽高窄低和窄高宽低的2种编码而已。

使用特权

评论回复
19
samsunghellome|  楼主 | 2014-2-24 08:46 | 只看该作者
lnulibin 发表于 2014-2-22 21:13

这个,有点意思,我试试,先谢谢了!

使用特权

评论回复
20
samsunghellome|  楼主 | 2014-2-24 09:06 | 只看该作者
本帖最后由 samsunghellome 于 2014-2-24 09:11 编辑
gx_huang 发表于 2014-2-24 08:39
还是有规律的,就是0和1的不同编码而已。
前面一个同步码,后面就是宽高窄低和窄高宽低的2种编码而已。 ...

师傅,这个是同步码吧! 前面5us高电平,然后20ms低,5ms高,0.6ms低电平,如下图:

同一个按键码的三段相同的波形,只有第一个有完整的同步码,后面的两个只有5ms高,0.6ms低电平,如下图:

这样理解对不对呢?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

198

帖子

0

粉丝