Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
projets:laisonsansfil [02/03/2017 17:39]
Vincent Roudaut
projets:laisonsansfil [09/03/2017 17:54] (Version actuelle)
Vincent Roudaut
Ligne 1: Ligne 1:
-====== ​Laison ​Sans Fil avec module 433 MHz ======+====== ​Liaison ​Sans Fil avec module 433 MHz ======
  
  
Ligne 5: Ligne 5:
  
  
-Bibliothèques sans fil interessantes :+== Bibliothèques sans fil interessantes : == 
   * https://​github.com/​sui77/​rc-switch   * https://​github.com/​sui77/​rc-switch
   * https://​github.com/​ninjablocks/​433Utils   * 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/​RadioHead/ ​  ​(supporte plein de protocoles, un peu lourde pour arduino UNO)
   * http://​www.airspayce.com/​mikem/​arduino/​VirtualWire/ ​ (la plus simple pour une 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 ==
 +<​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>​