learnning 发表于 2009-11-25 09:24:44

关于学习型红外遥控器,如何完美解决学习遥控数据的处理?

有个问题一直困扰我

   目前市面上有很多学习型遥控器,有些问题我也碰到过,比如只能学习有限的几种波形。

   我的问题是,目前学习型遥控器,如何实现

   1。采样一段时间的红外波形,同时判断什么波形,data,然后存储,用时直接调用波形,数据。

      问题:这样必定需要一个很大的程序空间来判断所有种类的波形。

   2。直接班波形时间如高低电平时长存储。用时即原班调用数据的高低电平来发送

      问题:这样必定需要很大的EEPROM来存储每一个key的高低电平,同时,学习时按的时间长短如何取决,发送时如何循环?难道发送一次就完?

   目前一直能难完美解决这个问题,希望做过的朋友能指点下,谢谢

   第一次发帖,请多多关照!

learnning 发表于 2009-11-25 09:51:46

有做过的 或者有更好方法的能帮下忙吗谢谢

roasn 发表于 2009-11-25 10:41:40

好久没有碰过这个东西了,凭我的记忆说说吧。

首先,发送一个时间比较长的载波,作为起始的标志,起始码需要单独记录。
然后开始发送数据,数据码也就两种,检测到不同的电平长度,分别标记为0和1即可,例如无载波时间长度相同,有载波的时间长度有两种,把两种分别标记为0和1,然后把数据流和两种码的时间长度分别记录下来。
数据发送完后,有个比较长的无载波信号,这个长度需要单独记录。
然后,接着红外发送重复码,重复码有两种方式,一种是重复发生数据,一种是发送单独的重复码,后者数据长度比较短,只有几个数据而已。重复码发送完成后,又是一个比较长的无载波时间,这个时间可能与发送完数据后的那个时间不同,需要单独记录。然后又再发送重复码,重复码与前面的重复码相同。周而复此,直到松开按键。

34071417 发表于 2009-11-25 11:09:10

我也被这个问题弄得头痛,这个得弄个国际标准

roasn 发表于 2009-11-25 11:27:08

这个没有国际标准,不过市面上多数采用菲利普的那个标准,可以去找找这个看看

learnning 发表于 2009-11-25 11:54:41

roasn 冰封的心

说的情况 应该说是记录时间的吧,如果一直不放手 ,一直学习也有个空间限制,毕竟存储有限,肯定只能给 比如200BYTE最多

问题来了

如果用这200B 来处理,比如处理0 1以及是什么样的波形,然后存放在一个8b的空间就可以了 但是这里需要很大量程序来判断是

RC5 还是 NEC还是TOSHIBA....等等市面上估计有20多种波形存在 那么要判断20多种,包括你说的 连续的还是不连续的。

其次,如果不处理这些数据而是 每个KEY给200b来存储学来的数据(高低电平时间),那么20KEY 就要4K 60K就要12K同时有8种

device的话 则需要12X8=96K EEPROM来存储学习数据,如果这样,显然还是挺大的。而且200B不一定能放下。

而且存200b数据的方法时对于那些 很长时间不发码的波形,这个低电平很长....所以定时器必须要达到130MS左右的 周期。

这样测0 1时精度就不会高了....

很麻烦

有知道目前市场上的是如何处理的吗?

coody 发表于 2009-11-25 12:33:15

能学习各种空调的遥控波形就NB啦

zhxzhx 发表于 2009-11-25 12:54:12

很多遥控器,按着不松手的波形和点按是不一样的!

zbjzxc 发表于 2009-11-25 13:01:58

最近,也在研究~~楼主用什么芯片?
点击此处下载 ourdev_507074.pdf(文件大小:294K) (原文件名:基于AT89S51的多功能红外遥控器设计.pdf)

learnning 发表于 2009-11-25 13:35:58

zbjzxc

   你的PDF看过了只是个简单的遥控的设计流程 包括解码的原理

   没有学习的

   我开发时用的是AVR。

learnning 发表于 2009-11-25 13:37:09

空调的波形不一样,是一个整体信息包

roasn 发表于 2009-11-25 13:45:39

【6楼】 learnning
无论是哪种格式的编码,信号类型都不会很多,只需要存储不同长度的信号就行了,然后记录下这些不同的信号,最终用相当于查表的方式发送学习下来的编码。这样就不需要关心是什么格式的编码了。

learnning 发表于 2009-11-25 16:33:04

【12楼】 roasn 冰封的心


         

      记录这个信号 需要很大空间,比如34BIT的nec upd6122   高低电平记录时间的话 就应该68byte,16位定时器的话是

       136byte 空间把一个完整的波形记录下来。发送时去从这136b的空间取出发送的话是不用关心编码的,

      你说的应该是这个方式吧,这个方式就是占用空间比较多,60keys的话就是60X136B,当然我们不会是136b,因为有些波形

       不止这么多,因而预留200b是最少的。

       当然,我觉得好像还有个问题,查表方式发送上面的数据200完成了以后 是循环还是停止呢?毕竟如果用户一直按键的话

       我们只发送一次波形?还是循环?循环不按波形规律?按规律就必须有判断什么波形。

learnning 发表于 2009-11-26 08:44:54

额,没有人能帮忙下吗?

kcfoo1 发表于 2009-11-26 08:52:41

同求NEC协议详细PDF 在NEC协议中长按键的编码方式是如何定义的,哪位大侠能指点下

roasn 发表于 2009-11-26 09:09:10

你还是没有看懂我的说法,我的意思不是每个bit都去记录,而只是记录不同的bit。
无论是什么编码格式,里面很多码流波形是一样的(载波时间相同、无载波时间相同),对吧?把这相同的波形分别标记,如标记为0、1,那1byte可以记录8bit数据,再加上为数不多的波形时间,消耗的空间并不大。当然,如起始位、停止位等特殊的时间需要单独记录。如果按键没有松开,当然是继续发送,但是,发送的只是重复码,不是数据码,那个数据量是很少的。也有一些遥控编码是重复发生数据码,那也无所谓,连重复码的记录都省了。
当然,这种方法需要程序做一些判断,但是不需要如你所说的判断属于什么编码。
我用这种方法做过,是可以成功的,我当时用Mega8的EEPROM记录了5个按键,按键不松开可连续发送。

roasn 发表于 2009-11-26 09:12:38

简单地说,就是程序需要把不同的码流波形时间分别记录下来,如果后面遇到与前面波形一样的码流,不需要记录时间,标记成0或者1就行了,这就是数据码。

learnning 发表于 2009-11-26 09:20:52

roasn 冰封的心

    谢谢你了,虽然我用的是整套记录,记录完后再处理的方式,存储空间不多,例如下面方法中的编码格式识别法。

某公司学习遥控的2种处理方式:


   学习算法:两种。波形复制法:波形复制和分析处理;编码格式识别法:复制波形和分析识别出具体编码格式;(说明:两种算法各有优缺点。)
复制波形位数最小128位,最大300多位;(每种芯片方案都可以)
可学习无载波编码格式,载波学习范围:20K-500KHZ;(大部分芯片方案的载波范围是20-80KHZ)
载波识别误差:+-1KHZ;

xiaorunyi 发表于 2009-11-26 11:47:10

记录引导码、有载波、无载波的时间;再把有载波和无载波以0和1来表示这样数据就得到压缩了,发时在还原出来。
另,编码种类很多,只能把常用的找规律做出来

zbjzxc 发表于 2009-12-1 15:26:28

波形的完全复制,这种方法好~~~只要一个红外接收二极管~~~

alan8918 发表于 2011-1-28 15:08:01

MARK

zhamo 发表于 2011-8-6 20:15:24

记录高低点评的宽度就行。。。据说。。。。正在研究中。。

knowstr 发表于 2013-8-28 16:52:01

收藏来,看看

wangxuedong 发表于 2013-8-29 09:31:26

kcfoo1 发表于 2009-11-26 08:52 static/image/common/back.gif
同求NEC协议详细PDF 在NEC协议中长按键的编码方式是如何定义的,哪位大侠能指点下 ...

把十六进制的转化成二进制你就明白了

qnc238 发表于 2014-10-21 14:11:55

最近要用,过来学习一下
页: [1]
查看完整版本: 关于学习型红外遥控器,如何完美解决学习遥控数据的处理?