Télécommande adaptée au Raspberry Pi

13/01/2015

J'ai passé quelques commandes sur eBay China, les prix de l'électronique là-bas étant très avantageux. Les différentes pièces arrivent au compte-gouttes, et je dois absolument vous parler d'une petite télécommande 4 voies qui a radicalement changé la domotique de ma chambre.
Commande de diverses pièces enfin reçue
Commande de diverses pièces enfin reçue.
Regardez, en bas à droite sur la figure 1, une petite télécommande brune avec 4 boutons ABCD. Vous la trouverez facilement sur eBay ou même sur Banggood en utilisant le mot-clé « IC2262/2272 » ! Elle m'a coûté $ 3.99, une bouchée de pain pour ce que c'est.

Concrètement il s'agit d'une petite télécommande radio (315 MHz) qui gère 4 voies avec une portée d'une vingtaine de mètres, ça dépend des obstacles. Couplée à un Raspberry Pi, ses possibilités deviennent indénombrables : lancer un script une fois le bouton pressé, gérer un GPIO, etc. La documentation est bien évidemment en chinois, mais je vais un peu vous aiguiller !

Pour commencer, n'oubliez pas de vérifier que la télécommande contient bien une pile de 12 volts, un modèle de pile utilisé dans certains vieux appareils photos ou dans des clés de voiture. Le format n'est pas standard mais se trouve dans tout bon magasin de bricolage. Une fois la pile insérée, le témoin de la télécommande doit s'allumer rouge vif. Ne faites pas la même erreur que moi en y insérant une pile de 1,5 volt.
Intérieur de la télécommande sans pile
Intérieur de la télécommande sans pile.
La connexion au Rasbperry Pi est relativement simple et un peu « bourrin » : sur chaque sortie on ajoute une résistance de 470 ohms, une LED témoin de 5 mm jusqu'au GPIO. On n'oublie pas de relier les masses entre elles ! Un vieux morceau de fil de 20 cm est à souder, en guise d'antenne, sur le récepteur dans le trou ANT.

Notez que l'alimentation 5 V du récepteur peut être sortie directement du Raspberry Pi ; il n'en souffrira normalement pas.

On code rapidement un petit « listener » en python. Un code largement améliorable mais fonctionnel.

#Nicolas Colsoul
import RPi.GPIO as GPIO
import subprocess
import os
import time
 
current = 17 #Pin a allumer
 
pin = [17, 4, 22, 18, 23, 24, 25] #Correspondance des pins
pin2 = [0, 7, 3, 1, 4, 5, 6]
 
 
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(current, GPIO.OUT)
#GPIO.output(pin, True)
 
def findGpio(line): 
        return  pin2[pin.index(line)]
 
change = False
while True:
        newstate = os.popen("gpio read 28").read() #Le bouton est sur le 28
        if("1" in str(newstate)):
                change = True
                print "Switch"
        if change: #Code a exec si bouton est presse, ici c'est un switch
               state = os.popen("gpio read " + str(findGpio(current))).read()
               if("1" in str(state)):
                       GPIO.output(current, False)
               else:
                       GPIO.output(current, True)
       change = False
       time.sleep(1) #Petit delai pour temporiser
 


Quatre scripts pour quatre boutons, un peu lourd… Chaque script est lancé dans un screen différent en parallèle. Dans ma configuration, le bouton A gère la lampe générale, le bouton B gère la lampe de mon bureau. Il s'agit de switchs : pousser et ça s'allume, repousser et ça s'éteint. Le bouton C ferme les rideaux, tandis que le D les ouvre. Très facile et très pratique, puisque la télécommande est toute petite et que la portée est suffisante.

Conclusion : 3,5 euros bien investis dans quelque chose de vraiment utile et qui évite parfois de sortir une tablette pour allumer la lampe de sa chambre.
Blog | Haut