Paso 5: Biblioteca de XBee discusión
Sin embargo, no necesitamos una tarjeta SD ya que vamos a transmitir esos datos a un ordenador. Mi arma preferida para esta tarea es el XBee. Estos son módulos grandes que hacen mucho más que sólo envían y recibir ciegamente. Usted necesitará configurar dos XBees en modo API. Si no está seguro cómo hacerlo, consulte mi instructable en modo API para XBees. Utilicé dos Series 1 XBees porque tengo varios ahí y no tengo que lidiar con Coordinador/router/end configuración del dispositivo (demasiado pensamiento).
Utilizamos el modo API para asegurar más fácilmente que cada paquete que enviamos es recibido. Cuando en el modo API el receptor será suma de comprobación del paquete para asegurarse de que no es corrupto y responder con un paquete de estado de entrega (ACK) así que el remitente sabe fue enviado con éxito. Podría escribir su propia biblioteca de XBee, pero recomendaría usando la API de XBee-Java escrito por Andrew Rapp.
Existe un equivalente de Python de esta biblioteca, que había diseñado para su uso, pero no pudo conseguir trabajo. La API de Python XBee depende PySerial. Cada vez que el XBee envía 0 x 13, PySerial codifica los bytes como 0x7D 0x33. Resulta que hay otros 3 bytes de problema: 0x11, 0x91 y 0x93. Resulta que "Algunos módems con control de flujo software pueden interceptar salientes DC1 y DC3 ignorando el 8 bit (paridad). Estos datos se transmitirían en el enlace siguiente":
- 0x11 está codificado como 0x7d, 0x31. (XON)
- 0 x 13 es codificado como 0x7d, 0x33. (XOFF)
- 0x91 está codificado como 0x7d, 0xb1. (XON con conjunto de paridad)
- 0x93 está codificado como 0x7d, 0xb3. (XOFF con conjunto de paridad)
Probé todas las configuraciones posibles con PySerial y fue incapaz de resolver este problema de codificación. So... He utilizado la API de Java de XBee, que funcionó a la perfección!