산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

LIRC 없이 라즈베리 파이에서 IR 리모컨 명령 캡처하기: 파이썬 UART 방식

라즈베리 파이에 IR 리모컨을 통합할 때 LIRC를 거치지 않고 UART 시리얼 인터페이스를 직접 활용하면 간단합니다. 다음 가이드는 하드웨어 설정부터 파이썬 디코딩까지 전체 과정을 안내해 최소한의 코드로 리모컨 신호를 안정적으로 캡처할 수 있게 합니다.

왜 LIRC를 건너뛰나?

LIRC는 IR 기기용 일반 프레임워크를 제공하지만, 단순한 프로젝트에는 과하고 때로는 지연이나 호환성 문제를 일으킵니다. 내장 UART 핀(TX/RX)과 저속 시리얼 프로토콜을 사용하면 가볍고 결정적인 솔루션을 얻어 디버깅이 더 쉽습니다.

하드웨어 개요

1단계 – 라즈베리 파이 UART 준비

1. 커널 커맨드 라인 백업:

sudo cp /boot/cmdline.txt /boot/cmdline_bp.txt

2. ttyAMA0 파라미터 제거 (console=ttyAMA0,115200 및 kgdboc=ttyAMA0,115200)를 /boot/cmdline.txt에서:

sudo nano /boot/cmdline.txt

결과 라인은 다음과 비슷해야 합니다:

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait

3. /etc/inittab에서 ttyAMA0 로그인 프롬프트 마스킹:

sudo nano /etc/inittab

주석 처리:

#X:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

2단계 – pySerial 설치

UART 통신을 위한 파이썬 시리얼 라이브러리 설치:

sudo apt-get install python-serial

설치 후 스크립트에서 임포트:

import serial

3단계 – IR 센서 배선

4단계 – IR 바이트 읽기 기본 파이썬 스크립트

HX1838은 2400bps로 시리얼 스트림을 전송합니다. 다음 스니펫은 키 누름당 12~16바이트를 읽고 ASCII 코드를 출력합니다.

import serial
ser = serial.Serial('/dev/ttyAMA0')
ser.baudrate = 2400
for _ in range(15):  # 최대 15바이트 캡처
    byte = ser.read(1)
    print(ord(byte))

시행착오 끝에 2400bps가 가장 안정적인 캡처를 제공했습니다. 낮은 속도가 공중 전파 비트 오류 확률을 줄이기 때문으로 보입니다.

5단계 – 삼성 리모컨 키 디코딩

삼성 TV 리모컨으로 테스트한 결과, 키 누름마다 12~16바이트가 나옵니다:

키를 매핑하기 위해 바이트 6~11의 단순 가중 합을 계산합니다:

keyidentity = (byte[6] + 2*byte[7] + 3*byte[8] + 4*byte[9] + 5*byte[10] + 6*byte[11])

가장 견고한 방법은 아니지만 각 버튼마다 고유한 값을 내어 비교가 간단합니다. 더 엄격한 충돌 저항이 필요하면 해시나 XOR로 대체하세요.

완성 예제: ir_serial3samsung.py

아래는 간소화된 스크립트로:

import serial
ser = serial.Serial('/dev/ttyAMA0', 2400)

while True:
    # 버퍼 클리어용 24바이트 읽기
    raw = ser.read(24)
    # 처음 12바이트가 단일 키 프레스에 해당
    key_bytes = raw[:12]
    key_id = sum((i+1)*b for i, b in enumerate(key_bytes[6:12]))
    print(f'Key ID: {key_id}')

스크립트 실행 후 삼성 리모컨 버튼을 누르세요. 각 버튼마다 고유한 Key ID가 출력됩니다. 이 ID들을 룩업 테이블에 저장해 애플리케이션에서 액션에 매핑하세요.

결론

UART와 간단한 파이썬 스크립트로 IR 리모컨 신호를 캡처하면 LIRC가 필요 없고, 지연이 줄어들며, 디코딩 로직을 완전히 제어할 수 있습니다. 코드가 최소화되고 투명해 디버깅이 간단합니다. 시리얼 데이터를 출력하는 모든 IR 리모컨에 이 패턴을 적용할 수 있어 라즈베리 파이 프로젝트에 다재다능한 솔루션입니다.

더 자세한 지침은 원본 게시글 참조: How to Use and Emulate…

제조공정

  1. 파이썬, SQLite, LabVIEW로 라즈베리 파이 온도 프로파일링 정밀 구현
  2. 라즈베리 파이 2에서 DS18B20으로 온도 읽기
  3. 라즈베리 파이에서 Maxim 1-Wire 센서와 DS2482 I2C 브리지로 온도 측정하기
  4. 라즈베리 파이와 파이썬으로 원격 온도 센서 만들기 – 단계별 가이드
  5. 라즈베리 파이로 서버실 정확한 온도 모니터링하기
  6. 라즈베리 파이 3와 PubNub로 원격 기상 모니터링하기
  7. TI SensorTag를 Node-RED로 Blynk와 연동하기: 라즈베리 파이 제로 구현
  8. 라즈베리 파이와 AS3935로 번개 감지하기: 실전 가이드
  9. 내장 ADC 없는 라즈베리 파이에서 아날로그 센서 측정하기
  10. LIRC로 전문가급 라즈베리 파이 범용 리모컨 만들기