TV를 제어하는 가장 쉬운 방법은 TV 리모컨인 척 흉내 내는 것입니다. 리모컨이 보내는 적외선(IR) 신호를 수신해 데이터를 캡처한 뒤, 아두이노로 재전송하면 됩니다. 회로 조립 후 아래 스케치를 업로드하고 시리얼 모니터를 여세요. 리모컨을 아두이노 IR 수신기에 향하게 하고 다음 버튼을 차례로 누르세요.
전원/대기
채널 1~9
볼륨 업/다운
음소거
채널 업/다운
시리얼 모니터에 rawData 배열로 값이 출력됩니다. 메모장에 기록해 두고 각 배열에 이름(chan1, chan2 …)을 붙이세요. 아래 값은 삼성 TV 리모컨 예시일 뿐, 본인 리모컨으로 다시 캡처해야 합니다.
Arduino IoT Cloud 메인 페이지에서 새 Thing 생성 → 이름 TVRemoteController → 보드 선택(본 튜토리얼은 Nano 33 IoT, 다른 호환 보드도 가능, 핀아웃·IR 라이브러리 동작 다를 수 있음). 보드가 안 보이면 앞서 언급한 Getting Started 절차를 놓친 것 → 다시 수행.
Property 하나 추가: 카테고리 Smart Home → TV 타입 선택 → Read & Write → 업데이트 정책 When the value changes.
3부: 아두이노 웹 에디터에서 코드 작성
EDIT SKETCH 버튼 클릭 → 웹 에디터에서 IoT Cloud가 자동 생성한 스케치에 커스텀 코드 추가.
IRremote 라이브러리 포함 (Ken Shirriff 作).
#include <IRremote.h>
캡처한 IR 데이터를 배열로 정의.
const unsigned int chan[9][67] = { {chan1}, {chan2}, {chan3}, {chan4}, {chan5}, {chan6}, {chan7}, {chan8}, {chan9} };
const unsigned int volUp[67] = {...};
const unsigned int volDown[67] = {...};
const unsigned int chanUp[67] = {...};
const unsigned int chanDown[67] = {...};
const unsigned int onoff[67] = {...};
const unsigned int mute[67] = {...};
IR 송신 객체와 주파수(38kHz) 설정.
IRsend irsend;
const int freq = 38;
IR 전송 헬퍼 함수(내장 LED 깜빡임으로 디버깅). 딜레이 값은 TV 모델마다 다를 수 있으니 조정 필요.