[TUTORIEL] Émetteur - Récepteur 434MHz

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

[TUTORIEL] Émetteur - Récepteur 434MHz

Message non lude SaW3r » Lun 16 Jan 2012 15:01

Bonjour, je me présente, j'ai 20 ans, je suis étudiant en électronique et par la même occasion passionné dans ce domaine ! J'ai connus le site de ce groupe qu'est Snootlab il y a environ 6 mois lorsque j'ai fait l'acquisition d'une carte Arduino Duemilanove (car j'en avais marre d'utiliser celles du lycée lol) et je suis tout de suite tombé sous le charme. C'est pourquoi j'ai décidé de réaliser ce tutoriel (car il n'était pas déjà fait) espérant en aider certains ! Je reprend le "style" des sujets d'explications de Snootlab, j'espères que ça ne dérange pas ^^




[INTRODUCTION]
Image0.jpg
Couple émetteur récepteur
Image0.jpg (24.63 Kio) Vu 4895 fois

Vous venez d'acheter le couple d'émetteur - récepteur 434MHz ci-dessus présent dans la boutique Snootlab mais vous ne savez pas exactement par ou commencer, vous êtes au bon endroit ! Dans ce tutoriel nous allons voir comment transmettre une information sans fil entre vos montages et avec une portée pouvant aller jusqu'à 150 mètres !




[PRÉSENTATION DES COMPOSANTS]

Commençons tout d'abord par faire une liste des composants qui seront utilisés :

Émetteur RF 434 MHz (x1)
Récepteur RF 434 MHz (x1)
Breadboard (x2)
Fils
La librairie VirtualWire à installer dans le répertoire /libraries

Et pour ce dernier point vous avez le choix entre :
Arduino Uno (x2)
ou
ATmega monté en standalone (x2)

Je n'en dis pas plus ici pour ce qui est des ATmega monté en standalone mais je pourrais vous aider si vous souhaitez réaliser ce type de montage car je ne fais plus que ça (la carte Arduino ne servant qu'a envoyer le programme ou le bootloader).




[MONTAGE]

Voici comment relier les composants entre eux. Le logiciel utilisé ici est Fritzing, il permet de donner une vue claire à vos montages, à mi-chemin entre la photo et le schéma électronique. Commençons par l'émetteur :

Image 1.jpg
Montage émetteur
Image 1.jpg (66.77 Kio) Vu 4895 fois

Voici la documentation constructeur de cet émetteur : http://snootlab.com/attachment.php?id_attachment=63

On peut alimenter l'émetteur de 3VDC à 9VDC, plus l'alimentation sera élevée et plus la portée sera accrue. Dans notre cas les 5VDC délivrer par la carte Arduino suffiront. En ce qui concerne l'antenne, un simple fil de 17cm suffira.


Et maintenant voyons le schéma de câblage du récepteur ainsi que sa carte Arduino :

Image2.jpg
Montage récepteur
Image2.jpg (68.13 Kio) Vu 4895 fois

Voici la documentation constructeur de ce récepteur : http://snootlab.com/attachment.php?id_attachment=62

En ce qui concerne l'antenne, un fil de 17cm tout comme pour l'émetteur fera l'affaire.


[CODES]

Le code à uploader dans la carte Arduino ou l'émetteur est branché :
Code: Tout sélectionner
#include <VirtualWire.h> // Vous devez télécharger et installer la librairie VirtualWire.h dans votre dossier "/libraries" !

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);             // La broche 3 sera utilisée pour transmettre la DATA, vous pouvez changez de broche si vous le désirez.
}

void loop()
{
   const char *msg = "Snootlab";                   // C'est le message à envoyer.
   vw_send((uint8_t *)msg, strlen(msg));
   vw_wait_tx();                                          // On attend que le message complet soit envoyé.
   delay(200);                                              // Très important sinon cela peut brouiller d'autres appareils !
}

Un point à souligner ici est le délais de 200ms, en effet j'ai essayé d'enlever ce délais et tout les autres appareils se trouvant aux alentours et fonctionnant à cette même fréquence (portail automatique, ouverture à distance de voiture, télécommande...) ne fonctionnaient plus car la fréquence était "obstrué" par trop d'informations. C'est comme si tout le monde parlaient en même temps et que, du coup, personne ne se comprenaient.


Voici maintenant le code à uploader dans la carte Arduino ou le récepteur est branché :
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(11);             // 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_get_message(buf, &buflen)) // On test afin de savoir si un message est reçu.
    {
    int i;
     // Un message est reçu.

    for (i = 0; i < buflen; i++)
    {
        Serial.write(buf[i]);  // On affiche le message lettre par lettre. Par exemple buf[4] sera égale à la 5ème lettre du mot envoyé (Snootlab donc "t") car on compte le zéro ici.
        }
    Serial.println(""); // On saute une ligne afin d'avoir plus de clarté.
     }
}

Je vous met le lien vers la documentation de la librairie VirtualWire car vous en aurez surement besoin : http://www.open.com.au/mikem/arduino/VirtualWire.pdf. Vous pourrez ainsi observer le mot envoyé sur la page du Serial Monitor du programme Arduino en sélectionnant la carte ou le récepteur se trouve dans le menu "Tools > Serial Port". J'ai pris l'exemple d'envoyer un mot dans ce tutoriel mais on peut tout aussi bien envoyer une variable par exemple et réaliser une action en fonction de la valeur reçu.




[DÉMONSTRATION]

Pardonnez moi pour mes câbles extrèmements longs et moches et mon bordel mais le principal, c'est que ça fonctionne ! :P
Et puis je ne sais pas vous mais pour ma part j'ai l'impression que électronique rime avec bordel :?



[CONCLUSION]

Et voila, ce tutoriel est terminé mais sachez que vous pouvez aller beaucoup plus loin et réaliser des projets très intéressant. Pour ma part je suis un projet qui consiste à vérifier si le facteur est passé ou pas (autrement dit que la boite aux lettres est pleine) et cela pourrais donc éviter à beaucoup de gens de descendre 9 étages pour rien :)

Mais ce n'est qu'un projet parmi tant d'autre et il y a tellement de choses intéressantes et réalisables, j'espères que vous nous ferez partager tout ça, voila merci d'avoir lu mon tutoriel et je serais sur le forum si vous avez des questions.
Dernière édition par SaW3r le Sam 19 Mai 2012 15:55, édité 10 fois.
SaW3r
 
Messages: 58
Inscription: Sam 24 Déc 2011 12:13
Localisation: Paris

Re: [TUTORIEL] Émetteur - Récepteur 434MHz

Message non lude Lionel » Mer 18 Jan 2012 10:12

Merci beaucoup pour votre contribution !
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse


Retourner vers Composants tiers

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

cron