La comunicación es un factor
muy importante para nuestro robot, ya que una de sus aplicaciones
será la robótica cooperativa en la cual es esencial
la comunicación, además el robot debe ser monitoreado
y en algunas aplicaciones controlado desde un PC. Por lo tanto la
red y el protocolo de comunicación están desarrollados
pensando en este tipo de aplicaciones.
La red debe permitir la comunicación
entre todos los robots incluyendo la estación base, cada individuo
debe estar en capacidad de transmitir datos y de recibir información
de cualquier otro individuo, esto exige que la todos los robots transmitan
información en la misma frecuencia y por lo tanto la comunicación
debe ser halfduplex, es decir un robot no puede transmitir y recibir
información al mismo tiempo y por lo tanto dos individuos no
pueden transmitir información al mismo tiempo.
La red debe ser confiable, debe permitir detectar
errores o colisiones provocadas cuando varios robots hablan al tiempo
y además debe ser extensible para permitir la entrada y perdida
de robots en el sistema.
Para cumplir con estos requisitos se ha desarrollado
un protocolo de comunicaciones propio donde se transmite toda la información
necesaria para monitorear o controlar un robot y para compartir información
entre individuos.
Llamaremos individuo a cualquier cosa capaz
de transmitir y recibir información en la red, en nuestro caso
tenemos a los robots y a la estación central.
El protocolo de comunicaciones se encuentra dividido en dos niveles,
un nivel físico que incluye el modulo de RF y el mecanismo
para transmitir y recibir bytes y un segundo nivel, en el cual se
define la forma en que se va a transmitir los datos, es decir la estructura
de la trama de información.
Protocolo a nivel físico:
El protocolo de comunicaciones usado para la
comunicación serial a nivel físico es el protocolo estándar
que usa el puerto serial del computador (RS-232). El formato de los
datos es el estandar NRZ (no retorno a cero). El nivel de voltaje
para un alto que transmite y recibe el puerto serial del PC es de
12V, mientras que el nivel de voltaje para un alto que admiten el
receptor y transmisor de RF, así como el microcontrolador es
5V, por lo tanto se debe usar un MAX232 como interfaz que se encarga
de hacer el acople entre los dos niveles de voltaje.
Para la comunicación con el microprocesador
se usa el modulo SCI (Serial Comunications Interface), el cual va
integrado en el microcontrolador y utiliza los pines PTE0 para transmisión
y PTE1 para recepción. El SCI permite una comunicación
Full-duplex (aunque nuestro protocolo utiliza una comunicación
Half-duplez) y asincrónica. El formato de los datos es NFZ,
además se transmite un bit de start y y un bit de stop cada
que se transmite un byte.
Protocolo de segundo nivel:
Nuestro protocolo de comunicaciones de segundo
nivel, consiste en una trama de 4 bytes, esta trama contiene la identificación
de quien transmite y de quien recibe, dos banderas que indican el tipo
de trama, dos bytes para enviar los datos y un ultimo byte de verificación
para identificar errores en la transmisión.
Hay dos tipos de trama, la trama de comandos
y trama de mensaje. Una trama es de comandos cuando lo que se va a
transmitir es una orden a un individuo y una trama es de mensaje cuando
lo que se va a transmitir es una respuesta o un mensaje para monitoreo
(indica el estado de los sensores o de algún registro del individuo).
Los bytes transmitidos en la trama son los
siguientes:
IDENTIFICACIÓN:
Bits 7, 6 Y 5 - Whose: Contienen la identificación
del individuo que esta transmitiendo la trama.
Bits 4, 3 y 2 - Whom: Indican el individuo
al que va dirigida la información.
Los códigos de identificación tanto para whose como
para whom son los siguientes:
000: estación central
001: Robot 1
010: Robot 2
011: Robot 3
100: Robot 4
101: Robot 5
110: Robot 6
1111: Todos (broadcast)
Bit 1 (Unimplemented).
Bit 0 - Identification flag (IF):
1 = Se va a transmitir una orden
0 = Se va a transmitir un mensaje
DATA 1 Y DATA 2
:
En estos dos bytes se transmite la información, es decir los
comandos, estos pueden ser una orden o un
mensaje, si desea conocer los comandos de click
aqui.
ACKNOLEDGE:
Este es un byte para verificación de la trama y controlar
los errores que se puedan cometer a transmitir la información.
En este byte se transmite el resultado de una operación aplicada
a los 3 primeros bytes de la trama.