Domotique radio fréquence 433mhz avec Raspberry Pi

Développement Web, WordPress et des trucs en -ique

Domotique radio fréquence 433mhz avec Raspberry Pi

5 décembre 2015 Raspberry Pi 16
Domotique raspberry pi branchement emeteur-recepteur433mhz

Dans ce tutoriel sur la domotique, le Raspberry Pi sera le cœur de votre installation domotique. Il aura besoin d’outils pour être fonctionnel. Les outils vont vous permettre d’écouter et d’envoyer des informations, ce sont en l’occurrence les émetteurs et récepteurs en 433mhz. A la fin de ce tuto, vous serez en mesure de contrôler les objets de votre maison par radiofréquence 433mhz avec le Raspberry Pi.

La domotique mise en place dans ce tutoriel utilise la technologie des fréquences (433mhz).

Préparation matériels

Les outils domotique pas cher

  • Deux outils sont nécessaires, un couple émetteur récepteur 433mhz.
  • Aussi prévoyez des câbles femelles pour relier le tout.

Ci dessous les liens pour les différents outils:

Le récepteur va permettre de cloner le code radio de la télécommande du matériels, tandis que l ‘émetteur va se servir du code radio enregistré par le récepteur pour commander ces derniers en on/off.

Bien évidement le Raspberry Pi 2, j’ai pris le soins de vous mettre l’image/lien du dernier PI 2 le moins cher que j’ai trouvé. Libre à vous!!! Une version B ou B+ est largement suffisante, mais prévoyez le coup surtout pour quelques euros de plus 😉

Matériel radiocommandé

Pour faire simple, les prises en 433mhz sont une bonne première acquisition, j’ai achetez mes premières, un set de trois avec télécommande, à auchan pour 20e. Par la suite vous pouvez optimiser l’installation domotique avec par exemple une douille luminaire sans fil ( toujours en 433mhz ). Il vous faut au minimum une télécommande et une prise du « même produit » pour suivre ce tutoriel sur la domotique dans de bonne condition.

Préparation technique

Vous avez le matériel nécessaire, le Raspberry Pi, émetteur-récepteur 433mhz, fils femelle/femelle, prise + télécommande 433mhz. On va donc s’attaquer au branchement puis à la configuration du Raspberry Pi.

Branchement domotique des émetteurs-récepteur 433mhz

Le branchement data de l’émetteur sur le Pin 3.

Le branchement data du récepteur sur le Pin 2.

Les images valent mieux que les mots, plan de mon branchement:

Domotique raspberry pi branchement emeteur-recepteur433mhz

Et en version détaillé pour chaque:

Domotique recepteur 433mhz domotique emetteur-recepteur 433mhz

Installation de WiringPi

C’est une librairie qui permet de contrôler les ports GPIO. Son installation est alors obligatoire. Pour cela:

installation des binaires git

Télécharger le programme domotique

Ce programme en C++ (basé sur le programme d’idleman sur le blog idleman.fr, merci à lui) permet en outre, de cloner le code radio fréquence 433mhz ( le signal de chaque bouton ) d’une télécommande sur un fichier grâce au récepteur, puis de le transmettre aux différents matériels associés à ce code radio via l’émetteur afin de communiquer avec eux. Communiquer est un mot un peu faible dans ce contexte, on pourrait dire ORDONNER.

Télécharger le programme

Utilisation domotique par radiofréquence 433mhz

Utilisation du programme

Dans un premier temps il faut extraire les 4 fichiers et les placer dans l’architecture racine de votre raspberry pi. Par exemple chez moi je les ai mis dans le dossier /home/pi.

20151205_135359L’important est bien d’être dans le dossier référent au niveau de la console « LXterminal ».

Cloner une télécomande 433mhz

Pour cela nous allons donc utiliser le programme « Reception ». Sur la console vous allez taper « ./Reception 2 test.csv » (attention Majuscule Reception).

Mais avant, décortiquons cette ligne de code afin que vous compreniez bien:

  • ./Reception -> correspond au programme à lancer
  • le chiffre -> (2 actuellement) correspond au pin de votre raspberry pi, plus exactement au pin de la libWiringPi.
  • test.csv -> c’est le fichier qui sera créé (contenant les information de la télécommande). Il nous servira pour le programme Emetteur.

Maintenant que vous comprenez le fonctionnement on va tester. Lancez le programme en ligne de commande avec « ./Reception 2 test.csv » et dans un même temps appuyer sur une touche de votre télécommande (de préférence on). Une fois l’action terminé empressez vous de cloturer le programme avec la combinaisons de touche ctrl+c. Le programme tourne en boucle et votre fichier CSV peut vite être surchargé. C’est opération doit être effectué rapidement.

Pour résumer: on lance la commande ./Reception 2 « nomdufichier.csv » -> on presse le bouton de la télécommande afin d’enregistrer le code radio -> on ferme le programme avec CTRL + C = fichier.csv créé qui contient le code radio.

Envoyer un signal 433 mhz

Ici on va se servir du fichier csv enregistré précédemment. En revanche, cette fois on va utiliser l’emetteur et son programme associé sur le pin 3. Donc votre ligne de commande ressemblera à ça:

  • ./Emetteur 3 test.csv

Votre prise doit alors s’allumer.

Optimisation domotique

Vous pouvez refaire l’opération pour créer cette fois un fichier.csv qui copie votre télécommande (bouton off) pour éteindre votre prise. Il pourra par exemple se nommer OFF1.csv et votre ancien test.csv en ON1.csv.

Vous l’aurez compris les programmes ne changent pas, vous utiliserez ces deux là pour toutes vos actions de clonage ou d’émission radio. En revanche, vos fichiers « csv »,  eux, sont la clés puisqu’ils correspondent aux codes radio de chaque éléments et permettent alors des actions sur votre environnement. Ils seront jamais identiques et devront avoir un nom qui correspond avec pertinence au matériel et à l’action, par exemple « lumièreSalonOn.csv ».

Prochaine étape consistera à créer une interface graphique web, afin de controler votre installation domotique depuis votre smartphone.





 

Facebooktwittergoogle_plusredditpinterestlinkedinmail

16 réponses

  1. BRUN dit :

    Bonjour,

    Cet article m’a beaucoup aidé. Cependant je souhaiterais pouvoir activer la réception depuis l’interface web.
    J’ai donc modifier le fichier Reception.cpp afin de fermer automatiquement le programme au bout de x seconde et recompiler le fichier Reception.
    Tout fonctionne parfaitement en ligne de commande depuis le dossier /var/www/html/, donc le programme modifié fonctionne, par contre depuis l’interface web, le fichier csv n’est pas créé et je n’arrive pas à déterminer pourquoi. J’appelle le programme depuis un bouton tout comme le programme Emetteur.
    Si quelqu’un pouvait m’aider?
    Merci d’avance.

  2. manipovore dit :

    Bonjour,

    Heureux de vous avoir aidé. Concernant l’activation du programme « Réception » dans l’interface web cela pose un problème puisque celui-ci va devoir demander 2 paramètres : 1-> le nom du pin 2-> le nom du fichier CSV à créer et pour l’heure l’interface ne gère pas ce cas. Je suis actuellement en manque de temps pour faire évoluer l’interface.
    A mon sens, votre bouton actuel va permettre donc de lancer le programme « réception » mais il lui manquera sans doute le paramètre « NOM_DU_FICHIER.CSV ».
    Dans l’attente de l’évolution de l’interface, le cheminement le plus probable pour votre demande serait d’intégrer une balise de type « input text » dans la page d’accueil en complément du bouton réception et de passer le paramètre via du php dans le but de nommer le fichier csv.

    script php à explorer-> php system(« ./Reception 2 » . $_POST[val input text’]); …

  3. apas dit :

    bonjour ,
    je viens en tout cas me semble t il de suivre la procédure ci-dessus.
    mais lorsque je lance le programme de réception il m indique commande not found .
    avez vous une idée ?.
    merci.
    bonne journée

  4. manipovore dit :

    Bonjour,

    Dans le cas d’une « commande introuvable » par le terminal cela signifie que le programme de la ligne de commande ne peut être exécuté pour plusieurs raisons, notamment quand le programme n’existe pas ou n’est pas dans le répertoire courant, une ligne de commande mal écrite (terminal sensible à la casse) et dans certains cas un défaut d’autorisation.
    Avez vous rentrez la linge de commande correctement ? C’est à dire avec la premier lettre de chaque commande (Reception ou Emetteur) en majuscule ainsi que les différents caractères (le point et le slash) qui le précède du type -> ./Reception 2 nom.csv
    De plus, assurez vous d’être dans le bon répertoire quand vous lancez la commande linux. La commande « ls » vous aidera à connaitre les éléments contenus dans le répertoire sur lequel vous vous trouvez. Dans le cas ou les fichiers du programme ne s’y se trouvent pas, repérez le chemin de destination puis avec la commande « cd » accédez à ce répertoire.
    N’oubliez pas la commande « sudo » qui vous octroie les privilèges « super-utilisateur ».
    Donc la commande complète (en étant dans le bon répertoire) est donc -> sudo ./Reception 2 fichierTest.csv

  5. apas dit :

    re
    merci pour la rapidité de la reponse.
    voici ce que j ai dans le tereminal putty :
    root@osmc:/home/osmc# sudo ./Reception 2 fichierTest.csv
    sudo: ./Reception: command not found
    root@osmc:/home/osmc# sudo Reception 2 fichierTest.csv
    sudo: Reception: command not found
    j ai tenté avec et sans le ./ au cas ou il ne comprendrait pas l’instruction.
    j etais en root dans le repertoir ou ce trouve les elmts copié sachant que je suis sous osmc et le repertoir remplace le /pi dans rasbmc .
    du coups je suis perdu 🙁

  6. Manipovore dit :

    Arf, je n’ai pas testé les programmes sur les OS orientés « media-center » dont OSMC, je ne pourrai pas plus vous aider sur le sujet. Essayez peut être de vous rabattre sur un OS de type jessie pour votre raspi et tenez moi au courant 😉

  7. adrien dit :

    Bonjour,

    Très bon tuto qui fonctionne bien chez moi.

    Cependant, ça ne fonctionne que en root.
    si je met:
    ./Emetteur 3 chauffage_on.csv

    ça me met:

    Demarrage du programme
    Fichier de d’entree : chauffage_on.csv
    wiringPiSetup: Must be root. (Did you forget sudo?)

    A noter qu’avec sudo devant ça fonctionne très bien (mon chauffage s’allume et s’éteint).

    Le soucis c’est que mon serveur web ne peut pas envoyer de commandes en sudo.

    A noter que j’ai un Raspberry 3 tournant sous Jessie.

    Quelqu’un a t’il eu ce soucis?

  8. adrien dit :

    J’ai finalement trouvé un truc : ajouter dans /etc/sudoers
    la ligne
    www-data ALL=NOPASSWD: /var/www/domotique/Emetteur

    Où /var/www/domotique est le dossier où j’ai mis le programme Emetteur

    Je peux maintenant mettre sudo devant ma ligne de commande system en php

  9. Dexter dit :

    Bonjour à tous, j’ai suivi le tuto mais j’ai envie de pleurer… ^^ En effet je me heurte au meme probleme que apas, lorsque je lance sudo ./Reception 2 test.csv j’ai un command not found en retour. (frustrant ^^) j’ai bien fait attention à la casse et je suis dans le bon dossier, vérifié avec LS. Cependant, je suis sous wheezy et non sous Jessie. Avez vous une idée pour me débloquer ?
    Merci 😉

  10. adrien dit :

    dexter il me semble qu avec la dernière version le programme a été nommé Recepteur et non pas Reception.

    sinon il faut vérifier ls -l si le programme est exécutable. si il n y a pas de x devant.

    chmod +x Recepteur

  11. Dexter dit :

    Bonjour à tous ! Merci Adrien, Mes programmes n’étaient pas en exécutable, maintenant ils se lancent parfaitement ! J’ai fais un montage rapide hier soir, ça n’a pas fonctionné mais je pense qu’avec une antenne ça devrait le faire . Bonne journée

  12. emmanuel gatien dit :

    bonjour a vous tous , je suis les instruction sur le tuto est je suis bloqué au niveau de RFSiffer il me dit permition non accordé et si je mais sudo devant il me dit que le fichier n’est pas présent .

    merci a vous pour votre aide , j’utilise un pi3 sous raspbian-jessie 2017

  13. chris dit :

    Bonjour,

    Merci pour ce tuto !
    J’aurais toutefois besoin d’un peu d’aide. De quelle manière peut on tester / débugguer, je n’ai aucune erreur le fichier test.csv est bien crée les commandes Recepteur / Emetteur se lance sans aucunes erreurs mais malheureusement aucune action constatée (en effet les prise Chacon emettent un cliquetis à leur allumage ou extinction).
    J’ai absolument tout vérifié 3 fois branchement, droits des fichiers etc. puisque je n’ai aucune erreur.

    Par exemple commet distinguer le bon code dans le fichier test.csv
    Merci pour vos réponses

  14. manipovore dit :

    Bonjour chris,

    Sur cette version je n’ai pas mis en place une branche de test, honte à moi 🙁
    Il y a peut-être un problème de parasitage sur la fréquence, habites tu en ville ?

    Par la suite, si tu veux affiner le code radio de ton périphérique, il te faut utiliser « Audacity ». Recherche dans GG audacity RF …

  15. Nicolas67 dit :

    Bonjour,

    Très bon tuto!
    J’ai essayé avec la télécommande de ma voiture en attendant de recevoir le moteur de mon portail; d’un point de vue soft, tout fonctionne, cela dit, l’émetteur n’a pas d’effet sur mon véhicule mais je pense que cela doit venir du codage qui doit changer à chaque utilisation; cependant j’ai qqe questions:
    1. Quelle est la portée de l’émetteur 433Mhz (celui qui coûte env 2€ sur ebay) avec une antenne de 17.3cm
    2. Est il possible et si oui comment faire pour exécuter la commande « ./Emetteur 3 test.csv » dans un script python; car mon but final est d’ouvrir mon portail via mon tel, pour l’instant j’ai créé 1 web serveur + 1 fichier « portail.py » les 2 en python et qui me permettent d’allumer des led reliées au GPIO (Rpi 3) via mon tel.
    Merci d’avance
    Nicolas

  16. Postfutur dit :

    J’avais aussi le problème sous Raspian de : « commande introuvable » au lancement de./Recepteur 2 test.csv
    Comme suggéré plus haut sur un autre post, j’ai appliqué la méthode suivante :
    « chmod+x Recepeteur » également appliqué à « chmod+x Emetteur » histoire de pas oublié plus tard si c’est nécessaire
    Et le programme c’est lancé, sauf que maintenant j’ai une ligne qui me dis : « Failed to switch to realtime scheduler.: Operation not permitted »

Laisser un commentaire

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