Télécommande 433MHz connectée

L’objectif du projet va être de hacker un équipement piloté par une télécommande 433 MHz basique pour le connecter à un serveur et permettre un contrôle à distance.

Capture et analyse des signaux de la télécommande originale

Afin de pouvoir réaliser une copie, il convient de connaître la nature des trames envoyées par la télécommande d’origine.

J’utilise pour cela une clé SDR et le logiciel Universal Radio Hacker disponible sur toutes les plateformes : https://github.com/jopohl/urh.
Ce logiciel permet la capture de signaux et leur décodage / encodage. Nous allons ici nous contenter de son outil de capture et de visualisation.

Après avoir créé un projet, nous réalisons une capture (File -> Record signal). Dans cette capture, on va chercher à enregistrer les trames en appuyant sur tous les boutons de la télécommande plusieurs fois. Le plusieurs fois a son importance puisqu’il permettra de détecter la présence d’un code roulant (un compteur s’incrémente à chaque appui sur le bouton) et éventuellement d’un chiffrement (total de la trame ou partiel). Je ne rentrerai pas plus dans le détail pour ces deux situations.

Capture montrant l’outil d’enregistrement

Notre télécommande est ici une télécommande fonctionnant en 433,92 Mhz. Nous réalisons donc la capture à une fréquence proche de celle-ci mais suffisamment décalée. Si nous choisissons une fréquence trop proche, le signal obtenu sera d’une fréquence trop faible pour bien percevoir les symboles encodés.

Capture à une fréquence décalée d’environ 400 kHz de celle de la télécommande
Capture à une fréquence très proche de celle de la télécommande

Une fois l’enregistrement réalisé, nous allons pouvoir enregistrer puis analyser les trames obtenues.

Voici ce que j’obtiens :

Aperçu des signaux capturé durant toute la durée de l’enregistrement

Nous pouvons voir distinctement les différents appuis sur les boutons qui correspondent à chaque bloc sur la capture.

Aperçu des signaux lors de l’appui sur un bouton

En zoomant sur l’enregistrement, nous distinguons que la trame est répétée 16 fois et que les trames de début et fin sont tronquées. Ceci permet à l’appareil récepteur de réussir à décoder la commande même en ayant eu des difficultés à recevoir certaines trames.

Aperçu des signaux sur une unique trame

Enfin, en zoomant encore, nous pouvons voir le contenu de notre trame.

Les trames de ma télécommande sont composées ainsi :

  • 4 symboles de données fixes
  • 4 symboles de données qui changent suivant la commande
  • 9 symboles fixes

Il est possible que les trames correspondent à un encodage particulier : Manchester I ou II, NRZ… Dans ce cas, nous pouvons utiliser URH pour décoder les données des trames dans l’onglet « Analysis ».

Dans mon cas, je définis arbitrairement que :

  • 1110 correspond à un 1
  • 1000 correspond à un 0
  • 1100 ne correspond à rien, mais cela n’a pas d’importance vu qu’il est fixe
Décodage d’une trame et décomposition des blocs qui la forment

Les trames sont donc composées d’un octet de données suivi de 9 symboles fixes. Je peux faire une table de correspondance entre l’octet de données et l’action que ça a sur le système lors de l’appui sur la touche correspondant.

Fabrication de la télécommande connectée

Afin de réaliser la télécommande connectée, nous aurons besoin de deux éléments :

Wemos D1 mini
(ou autre carte basée sur un ESP8266)
Émetteur OOK 433 MHz

L’émetteur est alimenté en 3.3 ou 5V et son pin data est connecté au GPIO2. Une antenne quart d’onde peut-être soudée sur l’émetteur pour améliorer les performances.

Wemos D1 mini avec l’émetteur OOK

La programmation de l’ESP8266 s’effectue grâce à PlatformIO mais peut très bien se faire depuis l’IDE Arduino. Dans ce second cas, je vous renvoi à un précédent article : Gyrophare piloté par Discord.

Les sources sont disponibles sur GitLab : https://gitlab.com/Electroalex26/remote-control-433mhz-connected/

Il convient que vous modifiez suivant vos paramètres le fichier config.h et la fonction txCmd en fonction des trames que vous avez reçues et analysées.

Interface avec le broker MQTT

Ensuite, suivant ce que vous désirez en faire, vous pouvez interfacer cette télécommande connectée avec n’importe quel outil. Vous pouvez par exemple l’interface à votre contrôleur domotique.

Il est également possible grâce à NodeRed par exemple de réaliser une simple interface graphique permettant d’interagir avec.

Exemple de dashboard réalisé avec NodeRed
Flow NodeRed associé à l’exemple précédent

Ressources complémentaires

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.