Arduino 理解三星电视的红外编码

Arduino 理解三星电视的红外编码,arduino,esp8266,nodemcu,Arduino,Esp8266,Nodemcu,有人能帮助我了解如何在使用ESP8266 HTTP IR Blaster库的项目中使用原始IR数据吗 我已经创建了一个带有IR发送器和接收器的NodeMCU板,根据 只要我使用捕获的代码,一切都正常,例如: 这是电源按钮(E040BF)的代码 当我在家庭自动化系统中使用它时,如果我有一个专用的开关序列(我在这里找到了:),但无法翻译、修改或通过原始数据发送它,这将对我非常有益 使用Node red,尝试了多种方法,还实现了原始项目的MQTT客户机,但无论如何我都不接受这些代码。不发送它 也尝试作

有人能帮助我了解如何在使用ESP8266 HTTP IR Blaster库的项目中使用原始IR数据吗

我已经创建了一个带有IR发送器和接收器的NodeMCU板,根据

只要我使用捕获的代码,一切都正常,例如: 这是电源按钮(E040BF)的代码

当我在家庭自动化系统中使用它时,如果我有一个专用的开关序列(我在这里找到了:),但无法翻译、修改或通过原始数据发送它,这将对我非常有益

使用Node red,尝试了多种方法,还实现了原始项目的MQTT客户机,但无论如何我都不接受这些代码。不发送它

也尝试作为一个JSON,没有帮助

[
    {
    "type":"raw",
    "data":"[0000, 006D, 0000, 0022, 00AC, 00AC, 0015, 0040, 0015, 0040, 0015, 0040, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0040, 0015, 0040, 0015, 0040, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0015, 0040, 0015, 0040, 0015, 0015, 0015, 0015, 0015, 0040, 0015, 0040, 0015, 0040, 0015, 0040, 0015, 0015, 0015, 0015, 0015, 0040, 0015, 0040, 0015, 0015, 0015, 0689]",
    "khz":38
    }
]

你知道我下一步可以尝试什么吗?

你上面展示的“Pronto格式”的一个很好的介绍在

对于上面的特定示例,对于在处给出的三星OFF代码,完整代码以十六进制表示的16位数字序列给出,中间有空格:

0000 006D 0000 0022 00AC 00AC 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0040 0015 0040 0015 0015 0015 0015 0015 0040 0015 0040 0015 0015 0015 0689
您可以将其分解为序言(出于兴趣,在此处进行分解,但如果您已经有可用的三星代码,则不需要):

  • 0x0000-这是原始代码格式数据
  • 0x006D-频率109十进制=38.028kHz(计算见上述链接)
  • 0x0000-第一个序列中没有突发对
  • 0x0022-34十进制-34突发信号对跟随
  • 00AC 00AC-信号的第一次突发-在38kHz下开启0xAC(172十进制)周期,关闭相同数量
  • 之后是32对数据“突发对”(如果您已经为同一设备使用了其他代码,那么这可能是您所需要的唯一位)
  • 0015 0689-信号的最终突发-开启0x15(21十进制)周期,关闭0x689(1673十进制)周期,保证在下一个代码传输前44ms无任何IR
要手动解释数据,请以8个数字为一组将其复制(例如,复制到文本编辑器中):

0015 0040 0015 0040 0015 0040 0015 0015 
0015 0015 0015 0015 0015 0015 0015 0015 
0015 0040 0015 0040 0015 0040 0015 0015 
0015 0015 0015 0015 0015 0015 0015 0015 
0015 0015 0015 0015 0015 0015 0015 0040 
0015 0040 0015 0015 0015 0015 0015 0040 
0015 0040 0015 0040 0015 0040 0015 0015
0015 0015 0015 0040 0015 0040 0015 0015 
然后:

  • 忽略所有数字相同的列(即使是上面的列,也表示开启时间-0x15=38kHz时IR的21个十进制周期)
  • 对于其余列(表示关闭时间),将大的数字(本例中为0x40)替换为“1”,将小的数字(0x15)替换为“0”
第一行

0015 0040 0015 0040 0015 0040 0015 0015 
忽略偶数列会留下:

0040 0040 0040 0015 
将这些替换为1和0

1    1    1    0
如果你把它转换成十六进制,它就是“E”

下一行是'0',然后是'E',然后是'0'(看到它从上面的另一个三星代码的E0E0开始已经很舒服了…),剩下的行就可以了 E019E6

对ON代码执行同样的操作会使您 E09966

由于我最近需要为相同的代码解决相同的问题,我可以确认我的三星电视对这些代码的响应为关闭和打开

不足为奇的是,有各种各样的软件工具可以在格式之间进行转换,也有各种各样的格式可以描述相同的信号(这一点我们可以很好地解释)。例如,将上述字符串解码为“协议NECx2,设备7,子设备7,OBC 152”。这取决于你是否知道你必须这样做

  • 位反转设备编号“07”以获得“E0”
  • 位反转子设备编号(也称为“07”)以获得“E0”
  • 将152转换为十六进制并反转位以获得“19”
  • 将最后两位计算为(0xFF-位反转OBC),0xFF-0x19=0xE6,给出最后8位“E6”

三星IR使用E040BF开启和关闭,它是一个开关。您可以使用
IRremote
库运行一个简单的草图来解码遥控器上每个按钮的红外代码。这是我为我的项目所做的,我知道这是一个开关,但由于我使用的家庭自动化系统,我想使用专用的开关功能,例如:如果我离开家,自动关闭电视。目前,我正在使用NodeRed中的逻辑来确定上次发布的内容,并更改NodeRed中的状态,但这并不可靠,使用上面提供的原始IR代码将非常有效,这些代码用于专用的开和关,遗憾的是,我无法将其转换为库接受的代码。您共享的remotecentral链接不是原始ir代码,而是代码,因此您不能将其作为原始ir发送。在ARDUNO ILRealCub库中,有一个C++代码,你可能想看一下,它甚至不是一个ARDUNO代码,但是在C++中,我猜它是从以前的源代码中进入ARDUINO库的,没有关于如何使用它的文档,但是它显示了PROTO可以如何发送或解码成Linux IRC格式。祝你好运,非常感谢!我可以确认它也对我有效!这是惊人的,解释得很好。非常感谢你。