게시됨 2026-04-19
이 가이드는 제어를 위한 완벽하고 실용적인 솔루션을 제공합니다.서보 기구표준 적외선(IR) 리모콘을 사용하는 모터. 아래 단계에 따라 정확한 위치를 지정할 수 있습니다.서보 기구일반적인 IR 리모컨(예: TV 또는 셋톱 박스 리모컨)의 버튼을 눌러 모터를 작동합니다. 브랜드별 구성 요소가 필요하지 않으며 지침은 널리 사용 가능한 저가형 모듈을 기반으로 합니다.
IR 리모컨은 눈에 보이지 않는 빛의 펄스를 방출합니다. IR 수신기는 이러한 펄스를 감지하여 각 버튼에 고유한 디지털 코드로 변환합니다. 마이크로 컨트롤러는 이 코드를 읽고 해당 펄스 폭 변조(PWM) 신호를서보 기구모터, 샤프트를 특정 각도로 설정합니다.
예시 시나리오:일반적인 TV 리모콘의 "볼륨 높이기" 버튼은 서보를 90°(예: 작은 걸쇠 열기)로 회전시키는 반면 "볼륨 낮추기"는 서보를 0°로 되돌립니다. 이 원리는 DIY 로봇 팔, 자동 애완동물 급식기, 원격 제어 카메라 팬-틸트 시스템에 사용됩니다.
중요한:대부분의 서보는 상당한 전류(200~500mA)를 소비합니다. 500mA 이상이 필요한 경우 마이크로컨트롤러의 5V 핀에서 직접 서보에 전원을 공급하지 마십시오. 공통 접지가 있는 외부 5V 공급 장치를 사용하십시오.
다음과 같이 구성 요소를 연결하십시오. 이 배선은 표준 5V 시스템으로 테스트되었습니다.
IR 수신기 모듈(평평한 측면에서 바라봄):
왼쪽 핀: 신호 → 마이크로컨트롤러 디지털 핀 11(예)
센터 핀: GND → 공통 접지
오른쪽 핀: VCC → 5V 출력
서보 모터:
갈색/검정색 선: GND → 공통 접지
빨간색 선: 5V → 외부 5V 공급(또는 소형 서보의 경우 마이크로컨트롤러 5V)
주황색/노란색 선: 신호 → 마이크로컨트롤러 PWM 핀 9(예)
공통점:외부 전원 공급 장치의 GND를 마이크로 컨트롤러의 GND에 연결합니다. 안정적인 작동을 위해서는 필수입니다.
모든 IR 리모컨은 서로 다른 코드를 보냅니다. 먼저 특정 리모컨의 코드를 읽어야 합니다.
일반적인 경우:Sony TV 리모컨은 다음을 보낼 수 있습니다.0x10"1" 버튼의 경우 삼성 리모컨이 전송하는 동안0x80. 코드는 버튼 라벨이 아닙니다. 버튼 + 원격 브랜드에 고유한 16진수입니다.
행동:간단한 IR 디코더 스케치("IRremote"와 같은 일반 라이브러리에서 사용 가능)를 마이크로컨트롤러에 업로드합니다. 직렬 모니터를 열고 사용하려는 각 버튼을 누르고 코드를 적어 두십시오. 예를 들어:
위쪽 화살표 →0xFF629D
아래쪽 화살표 →0xFFA857
확인/선택 →0xFF02FD
어느 버튼이 서보를 어느 각도로 움직일지 결정합니다. 표준 서보 각도는 0° ~ 180°입니다.
매핑 예(1단계의 코드 사용):
단추0xFF629D→ 서보 각도 0°
단추0xFFA857→ 서보 각도 90°
단추0xFF02FD→ 서보 각도 180°
다음은 널리 사용되는 IRremote 라이브러리(버전 3.x 이상)에서 작동하는 일반 코드 예제입니다. 바꾸다REMOTE_CODE_1, REMOTE_CODE_2등을 1단계의 실제 코드와 함께 사용하세요.
#포함하다#포함하다const int IR_PIN = 11; const int SERVO_PIN = 9; IRrecv irrecv(IR_PIN); decode_results 결과; 서보 myServo; // 이를 리모컨의 실제 코드(1단계의 16진수 값)로 바꿉니다. const unsigned long CODE_ANGLE_0 = 0xFF629D; // 예: 위로 버튼 const unsigned long CODE_ANGLE_90 = 0xFFA857; // 예: 아래쪽 버튼 const unsigned long CODE_ANGLE_180 = 0xFF02FD; // 예: OK 버튼 void setup() { Serial.begin(9600); irrecv.enableIRIn(); // IR 수신기 시작 myServo.attach(SERVO_PIN); myServo.write(0); // 0°에서 시작 Serial.println("준비되었습니다. 리모컨의 버튼을 누르세요."); } void loop() { if (irrecv.decode(&results)) { unsigned long receivedCode = results.value; Serial.print("수신된 코드: 0x"); Serial.println(receivedCode, HEX); // 수신된 코드를 서보 각도에 매핑합니다. if (receivedCode == CODE_ANGLE_0) { myServo.write(0); Serial.println("서보 → 0°"); } else if (receivedCode == CODE_ANGLE_90) { myServo.write(90); Serial.println("서보 → 90°"); } else if (receivedCode == CODE_ANGLE_180) { myServo.write(180); Serial.println("서보 → 180°"); } else { Serial.println("매핑되지 않은 버튼. 무시됩니다."); } irrecv.resume(); // 다음 신호를 기다립니다 } }
메모:리모컨이 다른 프로토콜(예: NEC, Sony, RC5)을 사용하는 경우 라이브러리가 자동으로 이를 감지합니다. 위의 코드는 대부분의 소비자 리모컨에서 작동합니다.
1. 회로에 전원을 공급합니다(필요한 경우 외부 서보 전원).
2. 9600 보드에서 직렬 모니터를 엽니다.
3. 매핑된 버튼을 누르세요. 서보는 0.5초 이내에 미리 설정된 각도로 이동해야 합니다.
4. 서보가 흔들리거나 움직이지 않으면 다음을 확인하십시오.
공통 접지 연결.
서보 전원 공급 용량(표준 서보의 경우 최소 500mA).
IR 수신기는 직사광선이나 형광등에 노출되지 않습니다(간섭을 유발함).
다시 언급된 핵심 결론:저가형 IR 수신기 및 마이크로컨트롤러와 결합된 표준 IR 리모컨은 독점 하드웨어 없이 정밀한 무선 서보 제어를 제공합니다.
구현을 강화하기 위한 세 가지 실행 가능한 권장 사항:
1. 다중 서보 추가:서보 개체 배열을 사용하고 서로 다른 서보에 서로 다른 버튼을 할당합니다. 예를 들어, 버튼 "1"은 서보 A를 0°로 제어하고, 버튼 "2"는 서보 B를 45°로 제어합니다.
2. 부드러운 움직임 구현:바꾸다서보.쓰기(각도)각도를 단계적으로 증가시키는 루프를 사용합니다(예: 현재 각도에서 목표 각도까지 15ms 지연으로 1°씩 증가). 이는 전문적이고 점진적인 동작을 만들어냅니다.
3. EEPROM에 버튼 매핑을 저장합니다.코드를 다시 업로드하지 않고도 새 버튼을 학습할 수 있는 작은 보정 루틴을 작성하세요. 이는 원래 리모컨을 분실하여 다른 브랜드로 전환한 경우 특히 유용합니다.
최종 확인:실제 애플리케이션(예: 원격 제어 도어 래치 또는 로봇 그리퍼)에 프로젝트를 배포하기 전에 모든 버튼 누르기를 각각 최소 50회 테스트하세요. IR 신호는 물체나 밝은 빛에 의해 차단될 수 있습니다. 항상 시각적 표시기(예: 코드가 수신되면 깜박이는 LED)를 포함하여 시스템이 작동하는지 확인하세요.
업데이트 시간:2026-04-19