首页 > 解决方案 > 尝试使用 Arduino 在 ESP8266 上使用未知协议从遥控器复制 IR 信号

问题描述

我在从遥控器重新发送红外信号以控制百叶窗时遇到了一些问题。

我记录了原始的 IR 代码,但即使是另一个 Arduino 也没有收到任何东西。它不打印任何数据。

我对库 ESP8266irRemote 有点困惑。它需要一个发送原始红外数据的频率。由于时间以毫秒为单位,我不明白这个频率应该是什么。我从哪里可以读到这个频率?有哪些默认值?-- EDIT 清除,是载频。似乎默认的 38kHz 应该是正确的。

为什么我的 Arduino 没有收到任何东西?如果我只是以三星电视为例,它接收一切正常。

谢谢你的帮助!

编辑:

uint16_t up3[95] = {444, 1190,  442, 1190,  1256, 376,  1258, 374,  440, 1190,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  1282, 350,  440, 1192,  440, 1192,  440, 1190,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  438, 1194,  1256, 374,  1258, 374,  1256, 19240,  440, 1192,  440, 1192,  1282, 350,  1256, 376,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  1256, 374,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  438, 1192,  440, 1192,  438, 1192,  440, 1192,  440, 1192,  464, 1168,  1256, 376,  1256, 376,  1256};  // UNKNOWN 87FDCA19
uint16_t stop3[95] = {1288, 346,  448, 1182,  1214, 418,  1222, 410,  444, 1188,  438, 1194,  466, 1164,  448, 1184,  440, 1192,  438, 1192,  1258, 374,  380, 1252,  448, 1182,  466, 1166,  448, 1184,  466, 1166,  448, 1182,  404, 1228,  468, 1164,  378, 1252,  1280, 350,  1256, 376,  448, 1184,  1264, 19234,  1220, 414,  402, 1230,  1284, 348,  1252, 380,  406, 1226,  378, 1252,  404, 1228,  404, 1228,  404, 1228,  438, 1192,  1266, 366,  468, 1164,  406, 1226,  446, 1186,  448, 1184,  448, 1184,  378, 1252,  448, 1184,  400, 1232,  448, 1184,  1264, 368,  1254, 376,  468, 1164,  1264};  // UNKNOWN 6CE4F608
uint16_t dwn3[95] = {398, 1252,  1280, 352,  1284, 348,  1250, 380,  446, 1188,  462, 1170,  432, 1198,  378, 1254,  446, 1186,  442, 1188,  1282, 348,  402, 1230,  464, 1166,  434, 1196,  446, 1186,  446, 1186,  434, 1198,  462, 1168,  446, 1186,  446, 1186,  378, 1252,  400, 1230,  1218, 414,  378, 20118,  466, 1168,  1216, 414,  1262, 370,  1194, 436,  398, 1232,  398, 1232,  380, 1252,  464, 1168,  464, 1166,  466, 1164,  1196, 436,  400, 1232,  444, 1188,  400, 1230,  446, 1188,  466, 1164,  378, 1254,  446, 1186,  444, 1186,  466, 1166,  402, 1230,  458, 1172,  1282, 348,  464};  // UNKNOWN 2744EDAC
uint16_t up2[95] = {466, 1186,  444, 1186,  1262, 370,  444, 1186,  1260, 370,  446, 1186,  444, 1186,  446, 1186,  468, 1162,  446, 1186,  1262, 370,  444, 1188,  444, 1186,  444, 1188,  444, 1188,  444, 1186,  446, 1186,  444, 1188,  444, 1186,  444, 1188,  1262, 368,  1262, 370,  444, 1186,  1262, 19236,  446, 1186,  446, 1186,  1260, 370,  444, 1188,  1262, 370,  444, 1186,  446, 1186,  446, 1186,  446, 1186,  444, 1186,  1262, 370,  446, 1186,  444, 1188,  444, 1188,  446, 1186,  446, 1184,  446, 1186,  446, 1186,  446, 1186,  446, 1184,  1262, 370,  1260, 372,  446, 1186,  1260};  // UNKNOWN 2D1A9455
uint16_t stop2[95] = {1260, 374,  442, 1190,  1256, 376,  440, 1190,  1258, 374,  440, 1190,  440, 1192,  442, 1190,  440, 1192,  440, 1192,  1256, 374,  440, 1190,  440, 1192,  440, 1190,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  1256, 374,  1258, 374,  1256, 19240,  1258, 374,  440, 1192,  1256, 374,  440, 1192,  1256, 374,  440, 1192,  440, 1192,  440, 1190,  440, 1190,  440, 1192,  1256, 374,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  440, 1192,  440, 1190,  440, 1192,  440, 1192,  440, 1190,  440, 1192,  1256, 374,  1256, 376,  1256};  // UNKNOWN B54FF968
uint16_t dwn2[95] = {478, 1156,  1288, 342,  1288, 344,  450, 1182,  1288, 342,  450, 1182,  476, 1154,  452, 1180,  450, 1180,  450, 1182,  1290, 342,  450, 1182,  476, 1156,  478, 1154,  478, 1154,  474, 1158,  450, 1182,  450, 1182,  474, 1156,  450, 1180,  1292, 340,  476, 1156,  474, 1158,  450, 20048,  476, 1156,  1290, 340,  1266, 366,  450, 1182,  1266, 364,  450, 1182,  476, 1156,  476, 1156,  450, 1182,  474, 1156,  1266, 366,  450, 1182,  474, 1156,  476, 1156,  476, 1156,  474, 1156,  450, 1182,  450, 1182,  474, 1158,  474, 1158,  1266, 366,  450, 1180,  450, 1182,  450};  // UNKNOWN 983238A8
    
IRsend irsend(4);

void setup() {
  // put your setup code here, to run once:
  irsend.begin();
}
    
void loop() {
  // put your main code here, to run repeatedly:
  irsend.sendRaw(dwn3, 95, 999);
  delay(10000);
}

这就是我使用的代码。我使用 esp8266ir 库提供的原始转储示例重新编码了原始数组。

我削减了导入部分,但请放心,导入了正确的标题。代码编译没有任何问题。

感谢您建议的编辑。对于第一个组织不善的问题,我很抱歉。

标签: arduinoesp8266

解决方案


由于您没有提供任何代码并且一般信息不多,我只能猜测。

可能的问题:

发射器波长错误

错误的载波频率,通常在 30 到 60kHz 之间。38kHz 是最常见的。

或发送您记录的内容时出现错误。

我建议您在尝试自己构建之前先了解 IR 遥控器的工作原理。


推荐阅读