Partage
  • Partager sur Facebook
  • Partager sur Twitter

transmission de données xbee vers carte arduino

    10 juin 2014 à 16:18:46

    bonsoir à tous

    je sollicite vivement votre aide sur un projet d'étude sur lequel je suis bloqué il y a environ une semaine déjà.

    en fait, je dois relier des capteurs de présences et éventuellement des boutons poussoirs sur un module xbee. je dois ensuite transmettre ces données sur une carte arduino pour faire sonner une alarme.

    mon problème est le suivant:

    je sais que je dois "impérativement" utiliser le protocole Zigbee pour la transmission. et que pour la transmission en série, je dois initilaiser le bit de départ, les données et enfin le bit de stop.

    seulement je ne sais pas comment relier ces deux concepts, à savoir récupérer les données de l' xbee et le transmettre par le protocole proprement dit.

    je ne dois utiliser les Xbee qu'en END DEVICE car je n'en utilise que 2( à l'émission avec les capteurs et à la réception branchée avec la carte arduino.

    votre aide me sera plus que favorable je vous prie.

    • Partager sur Facebook
    • Partager sur Twitter
      10 juin 2014 à 18:41:18

      Voici quelques briques qui te mettront sur la bonne voie :

      ==========

      L'interface de communication des modules XBee est en effet une liaison série qui implique des bits de start et de stop.

      Cependant, l'arduino possède une UART prévu pour faire de la communication série et donc, qui insère automatiquement ces bits de start et de stop.

      D'ailleurs, tu as surement déjà utilisé l'UART de ton arduino car c'est tout simplement la librairie Serial et les fonction Serial.begin, Serial.print, Serial.read ...

      Bref, tu n'as pas à te préoccuper de ces bits start/stop, c'est automatique ;)

      ==========

      Le modules XBee intègrent un processeur dédié à ce protocole.

      Là encore, tu n'as strictement rien à faire, c'est le module XBee qui se charge de respecter le protocole.

      Tout ce que tu as à faire, c'est utiliser le module dans l'un de ces 2 modes (ATCommand ou API) et donc de respecter le formatage de la liaison série du mode que tu as choisie.

      ==========

      Un module XBee peut se configurer de nombreuses façon.

      C'est donc à toi de le configurer (à l'aide de XCTU) pour qu'il scrute périodiquement ses pins d'entrée (sur lesquels tu as branché tes boutons) de tel sorte qu'il envoie automatiquement ces données.

      ==========

      L'utilisation de 2 (et seulement 2) "END DEVICE" n'est pas possible.

      Un réseau XBee passe toujours pas l'utilisation d'un module "COORDINATOR" qui gère le réseau.

      Si tu as 2 module, l'un des deux doit donc être un "COORDINATOR", le second un "END DEVICE"

      • Partager sur Facebook
      • Partager sur Twitter
        10 juin 2014 à 22:37:49

        bonsoir,

        un grand merci pour ta réponse lorrio

        effectivement, tout ceci m'éclaire beaucoup.

        je vais essayer d'avancer un tout petit peu.

        jusqu'ici je ne suis parvenue qu'à tester la fonctionnalité de mes xbee( par le test chat de digi) ainsi que la fonctionnalité de ma carte arduino( le fameux "hello world" blink)

        par la même occasion, j'ai rajouté arduino et xbee dans ma librairie de protéus pour essayer d'avoir une vue d'ensemble de mon système une fois au point, mais bn, tout ceci est précaire,...

        encore un grand merci

        -
        Edité par elodieraboto 10 juin 2014 à 22:43:57

        • Partager sur Facebook
        • Partager sur Twitter
          11 juin 2014 à 19:27:53

          bonsoir,

          quand j'ai fais le test de mes xbee, je n'ai pas eu besoin de configurer un des module en coordinateur, mais là je pense qu'il l'était par défaut dans XCTU.

          d'après mes recherches, quand il d'agit d'utiliser des modules au nombre de 2, je peux utiliser l'adressage courte( 16 bits) car j'utilise en effet des XBEE pro S1. dans ce cas, est-ce qu'il n'est pas préférable d'utiliser la topologie point à point et par la même occasion la commande AT qui s'avère être nettement plus facile que les commandes API qui jusqu'ici me posent énormément de problèmes?

          • Partager sur Facebook
          • Partager sur Twitter
            11 juin 2014 à 19:46:16

            C'est sur que le mode ATCommand est bien plus simple à utiliser que le mode API.

            En revanche, il y a pleins de choses que tu ne peux pas (ou pas facilement faire) en ATCommand :

            - adresse d'un module spécifique

            - exécution d'ATCommand à distance

            - récupération d'accusés de réceptions

            ...

            D'un autre coté, avec seulement 2 modules, tu n'as pas forcément besoin de tout ça.

            Du coup, passe les en ATCommand avec les adresse d'émission pré configurée et ce sera super simple à utilisé : tout ce que tu écris d'un coté (avec Serial.print) sera reçue de l'autre (avec Serial.read) et vice versa.

            • Partager sur Facebook
            • Partager sur Twitter
              12 juin 2014 à 15:30:03

              merci beaucoup pour ta réponse

              seulement, je te prie de m'excuser pour mes questions qui semblent assez futile... je passe d'un tuto à un autre et je t'avoue que je m'y perds à force car souvent, ils racontent des choses qui semblent contradictoires.

              comme exemple, une paradoxe qui m'a chiffoné aujourd'hui: compte tenu de ce que tu m'avais expliqué(et d'autres tutoriels le confirme), dans un réseau zigbee, un module doit forcément être en coordinateur et les autres en end device. cependant, je viens de voir une affirmatoin: " CE=0 (vous choisissez le mode "peer to peer" et non "coordinator/endDevice".

              tout ceci implique t- il donc que si j'opte pour la topologie peer to peer, tous les modules sont en end device?

              et où en est le broadcast?? car en effet, il se peut que c'est le focntionnement des réseaux qui me bloque???

              détrompe moi si j'ai faux sil te plait:

              ce que j'ai pu acquérir jusqu'à présent m'amène à prononcer les analogies suivantes:

              "comme nous les humains, pour se communiquer, on parle, par le biais de notre " bouche". les xbee quant à eux utilisent les ports série.

              et pour ce qui est du langage, les malgaches parlent le Malagasy, comme moi je le suis, les xbee utilisent le protocole Zigbee?"

              -
              Edité par elodieraboto 12 juin 2014 à 15:37:07

              • Partager sur Facebook
              • Partager sur Twitter
                12 juin 2014 à 19:13:13

                Alors, concernant le mode peer-to-peer sur XBee, c'est un mode que je ne connais pas.

                Je n'en ai jamais entendu parlé, c'est peut-être une nouvelle fonctionnalitée.

                Bref, je ne peux rien te dire là dessus.

                ====================

                Le protocole Zigbee, tu peux voir ça comme un formatage des données bien spécifique pour que tous les modules comprennent qui est l'émetteur, qui est le destinateur, quels sont les données ...

                Petit exemple pour bien comprendre :

                Supposons que tu veux envoyer Bonjour! sur un module Xbee en ATcommand.

                Tu vas donc utiliser ton arduino et faire un Serial.print("Bonjour!").

                Ce sont coté, le Xbee va formater tout ça pour respecter le protocole.

                En clair, le module Xbee ne va pas envoyer Bonjour! mais quelque chose du genre : |START|FROM=A2B12394|TO=BROADCAST|LEN=7|DATA=Bonjour!|STOP|

                Et bien sur, chaque module Xbee recevant ce message, ils en déduisent que le module Xbee A2B12394 vient d'envoyer Bonjour! en mode BROADCAST

                Chaque module va donc écrire Bonjour! sur sa sortie DOUT.

                • Partager sur Facebook
                • Partager sur Twitter
                  14 juin 2014 à 9:44:40

                  je réitère mes remerciements lorrio.

                  j'ai commencé à écrire un programme.seulement je rencontre un gros problème.

                  en me référant sur le principe de la transmission UART,la transmission en série ne transmet qu'une donnée à la fois.

                  seulement, il se trouve que j'ai besoin de manipuler 3 données simultanément( 3 capteurs reliés à un xbee émetteur que je dois recevoir et exploiter avec une carte arduino reliée à un autre xbee récepteur).

                  si je fais un Serial.read d'une donnée, je ne peux avoir qu'une seule donnée à la fois.. comment pourrais je avoir les 3 données simultanément et comment Arduino saura quel signal il reçoit.

                  je m'exprime mieux, soit 3 signaux du module émetteur( signal1, signal2 et signal3)

                  a la réception, est ce que j'aurai à manipuler Serial.read(signal1), Serial.read(signal2), Serial.read(signal3) ????

                  -
                  Edité par elodieraboto 14 juin 2014 à 9:45:57

                  • Partager sur Facebook
                  • Partager sur Twitter
                    14 juin 2014 à 12:33:40

                    Là, c'est à toi de définir un format de trames pour que l'arduino puisse les interpréter.

                    Le plus simple que tu puisse faire, c'est utiliser un bon nombre de délimiteur pour séparer le tout :)

                    Par exemple, si le capteur T veut envoyer 19°, alors il écrit : [T:19]

                    Si le capteur P veut envoyer 1013hPa, alors il écrit [P:1013]

                    Coté arduino, tu dois donc faire des sérial.read jusqu'à trouver le délimiteur de début de trames [

                    Ensuite, lire jusqu'à trouver le délimiteur de séparation nom/données :

                    Puis lire jusqu'à trouver le délimiteur de fin de trames ]

                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 juin 2014 à 16:05:17

                      Si j'ai bien compris, il faut que j'utilise le xbee en mode API? et est ce que je dois faire des configurations en plus du côté emetteur? ?Je veux dire, à part configurer ATMY, ATDH, ATDL', ATID...en fait je ne veux manipuler que des grandeurs logiques...ce sera donc soit high soit low. .

                      pourrais tu stp me donner un exemple de cette trame du côté arduino dont tu me parles? 

                      • Partager sur Facebook
                      • Partager sur Twitter
                        14 juin 2014 à 19:05:06

                        Non, là, je ne parlais pas du mode API.

                        Je parlais du mode ATCommand ou tu définissais toi même ta façon de formater les données pour envoyer tes trames.

                        Cependant, ça nécessite d'avoir un arduino pour chaque capteur afin de lire les données du capteurs puis les formater pour que le module XBee les envoie en mode ATCommand.

                        Si tes capteurs sont directement reliés au module XBee, tu devras utiliser le formatage XBee en étant très probablement en mode API.

                        Là dessus, je ne peux pas t'en dire d'avantage car je n'ai jamais relié directement des capteurs à un module XBee (je suis toujours passé par l'intermédiaire d'un microprocesseur pour faire du formatage).

                        Cependant, XBee est largement utilisé dans des réseaux de capteurs donc il y a forcément un moyen de distinguer quel module envoie quelle donnée du coté du XBee récepteur.

                        Tu trouveras surement cette réponse dans la doc.

                        ===============

                        Si tu es assez à l'aide en anglais oral, ces deux vidéo sont faites pour toi :

                        https://www.youtube.com/watch?v=jh-GIaghIjw

                        https://www.youtube.com/watch?v=rnBx2yqKn_E

                        Elles vont te donner les bases de la configuration et du format des trames API.

                        A toi d'adapter à tes besoins.

                        -
                        Edité par lorrio 14 juin 2014 à 19:12:31

                        • Partager sur Facebook
                        • Partager sur Twitter
                          16 juin 2014 à 22:54:06

                          bonsoir,

                          pour faire une simulation avec les xbee sous protéus, je n'arrive pas à voir comment paramétrer les modules.???

                          aurais-tu une idée pour simuler ces modules...sil te pait...

                          • Partager sur Facebook
                          • Partager sur Twitter

                          transmission de données xbee vers carte arduino

                          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                          • Editeur
                          • Markdown