Numéro 1 : un seul ne suffit pas
Pour communiquer, il faut être deux. Donc lorsque vous achetez vos modems, pensez à prendre 2 exemplaires, pas un seul.
Cette erreur pourrait paraitre impossible, mais on l’a déjà vu, par exemple lorsqu’on souhaite se connecter à un capteur ZigBee autonome. Commandez donc toujours deux modules radio du même type, afin de vérifier d’abord le bon fonctionnement de votre programme, puis de s’assurer que c’est votre code qui pose problème et pas la radio qui est morte, enfin d’avoir une solution de remplacement si le premier vous laisse tomber.
Numéro 2 : incompatibilité des versions
On vous l’accorde bien volontiers, le protocole ZigBee devrait permettre à tous les modèles de composants de communiquer entre eux.
La réalité est toute autre, notamment à cause de la confusion entre la norme IEEE 802.15.4, le protocole ZigBee plus ou moins bien implémenté, et les tentatives propriétaires.
Chez les amateurs, ce problème est très important car la marque la plus connue, Digi (ex-Maxstream), propose deux séries incompatibles : les Series 1 (802.15.4) et les Series 2 ou 2B (ZigBee). Il y a même des premières versions de la série 2 qui n’étaient pas encore ZigBee mais ZNet... et ces séries (1 et 2) ne peuvent fonctionner ensemble. Par contre, les versions 2 et 2B communiquent ensemble, d’ailleurs 2B est le successeur des Series 2 et va totalement les remplacer (meilleure consommation d’énergie, mode programmable, réapparition du point-à-point sans coordinateur).
Et pour ajouter à la confusion, la gamme de produits dont il est question s’appelle... XBee. Avouez qu’il y a de quoi se faire des noeuds au cerveau quand on débarque dans cette galaxie ;)
Numéro 3 : une pile incomplète
Comme Bluetooth, la norme ZigBee permet différents profils appelés "standards" par l’Alliance ZigBee et tous les constructeurs n’implémentent pas tous les standards dans leur module radio : Home Automation, Remote Control, Smart Energy, mais aussi plus spécialisés comme Health Care (santé), Retail Services (achats) ou 3D Sync (appareillages vidéo 3D)...
Si vous souhaitez ou devez utiliser ces modes de communication "haut niveau" et ne pas implémenter votre propre protocole au-dessus de la couche transport ZigBee, vérifiez bien que toutes les radios de votre réseau ZigBee sans-fil supportent bien le standard souhaité.
Ce problème ne concerne pas les développeurs de robots que nous sommes, mais avec le développement de la domotique programmable et l’apparition de produits certifiés ZigBee (interrupteurs, prises électriques, capteurs domestiques, ...), cette erreur deviendra plus fréquente.
Numéro 4 : mauvaise interface
Pour une communication série (sans utiliser d’entrées/sorties), un modem ZigBee n’a pas beaucoup de connexions : l’alimentation (2 fils), les données (2 fils), voire quelques signaux d’échanges (CTS, RTS, DTR).
Pourtant, des connaissances particulières en électronique sont nécessaires pour réaliser une bonne carte d’interface. Il est donc préférable d’utiliser une carte du commerce quand on débute.
Et c’est là que l’erreur peut être commise : même si on trouve un modem ZigBee peu onéreux (une vingtaine d’euros), on peut rechigner à dépenser le double voire le triple pour une carte d’interface.
Heureusement il existe des modèles assez simples, mais dans ce cas les fonctionnalités sont réduites (USB, alimentation), parfois à l’extrême avec seulement une recopie des signaux sur des connecteurs au pas standard de 2,54 mm.
Numéro 5 : tension trop forte
Rien de spécifique au ZigBee dans cette erreur. Mais il faut le répéter : chaque composant électronique est conçu pour une tension d’alimentation particulière qu’il faut respecter. Et pour les modules les plus récents, la tension "CMOS" de 3,3 volts est répandue, tandis que vos robots ou vos montages peuvent encore utiliser la tension "TTL" de 5 volts.
Il ne faut pas céder à l’impatience, et prendre le temps de choisir un bon circuit de conversion : il existe certaines cartes d’interface qui proposent une conversion 5v à 3.3v, préférez ces modèles.
Ce site faisant la part belle à une certaine carte électronique appelée Arduino, précisons que les deux tensions sont disponibles sur le connecteur du modèle standard. De même les extensions pour module ZigBee de Digi ("shield XBee") possèdent un convertisseur dédié.
Ce qui est valable pour les tensions d’alimentation l’est aussi pour les signaux. En effet, même si on lit parfois que les XBee sont 5V-tolerent, pas la peine de tenter le diable. Cela veut dire que si le signal UART qui sort de votre micro-contrôleur est en 5V (du fait de sa tension d’alimentation), il faut le réduire dans la zone des 3V pour ne pas surcharger inutilement l’entrée du XBee.
Il existe des tas de circuits pour faire de la conversion de niveau bi-directionnelle, nécessaires dans des cas comme l’I2C par exemple. Pour envoyer un signal UART d’un micro 5V vers l’entrée 3VV du XBee on peut faire plus simple avec un banal pont diviseur constitué de deux résistances (3k3 + 1k2 par exemple). Une autre option est de placer une simple diode en série, dirigée vers la pin de sortie du micro. En effet, l’entrée UART du XBee est forcée à l’état haut par défaut, et les signaux de communication sont actif à l’état bas (logique inverse). Donc quand un bit est envoyé par le micro, il passe sa ligne Tx à 0V. Notre diode va donc répercuter cela sur l’entrée du XBee. Et lorsque la sortie du micro est à l’état 1 (et donc à 5V), la diode empêche que cette tension soit appliquée sur l’entrée du XBee. Dans l’autre sens (ie XBee -> micro) pas de précaution particulière, car un signal de 3V3 est vu comme un état 1 en logique TTL. Donc une simple liaison directe suffit ici. Cette solution a été proposée par Eric, qui l’a employée pour des modules capteurs ad’hoc réalisés dans le cadre de ses activités professionnelles.
Numéro 6 : mauvaise manipulation
Là encore, rien de spécifique mais fréquent, surtout avec les XBee. Je pense que c’est le cas avec les autres modems, comme avec tout composant complexe donc plus sensible (GPS, Bluetooth, ...).
Deux possibilités de mauvaise manip’ :
– le débrochage à chaud, vous enlevez un composant sous tension
– les tests de continuité au multimètre
Concernant la première manipulation, on peut lire dans le livre de Rob Faludi qu’il conseille de débrancher le XBee lors de sa reprogrammation, afin de provoquer un "hard reset", redémarrage permettant au bootloader (le chargeur de firmware) de reprendre la main... Je l’ai effectivement constaté avec les modems XBee S2B, avec un message particulier dans la console, mais je ne le conseille pas aux débutants qui risqueraient d’en abuser.
Concernant le second, il peut vous étonner mais c’est vrai : un multimètre en mode "testeur de continuité" envoie une tension importante dans le circuit, ce qui peut provoquer des court-circuits ou des surtensions et griller les composants. Utilisez-le toujours avec votre carte hors tension et si possible en retirant les composants actifs. La plupart des débutants l’ignorent malheureusement.
Numéro 7 : débit trop élevé
Une autre erreur, cette fois-ci à la conception : on essaie de faire passer sur un réseau ZigBee des signaux qui ne sont pas prévus pour la bande passante et le débit disponible. Pas de flux vidéo avec un réseau ZigBee !
Certaines applications conçues pour une communication série peuvent également demander un débit trop élevé : si un modem radio supporte de recevoir un débit important (au-dessus de 19200 bps), c’est surtout pour être compatible avec des périphériques série existant, mais le transfert radio utilisera un débit plus faible : la bande passante est limitée, et un envoi trop fréquent d’un nombre d’octets important va saturer la liaison.
Numéro 8 : pas de coordination
Dans les réseaux maillés, il faut un noeud coordinateur. Pour les débutants, il n’est pas aisé de modifier le firmware d’un modem radio pour changer son rôle, et on se retrouve avec un réseau impossible de communiquer.
Heureusement certains modems n’ont pas besoin de modification et réalisent une liaison point-à-point automatiquement.
La lecture de la documentation ou de livres dédiés est donc préconisée.
Numéro 9 : distance mal évaluée
Même si les constructeurs peuvent annoncer des distances importantes même pour les premiers modèles économiques, comme 30 mètres, cette distance dépend du type d’antenne utilisé, de la conception de la carte, de la configuration physique du système (ne faites pas fonctionner vos montages dans une boite en métal sans antenne externe), de la présence d’autres systèmes de communication (Wifi, Bluetooth) dans la même bande d’ondes (2,4 GHz par exemple).
Pour des applications outdoors, n’oubliez pas également que pour des fréquences dans la zone des 2.4GHz, l’humidité est un obstacle majeur. C’est ce qui explique que bon nombre de portiers radio qu’on peut acheter en GSB se mettent à mal fonctionner dès que la haie qui est sur la ligne de visée a poussé un peu ou bien qu’il pleut ou fait humide. Donc si vous avez noté une porté en champ libre par jour de beau temps, il est sage de la diviser par deux pour être certain que ça fonctionnera toujours en hiver. Surtout si vous habitez une région où la pluie et/ou le brouillard sont fréquents.
Attention également à l’effet de sol. Plus les antennes sont proches du sol, et plus celui-ci va jouer le rôle de plan de masse et absorber l’énergie. Les antennes doivent être à au moins 1 mètre du sol. Ceci est d’autant plus vrai si vous transmettez au-dessus d’un plan d’eau. D’ailleurs, pour des applications outdoors, si vous faites une liaison point à point, il est fortement conseillé d’utiliser une antenne directionnelle (type Yagi par exemple) sur au moins un des points (celui que vous pouvez pointer sur l’autre).
Numéro 10 : no magic
Enfin, une erreur fréquente est de croire qu’un produit répandu sera simple à utiliser : certes vous trouverez un grand nombre d’exemples, mais votre propre expérience peut s’avérer plus complexe que la majorité des usages, pour peu que vous ayez des besoins spécifiques.