Emetteur et récepteur RF 434

Bonjour,

J'ai acheté chez Robotshop un module Émetteur récepteur RF 434, j'ai effectué le montage et copié le code du livre "La boite à outils Arduino" chapitre 11.

Je ne reçois aucun message, de plus si je débranche la pin 12 le code partie émission continue à fonctionner???, j'ai fait plusieurs tests en modifiant le code etc...

Comment puis-je tester l'émetteur et le récepteur (je n'ai pas d'oscilloscope), avez-vous du code me permettant de savoir si mes modules fonctionnent correctement et s'ils sont bien branchés.

Concernant la partie développement je n'ai pas de problème (40 ans d'informatique de Gestion) , par contre pour la partie électronique je suis novice.

Je suis un senior (65 ans) passionné depuis peu par la robotique, merci pour vos réponses.

Cordialement
René

Bonjour,
Ne pourrais-tu pas nous donner un bout de code car s'il faut acheter le bouquin pour t'aider, tu n'auras pas beaucoup de réponse.

Bonjour Jluc,

Merci pour ta réponse ci-dessous les codes

Cordialement
René

Code émission:

#include <VirtualWire.h> // inclusion de la librairie VirtualWire

const char *msg = "Arduino"; // Tableau qui contient notre message

void setup() // Fonction setup()
{
Serial.begin(9600); // Initialisation du port série pour avoir un retour sur le serial monitor
Serial.println("Tuto VirtualWire"); // Petit message de bienvenue

vw_setup(2000); // initialisation de la librairie VirtualWire à 2000 bauds (note: je n'utilise pas la broche PTT)
}

void loop() // Fonction loop()
{
Serial.print("TX ... "); // On signale le début de l'envoi
vw_send((uint8_t *)msg, strlen(msg)); // On envoie le message
vw_wait_tx(); // On attend la fin de l'envoi
Serial.println("Done !"); // On signal la fin de l'envoi
delay(1000); // Et on attend 1s pour pas flooder
}

Code Réception
/*
SimpleReceive
This sketch displays text strings received using VirtualWire
Connect the Receiver data pin to Arduino pin 11
*/
#include <VirtualWire.h>

byte message[VW_MAX_MESSAGE_LEN]; // a buffer to hold the incoming messages
byte msgLength = VW_MAX_MESSAGE_LEN; // the size of the message

void setup()
{
Serial.begin(9600);
Serial.println("Ready");

// Initialize the IO and ISR
vw_setup(2000); // Bits per sec
vw_rx_start(); // Start the receiver
}

void loop()
{
if (vw_get_message(message, &msgLength)) // Non-blocking
{
Serial.print("Got: ");
for (int i = 0; i < msgLength; i++)
{
Serial.write(message*);*

  • }*
  • Serial.println();*
  • }*
    }

Rombi:
Comment puis-je tester l'émetteur et le récepteur (je n'ai pas d'oscilloscope), avez-vous du code me permettant de savoir si mes modules fonctionnent correctement et s'ils sont bien branchés.

Bonjour
un petit truc symple, facile à fabriquer et tres utile pour tester :
un petit HP (ou ecouteur de telephone), une resistance de 330 ... 1K , une led
dans ton cas ça permet déjà de voir/entendre si il y a de l'activité :

  • en sortie de l'arduino (vers l'emetteur)
  • en sortie data du recepteur

Bonjour Artouste,

Merci pour ta réponse, si j'ai bien compris(nul en électronique) je branche la résistance sur la sortie Arduino qui émet ou qui reçoit.

Pour la led pas de pb

Cordialement
René

Rombi:
Bonjour Artouste,

Merci pour ta réponse, si j'ai bien compris(nul en électronique) je branche la résistance sur la sortie Arduino qui émet ou qui reçoit.

Pour la led pas de pb

Cordialement
René

coté emission :
tu connecte le point signal sur le pin qui va vers le data du module emetteur , tu devrais clairement entendre/voir de l'activité

coté reception :
tu connecte le point signal sur le pin data du module recepteur , tu devrais clairement entendre/voir de l'activité

bien evidemment , ne pas oublier de connecter GND

Merci

Je récupère un HP et je teste, je te tiens au courant.

Cordialement
René

Rombi:
Merci

Je récupère un HP et je teste, je te tiens au courant.

Cordialement
René

tu peux aussi utiliser un casque ecouteur de portable en remplacement du HP
c'est meme qqfois mieux qu'un HP où il faut "tendre l'oreille"

Tant mieux j'ai ce qu'il faut de ce côté!

A+
René

J'ai fait le test avec un HP OK en émission et Réception, donc mes modules semblent fonctionner.

Cordialement
René

Par contre je ne vois toujours rien sur le port série en réception, j'ai viré les 2 If de la section Loop et j'ai une succession des chiffres , rien à voir avec le message envoyé qui doit être "Arduino".

Je patauge

Cordialement
René

Interessant les montages d'essai !

Bonjour,

Au cas où ça pourrait aider les schémas de montage de l’émetteur et du récepteur.

Cordialement

Montage RF434.pdf (476 KB)

Rombi:
Bonjour,

Au cas où ça pourrait aider les schémas de montage de l’émetteur et du récepteur.

Cordialement

bonjour
je te conseille pour debuter et valider la liaison RF de jouer avec les exemples
SendDemo et ReceiveDemo_Simple
de la lib rc-switch

Bonjour

Merci je vais suivre ton conseil et te tiens au courant

Cordialement
René

Bonjour,
Et si ton problème était ça :

// Déclaration des pins Emetteur/Recepteur
vw_set_rx_pin(Rec); // Pin Recepteur
vw_set_tx_pin(Emi); // Pin Emetteur

// Initialisation de l'Emetteur et du Recepteur 433Mhz
vw_setup(1200); // Bits par sec (bauds) => pas de vitesse trop importante pour tester.
vw_rx_start(); // Démarrage du PLL du recepteur

// Lors d'un envoi :
vw_rx_stop(); // Arrêt temporaire de la reception
// Ici ton code
vw_send((uint8_t *)msg, strlen(msg)); // Le message est placé dans le buffer et envoyé
vw_wait_tx(); // Attend que tout soit envoyé
vw_rx_start(); // Redémarrage des receptions

Si cela peut t'aider, sinon j'ai peut-être d'autres choses qui le pourrait
@+ JLuc

Bonjour,

Pour les pin émetteur et récepteur VirtualWire prend par défaut 12 pour émetteur et 11 pour le récepteur.

Désolé mais je ne suis pas sûr d'avoir compris ce que tu me dis

le code ci-dessous doit être mis dans la partie code émetteur???

// Lors d'un envoi :
vw_rx_stop(); // Arrêt temporaire de la reception
// Ici ton code
vw_send((uint8_t *)msg, strlen(msg)); // Le message est placé dans le buffer et envoyé
vw_wait_tx(); // Attend que tout soit envoyé
vw_rx_start(); // Redémarrage des receptions

J'ai essayé toujours pas de réception alors que mon HP émet bien un son à chaque réception.

Dans tous les cas merci pour ta réponse.

René

Bonjour,
Lorsque j'ai essayé des émetteurs récepteurs 433 j'ai utilisé dans le programme une fonction qui envoi ce que je veux et une fonction qui reçoit. Ça je pense qu'il en est de même pour toi, alors ce que j'ai voulus dire, c'est que lorsque que tu envois, il faut couper la réception sinon tu vas écouter ce qui est envoyé. Mon système disposant des 2 (émetteur/récepteur) j'aurai été un peu embêté... Si ton système est comme cela, tu dois suivre cette façon de faire sinon ça ne marche pas parce que l’émission est sans cesse interrompue par la réception en local. Ce ne sont que des pistes. Attention aussi aux interruptions, en fonction de l'arduino utilisé, toutes les pattes ne sont pas interruptibles.

Ci-dessous mon code et ce que j'obtiens

#include <VirtualWire.h>
#define ledPin 13

void setup()
{
// Initialize the IO and ISR
vw_setup(1200); // Bits per sec
vw_rx_start();
Serial.begin(9600);
}

void loop()
{
byte message[VW_MAX_MESSAGE_LEN]; // a buffer to hold the incoming messages
byte msgLength = VW_MAX_MESSAGE_LEN; // the size of the message

send("hello");
delay(1000);

//if(
vw_get_message(message, &msgLength); // J'ai enlevé le test sinon j'ai rien
// {
Serial.print("Got: ");
for (int i = 0; i < msgLength; i++)
{
// Serial.write(message*);*
_ Serial.print(message*);*_

* }*
* Serial.println();*
* // }*
}
void send (char *message)
{
* vw_rx_stop();
_
digitalWrite(ledPin, HIGH);_
vw_send((uint8_t )message, strlen(message));
vw_wait_tx(); // Wait until the whole message is gone

* vw_rx_start(); // Redémarrage des receptions*
* digitalWrite(ledPin, LOW);*
}
Résultat des courses:
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216
Got: 115114155717315921531177127253147292052531822492552431791414312119124612615086243239239462082062552551511907187115255266001080640010451312138824502550000351751490824506216

Tu devrai utiliser :

if (vw_have_message()) { // Il y a un message ?
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;
if (vw_get_message(buf, &buflen)) { // Non-bloquant
int i;
for (i = 0; i < buflen; i++) {
msg += ((char)buf*);*

  • }*
  • }*
  • Serial.print(F("Reception : "));*
  • Serial.println(msg);*
    }
    Sinon pour tes chiffres je n'y comprend rien...
    Surtout que c'est toujours les même, bon en même temps c'est toujours le même message que tu envoi.