Stap 5: XBee bibliotheek discussie
Echter, we hoeven niet een SD kaart omdat we willen dat gegevens naar een computer streamen. Mijn wapen van keuze voor deze taak is de XBee. Dit zijn de grote modules die een heleboel doen meer dan alleen verzenden en ontvangen van blindelings. U moet twee XBees in API-modus configureren. Bent u niet zeker weet hoe dit te doen, Raadpleeg mijn instructable API ingeschakeld voor XBees. Ik gebruikte twee Series 1 XBees, want ik heb verschillende rondslingeren en ik hoef niet om te gaan met de coördinator/router/einde Apparaatinstellingen (teveel denken).
Wij API-modus gebruiken om gemakkelijker zorgen dat elk pakket dat we verzenden wordt ontvangen. Wanneer in API-modus die de ontvanger zal checksum van het pakket zorg ervoor dat er geen corrupte en beantwoorden met een Status van de levering (ACK)-pakket zo de afzender weet het werd met succes verzonden. Je zou kunnen schrijven uw eigen bibliotheek XBee maar ik zou adviseren gebruikend de XBee-Java API geschreven door Andrew Rapp.
Er is een Python-equivalent van deze bibliotheek, die ik had willen gebruiken, maar was niet in staat om te werken. De XBee-Python API, is afhankelijk van PySerial. Elke keer als de XBee stuurt 0x13, codeert PySerial de byte als 0x7D 0x33. Het blijkt dat er 3 andere probleem bytes: 0x11, 0x91 en 0x93. Blijkt dat "Sommige modems met software-datatransportbesturing kunnen onderscheppen uitgaande DC1 en DC3 negeert de 8e bit (pariteit). Deze gegevens zouden worden doorgegeven op de koppeling als volgt":
- 0x11 is gecodeerd als 0x7d, 0x31. (XON)
- 0x13 is gecodeerd als 0x7d, 0x33. (XOFF)
- 0x91 is gecodeerd als 0x7d, 0xb1. (XON met pariteit set)
- 0x93 is gecodeerd als 0x7d, 0xb3. (XOFF met pariteit set)
Ik probeerde alle mogelijke instellingen met PySerial en kon deze codering probleem op te lossen. So... Ik gebruikte de XBee-Java API, die perfect werkte!