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

Un oscilloscope comme écran

L’objectif de ce projet est de transformer un oscilloscope en un écran design et original. Il permettra d’afficher des animations et des logos personnalisés.

Fonctionnement

Afin d’afficher sur l’écran de l’oscilloscope des formes, nous utiliserons son mode XY. Celui-ci nécessite l’usage des deux entrées CH1 et CH2, qui seront respectivement la voie X et la voie Y. Nous pouvons donc afficher le point aux coordonnées que l’on souhaite en appliquant une tension proportionnelle aux coordonnées X sur la voie CH1, et une autre tension avec le même rapport de proportionnalité au coordonnées Y sur la voie CH2.

Nous utiliserons une sortie audio d’un PC ou d’un téléphone portable. En effet, avec un son stéréo, nous pouvons générer deux tensions différentes.

Smart Every Day a fait une vidéo qui décrit plus en détail comment faire de la musique pour dessiner des formes sur un oscilloscope :

Oscilloscope Music – (Drawing with Sound) – Smarter Every Day 224

Matériel nécessaire

  • Oscilloscope à écran cathodique
  • Adaptateur jack femelle -> double BNC
  • Câble jack mâle / mâle
  • PC ou téléphone portable

Fabrication de l’adaptateur

Adaptateur jack -> BNC

L’adaptateur jack -> BNC, représenté ci-dessus, est réalisé suivant ce schéma :

Schéma de câblage de l’adaptateur jack -> BNC

Exemples d’animations

Afin de commencer à tester, nous pouvons utiliser des musiques d’exemple, déjà créées par d’autres personnes.
Pour cela, je vous recommande grandement les musiques de Jerobeam Fenderson.

La playlist de musiques est disponible sur Youtube :

Jerobeam Fenderson – Dots (Playlist Oscilloscope Music)

Youtube appliquant une compression sur l’audio, le résultat n’est probablement pas optimal. Vous pouvez donc vous procurer les fichiers non compressés en laissant un petit tips de 5€ à leur créateur en suivant le lien suivant :
https://oscilloscopemusic.com/watch/oscilloscope_music#download

Créer sa propre image

A venir…

Limitation : filtrage audio

Lors du passage d’une boucle à une autre, nous pouvons avoir un changement brutal de valeur sur l’une des voies.

Capture d’écran d’Audacity – Signal avec changements brutaux de valeurs

Cela implique une réponse en haute fréquence. Hors la plupart des cartes sons possèdent un étage de filtrage en sortie et en particulier un filtre passe-bas qui élimine les fréquences qui ne sont pas dans la plage audible.

Cela provoque un effet rebondi sur les dessins :

Pour limiter cet effet, n’hésitez pas à essayer avec différents périphériques / cartes sons pour obtenir le meilleur résultat. On peut également diminuer la fréquence d’échantillonnage et donc la réponse en fréquence des signaux.

Exemple d’animation

Vous savez maintenant créer une « image » auditive. En jouant avec des fondus sur une voie, l’autre voie, les deux… on crée des animations !
Vous pouvez utiliser Audacity pour réaliser ces effets et en essayer bien d’autres (soyez créatifs !).

Animation oscilloscope – Exemple IUT de Nîmes / GEII

Ressources complémentaires

Minitel connecté en MQTT

Vous avez un Minitel qui traine sur une étagère au fond du garage mais vous ne savez pas quoi faire de cette merveille, je vous propose dans cet article de lui donner une seconde vie !

Nous allons voir comment connecter le Minitel à un Broker MQTT. Avec Node-RED, par exemple, vous pourrez ainsi donner une utilité à celui-ci !

Matériel nécessaire

  • 1x Minitel ;
  • 1x Wemos D1 Mini (ou similaire) ;
  • 1x Prise DIN-5 45° mâle ;
  • 2x Résistance de 10kΩ ;
  • 1x Résistance de 15kΩ ;
  • 2x Transistor 2N2222A ;
  • Un bout de perfboard si vous en voyez l’intérêt ;
  • Un fer à braser avec ses accessoires (étain, flux…) ;
  • Petit outillage : pincettes, cutter, support de fixation … ;

Si vous n’avez pas de Minitel qui prend la poussière dans votre garage, vous pouvez en trouver sur Le Bon Coin pour quelques euros. Les tarifs varient entre 1€ et une centaine d’euros, certains le voient comme un objet de collection, d’autre comme un encombrant…

ATTENTION – Votre Minitel doit posséder une touche « Fnct » (fonction) pour pouvoir l’utiliser comme terminal série.

Câblage électrique

Nous connectons l’ensemble des composants suivant le schéma ci-dessous. Vous pouvez réaliser le montage sur une perfboard si vous préférez.

ATTENTION – Prévoyez de pouvoir débrancher simplement le Wemos du reste du circuit : il se peut que ce soit nécessaire lors des phase de téléversement du code.

Schéma de câblage

Configuration du Minitel

Pour passer le Minitel en mode péri-informatique à 4800 bauds, il convient d’opérer les « raccourcis » clavier suivants :

  • Fnct + T, puis A (mode péri-informatique) ;
  • Fnct + T, puis E (désactivation echo local) ;
  • Fnct + P, puis 4 (vitesse 4800 bauds) ;

Programmation

Vous pouvez dès à présent lancer l’Arduino IDE (ou autre) et ajouter les cartes à base d’ESP8266 dans le Gestionnaire de carte (Outils -> Type de carte -> Gestionnaire de carte).

Paquet à installer dans le Gestionnaire de carte

Vous pouvez désormais sélectionner la carte « Wemos D1 R1 » (ça fonctionne, pour vos autres projets il vous faudra surement le profil D1 mini) et le bon port série.

Dans le Gestionnaire de bibliothèques (Croquis -> Inclure une bibliothèque -> Gérer les bibliothèques), ajoutez Arduino JSON (version 6 ou plus) et SubPubClient.

Bibliothèques à installer dans le Gestionnaire de bibliothèques

Vous pouvez maintenant ouvrir le sketch Arduino téléchargeable sur le dépôt associé à cet article : Dépôt Git.

Modifiez les paramètres du fichier config.h afin de satisfaire votre configuration du réseau wifi et du broker MQTT.

Vous pouvez si vous le désirez activer le mode echo local en commentant ou non la ligne 7 :

#define echolocal

Une fois tous les paramètres renseignés, vous pouvez téléverser le programme et votre Minitel est (théoriquement) connecté à votre broker MQTT !

Test avec Node-RED

Je vous ai également laissé avec les sources un flow d’exemple renvoyant ce que l’utilisateur a saisi au clavier en modifiant légèrement le message. En appuyant sur le bouton Clear, vous avez la possibilité d’effacer tous les messages de l’écran du Minitel.

Flow Node-RED d’exemple
Démonstration et test du flow d’exemple

Exemple d’utilisation

Via Node-RED on peut facilement interfacer notre Minitel connecté à l’API Twitter et ainsi afficher tous les tweets parlant de Minitel par exemple !

Ressources complémentaires