Contrôle radio avec un Raspberry Pi

J’ai voulu faire un peu de domotique dernièrement avec mon Raspberry Pi, voici donc la procédure pour piloter des prises Chacon radio 433,92 Mhz.

Vous trouverez beaucoup de tuto pour émettre des commandes radio, mais si comme moi vous avez pris un kit de prises Chacon sans la fonction « apprentissage automatique », il faut décoder le signal pour le copier.

Matériel requis

Dans un premier temps, il faut vous procurer un kit émetteur récepteur radio 433Mhz, c’est 3€ sur Ebay et des prises radio télécommandées Chacon, on en trouve partout pour 25€…

Signal radio avec l’Arduino

Pour Arduino c’est facile, on trouve facilement sur le net, il faut utiliser la librairie « rc-switch » qui permet de communiquer en RF. Il faut simplement utiliser le code « ReceiveDemo_Simple » qui est dans le dossier d’exemples.

Signal radio avec un Raspberry Pi

Pour le Rasperry c’est finalement aussi simple, mais c’est moins documenté. Vous trouverez des outils sur le Github de Ninjablocks qui permettent de gérer l’émetteur et le récepteur radio 433Mhz très facilement. Ces programmes ce bases sur la librairie rc-switch, mais aussi adaptés pour le Pi.

Branchement sur le Raspberry

Pour le récepteur (le plus petit avec 3 bornes) :

  • GND : Sur le GND du Raspberry
  • VCC sur le 5v du Raspberry
  • Data sur le port GPIO 21 du Raspberry 1 ou 27 pour le Raspberry 2

Pour l’émetteur :

  • GND : Sur le GND du Raspberry
  • VCC sur le 5v du Raspberry
  • Data (une des 2 bornes) sur le port GPIO 17

 

Configuration du Raspberry

Ce test a été fait sur Rasbian.

Ouvrir un terminal

Installer les outils de compilations (je ne sais plus si c’est installé de base) :
sudo apt-get update
sudo apt-get install gcc g++ make

Installer Git :
sudo apt-get install git-core

Installer WiringPi
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

Tester la commande gpio readall

Télécharger les fichiers des programmes de Ninjablocks :
cd ..
git clone –recursive https://github.com/ninjablocks/433Utils.git

git submodule init
git submodule updat

Modifier les programmes si besoin :
cd 433Utils/RPi_utils

Pour décoder les commandes radio, on utilise le programme RFSniffer, le PIN sur lequel est branché le récepteur radio est renseigné dans le code (ligne 25 du fichier RFSniffer.cpp), par défaut c’est le PIN 2 pour WiringPi donc le port GPIO 21 du Raspberry 1 et 27 pour le Raspberry 2 (voir la table des correspondances).

Pour envoyer des commandes radio, on utilise le programme codesend, le PIN sur lequel est branché le l’émetteur radio est renseigné dans le code (ligne 24 du fichier codesend.cpp), par défaut c’est le PIN 0 pour WiringPi donc le port GPIO 17.

Compiler les programmes :
make

Décoder un signal radio avec le Raspberry Pi

Pour décoder un signal radio, exécuter la commande ( CTRL-C pour sortir ) :
sudo ./RFSniffer

Puis vous pouvez tester l’envoi d’un signal radio avec la télécommande Chacon par exemple, vous devriez obtenir quelque chose comme ça :

pi@raspberrypi:~/testblog/433Utils/RPi_utils $ sudo ./RFSniffer
Received 1381717
Received 1381717
Received 1381717
Received 1381717
Received 1381717
Received 1381717
Received 1381717
Received 1381717
Received 1398103

Donc 1381717 est le code décimale du signal radio. 🙂

Émettre un signal radio avec le Raspbery Pi

Pour émettre le signal radio qu’on a obtenu dans la partie précédente, exécuter la commande :
sudo ./codesend 1381717

😀

 

12 réponses à “Contrôle radio avec un Raspberry Pi”

  1. Alauze dit :

    Bonjour, la commande « git clone git://git.drogon.net/wiringPi » me retourne une erreur « fatal: read error: Connexion r▒-initialis▒e par le correspondant »

  2. konix dit :

    Bonsoir,

    J’ai suivi le tuto sur un raspberry, fraichelent installé avec Domoticz.

    J’ai bien les GPIO OK mais lors de l’ajout des programmes de Ninjablocks lors du moment de faire « make », il me retourne « make: *** No rule to make target ‘../rc-switch/RCSwitch.o’, needed by ‘send’. Stop. »

    Dans mon dossier RPi_utils, j’ai : codesend.cpp Makefile README.md RFSniffer.cpp send.cpp

    Avez vous déjà rencontré ce problème.

    Merci d’avance et encore merci pour ce tuto 🙂

  3. jean dit :

    Bonjour,
    Pour télécharger les fichiers des programmes de Ninjablocks adaptés au Raspberry il faut saisir cette ligne de commande :
    git clone –recursive git://github.com/ninjablocks/433Utils.git
    Amicalement

  4. Olivier dit :

    Bonjour, j’ai exactement le même problème que konix.
    Ca fait 1 heure que je recherche des explications sur le net sans trouver de réponse.
    Avez-vous des pistes pour la résolution du problème ?
    Merci.

  5. Xavier dit :

    Konix
    Probleme que j ai deja eu. Il faut que tu reviens a la racine des repertoires de la pi tu fais un « cd / » et ensuite tu reinstalle et ca va compiler sans erreur.

  6. slyholborn dit :

    Bonjour, sur le site de ninjablock, ils disent de rajouter la commande recursive. Pour ma part j’ai en plus été forcé de recompiler wiring pi pour que ca marche…
    git clone –recursive git://github.com/ninjablocks/433Utils.git

  7. Gael dit :

    Bonsoir,

    pour corriger le problème rencontrer par konix, lors du téléchargement des fichiers des programmes de Ninjablocks il faut utiliser la commande suivante : git clone git://github.com/ninjablocks/433Utils.git –recursive

    A+

  8. Samuel Poggioli dit :

    @slyholborn et @Gael, merci, j’ai edit le post.
    ++

  9. Steve dit :

    Bonjour.

    J’utilise également ce programme pour contrôler certains périphériques chez moi. Ca fonctionne parfaitement mais j’ai un problème auquel je ne trouve pas de solution logicielle.
    Un des appareil controlé active un relais qui se coupe dés que l’on relâche la pression sur le bouton de la télécommande, donc envoyer un signal avec ./codesend fonctionne mais je ne trouve pas comment temporiser le temps d’émission pour le porter à 2 ou 3 secondes environ comme je peux le faire avec ma télécommande, codesend envoie simplement une impulsion ce qui ne convient pas tout a fait à mes besoins.

    Si quelqu’un a une idée …

    Merci d’avance.

  10. Aurel_14 dit :

    Bonjour,

    Pour ma part la solution consistant à utiliser la commande git clone git://github.com/ninjablocks/433Utils.git –recursive ne fonctionne pas.
    Il faut se placer dans le dossier /433Utils/RPi_utils puis utiliser les commandes suivante (sans les # bien sur) :
    # git submodule init
    # git submodule update
    # make

  11. Christian G dit :

    J’ai suivi la procédure comme vous l’avez indiqué et je ne comprend pas pourquoi la commande « make » ne fonctionne
    pas:
    pi@raspberrypi_c:~/433Utils/RPi_utils $ make
    make: *** No rule to make target ‘../rc-switch/RCSwitch.o’, needed by ‘send’. Arrêt.
    pi@raspberrypi_c:~/433Utils/RPi_utils $

    Avez vous une explication?

    Merci pour votre réponse

  12. Samuel Poggioli dit :

    @Christian
    Test ces commandes :
    git submodule init
    git submodule updat
    make

    Merci Aurel_14

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *