Usando o Raspberry Pi para controlar meu AC via infravermelho

19

Quando estou voltando para casa de algum lugar, quero poder ligar meu AC alguns minutos antes de chegar ao meu apartamento, provavelmente usando meu telefone para conectar-me ao meu Raspberry Pi na minha mesa, o que Por sua vez, controle o AC. O AC é controlável usando um controle remoto infravermelho. Quero que o Raspberry Pi emita o sinal necessário.

O que tenho que comprar para o Raspberry Pi para enviar o sinal necessário? Além disso, precisarei de algo que permita a amostragem do sinal enviado pelo controle remoto original, para que eu possa dizer ao Raspberry Pi qual sinal enviar. Como faço isso?

Observe que a única linguagem de programação que eu sei usar é o Python. Se algo requer programação em C ou algo assim, não é uma boa solução para mim.

Ram Rachum
fonte

Respostas:

12

Como mencionado acima, o LIRC é um ótimo pacote de software para que seu RaspberryPi envie e receba sinais de IR. Em dezembro de 2012, o mais recente sistema operacional Raspbian agora inclui o driver LIRC da ar0n.

Escrevi um guia para instalar e configurar o LIRC no seu RaspberryPi (do hardware para cima), pois eu mesmo tinha que resolver esse mesmo problema. Depois de instalar o LIRC e trabalhar no RaspberryPi, você poderá usar alguns dos aplicativos incluídos para enviar e receber comandos de IR do Python / Ruby / seu idioma preferido.

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

Alex Bain
fonte
2
Hoje escrevi uma nova postagem no blog descrevendo o esquema (e as peças que comprei) para construir um transceptor de RaspberryPi IR. alexba.in/blog/2013/03/09/raspberrypi-ir-schematic-for-lirc
Alex Bain
5

Alguém que já escreveu um driver de kernel LIRC para o Raspberry Pi, pode ser encontrado aqui: Driver LIRC Raspberry Pi . Além disso, os esquemas de hardware e conexão necessários podem ser encontrados nesta página.

Eu mesmo não experimentei o LIRC, mas existem muitos aplicativos disponíveis que usam o LIRC, acho que agora eles funcionam no Raspberry Pi.

Se você quiser / precisar, eu posso mergulhar um pouco mais nesse assunto e obter algumas informações adicionais.

Para a parte Python, existe um módulo Python para interagir com o LIRC, chamado pyLirc, e uma versão atualizada mais recente, chamada pyLirc2.

ikku
fonte
Obrigado pela resposta, mas essa página me perdeu em "Recompile the kernel" :) Não há algo mais plug-n-play?
Ram Rachum
1
Por enquanto, até que esse driver encontre uma distro, receio que seja a única opção para o LIRC funcionar. Mas há um módulo GPIO para python, sendo um programador Python, você pode criar seu próprio código Python para fazer exatamente o que deseja, usando apenas o hardware mostrado na página vinculada. Você precisa ler a sequência IR que o controle remoto CA envia e reproduzir novamente. Isso deve ser possível usando este módulo Python GPIO.
ikku 1/10/12
1
meu comentário '... receio que seja a única opção para o LIRC funcionar ...' só é válido no contexto do GPIO. Os dispositivos serial / USB etc devem funcionar sem nenhum problema.
Ikku
3

Eu descobri que o LIRC é uma maneira relativamente fácil de enviar mensagens de IR, mas realmente queria controlar o LIRC a partir do java. Eu gosto de programar em java e não encontrei nenhum tutorial direto para python para me convencer a trabalhar com ele em vez de java. Depois de várias horas tentando enviar códigos IR do pi usando java, achei a próxima solução relativamente simples: faça um script bash que contenha a irsendmensagem e diga ao java para executá-la.

Exemplo:

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

Você supõe receber exit value: 0. Se o seu valor de saída for 127, significa que o script bash não foi encontrado pelo java.

Mais algumas notas:

  • Eu tentei jlirc e lircj - java wrappers para LIRC, mas não consegui configurá-los corretamente -> não funcionando.
  • A única desvantagem desta solução é que você não pode escutar mensagens de IR. Se alguém tiver alguma idéia sobre o uso de método semelhante para ouvir mensagens de RI, eu gostaria de saber.

Recursos úteis:

  • Siga as instruções de Alex Bain para configurar o LIRC para o pi. Eles são muito bons! Pode-se encontrar mais informações sobre irsend aqui . Isso torna a listagem de seus controles remotos muito mais clara.
  • Aqui você pode encontrar mais informações para executar scripts bash a partir de java.

Espero que ajude, Tom

Nagasaki45
fonte
2

Sempre achei o LIRC um projeto mais desagradável de lidar do que parece necessário, como os sensores lm.

Então, eu examinaria isso de uma maneira um pouco mais indireta: se você pudesse obter um microcontrolador (ou mesmo um controle remoto) para enviar o trem de pulso correto quando acionado, talvez você pudesse usar um pino gpio (ou mensagem de uart) em o RPi para "apertar o botão", mais ou menos, e acionar o envio.

É relativamente plug and play, se você encontrar a solução certa para o transmissor.

Deixe a RPi se preocupar em ser um servidor e um módulo de hardware (firmware) se preocupe com a ação do IR. Talvez você possa usar um truque semelhante para monitorar o status do processo também.

XTL
fonte