Paso 1: Cómo empezar
Instalar pySerial
- Para obtener el trabajo de comunicación serial (UART) necesario instalar el módulo Serial.
sudo Apto-conseguir instalar python-serial
Una vez instalado código Python puede utilizar haciendo serie de importación.
- A continuación, necesitará cable GPIO 14 (TX) y GPIO 15 (RX). Ya que mi objetivo es recibir el IR señales de que alambré sólo GPIO 15 (RX).
- El sensor de infrarrojos requieren 5V y GND. Entonces la señal de salida del sensor de infrarrojos conectado al 15 de GPIO.
El código de Python para leer la señal IR descubierto muy muy simple. Como se indica a continuación.
import serial ser = serial.Serial ("/dev/ttyAMA0") ser.baudrate = 2400 for i in range (0,15): # usually IR signal for a key is about 12-16 bytes data = ser.read(1) # read 1 byte at a time print ord(data) # the data read in character, ord will convert to ASCII value
Ahora este código leerá señal de infrarrojos 1 byte a la vez e imprime el valor.
Probé los baudios por ensayo y error y colocó abajo para 2400 BPS. Aunque la comunicación serial de soporte hasta 115KBPS es interesante por qué IR con una velocidad más baja. Mi conjetura es que sería más fiable utilizar una velocidad más baja, ya que menos posibilidad IR sueltas 1 o 2 bits de la señal por aire.
Decodificar claves remoto IR
Ahora el siguiente paso es decodificar los valores de clave. Usé un estándar Samsung TV IR remote para este esfuerzo.
Primer punto importante es averiguar cuántos bytes de datos para cada tecla. Pueden variar de 12-16 bytes. (los que probé). Longitud de bytes suele ser igual para todas las llaves. Tienen de esos bytes bytes de cabecera bytes de datos (para identificar la clave) y bytes de la cola. Los bytes del encabezado tendrá una firma para el modelo del IR remote. Utilicé una hoja de excel para recopilar los valores de datos clave siguientes página Antzy Carmasaic
Buceando en los valores claves capturados profundo, muestra byte 0-5 consta de cabecera, repetido para todas las claves. Bytes de datos de 6 a 11 representan el valor de clave. Podría haber algunos valores de la cola. Octeto 12 es cola para el control remoto de samsung.
Asignación de teclas
La forma exacta para este control remoto es almacenar los bytes 6-11 en una matriz y compararla con una nueva clave de entrada. En cambio, hice un simple algoritmo como sigue.
keyidentity = byte [6] + 2 * bytes + 3 [7] * byte [8] + 4 * byte [9] + 5 * byte [10] + 6 * byte [11]
Da casi un valor único para cada llave. Usted puede averiguar un algoritmo mejor que esto.
Amplié el código Python para capturar información clave remota Samsung. Una vez que calcula el valor de la clave asignado luego que lo guardado el programa en python sí.
Se adjunta archivo. -nombre de ir_serial3samsung.py. Samsung remoto envía 2 conjuntos de datos. Modo captura 24 bytes para eliminar los datos en serie frambuesa Pi captura de búfer. Pero usar solamente 1 set para decodificar.
Cuando se ejecuta este código identifica correctamente las teclas pulsadas. Puede decodificar el resto de las teclas en el mando a distancia mirando el valor "keyidentity" que imprime el programa. Luego añadir el programa que lo incluyan.
Conclusión
Esto es una manera muy sencilla y eficaz para utilizar un control remoto con frambuesa Pi con Python. Necesita calcular cuántos bytes total de una clave, cuánto tiempo los bytes de encabezado, datos bytes y bytes de la cola. Desde entonces sabrías de la A la Z de este proceso que usted puede modificar fácilmente para adaptarse a su aplicación. Ya que estos son códigos python pequeño es muy fácil de depurar si golpeas cualquier problema.