Home » 산딸기 가지고 놀기 » XBMC 리모컨 제어하기 : IR Remote

 

아래 글은 저희 카페 내에  clon0202 님께서 올려주신 리모컨 수신기 제작방법 입니다. 

 

많은 분들이 라즈베리 파이를 거실의 HTPC 대용으로 사용 하고 계신데요
(저 또한 그 목적으로 구매 했구요)

 

스마트폰용 앱을 이용하거나 무선 키보드로 라즈베리파이용 XBMC (주로 OpenELEC 이나 Xbian) 을 제어하는데 개인적으로 많이 불편하게 느껴졌습니다. (굴러다니는 리모콘 만큼 편한것도 없죠 -_-)

 

그러던중 시간 도둑님이 올리신 글을 보고 무작정 따라 했봤는데 설정이 말처럼 쉽지 않더군요.

삽질의 기록을 남겨 다른 분들이 조금이라도 덜 삽질 하시길 기원하면서 정리해 보도록 하게습니다.

시작 하기전에 시간 도둑 님의 글을 읽고 오시면 훨씬 더 이해가 쉽습니다. (감사합니다 시간도둑님 (__) )

http://cafe.naver.com/pipc/1125

http://xbmc-korea.com/xe/tips/100217

 

 

먼저 위의 글에 나와 있듯이 준비물이 필요 합니다.

 

1. IR 리시버 : TSOP 4838 리시버

아래 사이트에서 1000원에 구매 했습니다. (배송비 절약 차원에서 방열판 몇개 더 사서 붙이면 좋습니다.)

http://www.icbada.co.kr/shop/shopdetail.html?branduid=83505&search=4838&sort=

 

2. 리모콘 : 오성전자에서 만든 쿡TV 스카이라이프 리모콘입니다. (서비스 해지 후 기사님이 버려놓고 가심)

상단의 TV 전원, 외부입력, 볼륨 버튼은 TV 에 적용되고 하단 버튼들은 XBMC 를 위해 사용됩니다.

ir_1

3. IR 리시버 케이블  : 시간도둑님 처럼 ch254 케이블을 구매 하셔도 되지만 저의 경우 pc cd-rom의 오디오 케이블을 사용 했습니다. 의외로 간편하게 잘 됩니다.

ir_2

이제 작업 순서를 정리해보겠습니다.

크게 나누면 아래와 같습니다.

 

1. IR 리시버 설치

2. Irrecord 를 이용한 conf 파일 생성 과 Lirc 데몬 설정

3. XBMC 의 Lircmap.xml 설정

 

전체적으로 보면 리모콘의 IR 신호를 리시버가 수신하여 리눅스 시스템의 LIRC 데몬에게 전달 하고

그 데몬이 해당 신호를 keymap 으로 전환하여 xbmc 에게 넘기면 xbmc 에서 해당 신호에 할당된 동작을 수행하는 구조 입니다.

lirc 데몬에 대해 좀더 자세히 알고 싶으시면 다음 사이트를 참조 하시기 바랍니다.

http://www.lirc.org/

 

지금부터 하는 작업은 모두 xbian 기준이며 root 권한으로 작업 합니다. (필요시 xbian 권한으로 실행)

 

 

1. IR 리시버 설치

제가 구매한 리시버의 datasheet 일부입니다.

img1

img2

 

5V 전원을 사용 하며 좌측부터 데이터 out, 접지, 5V 전원 핀으로 구성 된걸 알 수 있습니다.

 

이제 GPIO 핀을 살펴 보겠습니다.

gpio

 

왼쪽이 리비전 1, 오른쪽이 리비전 2 입니다.

요즘 제품이라면 거의 리비전 2 일테니 오른쪽을 참조 하시면 됩니다.

 

5v 전원, GND, #18 번 핀을 이용합니다.

 

리시버(왼쪽부터)       GPIO

1                          18

2                        GND

3                          5V

 

납땜을 하시던 ch254 케이블로 연결을 하시던 어떤 방법을 사용 하셔서든 위의 핀 구성으로 연결 하시면 됩니다.

주의하실 점은 수신기의 전원이 몇 볼트 인가 인지를 잘 확인 하시고 꼽으셔야 하고 핀을 잘못 꽂으면 엄청나게 뜨거워지니 주의하셔야 합니다.

IMG_5561

IMG_5562

 

수신기 쪽은 양면 테이프로 기판에 고정 시켰습니다.

 

이제 수신기가 정상 작동 하는지 확인 합니다.

 

파이에 전원을 넣으시고 root 로 로그인 하신후 다음 내용을 진행 합니다.

root@xbian:~# cd /etc
root@xbian:/etc# vi modules

 

맨 마지막줄에 lirc_rpi 를 추가 합니다.

저장후 reboot -f 명령으로 재부팅 합니다.

( 간편하게
root@xbian:/etc# echo “lirc_rpi” > /etc/modules
이렇게 해주셔도 됩니다. )

 

 

부팅 완료후 dmesg 명령으로 lirc 모듈이 올라 왓는지 확인해봅니다.

root@xbian:/etc# dmesg

 

정상적으로 로그가 올라 왔다면 mode2 명령으로 리모콘에서 ir 리시버 까지 신호가 잘가는지 확인 합니다.

mode2 명령을 실행 하려면 lirc 데몬을 멈춰야 합니다.

 

root@xbian:/etc# /etc/init.d/lirc stop
root@xbian:/etc# mode2

 

윗줄의 명령어는 lirc 데몬을 죽이는 명령어이며 stop | start 를 통해 데몬을 죽이고 살릴수 있습니다.

두번째 줄의 mode2 명령을 치고 ir 리시버를 향해 리모콘의 아무 버튼이나 눌렀을때 위의 그림과 같이 space / pulse 가

나오면 정상 작동 하는 것입니다.

만약 위와 같이 안나오신다면 리시버 연결이 잘못 되어 있는 상태 이므로 데이터시트를 자세히 살펴 보시고 연결을 하셔야 합니다. ( 이후 진행이 불가능 합니다.)

 

 

2. Irrecord 를 이용한 conf 파일 생성 과 Lirc 데몬 설정

위의 과정이 완료 되었으면 이제 lirc 설정 파일을 만들 차례 입니다.

 

 

이제부터 봐야 할 곳은 /etc/lirc 디렉토리의 lircd.conf 파일과 하위 remotes 폴더의 xxxx.conf 파일 들입니다.

lircd.conf 파일은 어떠한 리모콘들의 설정 파일이 들어가는 파일이며 내용을 살펴 보면 아래와 같습니다.

 

각 리모콘들의 설정 파일을 위와 같이 include 하여 사용 하겠다는 의미 입니다.

 

만약 사용하고자 하는 리모콘이 아래 사이트에 존재 한다면 해당 하는 conf 파일을 다운로드 하여 remotes 디렉토리에 위치 시킨후 위와 같이 include 라인을 추가 하여 사용 하시면 됩니다.

http://lirc.sourceforge.net/remotes/

 

이제 실제 리모콘의 신호 정보를 가지고 있는 파일을 살펴 보도록 하겠습니다.

 

위와 같이 헤더 정보와 키 <> 신호 쌍을 가지고 있습니다.

 

운좋게 설정 파일을 찾으실 수 있으면 좋겠지만 없는 경우가 훨씬 많을 겁니다. (당연하겟죠?)

 

lirc 는 이런 경우를 대비 해서 사용자가 직접 ir 신호를 수신해서 설정 파일을 만들 수 있도록

irrecord 라는 프로그램을 제공 합니다.

 

이제부터 irrecord 를 이용해 설정 파일을 만드는 법을 살펴 보겠습니다.

mode2 명령과 마찮가지로 irrecord 명령도 lirc 데몬이 멈춰 있는 상태에서 시작 하여 합니다.

tmpTest.conf 파일은 생성할 파일명 입니다.

 

root@xbian:/etc/lirc/remotes# /etc/init.d/lirc stop
[ ok ] Stopping remote control daemon(s): LIRC:.
root@xbian:/etc/lirc/remotes# irrecord tmpTest.conf

 

위 화면에서 엔터키를 치고 다시한번 엔터키를 치면 다음 화면이 나옵니다.

 

Press RETURN now to start recording. 이라는 문구가 나오면 엔터키를 치고 사용하고자 하는 리모콘의 버튼을 눌러줍니다.

첫번째 dot 가 나오는 줄에서는 한 버튼을 계속 눌러도 상관 없으며

두번째 줄은 각 버튼을 한번씩 마구 마구 눌러줍니다.

점선이 끝까지 나오고 Please enter the name for the next button (press <ENTER> to finish recording) 의 문구가 나오면

이제 부터 키를 입력 해야 합니다.

단순 노가다 작업으로 key namespace 에 있는 key 명칭을 입력 하고 키를 눌러주는 단순반복 작업입니다.

 

key namespace 는 다음 주소에서 확인 가능 합니다.

http://pastebin.com/9E40CH4H

 

키네임스페이스에 지정된 명칭만 사용 가능 하므로 꼭확인 하시고 진행 하셔야 합니다.

 

KEY_UP 을 치신 후 엔터 치시고 리모콘에서 해당 되는 버튼을 누르시면 됩니다.

XBMC 사용에 필요한 키를 모두 위의 방법데로 등록 하시고 마지막에 작업을 마치시고 싶을때는

ENTER 키를 치시면 됩니다.

 

디렉토리를 살펴 보시면 다음과 같이 방금 생성한 파일이 자리 하고 있습니다.

 

 

해당 내용을 살펴보면 아래와 같이 리모콘 ir 신호에 대한 RAW 파일이 생성 되어 있습니다.

 

 

이 RAW 파일을 analyse 하여 다른 설정 파일 처럼 간결하게 정리 하고 name 부분도 좀더 쉽게 변경 해 줍니다.

 

root@xbian:/etc/lirc/remotes# irrecord -a tmpTest.conf

 

위와 같이 정리된 코드가 나옵니다.

해당 내용을 복사하여  tmpTest.conf 파일에 모든 내용을 지우고 해당 내용으로 대체 해 줍니다.

수정 하며 name 부분도 알기 쉽게 tmpTest 로 변경 하겠습니다.

 

해당 name 부분은 이후에 중요 하게 쓰이니 반드시 기억 하시기 바랍니다.

 

이제 해당 파일의 권한을 변경해줍니다. (꼭필요한진 모르겠으나 다른 파일들이 다 777 권한이므로 맞춰 줍니다.  -ㅡ);;

 

root@xbian:/etc/lirc/remotes# chmod 777 tmpTest.conf

 

변경이 완료 되었으면 lircd.conf 파일을 수정 하러 갑니다.

root@xbian:/etc/lirc# vi lircd.conf

아래 내용 추가
include “/etc/lirc/remotes/tmpTest.conf”

 

이제 lircd 설정이 모두 끝났습니다.

데몬을 재시작 하고 irw 명령을 이용해 신호가 잘 나오는지 확인합니다.

 

root@xbian:/etc/lirc# /etc/init.d/lirc start
root@xbian:/etc/lirc# irw

 

irw 명령을 치고 ir 리시버를 향해 등록한 버튼을 눌렀을때 위와 같이 특정 코드 | 정의한 키 내용 | name 이 나오면 성공입니다.

만약 위와 같이 안나오신다면 지금까지의 과정을 잘 살펴 보시고 빠진게 없는지 확인 하셔야 합니다.

 

3. XBMC 의 Lircmap.xml 설정

이제 XBMC 의 설정만 완료 하시면 리모콘 사용이 가능 합니다.

 

Xbian 기준으로 설정 파일의 위치는 /home/xbian/.xbmc/userdata 입니다.

해당 위치에 Lircmap.xml 파일을 열어 편집 합니다.

xbmc 의 메뉴 정의 대로 먼저 정의한 key들을 매핑 합니다.

xbmc 키 맵은 다음 주소를 참조 합니다.

http://wiki.xbmc.org/index.php?title=Userdata/lircmap.xml

 

 

위의 파일 에서 주의 깊게 볼 부분은 세군데 입니다.

<remote deivcd=”tmpTet”> 부분은 먼저 정의한 conf 파일의 name 부분을 정의해 줍니다.

그리고 마지막 <title>KEY_INFO</title> 부분은 컨텍스트 메뉴를 위한 설정입니다.

중간의 play / pause 부분은 play 와 pause 가 같은 버튼으로 토글 작동을 하기 위한 설정입니다.

한 버튼으로 토글 설정을 하려면 파일 하나가 더필요 합니다.

.lircrc 파일입니다.

 

위와 같은 설정으로 KEY_PLAYPAUSE 버튼이 눌리면

config = play_command

config = pause_command

위의  두 명령이 실행 되도록 설정 하고 Lircmap.xml 에서 해당 기능에 해당 명령을 매핑 해 줍니다.

 

설정후 xbmc 재시작을 위해 다음 명령어를 실행 합니다.
root@xbian:/home/xbian/.xbmc/userdata# /etc/init.d/xbmc restart

지금까지 잘 따라 오셨다면 리모콘이 잘 작동할 것입니다.

 

혹시나 버튼 한번에 두번씩 동작 하는 버튼이 있다면 다른 곳에서 설정 되어 있는 키 이므로 Lircmap.xml 에서 삭제 해주시고

사용 하시면 됩니다.

실제로 위의 파일을 보시면 상하좌우 버튼 정의가 안되어있습니다.

IrIC 설정파일 : Down

* 출처 : cafe.naver.com/pipc  clon0202님의 강좌 입니다.

산딸기마을 포스트 검색

공동제작 공동프로젝트 무상후원 기관

산딸기마을 기부하기

산딸기마을 방문자 현황

Flags Countries Visits Page views
South Korea 626063 1845660
United States 10882 26091
Japan 5011 13204
Germany 2755 5151
India 1897 2902
Canada 1729 4640
United Kingdom 1596 2642
Australia 1240 2901
Russia 1219 1677
China 1077 2239
Total Pageviews: 1936700