Utiliser Raspberry Pi pour contrôler mon AC via infrarouge

19

Lorsque je rentre chez moi, je veux pouvoir allumer mon climatiseur quelques minutes avant d'arriver à mon appartement, probablement en utilisant mon téléphone pour me connecter à mon Raspberry Pi sur mon bureau qui, en tourner, contrôler l'AC. L'AC est contrôlable à l'aide d'une télécommande infrarouge. Je veux que le Raspberry Pi émette le signal nécessaire.

Que dois-je acheter pour le Raspberry Pi pour lui permettre d'envoyer le signal nécessaire? De plus, j'aurai besoin de quelque chose qui me permettra d'échantillonner le signal envoyé par la télécommande d'origine, afin que je puisse dire au Raspberry Pi quel signal envoyer. Comment je fais ça?

Veuillez noter que le seul langage de programmation que je sais utiliser est Python. Si quelque chose nécessite une programmation en C ou quelque chose, ce n'est pas une bonne solution pour moi.

Ram Rachum
la source

Réponses:

12

Comme mentionné ci-dessus, LIRC est un excellent logiciel pour que votre RaspberryPi envoie et reçoive des signaux IR. Depuis décembre 2012, le dernier système d'exploitation Raspbian inclut désormais le pilote LIRC d'ar0n.

J'ai écrit un guide pour installer et configurer LIRC sur votre RaspberryPi (à partir du matériel) car j'ai dû résoudre ce même problème moi-même. Une fois que vous avez installé LIRC et travaillé sur le RaspberryPi, vous pouvez utiliser certaines de ses applications incluses pour envoyer et recevoir des commandes IR de Python / Ruby / votre langue de choix.

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

Alex Bain
la source
2
Aujourd'hui, j'ai écrit un nouveau billet de blog décrivant le schéma (et les pièces que j'ai achetées) pour construire un émetteur-récepteur IR RaspberryPi. alexba.in/blog/2013/03/09/raspberrypi-ir-schematic-for-lirc
Alex Bain
5

Il y a quelqu'un qui a déjà écrit un pilote de noyau LIRC pour le Raspberry Pi, il peut être trouvé ici: Pilote LIRC Raspberry Pi . Vous trouverez également le matériel requis et les schémas de connexion sur cette page.

Je n'ai pas expérimenté avec LIRC moi-même, mais il existe de nombreuses applications disponibles qui utilisent LIRC, je suppose qu'elles fonctionnent maintenant toutes sur le Raspberry Pi.

Si vous voulez / besoin, je peux approfondir ce sujet un peu plus et trouver des informations supplémentaires.

Pour la partie Python, il existe un module Python pour interagir avec LIRC, appelé pyLirc et une nouvelle version maintenue appelée pyLirc2

ikku
la source
Merci pour la réponse, mais cette page m'a perdu à "Recompiler le noyau" :) N'y a-t-il pas quelque chose de plus plug-n-play?
Ram Rachum
1
Pour le moment, jusqu'à ce que ce pilote trouve son chemin dans une distribution, je crains que ce soit la seule option pour que LIRC fonctionne. Mais il existe un module GPIO pour python, étant un programmeur Python, vous pouvez créer votre propre code Python pour faire exactement ce que vous voulez, en utilisant uniquement le matériel montré dans la page liée. Vous devez lire la séquence infrarouge envoyée par la télécommande CA et la relire. Cela devrait être possible en utilisant ce module Python GPIO.
ikku du
1
mon commentaire '... J'ai bien peur que ce soit la seule option pour que le LIRC fonctionne ...' n'est valable que dans le contexte GPIO. Les périphériques série / USB, etc. devraient fonctionner sans aucun problème.
ikku
3

J'ai trouvé que LIRC était un moyen relativement facile d'envoyer des messages IR, mais je voulais vraiment pouvoir contrôler LIRC à partir de java. J'aime la programmation en java et je n'ai trouvé aucun tutoriel simple pour python pour me convaincre de travailler avec lui au lieu de java. Après plusieurs heures à essayer d'envoyer des codes IR à partir du pi à l'aide de java, j'ai trouvé que la solution suivante était relativement simple: créer un script bash qui contient le irsendmessage et dire à java de l'exécuter.

Exemple:

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

Vous supposez obtenir exit value: 0. Si votre valeur de sortie est 127, cela signifie que le script bash n'a pas été trouvé par java.

Quelques notes supplémentaires:

  • J'ai essayé jlirc et lircj - des wrappers java pour LIRC mais je n'ai pas été en mesure de les configurer correctement -> ne fonctionne pas.
  • Le seul inconvénient de cette solution est que vous ne pouvez pas écouter les messages IR. Si quelqu'un a une idée concernant l'utilisation d'une méthode similaire pour écouter les messages IR, je voudrais savoir.

Ressources utiles:

  • Suivez les instructions d'Alex Bain pour configurer le LIRC pour le pi. Ils sont vraiment bons! On peut trouver plus d'informations concernant irsend ici . Cela rend la liste de vos télécommandes beaucoup plus claire.
  • Ici vous pouvez trouver plus d' informations pour exécuter des scripts bash de java.

J'espère que ça aide, Tom

Nagasaki45
la source
2

J'ai toujours trouvé que le projet LIRC était plus désagréable à gérer qu'il ne semblait nécessaire, tout comme les capteurs lm.

Donc, je regarderais cela peut-être d'une manière un peu plus détournée: si vous pouviez obtenir un microcontrôleur (ou même une télécommande réelle) pour envoyer le train d'impulsions correct lorsqu'il est déclenché, vous pourriez peut-être utiliser une broche gpio (ou un message uart) sur le RPi pour "pousser le bouton", plus ou moins, et déclencher l'envoi.

C'est relativement plug and play, si vous trouvez la bonne solution d'émetteur.

Laissez RPi s'inquiéter d'être un serveur et un module matériel (firmware) s'inquiète de l'action IR. Vous pouvez peut-être également utiliser une astuce similaire pour surveiller l'état du processus.

XTL
la source