2023年6月22日 星期四

Arduino UNO Rev3 遙控器複製拷貝自造 紅外線接收發射復刻

重點參考 :

Arduino-透過IRremote函式庫(Ver3.5.3)實現紅外線模組接收及發送Jan 25-2022

https://karta146831.pixnet.net/blog/post/335687582-arduino-%E9%80%8F%E9%81%8Eirremote%28ver3.x%29%E8%AA%9E%E6%B3%95%E5%AF%A6%E7%8F%BE%E7%B4%85%E5%A4%96%E7%B7%9A%E6%A8%A1%E7%B5%84%E6%8E%A5

更新的IRremote库实例2023-1-23 https://www.arduino.cn/thread-342990-1-1.html



[接收]

#include <IRremote.hpp>


void setup()

{

  Serial.begin(115200);

  IrReceiver.begin(7, ENABLE_LED_FEEDBACK); // PIN7收IR

}


void loop() {

  if (IrReceiver.decode()) {

      Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);

      IrReceiver.printIRResultShort(&Serial); // optional use new print version

      IrReceiver.resume(); // Enable receiving of the next value

  }

}


原出處用PIN3收IR,但我用7。

我收到的是

B04F3000

Protocol=NEC Address=0x3000 Command=0x4F Raw-Data=0xB04F3000 32 bits LSB first



[發射]

#include <IRremote.hpp>

void setup()
{
  Serial.begin(9600);
  IrSender.begin(7, ENABLE_LED_FEEDBACK);//PIN3發射紅外線
}

void loop() {
  //IrSender.sendNEC(0xB04F3000, 0x1, true, 0);     //將剛剛記錄下來的資訊代入,ture跟0請先不要改
  IrSender.sendNECRaw(0xB04F3000, 1);
  delay(1000);
}

在出處只有IrSender.sendNEC(0xDAE1, 0x1, true, 0);但試了不知道為什麼不成功
我參考另一篇使用
第二种:直接发送原始值,例如0xCB340102,则必须使用sendNECRaw()IrSender.sendNECRaw(0xCB340102, sRepeats);
第一種sendNEC有NEC感覺有協定問題而且也搞不懂sCommand是什麼,


-----------

前期失敗過程

用ESP32系列的NodeMCU-32S,其實也不確定是不是真得是NodeMCU-32S

但IDE選NodeMCU-32S可以正常燒錄,沒有報錯說選錯板子型號

紅外線接收得到,但很怪,

每次收到的不一定一樣,而且也不會一直都能收到

常常五分鐘內只能收到十幾個次,

於是懷疑是接收器的問題,頻率28KHz沒有錯,

但可能有其他不一樣的地方,

但事後證明不是接收器的問題,

只能說既然換官方的 UNO Rev3 就馬上正常解決,

也就是ESP32雖然是相容,

但有太多可能的問題需要克服,

UNO也不貴,

如果單純開發簡單功能如本篇,只是要紅外線收發,

那還是先直接從較單純的Arduino官方版本開始會比較經濟。

沒有留言:

張貼留言

GOOGLE不小心按了改成韓文,改變語言設定

  好奇點了上面的其他語言版本,結果搞了一會才改回中文,提供修改流程給需要的人