반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발블로그

Raspberry pi3에 IR Transmitter & Receiver GPIO로 제어하기. 본문

RaspberryPI

Raspberry pi3에 IR Transmitter & Receiver GPIO로 제어하기.

mirChae 2018. 8. 8. 22:50

1. 설치환경

Ubuntu mate 16.04 for RPi3.

2. 준비물

1. RPi3

2. IR Transmitter

3. IR Receiver

3. 설정

1. lirc를 설치한다.

$ sudo apt-get install lirc

2. set '/etc/modules'.

# /etc/modules: kernel modules to load at boot time.
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.

lirc_dev
lirc_rpi gpio_in_pin=18 gpio_out_pin=17
  • 위의 내용을 '/etc/modules' 에 작성한다.
  • gpio 번호는 각자가 꽂은 번호로 설정(RPi3 핀번호가 아닌 MCU의 핀번호로 해야한다).

3. set '/boot/config.txt'.

dtoverlay=lirc-rpi,gpio_in_pin=18,gpio_out_pin=17
  • '/boot/config.txt' 의 마지막 줄에 위치한 'dtoverlay' 주석을 해제하고 각 핀 번호를 넣는다.

4. check device.

  • 위의 세팅까지 완료후 재부팅 한 뒤 Device가 세팅 되었는지 확인한다.
  • 이 때 IR Receiver or Transmitter가 RPi3 GPIO PIN에 꽂은 뒤 진행을 해야한다.
$ ls /dev | grep lirc
  • 위 명령어를 통해 'lirc0'가 있는지 확인을 한다.
  • 있다면, IR device가 잡히게 되고, 잘 기억해둔다!(아래 hardware 세팅 시 사용하게 된다.)

4. set '/etc/lirc/hardware.conf'.

# /etc/lirc/hardware.conf
#
#Chosen Remote Control
REMOTE="Custom"
REMOTE_MODULES="lirc_rpi"
REMOTE_DRIVER="default"
REMOTE_DEVICE="/dev/lirc0"
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF=""
REMOTE_LIRCD_ARGS="--uinput"

#Chosen IR Transmitter
TRANSMITTER="Custom"
TRANSMITTER_MODULES="lirc_rpi"
TRANSMITTER_DRIVER="default"
TRANSMITTER_DEVICE="/dev/lirc0"
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF="/etc/lirc/lircd.conf"
TRANSMITTER_LIRCD_ARGS="--uinput"

#Disable kernel support.
#Typically, lirc will disable in-kernel support for ir devices in order to
#handle them internally.  Set to false to prevent lirc from disabling this
#in-kernel support.
#DISABLE_KERNEL_SUPPORT="true"

#Enable lircd
START_LIRCD="true"

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD="false"

#Try to load appropriate kernel modules
LOAD_MODULES="true"

# Default configuration files for your hardware if any
LIRCMD_CONF=""

#Forcing noninteractive reconfiguration
#If lirc is to be reconfigured by an external application
#that doesn't have a debconf frontend available, the noninteractive
#frontend can be invoked and set to parse REMOTE and TRANSMITTER
#It will then populate all other variables without any user input
#If you would like to configure lirc via standard methods, be sure
#to leave this set to "false"
FORCE_NONINTERACTIVE_RECONFIGURATION="false"
START_LIRCMD=""
  • 우리는 GPIO에 직접 연결하여 사용하므로 "CUSTOM"으로 해준다.
  • MODULE에는 lirc_rpi
  • driver는 default
  • device에는 아까 위에서 확인했던 /dev/lirc0를 선택해준다.
  • 그리고, 잊지않고 LIRCD_ARGS에 '--uinput'을 꼭 넣어준다.

  • 위 config은 그저 따라했을 뿐 상세히 알아보지 못했다. 상세내용은 더 알아봐야한다.

5. REBOOT

  • 여기까지 완료가 되었다면 Reboot을 해준다.

4. 테스트

1. IR Receiver

$ sudo /etc/init.d/lirc stop
$ [ ok ] Stopping lirc (via systemctl): lirc.service.
$
$ mode2 -d /dev/lirc0
  • 먼저 lircd을 stop한다.
  • 이후 mode2 명령을 실행한 뒤 IR Receiver를 향해 아무 리모컨으로 신호를 쏴준다.
  • 무엇인가가 계속 주루룩 올라간다면 잘 작동하는 것이다.

2. IR Transmitter

sudo irsend -d /var/run/lirc/lircd1 SEND_ONCE {remote_name} {signal_name}
sudo irsend -d /var/run/lirc/lircd1 SEND_START {remote_name} {signal_name}
sudo irsend -d /var/run/lirc/lircd1 SEND_STOP {remote_name} {signal_name}
  • 위의 명령어를 통해 신호을 날려보고 응답을 한다면 되는 것이다.
  • remote_name은 필수조건으로 lircd.confremote 아래의 name을 입력해주면 된다.
  • signal_name은 필수조건으로 lircd.confremote 아래, code 아래의 name을 입력해주면 된다.
  • SEND_ONCE는 신호를 한번, SEND_START는 지속적으로 보내고, SEND_START로 시작한 시그널은 SEND_STOP으로 멈춘다.

마지막으로 이렇게 운용을 하게되면 송신기와 수신기를 따로 운용해야만 운용이 가능하다. GPIO에 송,수신기를 같이 연결할 경우 수신기만 응답을 한다... 이건 좀 더 알아봐야겠다.

반응형
Comments