Mes passions, le boulots, mes coups de gueule...




Contrôler des prises radiocommandées avec un Raspberry Pi

Catégories : Domotique, Geek, Informatique, Raspberry Pi · par 7 Mar 2017

Introduction

Pour Noël, je me suis fait offrir un kit de 3 prises radiocommandées ON/OFF.
J’avais une petite idée en tête : les contrôler avec mon Raspberry Pi.

Matériel

Les prises

De nombreuses prises sont disponibles sur le marché en 433MHz. Il suffit généralement de rechercher la fréquence utilisée inscrite sur la boîte.

Les miennes sont de marque  Chacon en 433MHz ou plus précisément en 433,92MHz. Le kit est disponible sur Amazon pour un peu plus de 20€.

Équipements du Raspberry Pi

Il existe de nombreux émetteurs / récepteurs que l’on peut connecter au port GPIO du RPi. On les trouve pour 1 ou 2 euros sur des sites comme eBay, Amazon, AliExpress ou DealExtreme en recherchant les termes : « module 433MHz ».

Attention à bien choisir la fréquence parmi celles qui peuvent être proposées comme : 315MHz / 433MHz / 418MHz / 915MHz

Ici, j’ai choisi un module 433,92MHz qui correspond à la télécommande.

La tension d’alimentation recommandée pour l’émetteur, indiquée sur certains sites, se situe dans une fourchette comprise entre 3,3V et 12V.

La portée de l’émetteur (à 5V) est d’environ 40m en intérieur et 100m en plein air.

Emetteur

J’ai opté pour un modèle FS1000A en 5 Volts dont les dimensions font 19mm x 19mm.

Les 3 pattes permettent d’y connecter :

  • GND : La masse (-)
  • VCC : L’alimentation positive (+5V)
  • DATA : Les données transmises

Le minuscule contact en cuivre permet de souder une antenne.

Récepteur

J’ai acheté le récepteur dans un combo émetteur/récepteur et je ne lui trouve pas de référence précise, sauf sa puce qui est une LM358. La puce EV1527 semble également compatible et très répandue.

Ses dimensions sont de 30mm x 13mm.

Les 4 pattes permettent d’y connecter :

  • GND : La masse (-)
  • DATA : Les données reçues
  • DATA : Idem. On peut voir le pontage de ces 2 pins au verso du circuit imprimé
  • VCC : L’alimentation positive (+5V)

Antenne

L’antenne est soudée sur le connecteur comme indiqué ci-dessus.

Sa dimension respectera la norme du 1/4 d’onde.
C’est la longueur la plus classique et la meilleure des antennes fouet.

Longueur d’onde entière = vitesse de la lumière / fréquence
=> 300 000 / 433 = 693 mm
=> 1/4 d’onde = 173 mm

Notre antenne mesurera donc 17,3cm.

Pour améliorer encore l’émission ou la réception, il est possible de se procurer ce type d’antenne hélicoïdale pour quelques dizaines de centimes sur des sites chinois.

Connexion au Raspberry Pi

La connexion au RPi se fera selon le schéma suivant :

  • Le VCC (+5V) est connecté aux Pins 2 et 4.
  • La masse est connectée aux Pins 6 et 9.
  • Le DATA du récepteur est connecté à la Pin 13.
  • L’émetteur est connecté à la Pin 11.

Installation logicielle

WiringPi

Nous allons commencer par installer WiringPi :

WiringPi est une bibliothèque d’accès au GPIO écrite en C pour le processeur BCM2835 utilisé dans le Raspberry Pi.

$ cd ~/
$ git clone git://git.drogon.net/wiringPi
$ cd wiringPi
$ ./build

433Utils

Ensuite, nous allons installer 433Utils :

433Kit est une collection de codes et de documentations conçue pour connecter et utiliser des modules d’émission et de réception RF 433MHz avec des cartes Arduino et/ou Rapberry Pi.

$ cd ~/
$ git clone --recursive git://github.com/ninjablocks/433Utils.git
$ cd 433Utils/RPi_utils
$ make

Utilisation de 433Utils

Vérifiez que vous êtes toujours dans le dossier ~/433Utils/RPi_utils :

$ cd ~/433Utils/RPi_utils

Recevoir les codes

Pour recevoir le code spécifique à chaque touche de la télécommande, nous allons exécuter la commande suivante :

$ ./RFSniffer

Une fois la commande exécutée, approchez la télécommande du Raspberry Pi et pressez-y un des boutons durant plusieurs secondes.

Le code de ce bouton apparait.

Attention aux premiers et derniers codes qui peuvent être erronés à cause de la partie tronquée du massage reçu.

Pour interrompre la boucle, pressez Ctrl+C.

Emettre un code

Pour émettre un code, nous utiliserons la commande :

$ ./codesend xxxxxxx

Où les x représentent les 7 chiffres capturés à l’étape précédente.

Exemple pour cloner le bouton capturé juste avant :

$ ./codesend 5326165

Remarques

Chez moi, la portée de réception est relativement réduite (quelques dizaines de centimètres), même avec une antenne 1/4 d’onde correctement soudée.
Il s’agit peut-être d’un problème de qualité d’alimentation et/ou de parasites transmis par le RPi.
On se souvient que la sortie jack audio subit un bruit de fond important.

Par contre, la portée d’émission avec l’alimentation 5V prise sur le GPIO suffit pour une bonne dizaine de mètres au-travers des murs de mon appartement.

La technique vue ici ne s’applique pas aux dispositifs utilisant le rolling code (voiture, porte de garage, portail, …) où les codes changent à chaque pression d’un même bouton sur la télécommande.

(19) comments

Nd
2 ans ago · Répondre

Bonjour, et merci beaucoup pour la description du projet.
J’ ai trouvé un kit de prises à 433,92 hz, sur le net, et la mention  » Codage par auto-programmation, mémorisation permanente », est-ce compatible pour ce projet ?

    fanjoe
    2 ans ago · Répondre

    Bonjour,
    Impossible à dire comme ça.
    J’ai trouvé des relais compatibles de ce type pour quelques euros sur des sites chinois.
    Il y a un petit bouton qui permet de mémoriser les codes ON et OFF d’une télécommande.
    Par exemple, les prises « Profile Qnect » ne sont pas compatibles.
    À tester…
    N’hésitez pas à laisser vos retours d’expériences et les références produits en commentaire.
    Didier.

Matéo Chiron
2 ans ago · Répondre

Bonjour mes prise ne réagissent pas.avec un autre raspberry je reçois bien les codes à l’identique.Merci

Gary Man
2 ans ago · Répondre

Bonjour,

Tuto très interessant je t’en remercie.

Sais-tu s’il y a une liste de commande prédéfinie?
en effet je n’ai pas de télécommande à porté de main et voudrais m’en affranchir pour commander des prises.

Faut-il absolument appairer une télé commande à la prise?

Merci

    fanjoe
    2 ans ago · Répondre

    J’ai la totalité des codes pour les prises Chacon illustrées au début de l’article.
    Je peux te les envoyer.

gary
2 ans ago · Répondre

Si tu peux me les envoyer ce serait cool, cependant je viens de voire que ma télécommande a pour référence 54661… espérons que ca fonctionne également.

batman9795@gmail.com

PIRET
2 ans ago · Répondre

Bonjour,

J’utilise ce procédé pour sniffer les codes et ils apparaissent bien sur une fenêtre en ligne de commande de mon raspberry.
Avec codesend j’arrive à activer un relais sans fil mais en agissant de même avec les prises  » ETEKCITY ZAP » dont je dispose, celles-ci ne réagissent pas. Pourtant le code est bien lu et apparaît dans la fenêtre de commande. J’ai même approché la prise de l’émetteur pour éliminer le problème d’antenne.

Avez-vous une explication ?

    fanjoe
    2 ans ago · Répondre

    Bonjour,

    Probablement une incompatibilité de protocole.
    La majorité des équipements low-cost en 433mHz utilisent la puce ev1527 qui code sur un nombre de bits max (à vérifier).
    Il est possible que votre équipement utilise un protocole sur un nombre de bits différent. Vous ne voyez alors qu’une partie du code transmis.
    Faites une recherche sur le protocole utilisé par votre équipement. Les indications sur la puce de la télécommande peuvent vous aider.

    Bonnes recherches.
    Didier.

PIRET Bernard
2 ans ago · Répondre

Bonjour et merci pour votre réactivité.

J’ai pu déchiffrer à la loupe les informations sur la puce (HS2260C-R4 F4CTN)
Je vais essayer d’avancer sur cette voie… c’est pas gagné !

Cordialement,

Bernard

Marc CHOLLEY
2 ans ago · Répondre

Bonjour et merci encore pour ce bon tuto.
Bien que je sois un « ancien » je me suis pris de passion pour la framboise.
J’utilise un rpi 3 B+ et les mêmes modules que vous ;j’ai suivi à la lettre votre tuto.
Malheureusement après avoir lancer la commande ./RFSniffer le curseur se met en attente et
malgré plusieurs télécommandes rien ne se passe .
Est-ce un problème de répertoire ou autre pb?
Cordialement.

    fanjoe
    2 ans ago · Répondre

    Bonjour,
    Difficile de répondre avec peu d’éléments.
    Les télécommandes low-cost chinoises avec une puce ev1527 fonctionnent bien.
    Didier.

    motopuch
    11 mois ago · Répondre

    Bonjour, j,ai le même problème que vous, peut être avez vous trouve une solution ?

Christophe
2 ans ago · Répondre

Bonjour
Merci pour ce tuto extrêmement clair.
J’ai acheté les CHACON 54655, le même émetteur et le même récepteur que vous recommandez.
Le tout à été câblé comme vous l’indiquez.
La partie logiciel a été installée sur un RPI 3B+
En finalité, la commande RFSniffer fonctionne parfaitement par contre je n’arrive pas à faire fonctionner la commande codesend.
Que pouvez-vous me recommander ?

    fanjoe
    1 an ago · Répondre

    Bonjour,

    Avez-vous essayé en ajoutant sudo devant la commande ?

    $ sudo ./codesend xxxxxxx

    Didier.

Christophe
1 an ago · Répondre

Bonjour Didier

Merci pour votre réponse…
J’ai essayé la commande sudo ./codesend 1381717 mais rien n’y fait !

Je débute en python mais j’ai quand même essayé ce programme pour balayer tous les codes possibles : (je ne suis pas certain de son efficacité)

import os
for i in range(1000001,999999,2):
A=str(i)
cmd=(« /home/pi/433Utils/RPi_utils/codesend » +  » « + A+ » « + »24″+ » « + »1500 »)
print (cmd)
os.popen(cmd)

sans aucun résultat

En finalité, je ne sais pas vérifier si mon émetteur fonctionne.

Connaîtriez-vous un moyen pour vérifier si l’émetteur fonctionne ?

Cordialement

Christophe

Christophe
1 an ago · Répondre

Bonjour Didier

Merci pour vos réponses !
L’origine du problème était matériel, un des fils contenu dans le starter kit est mal serti et ne conduisait pas le courant.
L’émetteur, non alimenté en 5V. ne risquait pas de fonctionner…. 🙂
Désolé de vous avoir sollicité pour une raison si bête.
Quoi qu’il en soit, maintenant tout fonctionne et je vous en remercie.
J’ai particulièrement apprécié la clarté de votre tuto, cela m’a permis, malgré que je débute sur RPI, de mener à bien ce projet.

Cordialement

Christophe

    fanjoe
    1 an ago · Répondre

    Tout est bien qui finit bien…
    Bon amusement ! 😉

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.