La radio fréquence 433MHz (RF 433MHz) est très utilisée dans le domaine des transmissions radio que ce soit pour le pilotage à distance ou la transmission de données. On le retrouve dans les télécommandes ou en domotique.
Matériel
- Ordinateur
- Arduino UNO
- Câble USB A Mâle/B Mâle
- Reed Switch (ILS)
Principe de fonctionnement
Le module RF 433 MHz sert à transmettre une information sans fil sur des onde radio . L’ émetteur permet de moduler à haute fréquence des données série externes et de les transmettre par liaison radio au module de réception. Le module est composé d’un émetteur radio APF03 et d’un récepteur APRXB12. Il utilise la modulation ASK (Amplitude Shift Keying) sur une fréquence de 433 MHz.
Les modules radio RF433MHz on une portée de quelques mètre (<5m). Cette portée peut être grandement augmentée avec une source de tension plus élevée et une antenne correctement dimensionnée. En théorie, jusqu’à 100m sans obstacle.
Différents modules de communication sans-fil existent utilisant des protocoles différents (Wifi, LoRa, etc.) ou ayant des performances plus importante (HC-12, nRF24l01, nRF905, etc.) Vérifiez bien les spécifications techniques et les performances du module utilisé.
Schéma
Dans la librairie VirtualWire que nous allons utiliser, les broches utilisées par défaut sont la pin 12 pour la broche «data» du transmetteur et la pin 11 pour la broche «data» du récepteur.
L’affectation des broches peut être différentes selon le code et la librairie utilisée.
Code émetteur
Pour commencer il faut télécharger la librairie VirtualWire en zip, puis dans Arduino, aller dans croquis, inclure une bibliothèque,ajouter la bibliothèque.zip et mettre le dossier.zip correspond. Une fois installer, il faut redémarrer Arduino. Une fois les cartes branchées à votre pc choisir un port différent pour chaque carte.
#include <VirtualWire.h> #define TxPin 12 void setup() { pinMode(13, OUTPUT); pinMode(12, INPUT); Serial.begin(9600); // Debugging only Serial.println("Setup Transmitter"); // Initialise the IO and ISR vw_set_ptt_inverted(true); // Required for DR3100 vw_setup(2000); // Bits per sec } void loop() { const char *msg = "Bonsoir tous le monde"; digitalWrite(13, true); // Flash a light to show transmitting vw_send((uint8_t *)msg, strlen(msg)); vw_wait_tx(); // Wait until the whole message is gone digitalWrite(13, false); delay(200); }
Code récepteur
#include <VirtualWire.h> #define RxPin 11 void setup() { pinMode(13, OUTPUT); pinMode(11, OUTPUT); Serial.begin(9600); // Debugging only Serial.println("Setup Receiver"); vw_set_ptt_inverted(true); // Required for DR3100 vw_setup(2000); // Bits per sec vw_rx_start(); // Start the receiver PLL running } void loop() { uint8_t buf[VW_MAX_MESSAGE_LEN]; uint8_t buflen = VW_MAX_MESSAGE_LEN; if (vw_get_message(buf, &buflen)) // Non-blocking { int i; digitalWrite(13, true); // Flash a light to show received good message // Message with a good checksum received, dump it. Serial.print("From transmitter : "); for (i = 0; i < buflen; i++) { //Serial.print(buf[i], HEX); →sert a afficher les valeurs en héxa Serial.print(char(buf[i])); //Serial.print(" "); } Serial.println(""); digitalWrite(13, false); } }
Il est possible de modifier les broches utilisées à l’aide des fonctions vw_set_rx_pin and vw_set_tx_pin:
//Pour l’émetteur il faut taper vw_set_tx_pin(txPin); //Pour le récepteur il faut taper vw_set_rx_pin(rxPin);
Résultats
Une fois les codes téléversés dans chacun des microcontrôleurs, vous devriez voir le message s’afficher sur le moniteur série du récepteur.
Applications
- Transmission de données à distance
- Pilotage de système à distance