산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

TV 리모컨으로 아두이노 IR 제어하기 - 단계별 튜토리얼

작동 원리

이 아두이노 IR 튜토리얼에서는 TV 리모컨과 아두이노를 사용하여 전자 기기를 제어하는 방법을 배웁니다. 간단한 LED 제어부터 DC 팬 속도 제어, 고전압 가전제품 제어까지 몇 가지 예제를 다룹니다.

TV 리모컨 앞의 LED가 버튼을 누를 때 깜빡이는 것을 볼 수 있습니다. 이는 적외선이므로 카메라를 통해서만 볼 수 있으며 육안으로는 보이지 않습니다.

TV 리모컨으로 아두이노 IR 제어하기 - 단계별 튜토리얼

이 깜빡임은 버튼을 누를 때 적외선 LED가 빛의 파동이나 펄스를 보내며, 이를 적외선 수신기로 받아야 함을 의미합니다.

TV 리모컨으로 아두이노 IR 제어하기 - 단계별 튜토리얼

이 튜토리얼에서는 V 34838 IR 수신기를 사용합니다. 블록 다이어그램에서 볼 수 있듯이 수신된 신호를 증폭, 필터링, 복조하여 아두이노 디지털 입력에 적합한 깨끗한 로직 출력을 제공합니다.

TV 리모컨으로 아두이노 IR 제어하기 - 단계별 튜토리얼

Ken Shirriff의 Arduino-IRremote 라이브러리와 데모 예제를 사용하면 시리얼 모니터에서 각 버튼 누름에 대한 고유한 16진수 코드를 확인할 수 있으며, 이를 프로그램 제작에 활용합니다.

TV 리모컨으로 아두이노 IR 제어하기 - 단계별 튜토리얼

Ken Shirriff의 Arduino-IRremote 라이브러리: https://github.com/z3t0/Arduino-IRremote

TV 리모컨으로 RGB LED 제어하기


필요한 부품

TV 리모컨의 4개 색상 버튼으로 LED 색상을 제어합니다. 먼저 IRrecvDemo 예제를 업로드하고 시리얼 모니터를 실행하여 각 버튼의 16진수 코드를 확인하고 기록합니다.

TV 리모컨으로 아두이노 IR 제어하기 - 단계별 튜토리얼

데모 코드를 수정하여 특정 버튼이 눌렸을 때 실행되는 if문을 추가합니다. 각 버튼에 적절한 RGB 값을 설정하고 setColor() 함수로 LED를 해당 색상으로 켭니다. RGB LED 작동 원리는 아두이노 RGB 튜토리얼을 참조하세요.

/* 
 * TV 리모컨으로 RGB LED 제어하기
 * Ken Shirriff IRremote 라이브러리의 IRrecvDemo 예제 수정
 * Ken Shirriff, https://arcfn.com
 * 수정: Dejan Nedelkovski, www.HowToMechatronics.com
 */
#include <IRremote.h>

int RECV_PIN = 8;  // IR 수신기 - 아두이노 8번 핀
IRrecv irrecv(RECV_PIN);
decode_results results;

int redPin = 5;
int greenPin = 6;
int bluePin = 7;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();  // 수신기 시작
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
}

void loop() {
  if (irrecv.decode(&results)) {
    if (results.value == 0xF21D7D46) {  // 빨간 버튼
      setColor(255, 0, 0);  // 빨간색 설정
      delay(100);
    }
    if (results.value == 0x87CF1B29) {  // 녹색 버튼
      setColor(0, 255, 0);  // 녹색
      delay(100);
    }
    if (results.value == 0x6623D37C) {  // 노란 버튼
      setColor(255, 255, 0);  // 노란색
      delay(100);
    }
    if (results.value == 0x854115F2) {  // 파란 버튼
      setColor(0, 0, 255);  // 파란색
      delay(100);
    }
    if (results.value == 0x1639AB6E) {  // 정지 버튼
      setColor(0, 0, 0);  // 끄기
      delay(100);
    }
    irrecv.resume();  // 다음 값 수신
  }
  delay(100);
}

// RGB LED 활성화용 사용자 정의 함수
void setColor(int red, int green, int blue) {
  analogWrite(redPin, red);   // 빨간 핀에 PWM 신호 전송
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);
}
TV 리모컨으로 아두이노 IR 제어하기 - 단계별 튜토리얼

TV 리모컨으로 DC 팬 속도 제어하기


필요한 부품

TV 리모컨의 재생/정지, 앞/뒤 버튼으로 DC 팬 속도를 제어합니다. 팬 속도 제어 회로도는 다음과 같으며, 실제로는 버튼으로 PWM 신호를 제어합니다. 회로도 작동 원리는 아두이노 모터 튜토리얼을 참조하세요.

TV 리모컨으로 아두이노 IR 제어하기 - 단계별 튜토리얼
/* 
 * TV 리모컨으로 DC 팬 속도 제어하기
 * Ken Shirriff IRremote 라이브러리의 IRrecvDemo 예제 수정
 * 수정: Dejan Nedelkovski, www.HowToMechatronics.com
 */
#include <IRremote.h>

int RECV_PIN = 8;  // IR 수신기 - 아두이노 8번 핀
int pwmPin = 7;    // 아두이노 7번 핀 - 트랜지스터 베이스
int pwmValue;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(pwmPin, OUTPUT);
  pwmValue = 0;  // 모터 끄기로 시작
}

void loop() {
  if (irrecv.decode(&results)) {
    analogWrite(pwmPin, pwmValue);
    
    if (results.value == 0xAFAF8374) {  // 재생 버튼
      pwmValue = 255;  // 100% 듀티 사이클 | 최대 속도
    }
    if (results.value == 0x98519C65) {  // 정지 버튼
      pwmValue = 0;  // 0% 듀티 사이클 | 끄기
    }
    if (results.value == 0x93F1BA08) {  // 앞으로 버튼
      if (pwmValue <= 245) {
        pwmValue = pwmValue + 10;  // PWM 듀티 사이클 증가
        delay(20);
      }
    }
    if (results.value == 0x71D086FF) {  // 뒤로 버튼
      if (pwmValue >= 20) {
        pwmValue = pwmValue - 10;  // PWM 듀티 사이클 감소
        delay(20);
      }
    }
    Serial.print(pwmValue); Serial.print(" "); Serial.println(results.value, HEX);
    irrecv.resume();
  }
  delay(100);
}

TV 리모컨으로 고전압 가전제품 제어하기


필요한 부품

최종 예제는 TV 리모컨으로 고전압 가전제품을 제어하는 것입니다. HL-52S 릴레이 모듈을 사용하며, 250V 및 125V AC에서 10A 정격입니다. 아두이노 7번 핀으로 릴레이를 제어하며, 릴레이에는 모든 고전압 전자 기기를 연결할 수 있는 소켓이 있습니다.

TV 리모컨으로 아두이노 IR 제어하기 - 단계별 튜토리얼

고전압을 사용하므로 매우 주의해야 하며, 부적절하거나 잘못된 사용은 심각한 부상이나 사망을 초래할 수 있습니다. 필자는 여러분의 행동에 책임을 지지 않습니다. 릴레이 사용법과 전자 기기 연결용 소켓 제작 방법은 아두이노 릴레이 튜토리얼을 참조하세요.

TV 리모컨으로 아두이노 IR 제어하기 - 단계별 튜토리얼
/* 
 * TV 리모컨으로 고전압 가전제품 제어하기
 * Ken Shirriff IRremote 라이브러리의 IRrecvDemo 예제 수정
 * Ken Shirriff, https://arcfn.com
 * 수정: Dejan, www.HowToMechatronics.com
 */
#include <IRremote.h>

int RECV_PIN = 8;
int relayOut = 7;
int buttonState;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn();
  pinMode(relayOut, OUTPUT);
  buttonState = HIGH;  // 릴레이 끄기로 시작. 릴레이 입력이 역으로 작동하므로 HIGH는 비활성화
}

void loop() {
  buttonState = digitalRead(relayOut);
  if (irrecv.decode(&results)) {
    if (results.value == 0xAFAF8374) {  // 재생 버튼
      digitalWrite(relayOut, LOW);  // 릴레이 활성화
    }
    if (results.value == 0x98519C65) {  // 정지 버튼
      digitalWrite(relayOut, HIGH);  // 릴레이 비활성화
    }
    irrecv.resume();
  }
  Serial.print(" "); Serial.println(results.value, HEX);
  delay(100);
}

제조공정

  1. 아두이노, 1Sheeld, IR 제어로 만능 안드로이드 리모컨 만들기
  2. 스마트 저금통 만들기: 아두이노 나노로 동전 인식기 제어하기
  3. 커스텀 아두이노 TV 리모컨: 배터리 구동, 3D 프린트 케이스
  4. 아두이노 블루투스로 LED 제어하기 - HC-05 & MIT App Inventor 입문 가이드
  5. 아두이노 나노와 조이스틱으로 2개 스테퍼 모터 제어하기 – 비주이노(Visuino) 튜토리얼
  6. 빌리 배스 피쉬를 오디오 소스에 맞춰 움직이게 만들기 - 단계별 가이드
  7. ThimbleKrox: 아두이노 마이크로와 MPU-6050을 이용한 손가락 장착형 마우스 컨트롤
  8. DIY 아두이노 바퀴벌레 제어 시스템 – 3만 원 미만으로 제작하기
  9. 아두이노 우노와 블루투스로 RC카 원격 제어하기: 단계별 가이드
  10. 아두이노 우노로 25kHz 4핀 PWM 팬 제어하기 - 제작, 코드 및 테스트