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

TV 리모컨으로 모든 전자 장치 제어 | 아두이노 IR 튜토리얼

<메인 클래스="사이트-메인" id="메인">

이 Arduino IR Tutorial에서는 TV 리모컨과 Arduino를 사용하여 전자 장치를 제어하는 ​​방법을 배웁니다. 간단한 LED 제어부터 DC Fan 속도 제어, 고전압 가전 제어까지 몇 가지 예를 들어 보겠습니다. 다음 동영상을 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다.

작동 방식

버튼을 눌렀을 때 TV 리모컨 앞의 LED가 깜박이는 것을 볼 수 있습니다. 실제로 이것은 적외선이며 사람의 눈에는 보이지 않기 때문에 카메라를 통해서만 볼 수 있습니다.

<그림 클래스="aligncenter">

따라서 깜박임은 버튼을 누를 때 적외선 LED가 적외선 수신기로 수신하는 데 필요한 빛이나 펄스의 버스트를 보내는 것을 의미합니다.

이 튜토리얼에서는 수신된 신호를 증폭, 필터링 및 복조하고 Arduino 보드의 디지털 입력에 허용되는 깨끗한 논리 출력을 제공하는 것을 볼 수 있는 다음 블록 다이어그램이 있는 V 34838 IR 수신기를 사용할 것입니다.

<그림 클래스="aligncenter">

그런 다음 Ken Shirriff의 Arduino-IRremote 라이브러리를 사용하여 직렬 모니터에서 프로그램을 만들 때 사용할 수 있는 각 버튼 누름에 대한 고유한 16진수 코드를 볼 수 있는 데모 예제입니다.

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

TV 리모컨으로 RGB LED 제어


구성요소는 아래 사이트에서 얻을 수 있습니다.

그래서 우리는 TV 리모컨의 4가지 색상 버튼을 사용하여 LED 색상을 제어할 것입니다. 즉, 먼저 IRrecvDemo 예제를 업로드하고 직렬 모니터를 실행하여 이러한 각 버튼에 대한 16진수 코드를 확인해야 합니다. 이 버튼을 각각 누르고 코드를 기록해 보겠습니다.

이제 우리는 이와 같이 데모 코드를 수정하고 특정 버튼을 눌렀을 때 실행될 if 문을 추가할 것입니다. 따라서 각 버튼에 대해 적절한 RGB 값을 설정하고 setColor() 기능은 특정 색상의 LED를 켭니다. RGB LED가 Arduino와 어떻게 작동하는지 자세히 알아보려면 내 Arduino RGB 자습서를 확인하세요.

/*  
 *  Controlling a RGB LED with a TV Remote
 *  
 *  Modified IRrecvDemo example from Ken Shirriff IRremote Library
 *  Ken Shirriff
 *  https://arcfn.com
 *  
 *  Modified by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 *  
 */

#include <IRremote.h>

int RECV_PIN = 8; // IR Receiver - Arduino Pin Number 8

IRrecv irrecv(RECV_PIN);

decode_results results;

int redPin = 5;
int greenPin = 6;
int bluePin = 7;
 
void setup()
{
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);  
}
 
void loop() {
  
  if (irrecv.decode(&results)) {   
    
    if (results.value == 0xF21D7D46) { // Red Button
      setColor(255, 0, 0);  // Sets Red Color to the RGB LED
      delay(100);
      }
    if (results.value == 0x87CF1B29) { // Green Button
       setColor(0, 255, 0);  // Green Color
      delay(100);
      }
    if (results.value == 0x6623D37C) { // Yellow Button
      setColor(255, 255, 0);  // Yellow Color
      delay(100);
      }   
    if (results.value == 0x854115F2) { // Blue Button
      setColor(0, 0, 255);  // Blue Color
      delay(100);
      }
     if (results.value == 0x1639AB6E) { // Stop Button
      setColor(0, 0, 0);  // OFF
      delay(100);
      }
      
    irrecv.resume(); // Receive the next value
  }
  delay(100);
}
// Custom made function for activating the RGB LED 
void setColor(int red, int green, int blue)
{
  analogWrite(redPin, red); // Sends PWM signal to the Red pin
  analogWrite(greenPin, green);
  analogWrite(bluePin, blue);  
}Code language: Arduino (arduino)

다음은 Arduino IR 제어 RGB LED의 회로도입니다.

<그림 클래스="aligncenter">

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


이 예에 필요한 구성 요소:

이 예에서는 TV 리모컨의 앞으로 및 뒤로 버튼을 사용하여 DC 팬 속도를 제어합니다. 팬 속도를 제어하기 위해 이 회로도를 사용하거나 실제로 버튼을 사용하여 PWM 신호를 제어합니다. 이 회로도의 작동 방식에 대한 자세한 내용은 내 Arduino 모터 자습서를 참조하십시오.

<그림 클래스="aligncenter">

다음은 이 예제의 소스 코드입니다. 따라서 analogWrite()를 사용하여 기능에서 우리는 트랜지스터의 베이스에 PWM 신호를 보낼 것입니다. PLAY 버튼은 최대 속도로 모터를 시작하거나 PWM 신호의 듀티 사이클은 100%가 되고 STOP 버튼은 모터를 정지합니다. 앞으로 버튼은 누를 때마다 PWM 신호의 듀티 사이클을 증가시켜 팬 속도를 높이고 뒤로 버튼은 감소시킵니다.

/*  
 *  Controlling a DC Fan Speed with a TV Remote
 *  
 *  Modified IRrecvDemo example from Ken Shirriff IRremote Library
 *  Ken Shirriff
 *  https://arcfn.com
 *  
 *  Modified by Dejan Nedelkovski,
 *  www.HowToMechatronics.com 
 *  
 */
 
#include <IRremote.h>

int RECV_PIN = 8; // IR Receiver - Arduino Pin Number 8
int pwmPin = 7; // Arduino Pin Number 7 to the Base of the Transistor
int pwmValue;

IRrecv irrecv(RECV_PIN);

decode_results results;

 
void setup() {
  Serial.begin(9600);
  irrecv.enableIRIn(); // Start the receiver
  pinMode( pwmPin, OUTPUT);  
  pwmValue = 0; // Starts the program with turned off motor
}
 
void loop() {
  
  if (irrecv.decode(&results)) {   
    
    analogWrite(pwmPin, pwmValue);
  
    if (results.value == 0xAFAF8374) { // PLAY Button
        pwmValue = 255; // 100% Duty Cycle | Max Speed
        }
    if (results.value == 0x98519C65) { // STOP Button
        pwmValue = 0; // 0% Duty Cycke | Turned off
        }
    if (results.value == 0x93F1BA08) { // FORWARD Button
        if(pwmValue <= 245){  
        pwmValue = pwmValue + 10; // Increases the Duty Cycle of the PWM Signal
        delay(20);     
      }   
    }
    if (results.value == 0x71D086FF) { // BACKWARD Button
      if(pwmValue >= 20){
        pwmValue = pwmValue - 10; // Decreases the Duty Cycle of the PWM Signal
        delay(20);    
      }
    }   
  Serial.print(pwmValue);
  Serial.print(" ");
  Serial.println(results.value, HEX);
   
  irrecv.resume(); // Receive the next value
  }
  delay(100);
}
Code language: Arduino (arduino)

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


이 튜토리얼에 필요한 구성요소:

마지막 예는 TV 리모컨을 사용하여 고전압 가전 제품을 제어하는 ​​것입니다. 이를 위해 릴레이 모듈이 필요합니다. 250 및 125 V AC에서 정격이 10 A인 HL-52S 릴레이 모듈을 사용하겠습니다. 다음은 Arduino IR로 제어되는 고전압 가전 제품의 회로도입니다. Arduino 보드의 핀 번호 7을 사용하여 고전압 전자 장치를 연결하기 위한 소켓이 있는 릴레이를 제어합니다.

<그림 클래스="aligncenter">

우리는 HIGH VOLTAGE를 사용할 것이기 때문에 매우 조심해야 하며 부적절하거나 잘못된 사용은 심각한 부상이나 사망을 초래할 수 있으며 나는 당신의 행동에 대해 어떠한 책임도 지지 않음을 경고합니다. 릴레이를 사용하는 방법과 전자 장치를 연결하기 위한 소켓을 만드는 방법에 대한 자세한 내용은 내 Arduino 릴레이 자습서를 참조하십시오.

<그림 클래스="aligncenter">

이 예제의 소스 코드는 다음과 같습니다.

/*  
 *  Controlling High Voltage Home Appliances with a TV Remote
 *  
 *  Modified IRrecvDemo example from Ken Shirriff IRremote Library
 *  Ken Shirriff
 *  https://arcfn.com
 *  
 *  Modified by 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(); // Start the receiver
  pinMode( relayOut, OUTPUT); 
  buttonState = HIGH; // Starts the program with turned off Relay. The relay input works inversly so HIGH state means deactivated relay

}
 
void loop() {
  
  buttonState = digitalRead(relayOut);
        
  if (irrecv.decode(&results)) {   
    
    if (results.value == 0xAFAF8374) { // PLAY Button
        digitalWrite(relayOut, LOW); // Activates the relay
        }
    if (results.value == 0x98519C65) { // STOP Button
        digitalWrite(relayOut, HIGH); // Deactivates the relay
        }   
  
  irrecv.resume(); // Receive the next value
  }
  
  Serial.print(" ");
  Serial.println(results.value, HEX);
   
  
  delay(100);
}Code language: Arduino (arduino)

제조공정

  1. Arduino, 1Sheeld 및 Android를 사용한 범용 원격 제어
  2. Arduino로 코인 억셉터 제어
  3. 3D 인쇄 케이스가 있는 배터리 전원 TV 리모컨
  4. Bluetooth가 탑재된 Arduino로 LED 제어!
  5. Arduino Nano:조이스틱으로 2개의 스테퍼 모터 제어
  6. 모든 오디오 소스로 Billy Bass 입에 애니메이션 효과 주기
  7. ThimbleKrox - 손가락으로 마우스 제어
  8. 30달러 미만으로 Arduino로 바퀴벌레 제어
  9. Arduino Uno 및 Bluetooth로 차량 제어
  10. Arduino Uno를 사용한 25kHz 4핀 PWM 팬 제어