고급 TV 원격 제어 로봇

이 블로그에서는 TSOP 센서, TV 리모컨 및 Arduino 마이크로컨트롤러를 사용하여 Advanced TV Remote 제어 로봇을 구축하는 방법을 보여줍니다.



필요한 구성 요소


  • 아루디노 UNO
  • TSOP 센서
  • 기어 모터
  • IC L293D
  • TV 리모콘

  • 아두이노 우노



    Arduino는 사용하기 쉬운 하드웨어 및 소프트웨어를 기반으로 하는 오픈 소스 전자 플랫폼입니다. Arduino 보드는 센서의 빛, 버튼의 손가락 또는 트위터 메시지와 같은 입력을 읽고 모터를 활성화하고 LED를 켜고 온라인에 무언가를 게시하는 출력으로 바꿀 수 있습니다. 이를 위해서는 아두이노 프로그래밍 언어(배선 기반)와 프로세싱 기반 아두이노 소프트웨어(IDE)를 사용한다.

    TSOP IR 센서



    TSOP 모듈은 일반적으로 텔레비전, CD 플레이어 등과 같은 IR 원격 제어 시스템의 수신단에서 발견됩니다. 이러한 모듈은 들어오는 데이터가 특정 주파수에서 변조되어야 하며 다른 모든 IR 신호는 무시해야 합니다.



    기어 모터



    속도를 낮추고 토크와 힘을 증가시키기 위한 기어박스가 있는 DC 모터입니다. 이러한 유형의 모터는 일반적으로 로봇 응용 분야에 사용됩니다.

    IC L293D



    IC L293D는 4.5~36볼트의 전압 범위에서 최대 600mA의 전류를 구동할 수 있는 듀얼 H-브리지 모터 드라이버 집적 회로입니다.



    암호




    int tsop = 12;
    int leftmotor = 2;
    int leftmotor1 = 3;
    int rightmotor = 4;
    int rightmotor1 = 5;
    void setup() {
      Serial.begin(9600);
      pinMode(tsop, INPUT);
      pinMode(leftmotor, OUTPUT);
      pinMode(leftmotor1, OUTPUT);
      pinMode(rightmotor, OUTPUT);
      pinMode(rightmotor1, OUTPUT);
    
    }
    
    void loop() {
      int remote_val = remote();
      if (remote_val == 128)//no.1 in sony remote
      {
        digitalWrite(leftmotor, HIGH);
        digitalWrite(leftmotor1, LOW);
        digitalWrite(rightmotor, HIGH);
        digitalWrite(rightmotor1, LOW );
        Serial, println("forward");
      }
      if (remote_val == 129)//no.2 in sony remote
      {
        digitalWrite(leftmotor, LOW);
        digitalWrite(leftmotor1, HIGH);
        digitalWrite(rightmotor, LOW);
        digitalWrite(rightmotor1, HIGH );
        Serial, println("backward");
      }
      if (remote_val == 130)//no.3 in sony remote
      {
        digitalWrite(leftmotor, HIGH);
        digitalWrite(leftmotor1, LOW);
        digitalWrite(rightmotor, LOW);
        digitalWrite(rightmotor1, HIGH);
        Serial, println("right");
      }
      if (remote_val == 131)//no.4 in sony remote
      {
        digitalWrite(leftmotor, LOW);
        digitalWrite(leftmotor1, HIGH);
        digitalWrite(rightmotor, HIGH);
        digitalWrite(rightmotor1, LOW );
        Serial, println("left");
      }
      if (remote_val == 132)//no.5 in sony remote
      {
        digitalWrite(leftmotor, LOW);
        digitalWrite(leftmotor1, LOW);
        digitalWrite(rightmotor, LOW);
        digitalWrite(rightmotor1, LOW);
        Serial, println("stop");
      }
      int remote() {
        int value = 0;
        int time = pulseIn(tsop, LOW);
        if (time > 2000) {
          for (int counter1 = 0; counter1 < 12; counter1++) {
             if (pulseIn(12, LOW) > 1000){
            value = value + (1 << counter);
          }
        }
      }
      return value;
    }
    
    

    좋은 웹페이지 즐겨찾기