라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

안녕하세요 라이프온룸입니다. 

자 오늘은 여름 맞이 DIY 집밬에서 에어컨 켜기 입니다.  !!!

에어컨에 IOT 기능이 달려 있다면 굳이 안해도 되겠지만 저의 에어컨은 LG 휘센 .. 거의 이제 중년의 나이라서 IR 리모컨이 유일한 제어 수단입니다. ㅠㅜ

하지만 중년파워 보여 줘야죠 !! 라즈베리파이에 IR Transmitter 모듈을 달아서 Alexa 앱으로 IR 신호로 전송해 에어컨을 켜보겠습니다. 혹시 이해가 안가시는 분들은 아래 포스팅을 보고오면 좋을 것 같아요 ㅎ 

알렉사로 컴퓨터를 원격으로 켜보자 !! (1) 

일단 라즈베리파이에서 IR 장치를 이용하려면 LIRC 라는 라이브러리를 이용해야 합니다. 근데 이게 좀 할게 많아요 ㅜㅜ 그래서 이번 포스팅에서는 LIRC 에 대한 전반적인 사용법과 IR Transmitter, Receiver 에 대해 알아볼게요 

1. 준비물

  • 리모컨
  • IR Receiver 모듈
  • IR Transmitter 모듈 
  • 점퍼, 빵판, 라즈베리파이

** 2019-60-05 IR Transmitter 모듈로 테스트를 해보니 모듈에 신호 증폭회로가 들어가 있지 않아서 전송거리가 매우 짧게 나오더라고요(대략 2M 이내) ㅜㅜ 그래서 Transistor와 일반 IR LED를 이용하여 회로를 구성하면 전송거리를 좀 더 늘릴 수 있을 거에요 ! (3M 까지는 동작)

  • NPN Transistor (2N5551)
  • 5mm 940nm IR LED
  • 저항 (10KΩ, 1KΩ, 200Ω)

저항의 경우엔 저는 사용하지 않았습니다만 다른 포스트에서는 쓰길래 한번 넣어 봤습니다. 

2. 회로 

GPIO 18 은 IR Receiver 의 데이터 Pin에, GPIO 22번은 IR Transmitter에 연결했습니다. 

그리고 각각 모듈에 VCC 에는 3.3V 를 입력해 주시면 됩니다. 

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

** 2019-60-05 

IR LED 증폭회로를 첨부합니다. 보통 다른 포스팅에서는 TR Base 에 10KΩ 을 달고 Collecter 부분에 200Ω 을 연결하라고 하는데요. 저는 그렇게 했더니 거리 문제가 개선되지 않았습니다. 일단 아래 회로로 하면 저는 잘 동작하지만 Trangistor의 특성에 따라 문제의 소지가 있을 수 있습니다. ..

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

3. LIRC 설치 및 세팅

이 부분은 아래 URL에 정말 간단하게 잘 나와 있습니다. 명령어만 필요하신분은 아래 포스트를 참고하시면 좋을 것 같아요 ㅎㅎ

https://gist.github.com/prasanthj/c15a5298eb682bde34961c322c95378b

아래 라이브러리를 설치해 주세요 

sudo apt-get install  lirc

설치 후 커널 모듈에 lirc 라이브러리를 등록하고 설정 하기위해 아래 파일을 수정해 주세요

sudo vim /etc/modules
lirc_dev
lirc_rpi gpio_in_pin=18 gpio_out_pin=22

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

hardware.conf 라는 파일을 아래 path에 만들고 내용을 입력해 주세요 

sudo vim /etc/lirc/hardware.conf
아래 내용 입력
LIRCD_ARGS="--uinput --listen"
LOAD_MODULES=true
DRIVER="default"
DEVICE="/dev/lirc0"
MODULES="lirc_rpi"

아래 파일을 수정해 주세요 

sudo vim /etc/lirc/lirc_options.conf

driver    = default
device    = /dev/lirc0

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

이제 lirc 데몬을 살린 다음 상태를 봐보겠습니다. 아래 명령을 입력해 주세요 

sudo /etc/init.d/lircd stop 
sudo /etc/init.d/lircd start 
sudo /etc/init.d/lircd status

아래 같이 나오면 정상입니다. 

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

그럼 일단 Reboot을 하겠습니다. 

sudo reboot

4. IR Receiver Test 

mode2 라는 툴을 이용해서 기본 테스트 부터해보겠습니다. 아래 명령어 입력 후 리모컨 버튼 아무거나 눌러보세요 !!

sudo /etc/init.d/lircd stop
mode2 -d /dev/lirc0

요런식으로 나올 거에요 이렇게 나오면 IR Receiver는 제대로 동작하는 겁니다. 

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

그러면 이제 우리가 사용하는 리모컨을 한번 등록해 볼게요 근데 등록하기 전에 !!

아래 URL 에서 사용하려는 모델이 있다면 이 과정은 건너 뛰셔도 됩니다. (Study 차원에서 하는거 외에는요 ㅎㅎ)  참고로 제조사 > 모델별로 정리가 되어 있습니다. 

https://sourceforge.net/p/lirc-remotes/code/ci/master/tree/remotes/

저는 일단 실험용으로 산 리모컨으로 시험을 해볼게요. 

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

5. 리모컨 등록

리모컨 등록이라고 했지만 리모컨 IR 신호를 Recording 해서 파일로 저장하는 과정 입니다. 위 과정을 마치면 홈폴더에 파일이름.lircd.conf 라는 파일이 생길 거에요. 

자 그럼 아래 명령어를 입력해 주세요 

sudo /etc/init.d/lircd stop
sudo irrecord -d /dev/lirc0 ~/lircd.conf

RETURN to continue 라고 나오고 여기서 Enter를 치면 리모컨의 이름을 입력하라고 나옵니다. 저는 CARMP3라고 지었어요 ! 

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

이 상태에서 Enter를 또 치면 Press RETURN now to start recording. 이라는 문구가 나옵니다. 그럼 과감하게 Enter를 치고 리모컨 버튼을 1초간 하나하나씩 눌러주세요 

그러면 점이 하나 계속 추가 될 건데 아래처럼 Please enter 가 나올때 까지 버튼을 마구 눌러주세요 

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

이 상태에서 Enter를 치면 아래 화면이 나올거에요. 그리고 home 디렉토리에 가면 CARMP3.lirc.conf 파일이 있을 거에요 !! 

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

아쉽지만 아직 끝나지 않았어요 ㅜㅜ 리모컨 버튼 이름을 등록해줘야 하거든요 ! 주의할 점은 아래 명령을 쳤을때 검색되는 이름으로 등록을 해줘야 합니다. 

irrecord –list-namespace (사용할 수 있는 이름 )

일단 아래 명령어를 입력해 주세요 

irrecord -u CARMP3.lircd.conf

그럼 Press RETURN to continue 라는 문구가 나올거에요 여기서 Enter를 누르고 등록할 리모컨 버튼을 눌러줍니다. 그러면 키이름을 입력하라고 나오는데 여기서 KEY 이름을 입력하면 또 해당 리모컨 버튼을 꾹 눌러라고 나올 거에요 이때 꾹 눌러주시면 버튼이 등록 되고 또 Key 이름을 지정하라고 나올 겁니다. 만약 KEY 입력을 그만하고 싶다면 Enter를 눌러 빠져나오시면 되요 ㅎㅎ

이 방법으로 모든 리모컨 버튼을 등록 할 수 있습니다. 그런뒤  CARMP3.lircd.conf 를 열어보세요. 입력했던 데이터가 들어가 있을 겁니다.

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi

6. 리모컨 신호 발생

5번 과정에서 데이터가 들어 있는 것을 확인 했으면 이파일을 /etc/lirc/lircd.conf.d 폴더로 옮겨 줍니다. 미리 존재하는 conf 파일도 이 폴더로 옮겨주면 됩니다. 

sudo cp -rf ~/CARMP3.lircd.conf /etc/lirc/lircd.conf.d/

그런뒤 아래 명령어를 쳐보세요 

irsend SEND_ONCE CARMP3 KEY_0

그럼 만약 해당 신호를 수신 할 수 있는 장치가 있다면 해당 장치가 동작 할거에요 ㅎㅎ 

넵 이번 포스팅에서는 lirc 사용법을 알아 봤구요 다음 시간에는 에어컨을 켜볼게요 ㅎㅎ 

긴글 읽어주셔서 감사합니다. 

라즈베리파이 적외선 수신기 - lajeubelipai jeog-oeseon susingi