2021年5月30日星期日

Arduino 紅外線控制風扇

起因:

    由於最近家電遙控器越來越多,想說做一個整合的控制板,可以控制家電

材料:

  1. 紅外線收發模組
  2. DC遙控風扇一台(配有遙控器)
  3. Arduino NANO 一片
  4. 100歐姆電阻一個
  5. 杜邦線若干條
  6. 麵包版一片 

開發平台

Arduino IDE


開發過程紀錄

凡事最麻煩的就是一開始XD,首先要買材料


硬體電路準備

 
紅外線遙控器
這邊因為我買禾聯的風扇所以就拿禾聯的遙控器拉,就是下面這張


實驗步驟

1. 驗證紅外線接收模組是否正常

接線說明

由於作者沒有DIP 的100歐姆電阻,所以使用SMD的電阻和在洞洞板上,拉出兩條線來插在麵包版上




程式碼

            開啟Arduino IDE 並且在匯入程式庫->管理程式庫


輸入IRRemote,並選擇最新版本安裝

安裝完畢後 ,依照下方的程式碼撰寫測試接收模組的程式

#include <IRremote.h>
#define RECV_PIN 7
IRrecv irrecv(RECV_PIN);
decode_results ReciveData;
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn();
}
void loop() {
  if (irrecv.decode(&ReciveData)) {
    Serial.println(ReciveData.value,HEX); 
    irrecv.resume();
      }
}

完成後按下上傳(怎麼選板子跟COMPORT這裡就不多說了~)

 接下來開啟序列埠,並拿著遙控器對接收器按下去~

資料出來了"CF311EE"就是遙控器按下開啟的編碼資料





2. 驗證紅外線發射模組是否正常

接線說明



程式碼

#include <IRremote.h>

#define SEND_PIN 3

IRsend irsend(SEND_PIN);
void setup()
{
  pinMode(SEND_PIN,OUTPUT);
}

void loop() {
  irsend.sendNEC(0x0CF311EE, 32);
  delay(3000);

}

上傳到arduino NANO 

可以開啟關閉電扇了~ YA
 

3. 反覆第一步紀錄每個按鈕的編碼並記錄下來

4. 撰寫命令控制風扇

此處是加入控制命令,從COMPORT下字串命令下來執行對應的行為

#include <IRremote.h>
#define RECV_PIN 7
#define SEND_PIN 3
IRrecv irrecv(RECV_PIN);
Irsend Irsend(SEND_PIN);
String recive = "";
void setup()
{
  Serial.begin(9600);
}
void loop() {
  if(Serial.available()>0)
  {
    char re = Serial.read();
    if(re == '\n')
    {
      if(recive.equals("Fan ON"))
      {
        Serial.println("Fan ON\n");
        Irsend.sendNEC(0x0CF311EE, 32);
      }
      else if(recive.equals("Fan OFF"))
      {
        Serial.println("Fan OFF\n");
        Irsend.sendNEC(0x0CF311EE, 32);
      }
      else if(recive.equals("FanSpeed+"))
      {
        Serial.println("FanSpeed+\n");
        Irsend.sendNEC(0xCF3619E, 32);
      }
      else if(recive.equals("FanSpeed-"))
      {
        Serial.println("FanSpeed-\n");
        Irsend.sendNEC(0xCF3E11E, 32);
      }
      recive = "";
    }
    else
    {
       recive += re;
    }
  }
}

問題紀錄
1.有時候發現怎麼無法成功控制,可能原因有距離太遠,方向不對

參考來源

https://blog.jmaker.com.tw/irremoterecv/
https://blog.jmaker.com.tw/irremotesend/

沒有留言:

發佈留言

打賞按讚