더 나은 세상은 가능하다, 이정환닷컴!

회전식 볼륨 리모컨 만들기.

Written by leejeonghwan

August 20, 2022

애플 리모컨을 대신할 만한 회전식 볼륨을 만들고 싶었다. 그러니까 손으로 돌려서 소리를 키우거나 줄일 수 있는 리모컨이 필요했다. 유선으로 연결해도 좋지만 여러 가지 사정으로 무선이면 더 좋겠다 싶었고 지금 쓰고 있는 버튼식 리모컨을 그대로 활용하면서 물리적인 볼륨 조절이 가능하면 좋겠다는 생각을 했다.

놀고 있던 아두이노를 꺼내서 이것저것 해봤는데 공개돼 있는 코드가 제대로 작동하는 게 없다. 보통 TV나 오디오 등 가전 제품에 쓰는 리모컨이 대부분 IR(적외선) 방식인데 장점은 전력 소모가 적고 가격도 싸다는 거지만 도달 거리가 1미터도 채 되지 않고 직선으로 쏴야 한다는 게 한계다. 하지만 별 수 없이 IR 방식의 리모컨을 만들기로 했다.

 

아날로그 기기에서는 볼륨을 키우거나 줄일 때 회전식 가변 저항을 썼는데 (오른쪽으로 돌리면 저항 값이 줄어들어 볼륨이 커지는 효과) 디지털에서는 전위 차이를 확인해서 왼쪽으로 돌고 있는지 오른쪽으로 돌고 있는지 구분하고 볼륨 값을 높이거나 낮춰준다. 그걸 로터리 인코더라고 한다. 결국 그래서

– 필요한 건 로터리 인코더에서 회전 방향을 읽어서 신호를 만들고 그 신호를 IR 송신 모듈로 내보내는 것.
– 깃허브에 공개돼 있는 코드를 합쳐서 손 봤고 (라이브러리가 업데이트되면서 옛날 코드가 작동이 안 됐던 것을 해결.)
– 애플 리모컨 전송 코드를 확인했고(IR 수신 모듈을 먼저 설치해서 버튼 값을 읽어냈다.)
– 로터리 인코더와 IR 송신 모듈을 연결해서 간단히 해결.

– 코드를 좀 볼 줄 아는 사람들은 금방 이해하겠지만 로터리 인코더는 CLK를 6번 핀에 DT를 7번 핀에, IR 모듈은 DATA를 3번 핀에 연결하면 된다.
– 여전히 단점은 도달거리가 매우 짧다는 것, 막대기형 리모컨이 여전히 편리한 점도 있다. 조준해 놓고 고정된 위치에 두고 쓰는 것도 방법.

– 로터리 인코더에 누름 버튼도 아직 비어 있으니 여기에 몇 가지 기능을 더 심거나, IR 신호를 더 키우는 방법을 찾거나, 등등 몇 가지 가능성이 더 있다.
– 건전지 문제를 해결하고 케이스만 적당한 거 골라주면 꽤 쓸만할 듯. (동전 전지는 전류가 부족해서 금방 아웃되는 듯. 전력 소모를 줄이는 방법도 고민해야 하고.)

일단 참고 삼아, 애플 리모컨의 신호 값(value)은 다음과 같다. (사실 IR 리모컨이면 뭐든 신호 값만 알면 커스터마이제이션 할 수 있다. 에어컨 온도도 볼륨 다이얼로 조절할 수 있다.)

왼쪽 버튼 : 77E190BF.
오른쪽 버튼 : 77E160BF.
위쪽 버튼 : 77E150BF.
아래쪽 버튼 : 77E130BF.
가운데 버튼 : 77E13ABF.
메뉴 버튼 : 77E1C0BF.
플레이 버튼 : 77E1FABF.

전체 코드는 다음과 같다.

//http://www.leejeonghwan.com/

#include
IRsend irsend;

#define volumeUp 17
#define volumeDown 18

int val;
int encoder0PinA = 6;
int encoder0PinB = 7;
int encoder0Pos = 0;
int encoder0PinALast = LOW;
int n = LOW;

static int cero=0;
long unsigned int irCode;

int cmdReceived;

void setup(){
IrSender.begin(3, ENABLE_LED_FEEDBACK);
Serial.begin(9600);
pinMode (encoder0PinA, INPUT);
pinMode (encoder0PinB, INPUT);
}

void loop(){
n = digitalRead(encoder0PinA);
if ((encoder0PinALast == LOW) && (n == HIGH)) {
if (digitalRead(encoder0PinB) == LOW) {
encoder0Pos–;
IrSender.sendNEC(0x77E130BF,32);
delay(40);
Serial.println (“volume down”);
} else {
IrSender.sendNEC(0x77E150BF,32);
delay(40);
Serial.println (“volume up”);
encoder0Pos++;
}
Serial.println (encoder0Pos);
}
encoder0PinALast = n;
}

 

깃허브에도 공개. https://github.com/leejeonghwan/ir_volume_control/

 

—–

2009년에 나온 애플 리모컨 2세대는 정말 신기한 물건이다. (13년이 지난 지금도 팔리는 제품이다.) 손이 베일 듯 얄상하고 가벼운데 직관적이다. 눈을 감고도 버튼을 찾을 수 있을 정도. 알루미늄을 통으로 절삭해서 만들었는데(통짜 쇳덩어리) 분해도 안 되고 이음매 조차도 없다. 구멍 보다 더 큰 부품들이 안에 들어가 있는데, 핀셋으로 병 안에 배를 만드는 것과 같은 공정으로 만든다고.
“The Apple TV’s remote control represents more incredible mechanical engineering from Apple. The remote appears to machined from a solid piece of aluminum. Because of this, the electronics of the device must be slid in through small holes on the side, similar to putting a ship in a bottle. It’s a clever and a detail-oriented piece of design that makes the remote very pricey and very unique to Apple.”
leejeonghwan.com audio
Voiced by Amazon Polly

Related Articles

Related

뉴욕타임스가 말하는 이태원 참사.

뉴욕타임스가 말하는 이태원 참사.

한국인 최초로 퓰리처상을 받았던 최상훈 기자의 뉴욕타임스 기사. 뉴욕타임스는 참사 이후 20일이 지난 11월18일 이 기사를 1면 톱으로 내걸었다. 희생자들의 신발 사진도 실렸다. 누군가는 지나간 사건이겠지만 아직도 여전히 이 사건이 중요하다는 의미다. 미국인들에게도. 이 기사에는 한국 언론에서 확인하기 어려운 여러가지 맥락이 일목요연하게 정리돼 있다. 다 알고 있는 내용이라고 생각했지만 한 줄 한 줄이 마음이 너무 아프다. 제목이 말하는 것처럼 충분히 막을 수 있었는데 왜...

편집권 독립이라는 과제, 만연한 관행과 타협.

편집권 독립이라는 과제, 만연한 관행과 타협.

(최근 출간한 ‘한국 언론 직면하기’에 실린 한 챕터입니다.) 언론이 정치권력이나 자본권력의 압력에서 자유로워야 한다는 문제의식과 별개로 언론사 내부에서 편집권을 흔드는 구조적인 요인을 간과해서는 안 된다. 광고와 기사를 맞바꾸자는 건 광고주의 달콤한 제안이기도 하지만 이들과 타협하고 편집국에 이를 강요하는 건 언론사 내부의 의사 결정권자들이다. 단순히 기사 한 건을 살리느냐 날리느냐의 문제를 넘어 저널리즘의 원칙 위에 군림하는 힘의 논리의 문제고 결국 뉴스 룸의 조직 문화의...

론스타 게이트, 추경호의 거짓말과 여전히 남은 질문.

론스타 게이트, 추경호의 거짓말과 여전히 남은 질문.

(MBC PD수첩과 인터뷰할 때 준비하면서 적은 메모입니다. 1시간 정도 촬영했는데 짧게 세 번 등장했군요.) 1. 2018년 론스타 게이트를 다룬 ‘투기자본의 천국’이라는 책을 출간하시게 된 계기와 이유가 궁금합니다. (책을 쓰기 위해 수만 페이지 분량의 수사기록 등을 확보해 검토하셨다고 적혀있던데요. 어떤 문건, 총 어느 정도의 분량이었는지도 말씀 부탁드립니다.) 론스타 사건은 잘 알려져 있는 것 같지만 워낙 복잡하고 여러 가지 사건이 뒤엉켜 있어서 전체 실체를 알기가...

더 나은 세상은 가능하다, 이정환닷컴!

Join

Subscribe For Updates.

이정환닷컴 뉴스레터를 구독하세요.