J'ai mis en place une communication sans fil entre deux cartes Arduino Uno via des modules XBee S2C configurés en mode API (AP=1).
Le Problème : Sur la première carte (configurée en routeur), j'ai tenté d'envoyer des données à la seconde carte (coordinateur) en utilisant la fonction d'envoi de haut niveau de la bibliothèque XBee.h (ex: sendTxRequest). L'envoi échouait systématiquement, et la donnée n'était pas reçue par le coordinateur (qui utilisait pourtant aussi la bibliothèque XBee.h pour la réception).
La Solution : En contournement, j'ai décidé de construire manuellement la trame API (Frame Type 0x10 pour un TX Request), puis de l'envoyer directement via le port série. En adoptant cette méthode de construction manuelle de la trame, la donnée a été parfaitement reçue par le coordinateur (toujours en utilisant la bibliothèque XBee.h pour la désérialisation).
Question / Objectif : Quel est le meilleur moyen d'expliquer pourquoi la fonction d'envoi de la bibliothèque a échoué alors que l'envoi manuel de la trame API a fonctionné, sachant que la réception par le coordinateur (via la bibliothèque) est, elle, fonctionnelle ?
Puisque la construction manuelle de la trame API a résolu mon problème d'envoi avec l'XBee S2C, cette méthode de contournement est-elle recommandée et fiable pour la mise en place d'un grand réseau maillé de capteurs (plusieurs Routeurs) ?"
Configure the Xbees using Digi XCTU. One as coordinator, the other as router. Same PAN code.
Set up a digital input on the router. Set the router to do periodic sampling (IR)
Initially, you can do this without the Arduinos and just use XCTU to see what's going on.
From memory, the sampling frame is 92.
I don't use the library, but the coordinator Xbee sends serial data to the Arduino (Mega 2560).
You look for the frame start hex code 7E and read the rest of the frame.
This will tell you at least if the Xbees are communicating.
XCTU has lots of tools for checking communications.
If you haven't got one, or two, an Xbee Explorer module (Sparkfun) is useful to have.
Après avoir validé la communication entre mes modules XBee (Coordinateur et Routeur), tous deux configurés en Mode API (1) via XCTU (mêmes PAN ID, Baudrate, Channel), j'ai rencontré une difficulté lors de l'intégration logicielle.
La communication échoue lorsque j'utilise la bibliothèque XBee.h (Andrew Rapp) sur les deux microcontrôleurs.
Étrangement, le transfert de la chaîne 'hello' réussit si le Coordinateur utilise cette même bibliothèque pour la réception, mais que le Routeur envoie le message en construisant manuellement la trame API, sans passer par la librairie.
Mon hypothèse est un problème dans la gestion de l'envoi des trames API par la librairie XBee.h sur le Routeur