Décodez et envoyez des signaux RF 433 MHz avec Arduino

Décodez et envoyez des signaux RF 433 MHz avec Arduino

Ce guide montre comment utiliser un Arduino pour décoder les signaux 433 MHz des télécommandes RF et les envoyer avec un Arduino et un émetteur 433 MHz pour contrôler à distance les prises des interrupteurs secteur.

Decodez et envoyez des signaux RF 433 MHz avec Arduino

Pourquoi décoder les signaux RF ?

J’ai essayé différentes méthodes de contrôle de la tension secteur, mais certaines méthodes nécessitent :

  • Expérience avec la tension alternative
  • Ouvrir des trous dans votre mur/plafond/interrupteurs
  • Modification du tableau électrique
  • Connaître les règles électriques de chaque pays

Il est difficile de trouver une solution qui soit sûre et qui fonctionne pour tout le monde. L’un des moyens les plus simples et les plus sûrs de contrôler à distance les appareils connectés au secteur consiste à utiliser des prises contrôlées par radiofréquence (RF). Pourquoi? L’utilisation de prises télécommandées présente 5 avantages :

  1. Assez bon marché
  2. Facile à avoir
  3. Fonctionne avec ESP8266 et Arduino
  4. Sûr à utiliser
  5. Fonctionne dans n’importe quel pays

Pièces requises

Pour ce tutoriel, vous avez besoin des pièces suivantes :

Noter: vous devez acheter des prises télécommandées qui fonctionnent à un RF de 433 MHz. Ils doivent indiquer le RF de fonctionnement soit sur la page du produit, soit sur l’étiquette.

Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

Decodez et envoyez des signaux RF 433 MHz avec Arduino

Exemple

Voici à quoi ils ressemblent :

1642125606 700 Decodez et envoyez des signaux RF 433 MHz avec Arduino

Réglage des canaux RF

J’ai réglé ma télécommande sur je position.

1642125606 917 Decodez et envoyez des signaux RF 433 MHz avec Arduino

Les prises doivent être à la fois sur le je position. J’ai sélectionné des chaînes 3 et 4 pour les points de vente (vous pouvez utiliser n’importe quel canal que vous voulez).

1642125606 866 Decodez et envoyez des signaux RF 433 MHz avec Arduino

Si vous les branchez sur une prise, vous devriez pouvoir contrôler les prises télécommandées avec votre télécommande.

Installation de la bibliothèque de commutateurs RC

La bibliothèque RC Switch offre un moyen simple d’utiliser votre ESP8266, ESP32 ou Arduino pour faire fonctionner des appareils radiocommandés à distance. Cela fonctionnera très probablement avec toutes les prises de courant populaires à faible coût.

  1. Cliquez ici pour télécharger la bibliothèque RC Switch. Vous devriez avoir un dossier .zip dans votre Téléchargements dossier
  2. Décompressez le dossier .zip et vous devriez obtenir dossier rc-switch-master
  3. Renommez votre dossier de rc-switch-maître à rc_switch
  4. Bouge le rc_switch dossier dans le dossier des bibliothèques d’installation de votre IDE Arduino
  5. Ensuite, rouvrez votre IDE Arduino

Ouverture de l’esquisse du décodeur

Vous devez décoder les signaux envoyés par votre télécommande, afin que l’Arduino ou l’ESP8266 puisse reproduire ces signaux et finalement contrôler les prises.

La bibliothèque est livrée avec plusieurs exemples de croquis. Dans le logiciel Arduino IDE, tu dois aller à Déposer > Exemples > Commutateur_RC > ReceiveDemo_Advanced. Cette esquisse suivante s’ouvre :

/*
  Example for receiving
  
  https://github.com/sui77/rc-switch/
  
  If you want to visualize a telegram copy the raw data and 
  paste it into http://test.sui.li/oszi/
*/

#include <RCSwitch.h>

RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  mySwitch.enableReceive(0);  // Receiver on interrupt 0 => that is pin #2
}

void loop() {
  if (mySwitch.available()) {
    output(mySwitch.getReceivedValue(), mySwitch.getReceivedBitlength(), mySwitch.getReceivedDelay(), mySwitch.getReceivedRawdata(),mySwitch.getReceivedProtocol());
    mySwitch.resetAvailable();
  }
}

Afficher le code brut

Vous devez ouvrir l’exemple en utilisant Fichier > Exemples > RC_Switch > ReceiveDemo_Advanced, de sorte qu’il charge automatiquement aussi le sortir déposer.

1642125606 649 Decodez et envoyez des signaux RF 433 MHz avec Arduino

Après avoir connecté une carte Arduino à votre ordinateur, suivez ces instructions :

  1. Allez à la Outils languette
  2. Sélectionner Arduino UNO Conseil
  3. Sélectionnez le COM Port
  4. appuyez sur la Télécharger bouton.

Décodeur – Schémas

Après avoir téléchargé le croquis, connectez un récepteur RF 433 MHz à la broche numérique 2 de votre carte Arduino UNO :

1642125606 562 Decodez et envoyez des signaux RF 433 MHz avec Arduino

Décoder les signaux RF (codes)

Ouvrez le moniteur série Arduino IDE et commencez à appuyer sur les boutons. Comme le montre la vidéo de démonstration ci-dessous :

YouTube video

Après avoir appuyé une fois sur chaque bouton, vous pouvez voir le code binaire de chaque bouton (il est surligné en rouge) :

1642125606 100 Decodez et envoyez des signaux RF 433 MHz avec Arduino

Enregistrez vos codes binaires pour chaque pression sur un bouton (vous pouvez également utiliser les codes décimaux ou tri-état) :

  • Bouton 3 ON = (24Bit) Binaire : 000101010101000101010101
  • Bouton 3 OFF = (24Bit) Binaire : 000101010101000101010100
  • Bouton 4 ON = (24Bit) Binaire : 000101010101010001010101
  • Bouton 4 OFF = (24Bit) Binaire : 000101010101010001010100

Enregistrez votre durée d’impulsion : 416 microsecondes et protocole : 1.

Envoyer les signaux RF (codes)

Vous devrez personnaliser le prochain croquis avec vos codes binaires, la durée d’impulsion et le protocole :

/*
  Based on the SendDemo example from the RC Switch library
  https://github.com/sui77/rc-switch/
*/

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();

void setup() {
  Serial.begin(9600);
  
  // Transmitter is connected to Arduino Pin #10  
  mySwitch.enableTransmit(10);

  // Optional set pulse length.
  mySwitch.setPulseLength(REPLACE_WITH_YOUR_PULSE_LENGTH);
  
  // Optional set protocol (default is 1, will work for most outlets)
  mySwitch.setProtocol(REPLACE_WITH_YOUR_PROTOCOL);
  
  // Optional set number of transmission repetitions.
  // mySwitch.setRepeatTransmit(15);
}

void loop() {
  // Binary code - button 3
  mySwitch.send("000101010101000101010101");
  delay(1000);  
  mySwitch.send("000101010101000101010100");
  delay(1000);
  
  // Binary code - button 4
  mySwitch.send("000101010101010001010101");
  delay(1000);  
  mySwitch.send("000101010101010001010100");
  delay(1000);
}

Afficher le code brut

Dans mon cas, la longueur d’impulsion et le protocole ressemblent à ceci :

// Optional set pulse length.
mySwitch.setPulseLength(416);
 
// Optional set protocol (default is 1, will work for most outlets)
mySwitch.setProtocol(1);

Voici un exemple d’expéditeur binaire (vous devez remplacer par vos propres codes binaires) :

mySwitch.send("000101010101000101010101");

Schémas de l’expéditeur

Après avoir téléchargé le croquis sur votre carte Arduino, assemblez ce circuit :

1642125606 992 Decodez et envoyez des signaux RF 433 MHz avec Arduino

Vos deux prises doivent s’allumer et s’éteindre en permanence.

Conclusion

J’espère que vous avez trouvé ce guide utile. Si vous aimez cet article, vous aimerez probablement mes prochains, alors assurez-vous de vous abonner au blog RNT.

Vous pouvez utiliser les concepts appris dans ce tutoriel avec votre ESP8266 ou ESP32.

Merci d’avoir lu.