Bild fånga fågelbordet (5 / 7 steg)
Steg 5: XBee bibliotek diskussion
Dock behöver vi inte ett SD-kort eftersom vi kommer att strömma data till en dator. Mitt vapen val för denna uppgift är XBee. Detta är stora moduler som gör mycket mer än bara skicka och ta emot blint. Du kommer att behöva konfigurera två XBees i API-läge. Om du är osäker på hur du gör detta, se min instructable på API-läge för XBees. Jag använde två serie 1 XBees eftersom jag har flera liggande och jag inte behöver ta itu med samordnare/router/avsluta Enhetsinställningar (för mycket tänkande).
Vi använder API-läge att lättare kontrollera att varje paket skickar vi får emot. När i API-läge mottagaren kommer kontrollsumma paketet till se till att det inte är korrupta och svara med ett leverans Status (ACK) paket så avsändaren vet sändes det framgångsrikt. Du kan skriva din egen XBee bibliotek men jag skulle rekommendera att använda XBee-Java API skriven av Andrew Rapp.
Det finns en Python motsvarighet till detta bibliotek, som jag hade tänkt att använda men det gick inte att få arbeta. XBee-Python API beror på PySerial. Varje gång XBee skickar 0x13, kodar PySerial byten som 0x7D 0x33. Det visar sig att det finns 3 andra problem byte: 0x11, 0x91 och 0x93. Visar sig att "Vissa modem med flödeskontroll genom programvara kan avlyssna utgående DC1 och DC3 ignorerar 8 (paritetsbiten). Dessa data skulle överföras på länken som följer":
- 0x11 kodas som 0x7d, 0x31. (XON)
- 0x13 kodas som 0x7d, 0x33. (XOFF)
- 0x91 kodas som 0x7d, 0xb1. (XON med paritetsuppsättningen)
- 0x93 kodas som 0x7d, 0xb3. (XOFF med paritetsuppsättningen)
Jag försökte alla möjliga inställningar med PySerial och kunde inte lösa problemet kodning. So... Jag använde XBee-Java API, som fungerade perfekt!