====== Liaison Sans Fil avec module 433 MHz ====== * Nous utiliserons : http://arduinobasics.blogspot.fr/2014/06/433-mhz-rf-module-with-arduino-tutorial.html == Bibliothèques sans fil interessantes : == * https://github.com/sui77/rc-switch * https://github.com/ninjablocks/433Utils * http://www.airspayce.com/mikem/arduino/RadioHead/ (supporte plein de protocoles, un peu lourde pour arduino UNO) * http://www.airspayce.com/mikem/arduino/VirtualWire/ (la plus simple pour une UNO) == Tutorial de montage == * https://www.carnetdumaker.net/articles/communiquer-sans-fil-en-433mhz-avec-la-bibliotheque-virtualwire-et-une-carte-arduino-genuino/ == Sketch réception == /** * Exemple de code pour la bibliothèque VirtualWire – Serveur d'envoi de texte */ #include void setup() { Serial.begin(9600); // Initialisation de la bibliothèque VirtualWire // Vous pouvez changez les broches RX/TX/PTT avant vw_setup() si nécessaire vw_setup(2000); vw_rx_start(); // On peut maintenant recevoir des messages Serial.println("Go !"); } void loop() { byte message[VW_MAX_MESSAGE_LEN]; byte taille_message = VW_MAX_MESSAGE_LEN; // N.B. La constante VW_MAX_MESSAGE_LEN est fournie par la lib VirtualWire /* La variable "taille_message" doit impérativement être remise à la taille du buffer avant de pouvoir recevoir un message. Le plus simple est d'utiliser une variable locale pour ne pas avoir à réassigner la valeur à chaque début de loop(). */ // On attend de recevoir un message vw_wait_rx(); if (vw_get_message(message, &taille_message)) { // On copie le message, qu'il soit corrompu ou non Serial.println((char*) message); // Affiche le message } } == Sketch émission == /** * Exemple de code pour la bibliothèque VirtualWire – Client d'envoi de texte */ #include void setup() { Serial.begin(9600); // Initialisation de la bibliothèque VirtualWire // Vous pouvez changez les broches RX/TX/PTT avant vw_setup() si nécessaire vw_setup(2000); Serial.println("Go !"); } void loop() { /* byte message[VW_MAX_MESSAGE_LEN] = {'b','i','p',' ','b','i','p','!'}; // N.B. La constante VW_MAX_MESSAGE_LEN est fournie par la lib VirtualWire // Lit un message de maximum 26 caractères depuis le port série int len = Serial.readBytesUntil('\n', (char*) message, VW_MAX_MESSAGE_LEN - 1); if (!len) { return; // Pas de message } //int len = sizeof(message); message[len] = '\0'; // Ferme la chaine de caractères */ vw_send("hello\0", 6); // On envoie le message //vw_send(message, len + 1); // On envoie le message vw_wait_tx(); // On attend la fin de l'envoi //Serial.println("sending!" + message); delay(300); }