E/R 434 MHz - Envoie de variable

Informations et questions sur les composants tiers de la boutique (émetteur/récepteur RF, capteurs...)

E/R 434 MHz - Envoie de variable

Message non lude chef chaudard » Sam 5 Mai 2012 17:25

Bonjour,

J'ai besoin d'un bon coup de main pour les émetteurs/ récepteurs car ça dépasse de loin mes compétences :oops:

Ce que je souhaite faire :

Réaliser un boitier avec un arduino mini + Emetteur ss fil + un capteur de température DS18B20 et un capteur de luminosité (photo résistif)

J'ai réussi avec le tuto à afficher le message. Maintenant, je souhaite envoyer les valeurs de luminosité dans un premier temps puis la température. J’expérimente le tout sur une arduino uno pour me simplifier la vie.

J'ai du mal à comprendre les codes utilisés.

Pour le moment j'utilise le code (code trouvé au fil de mes recherches) suivant pour l'emetteur

Code: Tout sélectionner
   #include <VirtualWire.h> // Vous devez télécharger et installer la librairie VirtualWire.h dans votre dossier "/libraries" !
uint8_t buf[2];
    void setup()
    {
        vw_setup(2000);                // Bits par seconde (vous pouvez le modifier mais cela modifiera la portée). Voir la documentation de la librairie VirtualWire.
        vw_set_tx_pin(3);
 Serial.begin(9600);        // La broche 3 sera utilisée pour transmettre la DATA, vous pouvez changez de broche si vous le désirez.
    }

    void loop()
    {
     int lightLevel = analogRead(0);
     buf[0] = lightLevel;
     Serial.println(lightLevel);
                  // C'est le message à envoyer.
       vw_send(buf, 1);
       vw_wait_tx();                                          // On attend que le message complet soit envoyé.
       delay(1000);                                              // Très important sinon cela peut brouiller d'autres appareils !
    }


et ce code la pour le récepteur

Code: Tout sélectionner
     #include <VirtualWire.h> // Vous devez télécharger et installer la librairie VirtualWire.h dans votre dossier "/libraries" !

    void setup()
    {
       Serial.begin(9600);    // On initialise "le serial monitor", j'ai laissé 9600 bauds ici car c'est la valeur par défaut mais vous pouvez la modifier. Attention à bien mettre la même valeur dans votre Serial Monitor et dans votre programme.
        vw_setup(2000);                 // Bits par seconde (vous pouvez le modifier mais cela modifiera la portée). Voir la documentation de la librairie VirtualWire.
        vw_set_rx_pin(5);             // C'est sur cette broche que l'on reliera les broches DATA du récepteur, vous pouvez changez de broche si vous le désirez.
        vw_rx_start();                    // On démarre le récepteur.
    }

    void loop()
    {
        uint8_t buf[VW_MAX_MESSAGE_LEN];
        uint8_t buflen = VW_MAX_MESSAGE_LEN;

        if (vw_wait_rx_max(200))
       if (vw_get_message(buf, &buflen)) {
         Serial.print(buf[0]);
Serial.print(" ");
      //   analogWrite(11, buf[1]);
       }
    }


Je récupère bien une valeur mais elle est fausse par rapport à ce que me donne le serial de l'emetteur. Pour 800 j'ai 600 par exemple.

J'ose pas attaquer le capteur de température car jusqu'à présent c'est de la bidouille et je ne comprends pas des parties de codes.

Si vous pouvez m'apporter vos lumières ;)
chef chaudard
 
Messages: 45
Inscription: Sam 31 Mar 2012 18:44
Localisation: IDF - TAVERNY

Re: E/R 434 MHz - Envoie de variable

Message non lude chef chaudard » Sam 5 Mai 2012 17:56

Je me suis quand même lancé pour le capteur de température. A ma grande surprise ca marche. J'ai pris le tuto du capteur et j'ai juste remplace dans le code émetteur la variable "lightLevel" par "celsius".

La température s'affiche par contre sans virgule.

Bref tout ceci c'est de la chance et j'aimerais bien maitriser un peu plus l'envoie de donner et comprendre ce qui ne va pas par exemple pour mon capteur de luminosité.
chef chaudard
 
Messages: 45
Inscription: Sam 31 Mar 2012 18:44
Localisation: IDF - TAVERNY

Re: E/R 434 MHz - Envoie de variable

Message non lude caco74 » Mar 8 Mai 2012 20:22

Salut

l'utilisation de buf[1] doit te limiter à l'envoi de deux chiffres.

modifie celui ci et ca devrait etre bon.
De plus tu declare
Code: Tout sélectionner
int lightLevel = analogRead(0);
Nombre entier !
caco74
 
Messages: 52
Inscription: Sam 7 Mai 2011 19:09


Retourner vers Composants tiers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité