Usando Raspberry Pi para controlar mi CA a través de infrarrojos

19

Cuando estoy de regreso a casa desde algún lugar, quiero poder encender mi CA unos minutos antes de llegar a mi departamento, probablemente usando mi teléfono para conectarme a mi Raspberry Pi en mi escritorio, lo cual, en gire, controle el aire acondicionado. La CA se puede controlar mediante un control remoto por infrarrojos. Quiero que Raspberry Pi emita la señal necesaria.

¿Qué debo comprar para que Raspberry Pi le permita enviar la señal necesaria? Además, necesitaré algo que me permita probar la señal enviada por el control remoto original, para poder decirle a Raspberry Pi qué señal enviar. ¿Cómo puedo hacer eso?

Tenga en cuenta que el único lenguaje de programación que sé usar es Python. Si algo requiere programación en C o algo, no es una buena solución para mí.

Ram Rachum
fuente

Respuestas:

12

Como se mencionó anteriormente, LIRC es un excelente paquete de software para que su RaspberryPi envíe y reciba señales IR. A partir de diciembre de 2012, el último sistema operativo Raspbian ahora incluye el controlador LIRC de ar0n.

Escribí una guía para instalar y configurar LIRC en su RaspberryPi (desde el hardware en adelante) ya que tuve que resolver este mismo problema yo mismo. Una vez que tenga LIRC instalado y trabajando en el RaspberryPi, puede usar algunas de sus aplicaciones incluidas para enviar y recibir comandos IR de Python / Ruby / su idioma de elección.

http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/

Alex Bain
fuente
2
Hoy escribí una nueva publicación en el blog que describe el esquema (y las partes que compré) para construir un transceptor IR RaspberryPi. alexba.in/blog/2013/03/09/raspberrypi-ir-schematic-for-lirc
Alex Bain
5

Hay alguien que ya ha escrito un controlador de kernel LIRC para Raspberry Pi, se puede encontrar aquí: controlador LIRC Raspberry Pi . También se pueden encontrar los esquemas de hardware y conexión necesarios en esta página.

Yo mismo no he experimentado con LIRC, pero hay muchas aplicaciones disponibles que usan LIRC, supongo que ahora todas funcionan en Raspberry Pi.

Si quiere / necesita, puedo sumergirme en este tema un poco más profundo y encontrar información adicional.

Para la parte de Python, hay un módulo de Python para interactuar con LIRC, llamado pyLirc y una versión mantenida más nueva llamada pyLirc2

ikku
fuente
Gracias por la respuesta, pero esa página me perdió en "Recompilar el kernel" :) ¿No hay algo más plug-n-play?
Ram Rachum
1
Por el momento, hasta que este controlador llegue a una distribución, me temo que es la única opción para que funcione LIRC. Pero hay un módulo GPIO para python, al ser un programador de Python, puede crear su propio código de Python para hacer exactamente lo que desea, utilizando solo el hardware que se muestra en la página vinculada. Debe leer qué secuencia IR envía el control remoto de CA y reproducirla. Eso debería ser posible usando este módulo Python GPIO.
ikku
1
mi comentario '... me temo que esa es la única opción para que funcione LIRC ...' solo es válido dentro del contexto GPIO. Los dispositivos serie / USB, etc. deberían funcionar sin ningún problema.
ikku
3

He encontrado que LIRC es una forma relativamente fácil de enviar mensajes IR, pero realmente quería poder controlar LIRC desde Java. Me gusta programar en Java y no encontré ningún tutorial sencillo para Python que me convenza de trabajar con él en lugar de Java. Después de varias horas de intentar enviar códigos IR desde el pi usando java, encontré que la siguiente solución es relativamente simple: crear un script bash que contenga el irsendmensaje y decirle a java que lo ejecute.

Ejemplo:

toggleLight.sh

#!/bin/bash
irsend SEND_ONCE HyundaiFan lightOnOff

RunBash.java

public class RunBash {
    public static final void main (String args[]) {
        String cmd = "../toggleLight.sh";
        try {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(new String[] {"/bin/bash", "-c", cmd});
            int exitValue = process.waitFor();
            System.out.println("exit value: " + exitValue);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Se supone que debes llegar exit value: 0. Si su valor de salida es 127, significa que Java no encontró el script bash.

Algunas notas más:

  • Intenté jlirc y lircj - java wrappers para LIRC pero no pude configurarlos correctamente -> no funciona.
  • El único inconveniente de esta solución es que no puede escuchar los mensajes IR. Si alguien tiene alguna idea sobre el uso de un método similar para escuchar mensajes IR, me gustaría saberlo.

Recursos utiles:

  • Siga las instrucciones de Alex Bain para configurar LIRC para el pi. ¡Son realmente buenos! Uno puede encontrar más información al respecto irsend aquí . Hace que enumerar sus controles remotos sea mucho más claro.
  • Aquí puede encontrar más información para ejecutar scripts de bash desde java.

Espero que ayude, Tom

Nagasaki45
fuente
2

Siempre he encontrado que LIRC es un proyecto más desagradable de lo que parece necesario, al igual que los sensores lm.

Entonces, vería esto tal vez de una manera un poco más indirecta: si pudiera obtener un microcontrolador (o incluso un control remoto real) para enviar el tren de pulsos correcto cuando se activa, tal vez podría usar un pin gpio (o un mensaje uart) en el RPi para "presionar el botón", más o menos, y activar el envío.

Es relativamente plug and play, si encuentra la solución de transmisor correcta.

Deje que RPi se preocupe por ser un servidor y un módulo de hardware (firmware) se preocupe por la acción IR. Quizás también pueda usar un truco similar para monitorear el estado del proceso.

XTL
fuente