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.
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
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é :
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".
// 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
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.
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.
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*);*_
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.