Utilizzo di Raspberry Pi per controllare il mio AC tramite infrarossi


19

Quando torno a casa da qualche parte, voglio essere in grado di accendere l'aria condizionata alcuni minuti prima di arrivare al mio appartamento, probabilmente usando il mio telefono per connettermi al mio Raspberry Pi sulla mia scrivania che girare, controllare l'AC. L'AC è controllabile tramite un telecomando a infrarossi. Voglio che il Raspberry Pi emetta il segnale necessario.

Cosa devo acquistare per Raspberry Pi per consentirgli di inviare il segnale necessario? Inoltre, avrò bisogno di qualcosa che mi permetta di campionare il segnale inviato dal telecomando originale, in modo da poter dire al Raspberry Pi quale segnale inviare. Come lo faccio?

Nota che l'unico linguaggio di programmazione che conosco è Python. Se qualcosa richiede la programmazione in C o qualcosa del genere, non è una buona soluzione per me.

Risposte:


12

Come accennato in precedenza, LIRC è un ottimo pacchetto software per inviare e ricevere segnali IR da RaspberryPi. Da dicembre 2012 l'ultimo sistema operativo Raspbian ora include il driver LIRC di ar0n.

Ho scritto una guida per installare e configurare LIRC sul tuo RaspberryPi (dall'hardware in su) poiché ho dovuto risolvere da solo questo stesso problema. Dopo aver installato LIRC e aver lavorato su RaspberryPi, puoi utilizzare alcune delle applicazioni incluse per inviare e ricevere comandi IR da Python / Ruby / la tua lingua preferita.

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


2
Oggi ho scritto un nuovo post sul blog descrivendo lo schema (e le parti che ho acquistato) per costruire un ricetrasmettitore IR RaspberryPi. alexba.in/blog/2013/03/09/raspberrypi-ir-schematic-for-lirc
Alex Bain

5

C'è qualcuno che ha già scritto un driver del kernel LIRC per Raspberry Pi, può essere trovato qui: driver LIRC Raspberry Pi . Anche gli schemi hardware e di connessione richiesti sono disponibili in questa pagina.

Non ho sperimentato personalmente LIRC, ma ci sono molte applicazioni disponibili che usano LIRC, immagino che ora funzionino tutte su Raspberry Pi.

Se vuoi / hai bisogno, posso approfondire un po 'di più l'argomento e fornire alcune informazioni aggiuntive.

Per la parte Python, esiste un modulo Python per interagire con LIRC, chiamato pyLirc e una versione mantenuta più recente chiamata pyLirc2


Grazie per la risposta, ma quella pagina mi ha perso in "Ricompila il kernel" :) Non c'è qualcosa che è più plug-n-play?
Ram Rachum,

1
Per il momento, fino a quando questo driver non si farà strada in una distribuzione, temo che sia l'unica opzione per far funzionare LIRC. Ma esiste un modulo GPIO per Python, essendo un programmatore Python, puoi creare il tuo codice Python per fare esattamente quello che vuoi, usando solo l'hardware mostrato nella pagina collegata. È necessario leggere la sequenza IR inviata dal telecomando CA e riprodurla. Ciò dovrebbe essere possibile utilizzando questo modulo GPIO Python.
ikku,

1
il mio commento '... temo che sia l'unica opzione per far funzionare LIRC ...' è valido solo nel contesto GPIO. I dispositivi seriale / USB ecc. Dovrebbero funzionare senza problemi.
ikku,

3

Ho trovato LIRC un modo relativamente semplice per inviare messaggi IR, ma volevo davvero essere in grado di controllare LIRC da Java. Mi piace programmare in Java e non ho trovato alcun tutorial semplice per Python per convincermi a lavorare con esso invece di Java. Dopo diverse ore di tentativi di invio di codici IR dal pi usando java, ho trovato la soluzione successiva relativamente semplice: crea uno script bash che contenga il irsendmessaggio e dì a java di eseguirlo.

Esempio:

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();
        }
    }
}

Supponi di ottenere exit value: 0. Se il tuo valore di uscita è 127 significa che lo script bash non è stato trovato da java.

Altre note:

  • Ho provato jlirc e lircj - wrapper java per LIRC ma non sono stato in grado di configurarli in modo corretto -> non funziona.
  • L'unico aspetto negativo di questa soluzione è che non puoi ascoltare i messaggi IR. Se qualcuno ha qualche idea sull'utilizzo di un metodo simile per ascoltare i messaggi IR, vorrei saperlo.

Risorse utili:

  • Segui le istruzioni di Alex Bain per configurare LIRC per il pi. Sono davvero bravi! Si possono trovare maggiori informazioni irsend qui . Rende l'elenco dei telecomandi molto più chiaro.
  • Qui puoi trovare ulteriori informazioni per l'esecuzione degli script bash da Java.

Spero che ti aiuti, Tom


2

Ho sempre trovato LIRC un progetto più spiacevole da gestire di quanto sembri necessario, proprio come i sensori di LM.

Quindi guarderei questo forse in un modo leggermente più circolare: se potessi ottenere un microcontrollore (o anche un vero telecomando) per inviare il treno di impulsi corretto quando attivato, forse potresti usare un pin gpio (o un messaggio uart) su l'RPi per "premere il pulsante", più o meno, e attivare l'invio.

È relativamente pronto per l'uso, se trovi la giusta soluzione di trasmissione.

Lascia che RPi si preoccupi di essere un server e un modulo hardware (firmware) si preoccupi dell'azione IR. Forse puoi usare un trucco simile anche per monitorare lo stato del processo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.