Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Uso del control remoto por infrarrojos con Raspberry Pi sin LIRC

Quería obtener una entrada remota de infrarrojos para Raspberry Pi. Me las arreglé para instalar y probar LIRC. Todo estaba bien, excepto el último paso. Cuando quería pasar el valor de la clave del control remoto por infrarrojos al programa Python, no lo pasaba correctamente. Pasa un valor nulo para cualquier clave. No pude averiguar qué estaba mal. Me di por vencido y luego trato de escribir un código Python para capturar el control remoto IR sin usar LIRC.

Después de leer un poco sobre cómo se comunican los controles remotos por infrarrojos, la información reveló que utiliza la comunicación en serie UART. Usé el kit de bricolaje remoto IR HX1838. El sensor de infrarrojos decodifica las ondas de infrarrojos y pasa los datos en serie. Lo que hice fue leer el valor de los datos que salen del sensor de infrarrojos en serie. Esta es una forma burda pero simple de leer el control remoto por infrarrojos para aplicaciones simples que se pueden usar en Raspberry Pi.

Preparando Raspberry Pi para la comunicación serial UART.

1. Necesito eliminar las entradas ttyAMA0 en cmdline.txt .

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

sudo nano /boot/cmdline.txt

El archivo restante se ve así,

dwc_otg.lpm_enable =0 consola =tty1 root =/ dev / mmcblk0p6 rootfstype =ext4 ascensor =fecha límite rootwait

Luego guarde y cierre el editor. Guarde el archivo, Ctrl + O. Cierre el editor, Ctrl + X

2. Actualiza inittab archivo para enmascarar el ttyAMA0

sudo nano / etc / inittab

Comenta la línea
‘X:23:respawn:/ sbin / getty -L ttyAMA0 115200 vt100 ′

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

Luego guarde y cierre el editor. Guarde el archivo, Ctrl + O. Cierre el editor, Ctrl + X

Paso 1:comenzar

Instalación de pySerial

sudo apt-get install python-serial

Una vez que esto esté instalado, el código Python puede usarlo haciendo importar serie .

El código Python para leer la señal de infrarrojos resultó ser muy, muy simple. Como sigue.

 import serialser =serial.Serial ("/dev/ttyAMA0")ser.baudrate =2400 para i en el rango (0,15):# generalmente la señal IR para una clave es de aproximadamente 12-16 bytes data =ser.read ( 1) # leer 1 byte a la vez imprimir ord (datos) # los datos leídos en carácter, ord se convertirá a valor ASCII 

Ahora, este código leerá la señal de infrarrojos 1 byte a la vez e imprimirá el valor.

Probé las velocidades en baudios por ensayo y error y me establecí en 2400 BPS. Aunque la comunicación en serie admite hasta 115KBPS, es interesante por qué IR usa una velocidad más baja. Supongo que sería más confiable usar una velocidad más baja, ya que hay menos posibilidades de que la señal de infrarrojos pierda 1 o 2 bits en el aire.

Decodificar teclas de control remoto por infrarrojos

Ahora el siguiente paso es decodificar los valores clave. Usé un control remoto IR estándar de TV Samsung para este esfuerzo.

El primer punto importante es averiguar cuántos bytes de datos para cada clave. Puede variar de 12 a 16 bytes. (los que probé). Por lo general, la longitud de bytes es la misma para todas las claves. Esos bytes tienen bytes de encabezado, bytes de datos (para identificar la clave) y bytes de cola. Los bytes del encabezado tendrán una firma para el modelo del control remoto por infrarrojos. Usé una hoja de Excel para recopilar los valores de datos clave después de la página de Antzy Carmasaic

http://www.instructables.com/id/How-To-Useemulate-…

Profundizando en los valores de clave capturados, muestra que el byte 0-5 consiste en un encabezado, repetido para todas las claves. Los valores de datos de los bytes 6 a 11 representan el valor de la clave. Podría haber algunos valores finales. El byte 12 es la cola del control remoto de Samsung.

Mapeo de claves

La forma exacta de este control remoto es almacenar los bytes 6-11 en una matriz y compararlo con una nueva clave entrante. En cambio, hice un algoritmo simple de la siguiente manera.

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

Da un valor casi único para cada clave. Puede encontrar un algoritmo mejor que este.

Extendí el código Python para capturar información de la clave remota de Samsung. Una vez que calculé el valor de la clave asignada, lo guardé en el programa Python.

Se adjunta archivo. nombre - ir_serial3samsung.py. El control remoto de Samsung envía 2 conjuntos de datos. Así que capturo 24 bytes para vaciar el búfer de captura de datos en serie de Raspberry Pi. Pero solo uso el primer conjunto para decodificar.

Cuando ejecuta este código, identifica correctamente las teclas presionadas. Puede decodificar el resto de las claves en el control remoto mirando el valor "keyidentity" que imprime el programa. Luego, agregue el programa para incluirlos.

Conclusión

Esta es una forma muy simple y efectiva de usar un control remoto con Raspberry Pi con Python. Necesita calcular cuántos bytes totales para una clave, cuánto tiempo son los bytes de encabezado, bytes de datos y bytes de cola. Como sabría de la A a la Z de este proceso, puede modificarlo fácilmente para adaptarlo a su aplicación. Dado que estos son pequeños códigos de Python, es muy fácil de depurar si encuentra algún problema.

Para obtener más detalles:Uso del control remoto IR con Raspberry Pi sin LIRC


Proceso de manufactura

  1. Perfil de temperatura de Raspberry Pi usando LabVIEW
  2. Leer temperatura con DS18B20 | Raspberry Pi 2
  3. Medición de temperatura con RASPBERRY PI
  4. Sensor de temperatura Python y Raspberry Pi
  5. Supervisión de la temperatura con Raspberry Pi
  6. Monitoreo remoto del clima usando Raspberry Pi
  7. SensorTag a Blynk usando Node-RED
  8. Detectar rayos con una Raspberry Pi
  9. Sensores analógicos sin entradas analógicas en la Raspberry Pi
  10. Mando a distancia universal Raspberry Pi
  11. Sensor de movimiento con Raspberry Pi