CREATE Ceiling Fan Custom RF Controller
07/14/26
Objectif
J'ai équipé ma maison de plusieurs ventilateurs de plafond, dont deux dans le salon. Comme chaque ventilateur vient avec sa propre télécommande, j'ai eu envie de fabriquer une télécommande qui centraliserait leur gestion.Capter les signaux
La Bonne fréquence
La première chose à connaitre est la fréquence radio utilisée par la télécommande. Pour ce genre de télécommande, les fréquences habituellement utiliséées sont 315Mhz, 330Mhz et 433Mhz. Pour le déterminer, j'ai fait l'acquisition d'un récepteur USB RTL-SDR DVB-T (~30€). Il en existe des "officiels" (~80€) et des "copies" (~30€). Ce qui compte, c'est que l'appareil soit basé sur une puce RTL2832U et qu'il soit reconnu par l'ordinateur (d'où le "danger" d'acheter une copie). J'ai pris le risque d'acheter une copie sur Amazon.
[Officiel] RTL-SDR.com
[Officiel] AirSpy
[Copie] DollaTek Digital USB 2.0 DVB-T DTS
Maintenant que je peux capter les ondes radio, il faut pouvoir les "voir". J'ai utilisé le logiciel Spektrum mais il en existe d'autres (SigDigger, Air#, ...).
- Spektrum
- SigDigger
- Air#
Par défaut, le récepteur USB est détecté comme un "tuner TV" et, comme le stipule la documentation de Spektrum, il faut désactiver ce driver.Pour cela, il faut créer le fichier:/etc/modprobe.d/rtl-sdr.conf
Et écrire dedans:blacklist dvb_usb_rtl28xxu
Il faut aussi s'ajouter des droits en ajoutant une "udev rule" en créant le fichier:/etc/udev/rules.d/20.rtlsdr.rules
Et en écrivant dedans:SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", GROUP="adm", MODE="0666"On peut vérifier que l'idVender et l'idProduct correspondent bien grâce à la commande:lsusb
Qui donne:Bus 007 Device 002: ID 0bda:2838 Realtek Semiconductor Corp. RTL2838 DVB-T
Il ne reste plus qu'à ouvrir Spektrum, sélectionner le récepteur et modifier les paramètres du logiciel pour connaître la fréquence utilisée par la télécommande.
La plage de fréquence de base est vraiment trop large (24Mhz/1.8Ghz) car nous savons que ce genre de télécommande utilise des fréquences entre 300Mhz et 500Mhz. Il suffit de renseigner les champs (en Hz, ça fait vite beaucoup de zéros) en haut à gauche. Il ne faut pas oublier de cliquer sur "Set Range" pour que les valeurs soient prises en compte.
Lorsque l'on appuie sur un bouton de la télécommande, on voit alors la courbe jaune qui fait un pic. C'est là que se situe la fréquence que nous recherchons. Il ne reste plus qu'à modifier les valeurs pour s'approcher au plus près.
Pour être vraiment précis (ce qui n'est pas fondamentalement utile), on peut se servir de la fonction "Max" située dans l'onglet "Measure".
Ainsi, j'ai pu déterminer que la télécommande et le controleur du ventilateur communiquent sur la fréquence 433.9Mhz.

Déchiffrer les codes
Je sais maintenant que je dois travailler avec la fréquence de 433.9Mhz. Pour obtenir les codes envoyés au controleur du ventilateur, il existe plusieurs méthodes.
J'ai commencé par continuer à me servir du récepteur USB en conjonction avec un logiciel de traitement du signal (surtout "urh") mais je ne suis arrivé à rien.
- urh - universal radio hacker
- SigDigger
- Air#
Cela m'a tout de même permis de confirmer que les communications s'effectuent en ASK (Amplitude Shift Keying), plus précisemment en OOK (On-Off Keying). Ce n'était pas une grosse surprise, les tutos que j'ai lus étaient tous basés là-dessus. Je me suis alors tourné vers des bibliothèques "pour Arduino" car je possèdais déjà des modules recépteur/émetteur en 433.9Mhz (ouais, la chance ! bon, je les aurais commandés de toutes façons). Après en avoir testés plusieurs (OneWire, RadioHead, etc.), je me suis arrêté sur RCSwitch.
Justement RCSwitch ne fonctionne qu'en OOK et permet de configurer des "protocoles". La bibliothèque vient avec une dizaine de protocoles pré-définis mais aucun ne semblait correspondre à ma télécommande. Il a donc fallu découvrir le protocole utilisé.Réferences
- Hacking My Ceiling Fan Radio Signal With a $15 USB TV Tuner (RTL2832U)
- RF Hacking my Cloud-Controlled Ceiling Fan