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.
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€.
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.
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 :
Le minuscule contact en cuivre permet de souder une antenne.
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 :
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.
La connexion au RPi se fera selon le schéma suivant :
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
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
Vérifiez que vous êtes toujours dans le dossier ~/433Utils/RPi_utils
:
$ cd ~/433Utils/RPi_utils
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
.
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
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.
6 ans ago ·
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 ?
6 ans ago ·
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.
6 ans ago ·
Bonjour mes prise ne réagissent pas.avec un autre raspberry je reçois bien les codes à l’identique.Merci
6 ans ago ·
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
6 ans ago ·
J’ai la totalité des codes pour les prises Chacon illustrées au début de l’article.
Je peux te les envoyer.
6 ans ago ·
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
6 ans ago ·
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 ?
6 ans ago ·
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.
6 ans ago ·
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
6 ans ago ·
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.
6 ans ago ·
Bonjour,
Difficile de répondre avec peu d’éléments.
Les télécommandes low-cost chinoises avec une puce ev1527 fonctionnent bien.
Didier.
5 ans ago ·
Bonjour, j,ai le même problème que vous, peut être avez vous trouve une solution ?
6 ans ago ·
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 ?
6 ans ago ·
Bonjour,
Avez-vous essayé en ajoutant sudo devant la commande ?
$ sudo ./codesend xxxxxxx
Didier.
6 ans ago ·
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
6 ans ago ·
Et en repartant des indications du GitHub original ? : https://github.com/ninjablocks/433Utils
6 ans ago ·
Sur le RPi 3B+, il faut s’assurer que WiringPi est installé en version >= 2.46
$ gpio -v
http://wiringpi.com/download-and-install/
6 ans ago ·
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
6 ans ago ·
Tout est bien qui finit bien…
Bon amusement ! 😉