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

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

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

거짓말의 색깔.

거짓말의 색깔.

우리는 누구나 거짓말을 합니다. 심리학자들의 연구에 따르면 처음 만난 사람과 10분 대화하는 동안 평균 세 번의 거짓말을 한다고 합니다. 우리가 흔히 ‘하얀 거짓말’이라고 부르는 건 상대방이 듣기 좋으라고 하는 거짓말을 말합니다. 살 수 있는 날이 석 달 밖에 남지 않은 시한부 환자에게 사실을 숨기는 것도 ‘하얀 거짓말’입니다. 언젠가는 알려줘야겠지만 희망을 버리는 순간 빠른 속도로 체력을 잃게 될 수도 있기 때문이죠. “너 오늘따라 더 예뻐 보인다”는 것도 ‘하얀 거짓말’일...

론스타 ISDS 소송, 이길 생각이 있었나? 한국 정부의 수상쩍은 태도.

론스타 ISDS 소송, 이길 생각이 있었나? 한국 정부의 수상쩍은 태도.

“재판 절차의 공개는 재판의 공정성과 신뢰성을 보장하려는 근대 사법제도의 기본이다. 더욱이 국가 공공정책의 정당성을 다투는 재판 절차는 더욱 철저하게 공개돼야 한다.” 론스타와 한국 정부의 투자자국가소송(ISDS) 첫 심리를 하루 앞둔 2015년 5월14일, 민주사회를위한변호사모임이 낸 성명 가운데 일부다. 민변은 국제투자분쟁중재센터(ICSID) 규칙에 따라 ICSID 사무총장 멕 키니어(Meg Kinnear)에게 참관 신청서를 보냈으나 모두 허용할 수 없다는 답변을 받았다....

“론스타는 ISDS 신청 자격 조차 안 됐다.”

“론스타는 ISDS 신청 자격 조차 안 됐다.”

론스타 ISDS 소송의 쟁점을 살펴 보기 전에 먼저 론스타가 소송을 제기할 수 있는 자격을 따져봐야 한다. 이화여자대학교 법학과 교수 한만수는 2016년 6월 국가미래연구원 기고에서 다음과 같이 지적한 바 있다. “매각승인 지연이나 조세부과가 과연 중대하고도 명백한 위법 행위였는가를 따져 보아야 한다. 적어도 다음의 두 가지 면에서 그렇게 볼 수는 없다고 할 것이다. 첫째, 론스타는 두 가지 문제 모두에 있어서 클린 핸즈(clean hands)가 아니어서 그 투자 행위나 납세...

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

Join

Subscribe For Updates.

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