FM 433 Mhz

Bonjour,

Après avoir suivi le tuto de Skywodd suivant : [Tutoriel] Arduino et émetteur/récepteur 433MHz (VirtualWire) | Skyduino - Le DIY à la française

J'ai acheté les mêmes modules FM.

Le problème : mon récepteur ne recois pas le message.. (Le code est le même que sur le tuto)

Mon montage : http://www.hostingpics.net/viewer.php?id=370768IMG20130516162332.jpg

http://www.hostingpics.net/viewer.php?id=681374IMG20130516162339.jpg

(les photos ne passaient pas en pièce jointe)

Pour la photo avec la carte verte --> Les pins sont ceux utilisé sur le tuto.. (comme pour le recepteur aussi..)

Merci de votre aide

Bonjour,

Vu que le code est le même ça laisse plusieurs hypothèses :

  • problème hardware
  • problème avec la librairie (j'ai comme l'impression que c'est ça)

-> Quelle version de la librairie utilises-tu ?
-> Quelle version de l'ide arduino ?
-> Est tu sûr de la taille de tes antennes ?
-> Est tu sûr de ton câblage ?

Essaye mon code peut etre ? je vien de le faire il y a 4 jours ( si problème de libraire )

Tx

#include "VirtualWire.h"

char *msg;
char incomingByte;

  void setup() {
    Serial.begin(9600);
    Serial.println("Initializing radio transmitter..");
    vw_setup(2000);
    vw_set_tx_pin(12);
    checkTx();
    delay(200);
    Serial.println("done");
  }
  
  void loop() {
    if (Serial.available() > 0) {
      incomingByte = Serial.read();
    switch(incomingByte) {
        
        case 'F':
          msg = "Forward" ;
          vw_send((uint8_t *)msg, strlen(msg));
          checkTx();
          break;
        
        case 'B':
           msg = "Backward";
           vw_send((uint8_t *)msg, strlen(msg));
           checkTx();
           break;
        
        case 'L':
            msg = "Left";
            vw_send((uint8_t *)msg, strlen(msg));
            checkTx();
            break; 
      }
    }
    Serial.println(incomingByte);
    delay(200);
  }
  

   void checkTx() {
    if (vx_tx_active()) {
        Serial.println("Tx is active"); }
    else
        Serial.println("Tx is not active");
        
  }

Rx

#include "VirtualWire.h"

  void setup() {
    Serial.begin(9600);
    Serial.println("Initializing radio receiver..");
    vw_setup(2000);
    vw_set_rx_pin(2);
    vw_rx_start();
    delay(500);
    Serial.println("done");
  }
  
  void loop() {
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
      if (vw_get_message(buf, &buflen)) {
        int i; 
        Serial.print("I receive : ");
        for (i=0; i<buflen; i++) {
          Serial.write(buf[i]);
        }
    Serial.println(" ");
      }
  }

skywodd:
Bonjour,

Vu que le code est le même ça laisse plusieurs hypothèses :

  • problème hardware
  • problème avec la librairie (j'ai comme l'impression que c'est ça)

-> Quelle version de la librairie utilises-tu ?
-> Quelle version de l'ide arduino ?
-> Est tu sûr de la taille de tes antennes ?
-> Est tu sûr de ton câblage ?

La lib c'est la 1.5 (prise ici : VirtualWire Library, for very cheap wireless communication)
Version 0023 de l'ide
la taille c'est du 16.5cm
Et le câblage, j'ai bien suivi ton tuto et verifier plusieurs fois..

-Standby:
Essaye mon code peut etre ? je vien de le faire il y a 4 jours ( si problème de libraire )

Tx

#include "VirtualWire.h"

char *msg;
char incomingByte;

void setup() {
    Serial.begin(9600);
    Serial.println("Initializing radio transmitter..");
    vw_setup(2000);
    vw_set_tx_pin(12);
    checkTx();
    delay(200);
    Serial.println("done");
  }
 
  void loop() {
    if (Serial.available() > 0) {
      incomingByte = Serial.read();
    switch(incomingByte) {
       
        case 'F':
          msg = "Forward" ;
          vw_send((uint8_t *)msg, strlen(msg));
          checkTx();
          break;
       
        case 'B':
           msg = "Backward";
           vw_send((uint8_t *)msg, strlen(msg));
           checkTx();
           break;
       
        case 'L':
            msg = "Left";
            vw_send((uint8_t *)msg, strlen(msg));
            checkTx();
            break;
      }
    }
    Serial.println(incomingByte);
    delay(200);
  }

void checkTx() {
    if (vx_tx_active()) {
        Serial.println("Tx is active"); }
    else
        Serial.println("Tx is not active");
       
  }




Rx



#include "VirtualWire.h"

void setup() {
    Serial.begin(9600);
    Serial.println("Initializing radio receiver..");
    vw_setup(2000);
    vw_set_rx_pin(2);
    vw_rx_start();
    delay(500);
    Serial.println("done");
  }
 
  void loop() {
    uint8_t buf[VW_MAX_MESSAGE_LEN];
    uint8_t buflen = VW_MAX_MESSAGE_LEN;
      if (vw_get_message(buf, &buflen)) {
        int i;
        Serial.print("I receive : ");
        for (i=0; i<buflen; i++) {
          Serial.write(buf[i]);
        }
    Serial.println(" ");
      }
  }

Merci du code je testerai Mardi !
Il faut toujours rester sur un IDE arduino antérieur ?

nathan30:
Il faut toujours rester sur un IDE arduino antérieur ?

Théoriquement non depuis la version 1.12 de VirtualWire, mon tuto ce fait vieux il faudrait que je le rafraichisse un peu.

skywodd:

nathan30:
Il faut toujours rester sur un IDE arduino antérieur ?

Théorique plus depuis la version 1.2 de VirtualWire, mon tuto ce fait vieux il faudrait que je le rafraichisse un peu.

J'ai pas trop compris ton message..

Théoriquement* je pense

Et il parle de la version 1.12 et non 1.2
Il y a eu beaucoup de mises à jour depuis son tuto, tu as les changelogs ici : http://www.airspayce.com/mikem/arduino/

Donc normalement, tu dois pouvoir utiliser la dernière version de VirtualWire et de l'IDE

(je ne fais de deviner, je n'ai pas encore reçu mon module 433 Mhz donc je n'ai pas encore d’expérience sur ce sujet)

Viproz:
Théoriquement* je pense
Et il parle de la version 1.12 et non 1.2

Oui j'ai foiré ma correction d'orthographe :sweat_smile:
Et effectivement c'est bien depuis la 1.12 et non 1.2 :grin:

Viproz:
Il y a eu beaucoup de mises à jour depuis son tuto, tu as les changelogs ici : http://www.airspayce.com/mikem/arduino/

Pas tant que ça, les changements en question sont principalement des mises à jour de compatibilité et des améliorations des boucles de traitement.
D'un point de vue utilisateur il n'y as eu aucun changement dans les fonctions :wink:

Viproz:
Donc normalement, tu dois pouvoir utiliser la dernière version de VirtualWire et de l'IDE

Oui tu peut sans problème maintenant.

Donc je peux utiliser sans soucis Arduino v1.0.4 ??

skywodd:

Viproz:
Donc normalement, tu dois pouvoir utiliser la dernière version de VirtualWire et de l'IDE

Oui tu peut sans problème maintenant.

Comme on l'a dit, oui

D'accord merci

Sinon, mon problème a des chances de venir d'où ?

nathan30:
Sinon, mon problème a des chances de venir d'où ?

Je met en doute la dernière version de la librairie.
Ça fait déjà 3 personnes qui me disent qu'un code d'exemple comme le mien ne marche pas en réception, de même que l'exemple "Ping" (si tu peut essaye le tient).

Tu me conseil donc de partir sur quelle version de la librairie ?

nathan30:
Tu me conseil donc de partir sur quelle version de la librairie ?

La dernière version avec l'exemple ping pour tester.
Sinon la version juste avant celle actuelle.

J'peux donc tester la 1.15 ?

Et la commande ping je la test comment ?

nathan30:
J'peux donc tester la 1.15 ?

Oui.

nathan30:
Et la commande ping je la test comment ?

Tu envois l'exemple "client" dans une carte et "server" dans l'autre.
Ensuite tu ouvres deux terminaux série et tu regardes ce qui ce passe.

Ok merci je test sa demain ! : )

Sinon les branchements sont bon tu penses ?

Et juste, je trouve où la version 1.15 avec le .h, .cpp + les exemples ?..

nathan30:
Et juste, je trouve où la version 1.15 avec le .h, .cpp + les exemples ?..

http://www.airspayce.com/mikem/arduino/VirtualWire/VirtualWire-1.15.zip