Pages: [1]   Go Down
Author Topic: [Résolu] émetteur/récepteur 433MHz  (Read 1468 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut salut :=)

J'ai un petit projet HF en cours et je me suis donc inspiré du super tuto de Skywodd ( grand merci à toi tes tutos sont géniaux !)

Donc pas de soucis pour envoyé des messages avec le sketch du tuto mais cependant aprés modification ça capote un peu smiley-sad

Voici les morceaux de mon code qui sont utiles :

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

Ici je chnage la pin d’émission car je suis sur une méga avec Ethernet Shield  
Quote
Serial.begin(115200);
vw_set_tx_pin(18); // on change la pin TX
vw_setup(5000);

Voici ici le code principal, alors pour info je souhaite envoyé un message depuis une page web.
L'envoie du code semble bien se passé mais quelques fois ça capote smiley-sad Alors je me demande si ce n'est pas un soucis de buffer ou autre et je sèche dessus depuis 2 jours ...
Quote
     int chaine1Length = chaine1.length(); // calcul de la taille de la chaine1
      char msg[chaine1Length+1];
      PString mystring2(msg, sizeof(msg)); // evite l'accumulation de la chaine  
      
      mystring2.print(chaine1.replace("+", " ")); // les espaces sont des + dans l'url !!!!

    vw_send((uint8_t *)msg, strlen(msg)); // On envoi le message
    vw_wait_tx(); // On attend la fin de l'envoi
    delay(500);
    Serial.println(msg); //debug
    delay(500);
 

Skywodd si tu passes par là, encore merci smiley-wink

Amicalement,
Trigger

[edit] j'édite le poste avant qu'on me pointe du doigt ^^
« Last Edit: January 23, 2012, 04:17:57 pm by trigger » Logged

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

...cependant aprés modification de capote...

Tu aimes le risque toi  smiley-lol smiley-lol
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Offline Offline
Full Member
***
Karma: 0
Posts: 152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Tu aimes le risque toi
C'est pas vraiment drôle de copier/coller du code sans comprendre ^^
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut,

Skywodd si tu passes par là, encore merci smiley-wink
Désolé pour le temps d'attente, j'ai mis 3 bonnes heures avant de venir à bout de tout les nouveaux messages de la journée smiley-sweat

J'ai un petit projet HF en cours et je me suis donc inspiré du super tuto de Skywodd ( grand merci à toi tes tutos sont géniaux !)
Ya pas de quoi smiley-kitty

Voici ici le code principal, alors pour info je souhaite envoyé un message depuis une page web.
L'envoie du code semble bien se passé mais quelques fois ça capote smiley-sad Alors je me demande si ce n'est pas un soucis de buffer ou autre et je sèche dessus depuis 2 jours ...
Je vois pas pourquoi tu utilise PString ?

Code:
   int len = chaine1.length() + 1; // calcul de la taille de la chaine1
    byte *msg = (char*)malloc(len); // normalement sur un µc le malloc c'est caca, mais dés fois faut bien un petit malloc ^^
    if(msg == NULL)
      Serial.println("Need Ram !");

    chaine1 = chaine1.replace("+", " ")
    chaine1.getBytes(msg, len);

    vw_send(msg, len); // On envoi le message
    vw_wait_tx(); // On attend la fin de l'envoi

    free(msg);
    delay(500);
 
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Forum Moderator
Geneva
Offline Offline
Faraday Member
*****
Karma: 30
Posts: 3231
Yoplait... le pt'it suisse
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Tu aimes le risque toi
C'est pas vraiment drôle de copier/coller du code sans comprendre ^^

Je parlais de "capote" modifiée  smiley-lol
Logged

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

France
Offline Offline
God Member
*****
Karma: 4
Posts: 972
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Je parlais de "capote" modifiée  smiley-lol
Rien n'échappe donc au hacking !
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Encore une fois merci Skywodd, je me suis permis de modifier le sketch que tu as donné car il semblait avoir un conflit de type, voila le code que j'utilise :

Quote
       chaine1 = maChaineConcat.substring(firstEgal+1,placeBlanc); // on extrait la chaine1
    int chaine1Length = chaine1.length()+1; // calcul de la taille de la chaine1   
   
    byte *msg = (byte*)malloc(chaine1Length); // normalement sur un µc le malloc c'est caca, mais dés fois faut bien un petit malloc ^^
    if(msg == NULL){
      Serial.println("Need Ram !");
    }
    chaine1 = chaine1.replace("+", " ");
    chaine1.getBytes(msg, chaine1Length);

    vw_send(msg, chaine1Length); // On envoi le message
    vw_wait_tx(); // On attend la fin de l'envoi

    free(msg);
    delay(500);

Cependant je me retrouve avec le même problème qu'au début smiley-sad
Je reçois bien une tram cependant elle est incomplète, dans mon cas je reçois "Sal" ou "Salu" au lieu de "Salut"

NB : L’émetteur et le récepteur son cote à cote.
       Comment savoir si le soucis se trouve à l'émission ou à la réception ?
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Encore une fois merci Skywodd, je me suis permis de modifier le sketch que tu as donné car il semblait avoir un conflit de type, voila le code que j'utilise :
Oups! Oui j'avais mis un char* au début puis âpres j'ai réfléchi et je l'ai modifier en byte ... en oubliant le malloc() smiley-red

Cependant je me retrouve avec le même problème qu'au début smiley-sad
Je reçois bien une tram cependant elle est incomplète, dans mon cas je reçois "Sal" ou "Salu" au lieu de "Salut"
Je pencherai pour un probléme de réception mais je peut pas en être sur ... si tu recevais tout le temps "Salu" ça pourrait être un probléme à l'émission mais tu reçois aussi "Sal" donc ... mystère ...

NB : L’émetteur et le récepteur son cote à cote.
       Comment savoir si le soucis se trouve à l'émission ou à la réception ?
Fait une boucle for qui affiche avec Serial le tableau reçu en hexa histoire de voir si tu perd de l'info à la réception ou à l'émission.
Code:
for(int i = 0 ; i < chaine1Length ; i++) {
  Serial.print(msg[i], HEX);
  Serial.print(' ');
}
Serial.println();
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut salut,

De retour après un week end plutôt chargé ( porte ouverte de l'école oblige ^^) je suis de retour avec de bien mauvaises nouvelles je tourne toujours en rond ...

L'envoie semble fonctionner, cependant est il possible que je flood la fréquence ?
Je ne sais vraiment plus ou chercher ...

Des suggestions ?
Amicalement,
Trigger

[EDIT] : Pour ce qui est de la réception j'utilise le code de ton tuto smiley-wink
« Last Edit: January 23, 2012, 03:57:20 pm by trigger » Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok l'envoi fonctionne, et niveau réception ?

Il se peut aussi que tu soit parasité par une systéme travaillant sur la même fréquence, c'est un des risques du 433MHz "low cost".
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Alors petite piste, cela semble marcher smiley

Il suffit de redéfinir le tableau ainsi que sa taille en rajoutant :
Quote
uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

dans le loop avec un petit
Quote
delay(1);
pour le faire respirer en fin de boucle ^^

Cela fait 5 bonne minutes que le dialogue ce fait sans soucis avec une chaine de 10 caractères smiley

Je pense pouvoir mettre un résolu, encore une fois grace au membre de ce super forum smiley
Amicalement,
trigger


NB : Et tes partiels skywodd ça a roulé ?
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Cela fait 5 bonne minutes que le dialogue ce fait sans soucis avec une chaine de 10 caractères smiley

Je pense pouvoir mettre un résolu, encore une fois grace au membre de ce super forum smiley
C'était qu'un probléme de delay en fin de compte alors ? Enfin bref, ça marche donc tant mieux smiley-mr-green

NB : Et tes partiels skywodd ça a roulé ?
Ouai, j'attends les résultats, sur certaines matière ça risque d'être comique  smiley-mr-green
(anglais -> j'ai fait un lapsus à la pedobear smiley-sweat, et pour le clou du spectacle, en organisation il y avait une question sur pourquoi une tache xy était seul à s'exécuter, j'ai rien compris, ma réponse : "Elle est forever alone.")
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ouai en tous cas c'est bien grâce à toi ^^

Cependant connais tu une solution pour convertir le tableau buf[] en String ?

Le but de mon projet est en fait d'envoyer une chaine du style
Quote
01?21
pour ensuite extraire les infos.

Dans mon exemple je souhaiterai que l'Arduino qui portera le numéro 01 passe la sorite portant le numéro 2 à l'état haut.
Il se trouve que j'ai déjà fait un petit sketch similaire pour afficher une chaine venant d'une URL pour l'afficher sur un lcd mais cette chaine était en String et non sous forme de tableau ...

Existe t il une solution pour palier le soucis de type ?

Tkt je partage les moments de solitude en anglais et ça me fait plaisir de voir que je ne suis pas seul ^^

Amicalement,
Trigger
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

De byte[] à String je sait pas, mais de byte[] à char[] il suffit de faire :
byte variable[10];
char* str = (char*)variable;
et ajouter un '\0' en fin des données pour "transformer" le char* en une chaine de caractéres bien formée.
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Full Member
***
Karma: 0
Posts: 152
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Encore merci pour tes conseils smiley

Une fois de plus tout roule, thx Skywodd tu es un chef !!!
Logged

Pages: [1]   Go Up
Jump to: