Étape 5: XBee bibliothèque Discussion
Cependant, nous ne devons une carte SD car nous n’allons pas pour diffuser ces données à un ordinateur. Mon arme de choix pour cette tâche est le XBee. Voici les modules grande que font tout un tas de plus que de simplement envoyer et de recevoir aveuglément. Vous devez configurer deux XBees en mode API. Si vous ne savez pas comment procéder, veuillez consulter mon instructable sur API Mode pour XBees. J’ai utilisé deux série 1 XBees parce que j’ai traîner plusieurs et je n’ai besoin faire face à la coordonnatrice/routeur/fin paramètres du périphérique (trop de pensée).
Nous utilisons le mode API pour plus facilement s’assurer que chaque paquet que nous envoyons obtient reçu. Quand en mode API le récepteur sera checksum le paquet pour s’assurer que ce n’est pas corrompu et répond avec un paquet de livraison État (ACK) donc l’expéditeur sait il a été envoyé avec succès. Vous pouvez écrire votre propre bibliothèque de XBee mais je conseille d’utiliser l' API Java XBee rédigé par Andrew Rapp.
Il y a un équivalent de Python de cette bibliothèque, qui j’avait l’intention d’utiliser, mais n’a pas pu faire fonctionner. L’API XBee-Python dépend PySerial. Chaque fois que le XBee envoie 0 x 13, PySerial encode l’octet comme 0x7D 0x33. Il s’avère qu’il y a 3 autres octets du problème: 0 x 11, 0 x 91 et 0x93. S’avère que "Certains modems avec contrôle de flux logiciel peuvent intercepter sortant DC1 et DC3 ignorant le 8ème bit (parité). Ces données seraient transmises sur le lien comme suit":
- 0 x 11 est encodé comme 0x7d, 0 x 31. (XON)
- 0 x 13 est encodé comme 0x7d, 0 x 33. (XOFF)
- 0 x 91 est encodé comme 0x7d, 0xb1. (XON avec jeu de parité)
- 0x93 est codé comme 0x7d, 0xb3. (XOFF avec jeu de parité)
J’ai essayé tous les réglages possibles avec PySerial et n’a pas pu résoudre ce problème d’encodage. Alors... J’ai utilisé l’API Java-XBee, qui fonctionnait parfaitement !