connection Xbee avec deux arduino

salut tout
j'ai un problème de communication entre un Xbee et deux arduino (un fais la réception et l'autre la transmission ).
pc ==>Xbee <==>Xbee <==(2 arduino).
-comment connecter les deux arduino pour éviter le blocage de communication
mercii.

Il y a sans des milliers de tutos et articles en ligne sur Xbee et arduino... (voici le premier hit sur Google)

Qu’avez vous essayé et quelle est votre configuration exacte et votre code?

merci pour la réponse.
la simulation marche bien sur proteus,mais en réale le programme bloqué.
le branchement en réalité.

Envoyer des commandes à partir de deux ARDUINOs sur le même XBEE :confused:

Comment gères-tu les conflits ?

  • cela revient à relier deux sorties TX ensemble -> conflit hardware
  • deux ARDUINOs peuvent avoir envie de parler en même temps -> conflit software

Il va falloir expliquer l'intérêt.
Les deux ARDUINOs sont-ils si éloignés l'un de l'autre pour justifier un tel montage ?

@+

temps de boucle insuffisant (<5 ms) pour la transmission (6 variables Int) et la réception (4 variables Int) sur un arduino uno.
est ce que on peut faire ça ?
pc ==>Xbee <==>Xbee <==(2 arduinos,un fais la réception et l'autre la transmission ).

En te fatiguant autant pour fournir les renseignements nécessaires, les intervenants du forum risquent de se fatiguer tout autant à te fournir des réponses.

@+

Perso je zappe. Pas d’implication personnelle du demandeur, attend qu’on fasse le job à sa place.

salut tous .
Je pense que vous n'avez pas compris ma question. :confused:
mon objectif
1-faire la transmission des angles (gyroscope et accelerometer ) de mpu6050.
2- réception la durée d'impulsion pour ESC(pwm).
J'utilise Xbee pour la transmission et la réception :

pc ==>Xbee <==> Xbee (arduino uno).

le probleme:

le temps de boucle de prog (<5ms) insuffisant pour la transmission (6 variables Int) et la réception (4 variables Int) sur un arduino uno, il ne peut pas traiter ces données dans un boucle <5 ms.

proposition :
est ce que on peut faire ça ?
pc ==>Xbee <==>Xbee <==(2 arduinos,un fais la réception et l'autre la transmission ).
si oui comment?
le programme de communication(j'ai effacé la parte de calcule des angles (mpu605) et le pwm pour minimiser le programme)

Merci pour votre attention :wink:

tran_recp.ino (1.24 KB)

Votre image:

Vous avez un ou deux xbee ?? Réponses à la question du post #3 ? (Vous dites « un fais la réception et l'autre la transmission » mais on voit des fils qui se joignent sur Rx)

6 variables int c’est 12 octets
À 115200 bauds on transmets 11520 octets par seconde ou 11.5 octets par milliseconde
ça ne devrait poser aucun soucis

Maintenant j'utilise 2 Xbee.

(Xbee connecté avec pc) < ====>(Xbee connect avec un arduino uno)

le montage proposer :

(Xbee connecté avec pc) < ====>(Xbee connect avec 2 arduino uno) .
voir les images .

montage_real.PNG

Comment vous comptez connecter un Xbee à 2 Arduinos cf la question et explications du post 3?

VOs images

96cf2d9fc84c00c0f47de74678e87ca4b08908a3.png

  • Danc il faut utiliser 2 Xbee avec 2 arduino uno pour éviter conflit hardware ou conflit software

Avez-vous une idée comment configuré ou prog 2 Xbee (End point ) avec 2 arduino uno.

comme suit :

===>(Xbee End point connect avec un arduino uno)

(Xbee(coordinator) connecté avec pc) <==>

<===(Xbee End point connect avec un arduino uno)

Donc il faut utiliser 2 Xbee avec 2 arduino uno pour éviter conflit hardware ou conflit software

Pourquoi ? Sans doute Problème XY

Expliquez votre besoin et vos contraintes

hhh ni problem x ni y.
moi j'ai cherché une solution de mon problem (le temps de boucle de prog (5ms) insuffisant pour la transmission (6 variables Int) et la réception (4 variables Int) sur un arduino uno.)post#3.
la vitesse de CPU insuffisant pour ces tàche. pour eviter ce problame; j'ia partagé le programme sur 2 arduino (un pour la transmission et l'autre la reception ) . il ya deux proposition

1- utiliser un Xbee et deux arduino
2-utiliser deux Xbee et deux arduino

J'ai essayé la 1éme proposition mais toujour il y a un blocage de communication aprés 2s ou 3s.

Je vous ai déjà fait le calcul - envoyer 12 octets (6 int) sur une voie série à 1152000 bauds prends environ 1ms - ça vous en laisse donc 4 pour faire tout le reste et sur un micro à 16Mhz ça vous permet d’exécuter 64000 instructions de base - largement de quoi recevoir aussi 4 int soit 8 octets. La totalité de la communication prendra moins de 2ms, vous en laissant plus de 3ms pour le traitement.

Donc expliquez pourquoi c’est insuffisant...

Si vous voulez vraiment partager un xBee alors il faut un UNO qui va à Tx, un UNO qui va à Rx, éviter que les pins non utilisées soient flottantes (les mettre à GND par exemple) et relier les GND des 3 cartes connectées.

merci pour les aidées et sa patience :wink:

oui,pour envoyer (6 int) sur une voie série à 115200 bauds prends environ 1ms(760 us),mais pour recevoir ( 4 int) plus de 5ms ,Seulement si tu es utilisé d'autre programme .((regarder mon pro).

tu lis ça ?

======
You will notice that the examples here do not use any of these Arduino functions
Serial.parseInt()
Serial.parseFloat()
Serial.readBytes()
Serial.readBytesUntil()

All of these are blocking functions that prevent the Arduino from doing something else until they are satisfied, or until the timeout expires. The examples here do exactly the same job without blocking. That allows the Arduino to do other things while it is waiting for data to arrive

http://forum.arduino.cc/index.php?topic=396450.0
est ce qu'il y a une fonction plus rapide que les autres fonction?

tran_recp.ino (1.31 KB)

Les fonctions que vous mentionnez attendent un timeout à défaut de marqueur de fin de communication ou de connaissance du nombre d’octets à lire.

La fonction available() elle vous dit s’il ya quelque chose à lire et la fonction read() va lire l’octet en question le tout en quelques microsecondes.

Si vous voulez comprendre comment bien écouter le port série vous pouvez jeter un oeil à mon petit tuto sur le sujet

Comment as tu envoyé (6 int) et recevoir (4 int) Dans durée moins de 2ms. (si possible un prog)
comment utuliser la fonction serial read pour recevoire (4 int) mémé temps.
mercii

Y a-t-il une réponse? J-M-L :frowning:

Envoyer 6 octets = utiliser write

Recevoir 4 octets = lire mon tuto sur le port série