Wiki

Reso-nance numérique | Arts et cultures libres

Outils du site


materiel:xbee:star:accueil

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
materiel:xbee:star:accueil [2014/09/19 12:05]
resonance [Précautions]
materiel:xbee:star:accueil [2018/01/28 15:41] (Version actuelle)
resonance ancienne révision (2016/02/01 00:06) restaurée
Ligne 1: Ligne 1:
-====== XBee - Star ======+====== XBee en étoile ======
 ([[.en|English version]]) ([[.en|English version]])
  
Ligne 6: Ligne 6:
   * Licence : GNU/FDL3   * Licence : GNU/FDL3
   * Fichiers : {{:materiel:xbee:star:codes.zip|}}   * Fichiers : {{:materiel:xbee:star:codes.zip|}}
 +  * Remerciements : Martin Peach, Hans-Christop Steiner, Vincent Pillet
  
-Les modules XBee sont une solution pour transmettre des données sans-fils, par ondes radio. Si cela ne vous dit rien et que vous êtes plus déterminé que jamais, veuillez suivre l'initiation [[http://jeromeabel.net/ressources/xbee-arduino|Xbee & Arduino]]. Nous avons vu comment transmettre des données d'un module à un autre en remplacement d'un câble, c'est une topologie de réseau "point-à-point". Ici, nous explorerons une autre topologie très utile qui est en "étoile". Cela permet deux types de configuration : un émetteur (//Coordinator//) envoie des données à plusieurs receveurs (//End Device//) ou bien l'inverse, plusieurs émetteurs envoient des données à un seul receveur. L'article se focalise sur les modules de **XBee series 1**. 
  
-{{ :materiel:xbee:star:xbee-star-topology.png |}}+Les modules XBee sont une solution pour transmettre des données sans-fils, par ondes radio. Si cela ne vous dit rien et que vous êtes plus déterminé que jamais, veuillez suivre l'initiation [[http://jeromeabel.net/ressources/xbee-arduino|Xbee & Arduino]]. Nous avons vu comment transmettre des données d'un module à un autre en remplacement d'un câble, c'est une topologie de réseau "point-à-point". Ici, nous explorerons une autre topologie très utile qui est en "étoile". Cela permet deux types de configuration un émetteur (//Coordinator//) envoie des données à plusieurs receveurs (//End Device//) ou bien l'inverse, plusieurs émetteurs envoient des données à un seul receveur. L'article décrit comment faire ça avec les modules **XBee Series 1**, **Pure Data** et **Arduino**. Certaines de mes pièces artistiques ([[:projets:patatas-de-goma:|Patatas de goma]] et [[:projets:chimeres-orchestra:|Chimères Orchestra]]) utiliseront cette technique.
  
-**Remarque :** Je développe plusieurs projets artistiques où je veux mettre en œuvre cette technique [[:projets:patatas-de-goma:|Patatas de goma]] ou [[:projets:chimeres-orchestra:|Chimères Orchestra]]. Comme j'utilise le logiciel **Pure Data**, il servira de récepteur pour centraliser les données ou de "maître" pour le contrôle des modules.+ 
 +{{ :materiel:xbee:star:xbee-star-topology.png |}}
  
  
 +{{ vimeo>106574642?medium }}
  
 ===== Pré-requis ===== ===== Pré-requis =====
Ligne 37: Ligne 39:
   * [[http://arduino.cc/en/Main/Software|Arduino]]   * [[http://arduino.cc/en/Main/Software|Arduino]]
   * [[https://processing.org/download/?processing|Processing]]   * [[https://processing.org/download/?processing|Processing]]
-  * [[http://www.itp.nyu.edu/physcomp/uploads/xbeeSerialTerminal.zip|xbeeSerialTerminal.zip]] (fait en processing), pour configurer le XBee+  * {{:materiel:xbee:star:xbeeterminal.zip|}} (fait en processing), pour configurer le XBee
   * Bibliothèques additionnelles (dans "codes.zip") : [[http://code.google.com/p/xbee-api/|xbee-api]], [[https://code.google.com/p/xbee-arduino/|xbee-arduino]] et [[https://github.com/scogswell/ArduinoSerialCommand|SerialCommand]]   * Bibliothèques additionnelles (dans "codes.zip") : [[http://code.google.com/p/xbee-api/|xbee-api]], [[https://code.google.com/p/xbee-arduino/|xbee-arduino]] et [[https://github.com/scogswell/ArduinoSerialCommand|SerialCommand]]
  
Ligne 52: Ligne 54:
   * **RX/TX** : attention à l'orientation RX va vers TX et TX va vers RX.   * **RX/TX** : attention à l'orientation RX va vers TX et TX va vers RX.
   * **RX/TX** : enlever les cables RX/TX branchés à l'Arduino quand vous téléversez le code vers l'Arduino   * **RX/TX** : enlever les cables RX/TX branchés à l'Arduino quand vous téléversez le code vers l'Arduino
-  * Attention au **baudrate** du port série et au numéro de port. Si vous changez de carte, le port n'est sans doute plus le même. De même si vous changez le //baudrate// du XBee, vous devez impacter ce changement dans le programme "xbeeSerialTerminal", dans les codes Arduino et Pure Data. Des fois on croit ne plus pouvoir se connecter au module, mais c'est que son //baudrate// est différent de celui que l'on utilise pour s'y connecter.+  * Attention au **baudrate** du port série et au numéro de port. Si vous changez de carte, le port n'est sans doute plus le même. De même si vous changez le //baudrate// du XBee, vous devez impacter ce changement dans le programme "xbeeSerialTerminal", dans les codes Arduino (//Serial.begin(...)//), dans Pure Data (//[comport .. ....]//) et dans le moniteur série d'ArduinoEn effet, parfois on croit ne plus pouvoir se connecter au module, mais c'est que son //baudrate// est différent de celui que l'on utilise pour s'y connecter.
   * **Leonardo** : utiliser Serial1 à la place de Serial : //Serial1.begin(9600); xbee.setSerial(Serial1);//   * **Leonardo** : utiliser Serial1 à la place de Serial : //Serial1.begin(9600); xbee.setSerial(Serial1);//
 </WRAP> </WRAP>
Ligne 63: Ligne 65:
 Le premier exemple consiste à contrôler directement les sorties numériques et PWM des XBees à partir de Pure Data sans passer par Arduino. Pour les tests, nous branchons une LED sur la sortie D0 (digital) et une autre sur la sortie PWM1 (PWM). Le premier exemple consiste à contrôler directement les sorties numériques et PWM des XBees à partir de Pure Data sans passer par Arduino. Pour les tests, nous branchons une LED sur la sortie D0 (digital) et une autre sur la sortie PWM1 (PWM).
  
-**Schéma** :  Pd/AT/SERIAL/XBEE1 ---> XBEE2, XBEE3, ... \\+**Schéma** :  Pd/AT/SERIAL/XBEE1 ---> XBEE2/LEDS, XBEE3/LEDS, ... \\
 **Code** : to-xbee-star.pd **Code** : to-xbee-star.pd
  
Ligne 92: Ligne 94:
 | ATAP2    | Par défaut : le mode API est optionnel pour les End Devices| | ATAP2    | Par défaut : le mode API est optionnel pour les End Devices|
 | ATMY0    | Par défaut : l'adresse du coordinateur est à 0 par défaut | | ATMY0    | Par défaut : l'adresse du coordinateur est à 0 par défaut |
-ATCE0    | Par défaut : mode AT pour les End Devices |+ATAP0    | Par défaut : mode AT pour les End Devices | 
 +| ATCE0    | Par défaut : comportement End Devices |
 | ATDH0    | Par défaut : adresse en 16 bits| | ATDH0    | Par défaut : adresse en 16 bits|
-| ATDL0    | Par défaut : Adresse du coordinateur pour les End Devices+| ATDL0    | Par défaut : Adresse du destinataire
-ATIU1    | ? : pour ne pas utiliser les entrées/sorties RX/TX dans ce cas-là (direct) |+ATIU0    | ? : pour ne pas utiliser les entrées/sorties RX/TX dans ce cas-là (direct) |
 | ATMY1    | ? : si l'adresse du coordinateur est 1, cela pourrait éviter d'envoyer des infos inutiles au coordinateur | | ATMY1    | ? : si l'adresse du coordinateur est 1, cela pourrait éviter d'envoyer des infos inutiles au coordinateur |
  
Ligne 111: Ligne 114:
 |RAT 0x0 0x3 2 M1 $1 | Control PWM (0-255) with M1 (use P0 and M0 for PWM0 pin)| |RAT 0x0 0x3 2 M1 $1 | Control PWM (0-255) with M1 (use P0 and M0 for PWM0 pin)|
  
-**Décryptage du message "Remot AT commands (RAT)"**+**Décryptage du message "Remote AT commands (RAT)"**
 |64-bit_destination| 0x0 (any, not needed here)| |64-bit_destination| 0x0 (any, not needed here)|
 |16-bit_destination:| XBee end devices addresses| |16-bit_destination:| XBee end devices addresses|
Ligne 151: Ligne 154:
  
 =====3/ XBee API - Arduino ===== =====3/ XBee API - Arduino =====
-On fait communiquer uniquement des Arduinos entre elles pour comprendre comment envoyer et recevoir des trames XBee avec Arduino.+On fait communiquer uniquement des Arduinos entre elles pour comprendre comment envoyer et recevoir des trames XBee avec Arduino. On branche une LED sur la pin 9 pour voir le résultat.
  
-**Schéma** : ARDUINO/TX/XBEE1 ---> XBEE2/RX/ARDUINO et XBEE3/RX/ARDUINO\\+**Schéma** : ARDUINO/TX/XBEE1 ---> XBEE2/RX/ARDUINO/LED et XBEE3/RX/ARDUINO/LED\\
 **Codes** : to_xbee_api.ino, from_xbee_api.ino\\ **Codes** : to_xbee_api.ino, from_xbee_api.ino\\
                          
Ligne 169: Ligne 172:
  
 =====4/ XBee API - Arduino et Pure Data ===== =====4/ XBee API - Arduino et Pure Data =====
-N'étant pas arrivé à envoyer des données en passant par le convertisseur série, j'ai dû utilisé une Arduino pour formater correctement ces données pour les autres modules récepteurs. On utilise la bibliothèque //SerialCommand// dans Arduino pour récupérer six données envoyées de Pure Data (une liste de six données). Celles-ci sont ensuite formatées par Arduino et la bibliothèque //XBee//. Les récepteurs récupèrent uniquement le tableau de données de la trame.+N'étant pas arrivé à envoyer des données en passant par le convertisseur série, j'ai dû utilisé une Arduino pour formater correctement ces données pour les autres modules récepteurs. On utilise la bibliothèque //SerialCommand// dans Arduino pour récupérer six données envoyées de Pure Data (une liste de six données). Celles-ci sont ensuite formatées par Arduino et la bibliothèque //XBee//. Les récepteurs récupèrent uniquement le tableau de données de la trame. La LED branchée sur la pin 9 permet toujours de visualiser ce qu'il se passe.
  
-**Schéma** : Pd/CMD/ARDUINO/XBEE1 ---> XBEE2/RX/ARDUINO et XBEE3/RX/ARDUINO\\+**Schéma** : Pd/CMD/ARDUINO/XBEE1 ---> XBEE2/RX/ARDUINO/LED et XBEE3/RX/ARDUINO/LED\\
 **Codes** : to-xbee-cmd.pd, to_xbee_api_cmd.ino, from_xbee_cmd.ino  **Codes** : to-xbee-cmd.pd, to_xbee_api_cmd.ino, from_xbee_cmd.ino 
  
Ligne 189: Ligne 192:
  
 =====4/ Réception des données (direct) ===== =====4/ Réception des données (direct) =====
-Réception des données directes (capteurs) de plusieurs XBees sans Arduinos par le XBee coordinateur, avec Pure Data et Processing. Très pratique pour récupérer les données d'un réseau de capteurs. +Réception des données directes (capteurs) de plusieurs XBees sans Arduinos par le XBee coordinateur, avec Pure Data ou Processing. Très pratique pour récupérer les données d'un réseau de capteurs. 
  
-**Schéma** : XBEE2 et XBEE3 (seules) --->  SERIAL/XBEE1\\+**Schéma** : CAPTEUR/XBEE2 et CAPTEUR/XBEE3 (seules) --->  SERIAL/XBEE1\\
 **Codes** : from-xbee-star-1.pd, from-xbee-star-2.pd\\ **Codes** : from-xbee-star-1.pd, from-xbee-star-2.pd\\
  
Ligne 202: Ligne 205:
  
 ==== Pure Data ==== ==== Pure Data ====
-Sans unpackxbee\\+Sans [mrpeach/unpackxbee]\\
 {{:materiel:xbee:star:from-xbee-star-1.png|}} {{:materiel:xbee:star:from-xbee-star-1.png|}}
  
-Avec unpackxbee\\+Avec [mrpeach/unpackxbee]\\
 {{:materiel:xbee:star:from-xbee-star-2.png|}} {{:materiel:xbee:star:from-xbee-star-2.png|}}
  
Ligne 227: Ligne 230:
 |50 01  |Destination address low| |50 01  |Destination address low|
 |00     |Option byte| |00     |Option byte|
-|48 65 6C 6C 6F |Data packet(ASCII: "Hello")|+|48 65 6C 6C 6F |Data packet (ASCII: "Hello")|
 |B8     |Checksum| |B8     |Checksum|
  
Ligne 248: Ligne 251:
  
 ==== Broadcast / Unicast ==== ==== Broadcast / Unicast ====
-Pour envoyer des commandes à plusieurs destinataires, une autre solution aurait été d'utilise d'envoyer des messages à tout le monde (Broadcast) et que les destinataires analysent les données (parser) pour ne récupérer que ce qui leur était destiné. Je pars du principe que le mode API fait pour cela est peut-être plus rapide à exécuter ces opérations, sachant que l'envoi de message physiquement (ondes radio) est envoyé à tout le monde. C'est les modules entre eux qui font le travail de déterminer qui est le destinataire, quelles sont les données, etc.+Pour envoyer des commandes à plusieurs destinataires, une autre solution aurait été d'envoyer des messages à tout le monde (Broadcast) et que les destinataires analysent les données (parser) pour ne récupérer que ce qui leur était destiné. Je pars du principe que le mode API fait pour cela est peut-être plus rapide à exécuter ces opérations, sachant que l'envoi de message physiquement (ondes radio) est envoyé à tout le monde. Ce sont les modules entre eux qui font le travail de déterminer qui est le destinataire, quelles sont les bonnes données, etc.
  
 **Series 2** ([[https://forum.sparkfun.com/viewtopic.php?f=13&t=31047|forum.sparkfun.com]]) : \\ **Series 2** ([[https://forum.sparkfun.com/viewtopic.php?f=13&t=31047|forum.sparkfun.com]]) : \\
/home/resonancg/www/wiki/data/attic/materiel/xbee/star/accueil.1411121144.txt.gz · Dernière modification: 2014/09/19 12:05 de resonance