[Raspberry Pi 5] LIRC와 IR 수신 모듈로 라즈베리파이 5 리모컨 제어 및 Kodi 연동 완벽 가이드
안녕하세요! 지난 포스팅에서 라즈베리파이를 미니 PC처럼 쾌적하게 다루기 위한 기초 세팅을 살펴보았는데요. 오늘은 한 걸음 더 나아가, 라즈베리파이를 거실의 스마트 TV 셋톱박스처럼 무선으로 제어할 수 있는 적외선(IR) 리모컨 연동 프로젝트를 진행해 보겠습니다.
리눅스 시스템에서 적외선 신호를 송수신할 수 있는 강력한 오픈소스 패키지인 LIRC(Linux Infrared Remote Control)를 이용해, 시중에서 쉽게 구하는 미니 IR 리모컨의 신호를 등록하고 오픈소스 미디어 플레이어인 Kodi(코디)까지 제어하는 전 과정을 1단계부터 8단계까지 빠짐없이 정리해 드립니다!
🛠️ 준비 부품 및 GPIO 물리 연결
이번 프로젝트에 필요한 하드웨어 부품은 매우 간단합니다.
- 라즈베리파이 5 (Raspberry Pi 5) 본체
- IR 수신 모듈 (적외선 수신 센서)
- IR 리모컨 (송신용 mini 리모컨)
⚠️ [필독] 배선 연결 시 주의사항
🚨 경고: 전원(5V)과 그라운드(-/접지) 핀을 반대로 잘못 연결하면 IR 센서가 순식간에 과열되어 고장(燒損)이 납니다! 핀 배열을 반드시 두 번 확인하고 전원을 인가해 주세요.
[라즈베리파이 5 GPIO 연결 지도]
- VCC (Power): 라즈베리파이의 5V Power 핀 (상단 2번 또는 4번 핀)에 연결합니다.
- GND (Ground): 라즈베리파이의 Ground 핀 (상단 6번 핀 등)에 연결합니다.
- OUT (Signal): 라즈베리파이의 GPIO 17 핀 (상단 11번 핀)에 연결합니다.
연결이 올바르게 완료되었다면, 리모컨 버튼을 누를 때마다 IR 수신 모듈에 달린 LED가 빨간색으로 깜빡이며 신호 수신을 알립니다.
💻 LIRC 설치 및 환경 설정 (1~4단계)
1단계: LIRC 패키지 설치
터미널을 열고 시스템 패키지를 최신화한 뒤 LIRC를 설치합니다.
sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install lirc -y
2단계: config.txt 파일 편집 (커널 오버레이 활성화)
라즈베리파이가 부팅될 때 GPIO 17번 핀을 통해 적외선 신호를 받아들일 수 있도록 시스템 환경 설정을 변경해야 합니다.
sudo vi /boot/config.txt
파일 내부에서 아래 항목을 찾아 주석(#)을 제거하거나 추가해 줍니다. (우리는 수신 모듈만 사용하므로 gpio-ir만 활성화합니다.)
dtoverlay=gpio-ir, gpio_pin=17
#dtoverlay=gpio-ir-tx, gpio_pin=18
저장한 뒤 시스템을 재부팅(sudo reboot)합니다.
3단계: LIRC 옵션 값 설정
부팅 후 장치가 정상 인식되었는지 확인합니다.
ls /dev/lirc*
# /dev/lirc0 라고 출력되면 정상입니다.
이제 LIRC 구동 옵션 파일을 편집합니다.
sudo vi /etc/lirc/lirc_options.conf
내부 항목 중 driver와 device 항목을 아래와 같이 수정 후 저장합니다.
[lircd]
driver = default
device = /dev/lirc0
수정 후 다시 한번 시스템을 재부팅합니다.
4단계: LIRC 데몬 구동 및 로우 데이터 확인
LIRC 서비스가 정상적으로 Active 상태인지 체크합니다.
sudo /etc/init.d/lircd status
이제 정상 수신 검증을 위해 잠시 lircd 서비스를 멈추고 mode2 명령어로 리모컨 신호 날것(Raw Data)을 모니터링해 봅니다.
sudo /etc/init.d/lircd stop
sudo mode2 -m
이 상태에서 리모컨 버튼을 누르면 터미널 창에 pulse, space 값과 함께 수많은 숫자 행렬이 연속적으로 출력되는 것을 볼 수 있습니다. 신호 수신 인프라가 완벽히 구축되었습니다!
⌨️ 리모컨 버튼 매핑 및 키 등록 (5~7단계)
5단계: 대안적 방법으로 리모컨 신호 파일 생성
공식 명령어인 irrecord를 사용하면 간혹 첫 번째 키만 지정되고 다음 키 등록이 씹히는 고질적인 버그가 있습니다. 우리는 이를 우회하여 mode2 출력을 파일로 직접 리다이렉션하는 영리한 방법을 사용하겠습니다.
sudo mode2 -m > CARMP3.lircd.conf
위 명령어를 실행한 뒤, 리모컨의 숫자 버튼(1번부터 9번까지)을 순서대로 ‘딱 한 번씩만’ 차분하게 누릅니다. 입력이 끝났다면 Ctrl + c를 눌러 종료합니다.
6단계: CARMP3.lircd.conf 파일 정밀 편집
생성된 CARMP3.lircd.conf 파일을 텍스트 에디터로 열어 상단의 무작위 로우 로그 데이터(찌꺼기 내용)를 과감히 삭제하고, 아래와 같이 LIRC가 인식할 수 있는 정형화된 규격 폼으로 포맷팅을 진행합니다.
begin remote
name CARMP3
flags RAW_CODES | CONST_LENGTH
eps 30
aeps 100
gap 107602
begin raw_codes
name BTN1
9009 4422 627 498 ...
name BTN2
9006 4423 625 498 ...
name BTN3
9011 4424 626 495 ...
# (BTN4부터 BTN9까지 각 리모컨 고유의 숫자 행렬을 차례대로 정렬)
end raw_codes
end remote
7단계: 프로필 적용 및 최종 수신 테스트
완성된 설정 파일을 LIRC 시스템 폴더로 복사해 줍니다. 원본 파일은 이제 지우셔도 무방합니다.
sudo cp CARMP3.lircd.conf /etc/lirc/lircd.conf.d/
sudo /etc/init.d/lircd start
이제 최종적으로 리모컨의 버튼 이름이 제대로 파싱되어 매핑되는지 시스템 입력을 감지해 봅니다.
sudo irw
버튼을 누를 때마다 터미널에 아래처럼 내가 정의한 버튼 이름이 툭툭 떨어진다면 성공입니다!
0000000000000001 00 BTN1 CARMP3
0000000000000002 00 BTN2 CARMP3
0000000000000003 00 BTN3 CARMP3
🎬 8단계: Kodi(코디) 홈 미디어 센터 매핑 설정
리모컨 인프라 셋업이 완전히 끝났으니, 최종 목적지인 Kodi 미디어 플레이어에서 리모컨 버튼으로 메뉴를 조작할 수 있도록 맵 파일을 생성해 주겠습니다. Kodi는 내부적으로 Lircmap.xml 양식을 지원합니다.
sudo vi ~/.kodi/userdata/Lircmap.xml
파일 내부에 아래와 같이 내 리모컨 이름(CARMP3)과 버튼 명칭(BTN)들을 Kodi의 글로벌 시스템 조작 명령 키들과 1:1로 매핑해 줍니다.
<lircmap>
<remote device="CARMP3">
<select>BTN5</select>
<left>BTN4</left>
<right>BTN6</right>
<up>BTN2</up>
<down>BTN8</down>
<back>BTN3</back>
<stop>BTN1</stop>
</remote>
</lircmap>
설정을 마치고 저장한 뒤, 시스템을 재시작(sudo reboot)해 줍니다.
이제 거실 TV 스크린에 연결된 Kodi를 실행하고 리모컨의 2(상), 8(하), 4(좌), 6(우) 버튼을 누르면 부드럽게 메뉴가 이동하며 5번 버튼으로 깔끔하게 영화나 음악을 재생(Select)할 수 있습니다!
📝 마치며
오늘 다룬 프로젝트는 단순한 콘솔 명령어 조작을 넘어, 하드웨어 센서 배선(GPIO)과 리눅스 백그라운드 서비스 데몬(LIRC), 그리고 상위 애플리케이션(Kodi 코디 레이어)까지 유기적으로 맞물려 돌아가는 ‘완벽한 임베디드 토이 프로젝트’의 정석입니다.
배선 연결 시 전원선 합선만 주의해 주신다면 낡은 리모컨 하나로 고성능 멀티미디어 플레이어를 직접 커스텀하는 짜릿한 손맛을 느끼실 수 있습니다. 진행하시다가 중간 매핑 단계에서 숫자가 튀거나 에러 메시지가 출력된다면 언제든 댓글로 질문을 남겨주세요! 😊
댓글 남기기