제조공정
나는 Raspberry Pi에 대한 IR 원격 입력을 원했습니다. LIRC를 설치하고 테스트했습니다. 맨 마지막 단계를 제외하고는 모든 것이 괜찮았습니다. IR 원격 키 값을 Python 프로그램에 전달하려고 할 때 올바르게 전달하지 않습니다. anykey에 대해 null 값을 전달합니다. 무엇이 잘못되었는지 알 수 없었습니다. 포기하고 LIRC를 사용하지 않고 IR 리모컨을 캡처하는 파이썬 코드를 작성하려고 합니다.
IR 원격 통신 방법에 대해 읽은 후 UART 직렬 통신을 사용하는 정보가 공개되었습니다. IR 리모트 DIY Kit HX1838을 사용했습니다. IR 센서는 IR 파장을 디코딩하고 데이터를 직렬로 전달합니다. 내가 한 것은 IR 센서에서 나오는 데이터 값을 직렬로 읽는 것이었습니다. 이것은 조잡하지만 Raspberry Pi에서 사용할 수 있는 간단한 애플리케이션에 대한 IR 리모컨을 읽는 간단한 방법입니다.
UART 직렬 통신을 위한 Raspberry Pi 준비
1. cmdline.txt에서 ttyAMA0 항목을 제거해야 함 .
<울>sudo cp /boot/cmdline.txt /boot/cmdline_bp.txt
<울>sudo nano /boot/cmdline.txt
나머지 파일은 다음과 같습니다.
dwc_otg.lpm_enable=0 콘솔=tty1 루트=/dev/mmcblk0p6 rootfstype=ext4 엘리베이터=데드라인 루트 대기
그런 다음 편집기를 저장하고 닫습니다. 파일 저장 Ctrl + O. 편집기 닫기 Ctrl + X
2. inittab 업데이트 ttyAMA0을 마스킹하는 파일
sudo nano /etc/inittab
줄을 주석 처리하십시오.
'X:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100'
#X:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
그런 다음 편집기를 저장하고 닫습니다. 파일 저장 Ctrl + O. 편집기 닫기 Ctrl + X
pySerial 설치
<울>sudo apt-get install python-serial
이것이 설치되면 Python 코드는 직렬 가져오기를 수행하여 사용할 수 있습니다. .
<울>IR 신호를 읽는 Python 코드는 매우 간단합니다. 다음과 같습니다.
import serialser =serial.Serial ("/dev/ttyAMA0")ser.baudrate =2400for i in range (0,15):# 일반적으로 키에 대한 IR 신호는 약 12-16바이트입니다. data =ser.read( 1) # 한 번에 1바이트씩 읽기 print ord(data) # 문자로 읽은 데이터, ord는 ASCII 값으로 변환
이제 이 코드는 IR 신호를 한 번에 1바이트씩 읽고 값을 출력합니다.
나는 시행 착오에 의해 전송 속도를 시도하고 2400 BPS에 정착했습니다. 직렬 통신은 최대 115KBPS를 지원하지만 왜 IR이 더 낮은 속도를 사용하는지 흥미롭습니다. 내 생각에는 IR 신호가 무선으로 1 또는 2비트를 느슨하게 할 가능성이 적기 때문에 저속을 사용하는 것이 더 안정적일 것입니다.
IR 원격 키 디코딩
이제 다음 단계는 키 값을 디코딩하는 것입니다. 이를 위해 표준 삼성 TV IR 리모컨을 사용했습니다.
첫 번째 중요한 점은 각 키의 데이터 바이트 수를 파악하는 것입니다. 12-16바이트로 다양할 수 있습니다. (내가 시도한 것들). 일반적으로 바이트 길이는 모든 키에 대해 동일합니다. 이러한 바이트에는 헤더 바이트, 데이터 바이트(키 식별용) 및 테일 바이트가 있습니다. 헤더 바이트에는 IR 리모컨 모델에 대한 서명이 있습니다. Antzy Carmasaic 페이지에 이어 주요 데이터 값을 엑셀 시트로 수집했습니다.
http://www.instructables.com/id/How-To-Useemulate-…
캡처된 키 값을 자세히 살펴보면 바이트 0-5가 모든 키에 대해 반복되는 헤더로 구성되어 있음을 보여줍니다. Byte 6 ~ 11 데이터 값은 Key 값을 나타냅니다. 꼬리 값이 있을 수 있습니다. 바이트 12는 삼성 리모컨의 꼬리입니다.
매핑 키
이 리모컨의 정확한 방법은 바이트 6-11을 배열에 저장하고 새로운 수신 키와 비교하는 것입니다. 대신 다음과 같은 간단한 알고리즘을 수행했습니다.
키 ID =바이트[6]+2*바이트[7]+3*바이트[8]+4*바이트[9]+5*바이트[10]+6*바이트[11]
모든 키에 대해 거의 고유한 값을 제공합니다. 이보다 더 나은 알고리즘을 찾을 수 있습니다.
Python 코드를 확장하여 Samsung 원격 키 정보를 캡처했습니다. 매핑된 키 값을 계산한 다음 파이썬 프로그램 자체에 저장했습니다.
파일이 첨부되어 있습니다. 이름 – ir_serial3samsung.py. 삼성 리모컨은 2세트의 데이터를 전송합니다. 그래서 Raspberry Pi 직렬 데이터 캡처 버퍼를 플러시하기 위해 24바이트를 캡처합니다. 하지만 디코딩에는 첫 번째 세트만 사용합니다.
이 코드를 실행하면 누른 키를 올바르게 식별합니다. 프로그램이 출력하는 "keyidentity" 값을 보면 리모컨의 나머지 키를 디코딩할 수 있습니다. 그런 다음 프로그램을 추가하여 포함합니다.
결론
이것은 Python과 함께 Raspberry Pi로 원격 제어를 사용하는 매우 간단하고 효과적인 방법입니다. 키의 총 바이트 수, 헤더 바이트, 데이터 바이트 및 테일 바이트의 길이를 파악해야 합니다. 이 프로세스의 A부터 Z까지 알고 있기 때문에 애플리케이션에 맞게 쉽게 수정할 수 있습니다. 이것들은 작은 파이썬 코드이기 때문에 문제가 발생하면 디버그하기가 매우 쉽습니다.
자세한 내용:LIRC 없이 Raspberry Pi와 함께 IR Remote 사용
제조공정
구성품 및 소모품 닌텐도 쌍절곤 × 1 SparkFun 레벨 시프터 × 1 Arduino UNO × 1 이 프로젝트 정보 머리말 원래 이 게시물은 www.xarg.org에 게시되었습니다. Arduino와 함께 Wii Nunchuk 사용 우리는 모두 게임 패드를 손에 들고 성장했으며 문자 그대로 가능한 모든 응용 프로그램과 결합하는 데 이상적입니다. Nintendo의 위대한 발명품은 Wii U 리모컨의 저렴한 확장 기능인 Nunchuk입니다.
Senseye 베타가 진행 중인 이 게시물은 제품 사용에 대한 간략한 소개를 제공합니다. Senseye가 자동으로 데이터에서 통찰력 구축을 시작하고 대시보드 구축을 시작하기 위해 Senseye에 센서를 추가하는 단순성을 시연합니다. 아직 센서가 없더라도 Senseye 내에서 공개 데이터를 사용하는 방법을 보여드리겠습니다. 원시 센서 데이터 먼저 우리가 Thingspeak에서 모니터링하려는 채널입니다. https://thingspeak.com/channels/public으로 이동하면 사람들이 공개한 채널 목록을 찾을 수 있습니다. 이