Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente | |||
projets:laisonsansfil [02/03/2017 18:11] Vincent Roudaut |
projets:laisonsansfil [09/03/2017 17:54] (Version actuelle) Vincent Roudaut |
||
---|---|---|---|
Ligne 14: | Ligne 14: | ||
== Tutorial de montage == | == Tutorial de montage == | ||
* https://www.carnetdumaker.net/articles/communiquer-sans-fil-en-433mhz-avec-la-bibliotheque-virtualwire-et-une-carte-arduino-genuino/ | * https://www.carnetdumaker.net/articles/communiquer-sans-fil-en-433mhz-avec-la-bibliotheque-virtualwire-et-une-carte-arduino-genuino/ | ||
+ | |||
+ | == Sketch réception == | ||
+ | <code> | ||
+ | /** | ||
+ | * Exemple de code pour la bibliothèque VirtualWire – Serveur d'envoi de texte | ||
+ | */ | ||
+ | |||
+ | #include <VirtualWire.h> | ||
+ | |||
+ | 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 | ||
+ | } | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | == Sketch émission == | ||
+ | <code> | ||
+ | /** | ||
+ | * Exemple de code pour la bibliothèque VirtualWire – Client d'envoi de texte | ||
+ | */ | ||
+ | |||
+ | #include <VirtualWire.h> | ||
+ | |||
+ | 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); | ||
+ | } | ||
+ | </code> |