viernes, 6 de marzo de 2020

Actualización #04

Recibiendo datos del X8R y R9 por HardwareSerial


Objetivo

Establecer una comunicación por Hardware con el X8R y  R9 y obtener datos significativos.
Usando una placa MEGA 2560.

Resultado

Ante la imposibilidad de usar el módulo R9 por SoftwareSerial, me veo obligado a incorporar una opción en la librería para usar HardwareSerial.

Para conectar el módulo mediante HardwareSerial hay que invertir la señal antes de introducirla a la placa porque la librería de Arduino no permite configurar la lógica inversa como SoftwareSerial.
Comencé usando el circuito integrado séxtuple inversor 7004 de Texas Instrument. El tiempo de propagación es varios órdenes de magnitud inferior al periodo de la señal. Aún así los dos IC que he usado han acabado fallando. Al final he tenido que construir mi propio inversor con un transistor y dos resistencias.

El cable azul es la entrada y el amarillo la salida. La resistencia en horizontal es de 10K y la vertical de 1K. El transistor es un BJT NPN, concretamente he probado con un 2N3904.


Ahora he probado repetido las dos pruebas anteriores pero mediante HardwareSerial en lugar SoftwareSerial.

Finalmente ha funcionado. Logré recibir datos correctamente de los dos módulos.
La calidad ha mejorado. Claramente la velocidad de las placas es demasiado baja para realizar correctamente el timing y acaban fallando muchos bits, gracias al bit de paridad descarta algunos bytes erróneos. Pero si el bit error rate es lo suficientemente alto y aleatorio, un bit de paridad no impedirá recibir tramas con errores ocultos.
Tengo que especificar en la documentación que determinados módulos, como es el caso del R9, solo funcionan por HardwareSerial.

No hay comentarios:

Publicar un comentario