jueves, 23 de febrero de 2012

Roboplus CM-510. Comunicación Serie

Pues el post viene a raiz de que jugando un poco con la controladora CM-510 de Bioloid, se observa que dan la posibilidad de usar para comunicarte con el exterior 6 entradas analógicas y 6 salidas digitales, lo cual no está mal, ¿Pero y si se quiere comunicar el sistema por puerto serie por alguna razón para aumentar su versatilidad?. Pues veamos un poco como hacerlo en esta tercera parte (2ª Parte - Roboplus de Bioloid. Primeras impresiones).

Puesto que con los sistemas ZigBee para comunicar hay que realizarlo mediante tramas de bits, donde normalmente encontramos la cabecera y los datos e incluso checksum , lo primero que hago es ver la documentación de los pines del sistema ZigBee de Bioloid, que corresponde a la imagen de la derecha, porque probablemente pueda usar el puerto reservado para el ZigBee, para los propositos de comunicación serie.

Una vez descubierto donde poder mirar si me hiciese falta, busco a continuación en la documentación, algo de información, sobre la trama de bits que utiliza este modelo, y me encuentro con lo que se observa en la siguiente imagen.



En este punto, según la documentación, tenemos 2 palabras en la cabecera y 4 palabras de datos, donde la información esta fundamentalmente contenida en 2 (Data L y Data H) ya que las otras 2 (~DataL y ~DataH) son el complemento a 1 de las mismas.

Como yo soy muy escéptico, necesito ver que la documentación es totalmente correcta y no se le ha escapado un Checksum, parte de la cabecera o algo por el estilo que me fastidiara después (no sería la primera vez xD). Con lo cual voy a usar el analizador lógico para verificarlo, enganchandome al pin 4 (RxD en el módulo ZigBee, TxD en la controladora).

El primer palpito es que usa comunicación asincrona a una velocidad determinada, pero no se a priori a cuantos Baudios. Pues vamos a investigar los archivos con los que estan programados el micro para averiguar la velocidad de comunicación, porque en la documentacion no lo he encontrado. Haciendo eso, me encuentro con lo que se observa en la imagen derecha.

Cabe esperar que la comunicación se realice a 57600 Baudios, pues vamos allá, configuramos el analizador con comunicación asincrona, 57600 y hacemos un programita en el Roboplus Task que se encargue de enviar una trama por el supuesto control remoto, por ejemplo la siguiente (0x00FF) de la siguiente manera.
  
 Según la documentación debemos de recibir 0xFF - 0x55 - 0xFF - 0x00 - 0x00 - 0xFF, sabiendo que el complemento a 1 de FF es 00. Pinchamos con el analizador y parece que la documentación está bien ( He desconfiado demasiado pronto =) )


Verificamos con otra trama, por ejemplo 0xAA00, que según la documentación nos haría obtener 0xFF - 0x55 - 0x00 - 0xFF - 0xAA - 0x55 (donde 55 es el complementario de AA). El resultado real es el siguiente, que como vemos coincide perfectamente.


Ahora voy a realizar otra prueba enviando un comando de escritura al hyperterminal que en el Roboplus Task denomina "Print" como se muestra a continuación.



Se observa que  con nuestro analizador lógico se obtiene exactamente la cifra que se ve en el hyperterminal.

Bueno, pues ya sabemos como enviar datos conocidos desde la controladora, proximamente se observará si para recibir lo tenemos tan facil.

...Proximamente enviar datos a la controladora y que estos sean aceptados

No hay comentarios:

Publicar un comentario