Sie sind auf Seite 1von 102

Laboratorio de Sistemas Electrnicos Digitales

ROBOT CON CONTROL REMOTO


Y CMARA DE VDEO INTEGRADA

AUTORES
PABLO RODRGUEZ CABELLOS
EUGENIO SILLERO HERRERO

Robot con control remoto y cmara de vdeo integrada

NDICE
1. INTRODUCCIN ....................................................................... 7
1.1.
1.2.

OBJETIVOS .........................................................................................7
DESCRIPCIN DEL ROBOT ...............................................................7

2. PROTOCOLOS DE COMUNICACIONES ............................... 14


2.1.
2.2.
2.3.

EL NIVEL FSICO: ENLACE RADIOFRECUENCIA ............................14


NIVEL DE ENLACE: LAPR .................................................................16
PROTOCOLO DE COMANDOS .........................................................18

2.3.1.
2.3.2.
2.3.3.

2.4.

RDENES DE MOTORES ...............................................................................19


RDENES DEL SISTEMA ...............................................................................20
RDENES DE IMAGEN ...................................................................................20

PROTOCOLO DE DATOS..................................................................21

2.4.1.
2.4.2.

ESTADO DEL ROBOT .....................................................................................21


RECOMPONIENDO LA IMAGEN.....................................................................21

3. TARJETA DE CONTROL DE MOTORES ............................... 24


3.1.

DESCRIPCIN DEL HARDWARE .....................................................24

3.1.1.
3.1.2.
3.1.3.
3.1.4.

3.2.

ALIMENTACIN ...............................................................................................24
SENSORES ......................................................................................................25
DRIVER DE MOTORES ...................................................................................27
PROCESADO ...................................................................................................29

DESCRIPCIN DEL SOFTWARE. .....................................................32

3.2.1.
3.2.2.
3.2.3.
3.2.4.
3.2.5.
3.2.6.

EQUIVALENCIAS Y VECTORES DE INTERRUPCIN ..................................32


RUTINA DE RESET..........................................................................................35
MODO AUTOMTICO ......................................................................................37
MODO MANUAL ...............................................................................................41
INTERRUPCIONES ..........................................................................................44
SUBRUTINAS ...................................................................................................47

4. TARJETA DE CONTROL PRINCIPAL.................................... 54


4.1.

DESCRIPCIN DEL HARDWARE .....................................................54

4.1.1.
4.1.2.
4.1.3.
4.1.4.

4.2.

ALIMENTACIN ...............................................................................................55
CONTROL DE ORIENTACIN DE LA CMARA ............................................55
INTERFAZ DE LA CMARA.............................................................................56
PROCESADO ...................................................................................................58

DESCRIPCIN DEL SOFTWARE ......................................................60

4.2.1.
4.2.2.
4.2.3.
4.2.4.
4.2.5.
4.2.6.
4.2.7.

EQUIVALENCIAS Y VECTORES DE INTERRUPCIN ..................................60


RUTINA DE RESET..........................................................................................62
RUTINAS DE CONFIGURACIN DE CMARA ..............................................64
EL PROGRAMA PRINCIPAL............................................................................68
ADQUISICIN DE DATOS...............................................................................69
LAS RUTINAS DE ENLACE .............................................................................70
EL NIVEL FSICO .............................................................................................78

5. HOST DE CONTROL REMOTO.............................................. 82


5.1.
5.2.
5.3.
5.4.

PLACA DE CONTROL........................................................................82
EL SOFTWARE ..................................................................................85
PAQUETE COM.THEEXBTEAM.COMM............................................86
PAQUETE COM.THEEXBTEAM.ROBOTS ........................................88

6. APNDICE A: INSTALACIN DEL SOFTWARE................... 92

-2-

Robot con control remoto y cmara de vdeo integrada

6.1.
6.2.
6.3.
6.4.

INSTALACIN DEL ENTORNO JAVA................................................92


INSTALACIN DE LAS LIBRERAS JAVAX.COMM...........................93
INSTALACIN DE LA APLICACIN DE CONTROL ..........................94
INSTALACIN DE JAKARTA-ANT.....................................................94

7. APNDICE B ESQUEMTICOS DE LAS PLACAS ............... 96


8. APNDICE F: AVISOS LEGALES.......................................... 99
8.1.
8.2.
8.3.

PAQUETES COM.THEEXBTEAM.* ...................................................99


LIBRERAS JAVAX.COMM ................................................................99
TERCERAS PARTES .......................................................................100

9. BIBLIOGRAFA ..................................................................... 101


9.1.
9.2.
9.3.

REFERENCIAS BIBLIOGRFICAS (POR HACER) .........................101


HOJAS DE CARACTERSTICAS Y RECURSOS EN LA RED ..........101
DIRECCIONES DE FABRICANTES Y PROVEEDORES..................102

-3-

Robot con control remoto y cmara de vdeo integrada

NDICE DE ILUSTRACIONES
Figura 1

Vista general del prototipo en madera del robot .............................8

Figura 2

Vista lateral del robot ......................................................................8

Figura 3

Detalle de la batera del robot.........................................................9

Figura 4

Tarjeta de control del robot y radio enlace......................................9

Figura 5

Frontal del robot con los bumpers de colisin .............................. 10

Figura 6

Parte inferior del robot. ................................................................. 11

Figura 7

Detalle del bastidor delantero ....................................................... 11

Figura 8

Detalle de los sensores CNY70 del robot. .................................... 12

Figura 9

Tarjeta de control de motores con todos los sensores


conectados ................................................................................... 12

Figura 10

Comunicacin serie un bit de arranque, 8 de datos y uno de


parada. ......................................................................................... 14

Figura 11

Mdulo de radio frecuencia WIZ-434-SML-IA de Auriel ............... 15

Figura 12

Esquema de las tramas de comandos. ........................................ 17

Figura 13

Esquema de las tramas de ACK de comando. ............................. 17

Figura 14

Esquema de las tramas de estado ............................................... 18

Figura 15

Esquema de las tramas de pxeles de imgenes. ........................ 18

Figura 16

Detalle de la trama de datos de estado ........................................ 21

Figura 17

Grfico del proceso de clculo de la fila y columna de imagen.


..................................................................................................... 22

Figura 18

Esquema de la tarjeta de control de motores. .............................. 24

Figura 19

Sistema de alimentacin de la tarjeta de control de motores. ...... 25

Figura 20

Polarizacin de los sensores CNY70. .......................................... 26

Figura 21

Conexin de los sensores CNY70................................................ 26

Figura 22

Polarizacin de los bumpers......................................................... 27

Figura 23

Conexin de los bumpers. ............................................................ 27

Figura 24

Esquema del driver de motores.................................................... 28

Figura 25

Conexiones del microcontrolador. ................................................ 29

Figura 26

Interfaz del programacin AVR..................................................... 30

Figura 27

Circuito de reset. .......................................................................... 30

Figura 28

Lgica de adaptacin para la interrupcin mecnica.................... 31

Figura 29

Esquema de la tarjeta de control principal.................................... 54

Figura 30

Sistema de orientacin de la cmara. .......................................... 56

Figura 31

Cmara digital M64282FP ............................................................ 57

-4-

Robot con control remoto y cmara de vdeo integrada

Figura 32

Interfaz de la tarjeta principal con la cmara. ............................... 57

Figura 33

Asignacin de terminales de la cmara digital al bus de datos .... 58

Figura 34

Conexiones del microcontrolador. ................................................ 58

Figura 35

Detalle del registro de estado COMM........................................... 69

Figura 36

Esquema de funcionamiento de los codificadores de enlace ....... 72

Figura 37

Placa de control del host .............................................................. 82

Figura 38

Detalle del adaptador MAX232..................................................... 83

Figura 39

Detalle de la conexin con la tarjeta de radio frecuencia ............. 83

Figura 40

LEDs de la placa de control.......................................................... 84

Figura 41

Pines de contacto de la tarjeta de radiofrecuencia WIZ-434SML-IA.......................................................................................... 85

Figura 42

Diagrama UML del paquete com.theexbteam.comm.................... 87

Figura 43

Diagrama UML del paquete com.theexbteam.robots ................... 89

Figura 44

Aspecto de la interface grfica de usuario.................................... 91

Figura 45

Logotipo del lenguaje de programacin Java de Sun


Microsystems................................................................................ 92

Figura 46

Logotipo del proyecto APACHE ANT ........................................... 92

-5-

Robot con control remoto y cmara de vdeo integrada

NDICE DE TABLAS
Tabla 1.

Pila de protocolos. ........................................................................ 14

Tabla 2.

Configuracin de velocidad de las tarjetas WIZ-SML-IA. ............. 15

Tabla 3.

Comandos de motores ................................................................. 19

Tabla 4.

Comandos del sistema ................................................................. 20

Tabla 5.

Comandos de imagen .................................................................. 20

-6-

Robot con control remoto y cmara de vdeo integrada

1. INTRODUCCIN
1.1. OBJETIVOS
La prctica se compone de un robot motorizado con dos
servomotores, manipulados para funcionar como motores de continua con
caja reductora, y un sistema de adquisicin de vdeo usando una cmara
CCD de 128x128 pxeles monocroma. El sistema est controlado
remotamente por un PC y una aplicacin que recibir las imgenes
capturadas por la cmara del robot y transmitir las rdenes de
desplazamiento al robot.
El enlace se realiza mediante una tarjeta de radiofrecuencia halfduplex de 100 kbps de la casa AUREL. El enlace se controla desde un
PC por el puerto serie, estableciendo una comunicacin directa con el
robot.
El robot est gobernado por una tarjeta con un microcontrolador
ATMEL AT90S8515 que se comunica con el PC del usuario, adquiere
datos desde la cmara y puede controlar otra tarjeta similar que conforma
el sistema de control motriz. Esta segunda tarjeta hace funcionar al robot
como un seguidor de lnea al incorporar los sensores necesarios. Sin
embargo, el sistema motriz puede ser controlado por el usuario en un
modo de ejecucin especial.
La microcmara que se emplea es el modelo M64282FP Artificial
Retina de Mitsubishi Electric o similares. Se orienta mediante un
servomotor a pesar de que el sistema tiene capacidad para controlar dos.
El objetivo buscado es la creacin de un robot multifuncin,
fcilmente reprogramable. Para ello se ha querido desarrollar una
plataforma multiuso con varios modos de ejecucin, as cmo unas
libreras software para la comunicacin va radio y control del sistema.

1.2. DESCRIPCIN DEL ROBOT


Como se ha descrito antes el robot consta de distintas placas que se
montan sobre una estructura comn. Se ha buscado crear un soporte
robusto y compacto para albergar los distintos sistemas del robot.
-7-

Robot con control remoto y cmara de vdeo integrada

La estructura es de madera por su fcil manejo y poco peso. En la


parte superior del robot se colocan la batera, la tarjeta de radio, la tarjeta
principal y el sistema de la cmara. En la parte inferior se colocan los
motores y soportes necesarios as como la tarjeta de control de motores y
un bastidor en el que se hayan los sensores CNY70 encargados de la
deteccin de la lnea.

Figura 1

Vista general del prototipo en madera del robot

Figura 2

Vista lateral del robot

-8-

Robot con control remoto y cmara de vdeo integrada

La batera utilizada es una batera tpica para aplicaciones de


radiocontrol. Es una batera de Ni-Ca con una tensin nominal de 7,2V.
Se ha elegido esta batera por su tamao y por su durabilidad.
Proporciona potencia suficiente para alimentar todos los sistemas del
robot.

Figura 3

Detalle de la batera del robot

La tarjeta de radio, la cmara y la tarjeta de control principal forman


el cerebro del robot y se describen intensivamente en otros apartados.
Ocupan la parte superior del robot para facilitar el acceso a ellas. La
tarjeta de control tiene varias interfaces. A parte de los distintos
conectores para comunicarse con la tarjeta de radio, la de control de
motores y la cmara dispone de una interfaz de programacin integrada.

Figura 4

Tarjeta de control del robot y radio enlace

-9-

Robot con control remoto y cmara de vdeo integrada

Tambin dispone de unos LEDs de indicacin y un pulsador de reset.


Los LEDs se utilizan para notificar que la alimentacin est encendida,
que la programacin del microcontrolador est en curso o que se ha
activado una traza de depuracin.
En la parte superior delantera tambin se colocan los sensores de
deteccin de colisin frontal.

Figura 5

Frontal del robot con los bumpers de colisin

En la parte inferior se colocan los motores sujetos por abrazaderas.


Son dos servomotores manipulados para funcionar como motores de
corriente continua con caja reductora. Los dos motores junto con una
rtula adherida a un zcalo forman el sistema motriz y de apoyo de robot.

- 10 -

Robot con control remoto y cmara de vdeo integrada

Figura 6

Parte inferior del robot.

En la parte inferior tambin se colocan los sensores de colisin


trasera y los de deteccin de lnea. Los sensores de deteccin de lnea se
colocan en un bastidor ajustable en altura mediante unas gomas. Esto se
debe a que estos sensores tienen que estar cerca de la superficie a
explorar para proporcionar medidas fiables. Adems el bastidor impide
que una luz ambiente excesiva induzca ruido en las lecturas.

Figura 7

Detalle del bastidor delantero

La colocacin de los sensores se hace de forma que haya dos


sensores centrales que deben estar al mismo tiempo sobre la lnea. Los
dos sensores laterales se colocan ligeramente retrasados con respecto a
los otros. Con esta colocacin se consigue que si el robot se sale en una

- 11 -

Robot con control remoto y cmara de vdeo integrada

curva por la inercia los sensores laterales sigan detectando la lnea. En


este caso el robot deber intensificar el giro para volver a la situacin
deseada. Al estar estos dos sensores retrasados se maximiza la
probabilidad de que sigan detectando la lnea si el robot se sale en una
cuerva.

Figura 8

Detalle de los sensores CNY70 del robot.

La tarjeta de control de motores se coloca en el espacio libre bajo el


robot. Consta de dos puertos de sensores, uno para los CNY70 (sensores
de lnea) y otro para los bumpers (sensores de colisin). Tambin dispone
de puertos para los motores y para comunicarse con la tarjeta principal.
Los otros dos puertos son el de programacin y el de expansin. Este
ltimo no se usa en esta aplicacin y el primero es exactamente igual al
de la tarjeta principal.

Figura 9

Tarjeta de control de motores con todos los sensores conectados

En cuanto a la interfaz con el usuario se refiere, a los LEDs de


indicacin de la otra tarjeta se aade uno ms. Tambin incorpora un
nuevo pulsador, el de marcha. El nuevo LED indica que el sistema motriz
se ha iniciado y est listo para arrancar. Cuando se enciende este LED el
- 12 -

Robot con control remoto y cmara de vdeo integrada

robot espera a que el usuario pulse el botn de marcha para arrancar. El


sistema aplica un retardo antes de moverse para que el usuario pueda
apartar la mano.

- 13 -

Robot con control remoto y cmara de vdeo integrada

2. PROTOCOLOS DE COMUNICACIONES
Se han definido dos protocolos de comunicaciones: uno para cada una de
las funciones principales del sistema, el control remoto del robot y el envo de
los datos al control remoto.
La pila de protocolos empleada es la siguiente:
Niveles

Protocolos

RESTO

END TO END APPLICATION

ENLACE

LAPR

FSICO

RS-232/TTLoRF
Tabla 1. Pila de protocolos.

Dado que solamente existe comunicacin con una nica unidad remota y
un nico host controlador no hace falta especificar ningn sistema de
direccionamiento.
El nivel de enlace lleva a cabo las tareas de entramado, separacin de los
distintos protocolos de comunicaciones y en el caso del protocolo de
comandos, asegurar que todos los datos enviados llegan a su destino, tal
como se detalla seguidamente.

2.1. EL NIVEL FSICO: ENLACE RADIOFRECUENCIA


La comunicacin se lleva a cabo mediante una interface serie con
ocho bits de datos, uno de inicio y otro de parada a travs de un enlace
de radiofrecuencia.

Figura 10 Comunicacin serie un bit de arranque, 8 de datos y uno de parada.

Este enlace lo realizan las tarjetas Auriel WIZ-434-SML-IA y exige


una fragmentacin de datos de 96 bytes por paquete, brindando un canal
de comunicaciones half-duplex de cadencia 100 kbps. Emplea la banda

- 14 -

Robot con control remoto y cmara de vdeo integrada

libre de los 433 MHz para mandar los datos mediante una modulacin 2FSK.

Figura 11 Mdulo de radio frecuencia WIZ-434-SML-IA de Auriel

La interface entre la tarjeta de radiofrecuencia y el host destinatario


se realiza a una tasa binaria configurable entre los 9600 bps y los 115200
bps, siendo esta ltima cifra la empleada en nuestro sistema dada la alta
tasa de datos que se envan desde la unidad remota hacia el host de
control. La tasa binaria se configura mediante los switches 1 y 2 segn la
tabla siguiente:
DS1
Abierto
Abierto
Cerrado
Cerrado

DS2
Abierto
Cerrado
Abierto
Cerrado

VELOCIDAD (bps)
9600
19200
57600
115200

Tabla 2. Configuracin de velocidad de las tarjetas WIZ-SML-IA.

La tarjeta de radiofrecuencia se pone automticamente a modular la


informacin a transmitir transcurrido un tiempo igual a 1,5 veces el
perodo de byte, T:

3
3 2+8
Tout = T =
2
2 vb
Para nuestro caso, dado que transmitimos a una cadencia de
115200 bps, resulta:
Tout 130s

- 15 -

Robot con control remoto y cmara de vdeo integrada

Sin embargo, segn indican las hojas de caractersticas del


fabricante, el mnimo tiempo de guarda es de 500s, que es el Tout que se
usar.
Finalmente, la tarjeta de radiofrecuencia tarda un tiempo Tmod en
modular un paquete de N bytes igual a:
Tmod = 3.6ms + ( N + 2)0.156ms,
durante el cual no se puede mandar ningn dato a la tarjeta, pues
sta los descarga automticamente. El fabricante recomienda guardar
como precaucin unos pocos milisegundos ms antes de mandar el
siguiente paquete de datos, por lo que se ha tomado un valor de tiempo
de seguridad adicional de 2ms.
El mdulo WIZ-SML-IA proporciona adems capacidad de deteccin
de errores, activando el switch 3, entrega nicamente los datos si stos
han pasado satisfactoriamente el checksum al que son sometidos. Para
nuestro caso, hemos usado esta caracterstica para evitar sobrecargar el
microprocesador principal.

2.2. NIVEL DE ENLACE: LAPR


La informacin que se debe transferir a travs del enlace
radiofrecuencia puede ser de dos tipos: rdenes o comandos y datos de
estado o imgenes. Dado que slo se dispone de un nico canal se
precisa de una multiplexacin en el tiempo para poder transmitir toda esta
informacin y no tener problemas de mala interpretacin.
Por ello se define el protocolo de enlace LAPR (Link Access Protocol
for Robots.) Este protocolo ofrece dos tipos de servicio, cada uno
orientado a cubrir las necesidades de envo de comandos o de datos. Las
tramas de bits se transmiten con un separador de trama, que es el byte
01111110 (126 en decimal) seguido de la cabecera identificadora de
servicio, la cabecera de control y los datos a enviar.
Cada servicio se identifica a travs de un nico bit LSAPID (Link
Service Access Point Identifider.) As:

- 16 -

Robot con control remoto y cmara de vdeo integrada

LSAPID 0 Servicio de Comandos. Este servicio es un servicio


orientado a conexin fiable y confirmado. Se emplea para transmitir
desde el host de control a la unidad remota las rdenes, y por ello cada
orden es confirmada por el robot enviando una trama de ACK de
Comando:
Envo de Comando:
01111110
7

LSAPID
0

C FR ID

6 5
Byte 1

Byte 0

COMANDO
7

0
Byte 2

Figura 12 Esquema de las tramas de comandos.

Para enviar un comando, la cabecera de control deber incluir


su bit ms significativo puesto a cero, seguido de cinco bits que
indican el identificador de trama (C FR ID.) El siguiente byte es el
comando a transmitir. Los dos ltimos bytes, al ser datos, son
codificados para evitar que cadenas de la forma 01111110 se
confundan con separadores de trama, pudiendo llegar a ocupar, a
nivel fsico 4 bytes el envo (sin contar con los bits de arranque y
parada.) As, la ventana de transmisin de comandos queda con un
tamao de 64 comandos, permitiendo rfagas de hasta 64 rdenes.
En la implementacin del software de control, la ventana no se
desplaza hasta haber recibido los ACKs de todos los comandos
recibidos.
Este servicio reenva automticamente los comandos no
confirmados hasta que sean confirmados, o bien se enve el
comando

reservado

0xFF

de

sincronizacin

(funcin

de

inicio/sincronizacin de la conexin.)
Envo de ACK de Comando:
01111110
7

LSAPID
0

Byte 0

C FR ID

6 5
Byte 1

Figura 13 Esquema de las tramas de ACK de comando.

Para confirmar un comando, el servicio 0 de enlace manda


automticamente una trama compuesta por el separador de trama,
el LSAPID 0 y en la cabecera de control, el bit ms significativo (ACK)

- 17 -

Robot con control remoto y cmara de vdeo integrada

activo, seguido de los cinco bits del ID de trama. Los ACKs se


envan siempre que, o bien se haya recibido un comando con
FRAME ID igual al esperado o bien se haya recibido un comando ya
recibido anteriormente, y que por tanto, el hueco de la ventana de
recepcin correspondiente a su FRAME ID contenga dicho comando.
LSAPID 1 Servicio de Datos. Este servicio es un servicio no
orientado a conexin fiable y no confirmado. Independientemente de
que el host remoto est escuchando, el robot transmite continuamente
el estado de la unidad y, salvo orden expresa del host de control, los
datos de la cmara. Como se puede transmitir tanto el estado como
pxeles de la cmara se sigue el siguiente criterio:
Envo de Estado:
01111110

LSAPID 0

IHB

Byte 0

GL
4
3
Byte 1

Figura 14 Esquema de las tramas de estado

Donde se disponen de seis bits para los datos de estado. En el


apartado Protocolo de datos se explica detalladamente el uso de
cada uno de ellos.
Envo de Pxeles de Imgenes:
01111110
7

LSAPID
0

Byte 0

I ROW#

6 5
Byte 1

PIXELES()
7

0
Byte 2,3

Figura 15 Esquema de las tramas de pxeles de imgenes.

La cabecera de control incluye en sus seis bits menos


significativos los seis menos significativos de la fila a la que
pertenecen los pxeles que se reciben. La recomposicin de la
imagen se detalla en el apartado Protocolo de datos.

2.3. PROTOCOLO DE COMANDOS


La implementacin del protocolo de comandos destina un byte para
el envo de comandos, permitiendo el uso de hasta 256 rdenes distintas.
Las rdenes se dividen en tres tipos: mecnicas o de motores, de sistema
o de imagen.

- 18 -

Robot con control remoto y cmara de vdeo integrada

2.3.1. RDENES DE MOTORES


Las rdenes de motores se enmascaran con los dos bit ms
significativos puestos a cero (00xxxxxx.) Se han definido catorce
rdenes de movimiento distintas que recogen todas las posibilidades
que se pueden realizar con los dos motores principales del robot.
Estas rdenes, con la mscara 0000xxxx se envan directamente
desde la tarjeta de control principal del robot hacia la tarjeta de
control de motores, que automticamente pasa al modo manual.
Asimismo, la orden 1410 = 0x0E, de MODO_AUTOMTICO
no se enva a la tarjeta de control de motores. En vez de ello, lo que
se hace es poner el bit MODE (PC5) a 0 (automtico.)
El conjunto de comandos de motores es el siguiente:
Nombre
Recto
Giro Derecha
Giro Izquierda
Marcha Atrs
Desvo Derecha

HEX
0x00
0x01
0x02
0x03
0x04

Desvo Izquierda

0x05

Gira Derecha Trasero

0x06

Gira Izquierda Trasero

0x07

Acelerar
Reducir
Busca Lnea Y Para
Rota Derecha

0x08
0x09
0x0a
0x0b

Rota Izquierda

0x0c

No Definido
Modo Automtico

0x0d
0x0e

Paro Total

0x0f

Descripcin
Desplazamiento hacia delante.
Gira a la derecha.
Gira a la izquierda.
Desplazamiento hacia atrs.
Desplazamiento hacia delante y la
derecha.
Desplazamiento hacia delante y la
izquierda.
Desplazamiento hacia atrs y la
derecha.
Desplazamiento hacia atrs y la
izquierda.
Aumentar la velocidad global.
Decrementar la velocidad global.
Busca la lnea y para los motores.
Rotacin (mueve dos motores) a la
derecha
Rotacin (mueve dos motores) a la
izquierda
No definido
Pasa a modo automtico de
seguimiento de lneas.
Paro completo de los motores

Tabla 3. Comandos de motores

Todas las rdenes con mscara 00XXyyyy, con XX distinto de


00 e y 0 1 indistintamente no son procesadas actualmente, pero
se pueden implementar nuevos movimientos del robot.

- 19 -

Robot con control remoto y cmara de vdeo integrada

2.3.2. RDENES DEL SISTEMA


Actualmente existen nicamente dos comandos de sistema a
parte del comando reservado 0xff:
Nombre
Ping

HEX
0xC1

System Reset

0xCF

RESERVADO

0xFF

Descripcin
Peticin de respuesta, para comprobar
si la unidad remota responde.
Reset completo de la tarjeta de control
del robot.
Conexin interna, no permitido su
envo.

Tabla 4. Comandos del sistema

Las rdenes de sistema se enmascaran con los dos bits ms


significativos puestos a uno.
2.3.3. RDENES DE IMAGEN
Las rdenes de imagen se emplean para controlar la cmara
digital basada en el chip M64282FP de Mitsubishi. Con estos
comandos se puede iniciar o detener la captura de imgenes,
cambiar los modos de captura o alterar el tiempo de exposicin.
Tambin gestiona los movimientos los servos de la cmara para
orientar la vista del robot. Se emplea la mscara 01xxxxxx para
diferenciarlos del resto de comandos.
Nombre
Mira Al Frente
Mira a la derecha
Mira a la izquierda
Mira arriba
Mira abajo
Inicia captura
Reset cmara
Carga Registros
Fija Registro xxx
Fija Dato Bajo xxxx
Fija Dato Alto xxxx

HEX
0x40
0x41
0x42
0x43
0x44

Descripcin
Centra la vista al frente
Gira el servo horizontal a la derecha
Gira el servo horizontal a la izquierda
Gira el servo vertical hacia arriba
Gira el servo vertical hacia abajo
Activa la seal START de inicio de
captura.
Reinicia la cmara con los valores por
defecto de la misma.
0x59
Carga los ocho registros de
configuracin de la cmara.
0x50-57 Fija como registro activo el contenido en
los tres bits menos significativos.
0x70-7f Fija los cuatro bits menos significativos
del registro activo como los cuatro bits
menos significativos del comando
0x60-6f Fija los cuatro bits ms significativos del
registro activo como los cuatro bits
menos significativos del comando.
Tabla 5. Comandos de imagen

- 20 -

Robot con control remoto y cmara de vdeo integrada

Las primeras cinco rdenes se envan directamente al


microcontrolador de servos basado en un PIC16F84. Se envan a
travs de cuatro pines, soportando el PIC16F84 ampliaciones de
funciones con el puerto de expansin de cuatro contactos.
Para cargar un registro de la cmara con un byte dado,
primeramente se deber fijar el registro activo mediante Fija
Registro xxx. Seguidamente, se cargan, en orden indistinto la parte
baja y la parte alta del byte a cargar mediante Fija Dato Bajo xxxx y
Fija Dato Alto xxxx. Finalmente se manda el comando Carga
Registros para que se actualicen todos los registros de la cmara.

2.4. PROTOCOLO DE DATOS


2.4.1. ESTADO DEL ROBOT
Los seis bits menos significativos del segundo byte de la trama
de datos de estado contienen distintos parmetros que monitorizan
el estado del robot:
01111110
7

LSAPID
7

0
6

IHB
5

Byte 0

4
3
Byte 1

GL
0

Figura 16 Detalle de la trama de datos de estado

IHB: bit 6, se pone a uno cuando el robot est transmitiendo las


filas mayores o iguales a 64 (64-127) de la imagen. Se emplea en
el gestor de imgenes para determinar la fila en la que almacenar
los datos de pxeles recibidos.
5-1: No usados en la implementacin actual
GL: bit 0, indica cuando est a uno que los sensores CNY70 de
la tarjeta controladora de motores han detectado la presencia de
la lnea gua.
2.4.2. RECOMPONIENDO LA IMAGEN
El software de gestin de imagen deber encargarse de la
tarea de recomposicin de la imagen a partir de los pxeles que
reciba del robot.

- 21 -

Robot con control remoto y cmara de vdeo integrada

Las tramas de datos de imagen son de longitud variable de


como mucho 96 bytes, y la cabecera contiene los seis bits menos
significativos de la fila a la que pertenecen los pxeles recibidos. La
cmara digital tiene una resolucin de 128x128 pxeles y cada uno
de ellos se lee con una resolucin de 256 niveles de gris. Al recibir
los datos, el software de gestin de cmara deber ir alojando
consecutivamente los pxeles que reciba a partir de la posicin de
columna cero y hasta alcanzar la posicin de columna 127. La fila en
la que deber guardar los datos se calcula tomando el bit de estado
IHB como bit ms significativo y sumndole los seis bits menos
significativos contenidos en la cabecera de la trama de imagen:
n fila = IHB2 6 + CABECERA[5..0]

Para evitar problemas de desincronizacin entre el pxel


mandado por la unidad remota y el software de control se enva
siempre que se inicia la trama la informacin necesaria para poder
determinar si se ha pasado a enviar la informacin de la siguiente fila.

FILA

COLUMNA
FILA

COLUMNA

LSAPID

6 5
Byte 1

Aplicacin de control

I ROW#
0

*26
LSAPID

IHB

GL
4
3
Byte 1

Figura 17 Grfico del proceso de clculo de la fila y columna de imagen.

Finalmente, aunque la aplicacin de control reciba ms datos,


si alcanza la columna 127, pasar automticamente a la siguiente
lnea, descartando todos los datos que reciba hasta que vuelva a

- 22 -

Robot con control remoto y cmara de vdeo integrada

encontrar un inicio de trama de imagen con un valor de lnea de


imagen vlido.
Todas estas tareas las realiza de forma automtica la clase
ImageCore del paquete com.theexbteam.robots que se describe en
la parte de la aplicacin de control remoto.

- 23 -

Robot con control remoto y cmara de vdeo integrada

3. TARJETA DE CONTROL DE MOTORES


3.1. DESCRIPCIN DEL HARDWARE
Esta tarjeta fue creada con la idea de independizar los sistemas
motrices y de deteccin de lnea del control de la cmara y de la tarjeta
de radio. Esta tarjeta es como la de cualquier microrobot seguidor. Se
pueden diferenciar cuatro bloques en la tarjeta, alimentacin, sensores,
driver de motores y procesado. El esquema de la tarjeta es el que
muestra la figura.
L7805/TO220

C1
100nF

GND

C4
100uF

C2
100nF

J4
PWR_OUT
2

C3
220uF

MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1

D1
PWR_ON

R3
470

EN_MOT1
EN_MOT2

1
9

+5V
+7,2V

16
8

19
18

RESET

31
9

R1
470

40

ALE
OC1B

EXP1
EXP2
MODE
INT_MEC
BUMP_TRAS
EN_MOT1
EXP3
EXP4

30
29

8MHz

R21

470

ICP
RST
VCC

D6

VCC1
VCC2

R23
1K

EXP1
EXP2
EXP3
EXP4

R22

RST
SCK
MISO

10K

TARJ_PPAL

7432

BUMP_TRAS 11

R15
1K

+5V

R5

47K
+5V

CNY 3
47K
+5V

4
3
2
1

+5V

BUMPER3

BUMPER2
R11
10K
+5V

4
3
2
1

J15
4
3
2
1

BUMPER4
R20
10K
+5V

CNY2

BUMPER4
BUMPER2

R8
J11
220
CNY 4

4
3
2
1

J14
BUMPER3
R19
10K

J13

+5V
R6
J10
220

R7

4
3
2
1
BUMPER1

4
3
2
1

CNY 1

7432

R17
1K

J12
BUMPER1
R10
10K

R13
J9
220
CNY 2

+5V

13 BUMPER4

SW2
MARCHA

C11
100nF

U4B

+5V

BUMPER3

SW1
RESET

C12
100nF

R12
J8
220

U4D

MARCHA

+5V

+5V

R16
10K

RESET

U4C

10
7432

+5V
R14
10K

U4A

+5V

47K

D8

+5V

2
4
6
8
10

PROGRAMADOR

RESET

R4

C10
100nF

+5V

1
3
5
7
9

D13
DIODO_RST

4
3
2
1

+7,2V

+7,2V
J16
MOSI

CNY 1

+7,2V

1N4001

D7

EN_MOT2

1
2
3
4

D5

1N4001 1N4001

1N4001 1N4001

INT_MEC 8

EXPAN

12

GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE

D10

C8
15pF

D12
PROG

J1

D9
1N4001

J7
MOT2

7432
J3
8
7
6
5
4
3
2
1

C6
100nF
+7,2V

1/2EN
3/4EN

+5V

20

+5V

XTAL1
XTAL2

10
11
12
13
14
15
16
17

C7
15pF

D4
1N4001

XTAL1
XTAL2

PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD

CNY 1
CNY 2
CNY 3
CNY 4
BUMPER1
BUMPER2
BUMPER3
BUMPER4

D3
1N4001

J6
MOT1

D14
DEP

PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK

21
22
23
24
25
26
27
28

14

R18
470

MOSI
MISO
SCK

PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15

D11
READY

1
2
3
4
5
6
7
8

PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7

3
6
11
14

XTAL2

MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1

39
38
37
36
35
34
33
32

GND

GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
MARCHA

1Y
2Y
3Y
4Y

XTAL1
AT90S8515

L293

1A
2A
3A
4A

C9 +
100uF

Y1
U3

2
7
10
15

U2

J5
PWR_IN

+5V

VOUT

VIN

U1
+7,2V

R9

47K
+5V

4
3
2
1

Title
Tarjeta de control de motores para Robot LSED
Size
A4

CNY 3

CNY4

Date:

Document Number
1
Monday , June 23, 2003

Rev
4.0
Sheet

of

Figura 18 Esquema de la tarjeta de control de motores.

Para un mayor detalle, vase la figura 2 del apndice B.


3.1.1. ALIMENTACIN
Este es un bloque fundamental pues la alimentacin tiene que
estar muy estabilizada porque los motores son una fuente de ruido
impulsivo en las lneas de alimentacin. La estabilizacin se
consigue separando la alimentacin de los motores de la del resto
de la tarjeta.

- 24 -

Robot con control remoto y cmara de vdeo integrada

Los motores se alimentan directamente desde la batera de


7,2V. El resto de la tarjeta necesita una tensin de alimentacin de
5V, lo que se consigue mediante el regulador L7805. La
estabilizacin se realiza filtrando

la

alimentacin

con

unos

condensadores de capacidad elevada. Los filtrados crticos se han


de realizar antes y despus del regulador y en la entrada de potencia
de los drivers de motores. Con este montaje el ruido impulsivo no
afecta al correcto funcionamiento del sistema. Los motores toman la
carga almacenada en los condensadores en los picos de tensin y
no de la batera por lo que se evitan cadas de tensin en la
alimentacin de a lgica de control.

VIN

C1
100nF

VOUT
GND

+5V

2
C4
100uF

C2
100nF

C3
220uF

L7805/TO220

J5
PWR_IN

U1

J4
PWR_OUT
2

+7,2V

D1
PWR_ON

R3
470

Figura 19 Sistema de alimentacin de la tarjeta de control de motores.

3.1.2. SENSORES
El robot ha de ser capaz de orientarse automticamente. Para
la orientacin deber seguir una lnea negra sobre un fondo blanco.
Adicionalmente se han de poder detectar posibles colisiones con
obstculos.
Para poder seguir la lnea se utilizan unos sensores de
infrarrojos tipo CNY70. Estos sensores integran un fotodiodo que
emite radiacin infrarroja y un fototransistor que se polariza en
funcin de la radiacin recibida. Si el sensor est sobre una
superficie negra la radiacin emitida por el fotodiodo no se refleja y
el fototransistor est en situacin de corte. Por el contrario, si el
sensor se posiciona sobre una superficie blanca el fototransistor
capta la radiacin emitida por el fotodiodo.
La red para poder usar estos transistores es muy simple. Se
ha de polarizar el fotodiodo para que emita siempre con una

- 25 -

Robot con control remoto y cmara de vdeo integrada

potencia lo suficientemente alta para que la radiacin pueda ser


detectada. El fototransistor tambin se ha de polarizar para que este
en la zona activa o en corte dependiendo de la luz incidente en la
base. Los niveles entregados por el transistor han de ser
compatibles con la lgica empleada. El esquema de polarizacin es
el que se muestra en la siguiente figura.
+5V
R1
47K
1

R2
220

CNY 70

+5V

Figura 20 Polarizacin de los sensores CNY70.

Con esta red se satisfacen los requisitos mencionados. Hay


que tener cuidado al conectar los sensores a la placa. El usuario se
ha de cerciorar de que la conexin al molex verifica el esquema de la
siguiente.
+5V
R2
220

47K
+5V

4
4
3
2
1

CNY 70

CNY x

R1

J1

OUT

Figura 21 Conexin de los sensores CNY70.

La lectura del valor del CNY por el microcontrolador se realiza


por la lnea out. Un valor 0 indica que el sensor est sobre la lnea
negra, un valor 1 indica todo lo contrario.
Como medida de seguridad, para evitar daar el sensor o
lecturas errneas, las conexiones se han de aislar bien. En nuestro
caso se us un aislante termoretrctil para aislar cada una de las
patas del sensor de las dems. Tambin hay que destacar que los

- 26 -

Robot con control remoto y cmara de vdeo integrada

sensores se colocan en una pieza de madera que no deja pasar la


luz. Esto es importante porque contribuye a eliminar la luz ambiental
haciendo las lecturas ms fiables.
Para poder detectar obstculos en el camino se usaron unos
sensores tipo bumper. Estos elementos no son en realidad sensores
sino pulsadores en un encapsulado especial. La red de polarizacin
ser por lo tanto muy simple y se corresponde a la mostrada en la
siguiente figura.
+5V
R1
10K

+5V
BUMPER

NO
NC

Figura 22 Polarizacin de los bumpers.

La conexin con los molex ha de ajustarse el esquema que se


muestra a continuacin para que las lecturas sean correctas.
J1
OUT
+5V

R1

10K

4
3
2
1

BUMPER

NO
NC

BUMPERx

Figura 23 Conexin de los bumpers.

3.1.3. DRIVER DE MOTORES


La tarjeta de control incluye el circuito de potencia necesario
para atacar el sistema motriz del robot. Los dos motores que
conforman este sistema se excitan a travs de un circuito
denominado puente en H. Este tipo de circuitos permiten que los
niveles lgicos de la tarjeta controlen las grandes corrientes que
circulan por los devanados de los motores.
Se ha optado por un puente en H integrado que permite la
rotacin en ambos sentidos de los dos motores, el L293. La
configuracin elegida hace que cada motor se controla con tres bits,
dos para seleccionar el sentido de giro y otro para arrancarlo. Los

- 27 -

Robot con control remoto y cmara de vdeo integrada

bits para seleccionar el sentido de giro pueden parar el motor si


toman el mismo valor. Si toman distintos valores estos bits los
motores girarn en distintos sentidos. Para la misma combinacin
cada uno de los motores gira en sentidos contrarios debido a su
orientacin. El tercer bit se conecta a uno de los canales PWM del
microcontrolador para poder controlar la velocidad de giro. Este
control se realiza variando el ciclo de trabajo del PWM. El esquema
de este bloque es el de la figura siguiente.

1
9

+5V
+7,2V

16
8

3
6
11
14

D3
1N4001

J6
MOT1

D4
1N4001

D6

VCC1
VCC2
J7
MOT2

D7

C6
100nF

+7,2V

1/2EN
3/4EN

D9
1N4001

D10

D5

1N4001 1N4001
+7,2V

1N4001

C9 +
100uF

1Y
2Y
3Y
4Y

EN_MOT1
EN_MOT2

1A
2A
3A
4A

2
7
10
15

L293
2

U2
MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1

+7,2V

C10
100nF

D8

1N4001 1N4001
+7,2V

Figura 24 Esquema del driver de motores.

En el esquema se puede observar que la lgica se alimenta a


5 voltios mientras que los devanados de los motores se alimentan
directamente de las bateras. Se ha comentado ya que los motores
producen un ruido impulsivo por lo que hay que tener en cuenta esto.
Para este fin hay que filtrar la alimentacin de la lnea de potencia
del puente en H (condensador 9 en el esquema) y las conexiones de
los motores (condensadores 6 y 10 en el esquema).
Este ruido impulsivo puede adems daar los motores puesto
que la tensin de trabajo est ligeramente por encima de la nominal
de los motores. Esta situacin provoca que los devanados de los
motores se puedan fundir si el ruido es demasiado fuerte. Para evitar
esto es necesario conectar unos diodos de proteccin que eviten las
oscilaciones de la tensin de alimentacin y absorban los excesos
de corriente que daaran los motores.

- 28 -

Robot con control remoto y cmara de vdeo integrada

3.1.4. PROCESADO
Este bloque de la tarjeta tiene como finalidad coordinar el
funcionamiento de los bloques de sensores y driver de motores
adems de realizar las rdenes recibidas de la tarjeta principal.
El ncleo de este bloque es el microcontrolador, como era de
esperar. Este se encarga de todo el procesado. En la figura 2.7 se
puede ver la disposicin de los puertos.
U3

MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1

D11
READY

R18
470

D14
DEP

MOSI
MISO
SCK

1
2
3
4
5
6
7
8

XTAL1
XTAL2

19
18

RESET

31
9

+5V

40

PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7
PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
XTAL1
XTAL2

PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15
PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD
ALE
OC1B

21
22
23
24
25
26
27
28

CNY 1
CNY 2
CNY 3
CNY 4
BUMPER1
BUMPER2
BUMPER3
BUMPER4

10
11
12
13
14
15
16
17

EXP1
EXP2
MODE
INT_MEC
BUMP_TRAS
EN_MOT1
EXP3
EXP4

30
29

EN_MOT2

ICP
RST
VCC

GND

R1
470

39
38
37
36
35
34
33
32

AT90S8515

20

GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
MARCHA

Figura 25 Conexiones del microcontrolador.

Los sensores se conectan al puerto C. Este puerto no tiene


ninguna funcionalidad adicional por lo que no se sacrifican recursos
en la lectura de los sensores.
El control de la direccin de los motores se hace con los cuatro
bits menos significativos del puerto B. El bit 5 se usa como traza de
depuracin, se le conecta un LED que el usuario puede encender
por software para controlar la ejecucin del programa. El resto de los
bits de este puerto se utilizan para el programador serie. La interfaz
de este programador es la que especifica el fabricante para este
modelo. Su esquema se puede ver en la figura.

- 29 -

Robot con control remoto y cmara de vdeo integrada

+5V
R21

470
D12
PROG

J16
MOSI

R22

1
3
5
7
9

RST
SCK
MISO

10K

D13
DIODO_RST

+5V
2
4
6
8
10

PROGRAMADOR

RESET

Figura 26 Interfaz del programacin AVR.

El LED PROG se ilumina mientras se est programando el


microcontrolador. El otro diodo sirve para que el programador pueda
forzar un reset si pone RST a cero. Sin embargo en condiciones
normales el reset estar a nivel alto. El circuito completo que se
conecta a la pata de reset del microcontrolador es el que muestra la
siguiente figura.
+5V

RST
R22

10K

+5V

D13
DIODO_RST

R14
10K

RESET
C12
100nF

SW1
RESET

R15
1K

Figura 27 Circuito de reset.

Como se puede observar, mientras que el pulsador no se


presione o no se fuerce externamente RST a 0V, la seal de reset
estar a nivel alto. Sin embargo, en el momento en el que se pulse el
botn de reset hardware o se fuerce RST a 0V, la lnea RESET
tomar un voltaje que el microcontrolador interpretar como nivel
bajo, ejecutndose la rutina de reset.
El puerto A se destina a la interaccin con agentes exteriores.
Por agentes exteriores nos referimos al usuario o a la tarjeta
principal. Los dos bits ms significativos se destinan a interactuar
con el usuario.

- 30 -

Robot con control remoto y cmara de vdeo integrada

Una vez se ha ejecutado la rutina de reset el robot queda en


espera hasta que la lnea MARCHA (bit 6 del puerto A) toma un 0
lgico. Esta situacin de espera se indica encendiendo el LED
READY (bit 7 del puerto A). Cuando el usuario presione el pulsador
MARCHA (ver figura 2.1) el robot empezar la ejecucin del
programa de modo automtico tras aplicar un retardo.
Los otros seis bits se utilizan para la comunicacin entre
tarjetas. El bit cinco indica el modo en el que se tiene que ejecutar el
programa de motores. Si est a nivel alto el modo ser el automtico,
sino, ser manual. El bit menos significativo lo activa el
microprocesador cuando se coloca sobre la lnea al ejecutar la orden
de buscar y parar. El resto de los bits determinan el cdigo de la
orden que debe ejecutar el robot en modo manual.
Al puerto D se conectan otras seales de control. Los bits 0, 1,
6 y 7 son bits de expansin y no se usan en esta aplicacin. Los bits
2 y 3 son las interrupciones externas.
La interrupcin 0 es la de modo, cuando MODE conmuta a
cero se dispara la interrupcin y se pasa a ejecutar el modo manual.
La interrupcin 1 se dispara cuando alguno de los dos bumpers
delanteros detecta un choque o el robot se separa de la lnea. Sin
embargo, en esta aplicacin en la tarjeta se a cortado la pista que
detecta que se ha separado de la lnea. Para que la interrupcin 1
funcione como se ha descrito es necesario aadir la siguiente lgica
de adaptacin.
1
3

BUMPER1
BUMPER2

14

U4C

U4A

+5V

4
7

7432

U4B
CNY 1

7432

10

INT_MEC 8

CNY 2

7432

Figura 28 Lgica de adaptacin para la interrupcin mecnica.

- 31 -

Robot con control remoto y cmara de vdeo integrada

El bit 4 le indica al microprocesador si ha habido una colisin


por detrs. Los otros dos bits que faltan por comentar son las salidas
de los canales PWM que son OC1A y OC1B.

3.2. DESCRIPCIN DEL SOFTWARE.


El microcontrolador se ha programado ntegramente en lenguaje
ensamblador. El ensamblador elegido es el suministrado por ATMEL para
su familia de controladores AVR. En los siguientes apartados se
describen los distintos mdulos del software de la tarjeta de control.
3.2.1. EQUIVALENCIAS Y VECTORES DE INTERRUPCIN
Para poder variar los parmetros del programa cmodamente
sin producir errores se definen unas variables globales. Para esto se
definen distintos grupos de equivalencias.
El primer grupo de equivalencias se usa para poder trabajar
con

los

registros

de

entrada

salida

configuracin

del

microcontrolador usando sus nombres y no sus direcciones. El


cdigo es el sigue a continuacin.
; Registros de entrada y salida
.EQU

SREG

= 0x3f

.EQU

SPH

= 0x3e

.EQU

SPL

= 0x3d

.EQU

GIMSK

= 0x3b

.EQU

GIFR

= 0x3a

.EQU

TIMSK

= 0x39

.EQU

TIFR

= 0x38

.EQU

MCUCR

= 0x35

.EQU

TCCR0

= 0x33

.EQU

TCNT0

= 0x32

.EQU

TCCR1A

= 0x2f

.EQU

TCCR1B

= 0x2e

.EQU

TCNT1H

= 0x2d

.EQU

TCNT1L

= 0x2c

.EQU

OCR1AH

= 0x2b

.EQU

OCR1AL

= 0x2a

.EQU

OCR1BH

= 0x29

.EQU

OCR1BL

= 0x28

- 32 -

Robot con control remoto y cmara de vdeo integrada


.EQU

ICR1H

= 0x25

.EQU

ICR1L

= 0x24

.EQU

WDTCR

= 0x21

.EQU

PORTA

= 0x1b

.EQU

DDRA

= 0x1a

.EQU

PINA

= 0x19

.EQU

PORTB

= 0x18

.EQU

DDRB

= 0x17

.EQU

PINB

= 0x16

.EQU

PORTC

= 0x15

.EQU

DDRC

= 0x14

.EQU

PINC

= 0x13

.EQU

PORTD

= 0x12

.EQU

DDRD

= 0x11

.EQU

PIND

= 0x10

Los parmetros principales con los que trabaja la tarjeta son


los ciclos de trabajo de los PWM y los bits de direccin de los
motores. Para poder ajustar fcilmente los valores de estos
parmetros se usa otro grupo de equivalencias.
;Constantes de velocidad y direccin para los motores
;Duty cycle = 80%
.EQU

VEL_MAX

= 0x0332

;Duty cycle = 40%


.EQU

VEL_MED

= 0x0199

;Duty cycle = 60%


.EQU

VEL_MAX2

= 0x0266

;Duty cycle = 20%


.EQU

VEL_MED2

= 0x0133

;Parada rpida
.EQU

STOP

= 0x00

;Marcha directa
.EQU

GO

= 0x06

;Giro a la izquierda
.EQU

LEFT

= 0x02

;Giro a la derecha
.EQU

RIGHT

= 0x04

;Marcha inversa
.EQU

BACK

= 0x09

;Rotacin a la izquierda

- 33 -

Robot con control remoto y cmara de vdeo integrada


.EQU

RLEFT

= 0x0a

;Rotacin a la derecha
.EQU

RRIGHT

= 0x05

Los ltimos parmetros que conviene poder ajustar son los de


la rutina de retardo. Esto es necesario para controlar la distancia que
recorre el robot durante la interrupcin de choque tal y como se ver
ms

adelante.

Las

equivalencias

mencionadas

se

listan

continuacin.
;Constantes para la rutina de retardo
;Retardo por vuelta
.EQU

RET_V

= 0xff

;Nmero de vueltas
.EQU

VUELTAS

= 0xff

En el mismo archivo se incluye la tabla de vectores de


interrupcin. Esta tarjeta solo debe procesar tres fuentes de
interrupcin, que son la de reset y las dos externas. Si se dispara
cualquier otra interrupcin se debe a un error por lo que el
microprocesador ha de ejecutar la rutina de reset para que el usuario
se percate de ello y depure el programa. La tabla se describe a
continuacin.
.ORG 0x000
;Salto a rutina de reset
rjmp

RESET

;Salto a rutina de cambio de modo


rjmp

INT_MODE

;Salto a rutina de desvo o colisin


rjmp

INT_MEC

;Si saltan estas interrupciones se debe a un error


rjmp

RESET

rjmp

RESET

rjmp

RESET

rjmp

RESET

rjmp

RESET

rjmp

RESET

rjmp

RESET

rjmp

RESET

rjmp

RESET

- 34 -

Robot con control remoto y cmara de vdeo integrada


rjmp

RESET

3.2.2. RUTINA DE RESET


Esta rutina debe configurar el timer 1 para funcionar como un
PWM de dos canales, los sentidos (entrada o salida) de los puertos,
las fuentes de interrupcin y el puntero de pila. Para esto el cdigo a
ejecutar se puede consultar en las hojas del fabricante. El cdigo
que se le ha cargado al robot es el aqu listado.
;Cdigo de la rutina de reset
RESET:
clr

r16

;Interrup. deshabilitadas
out

SREG,r16

;Interrup. de los contadores deshabilitadas


out

TIMSK,r16

ldi

r16,0xc0

;Interrup. externas permitidas


out

GIMSK,r16

ldi

r16,0x0f

;Sin RAM externa ni modo SLEEP e interrup. por flanco


positivo
out

MCUCR,r16

ldi

r16,0xa3

;Timer1 como PWM 10-bit no invertido


out

TCCR1A,r16

ldi

r16,0x02

;Frecuencia del timer1 es CLK/8


out

TCCR1B,r16

clr

r16

out

OCR1AH,r16

out

OCR1AL,r16

out

OCR1BH,r16

;Ambos canales
parados)
out

del

PWM

OCR1BL,r16

;Timer0 parado
out

TCCR0,r16

ldi

r16,0x02

out

SPH,r16

ldi

r16,0x5f

- 35 -

siempre

cero

(Motores

Robot con control remoto y cmara de vdeo integrada


;SP al final de la RAM
out

SPL,r16

ldi

r16,0x81

ldi

r17,0x5f

clr

r18

ldi

r19,0x20

;Configuracin del puerto A


out

DDRA,r16

;Configuracin del puerto B


out

DDRB,r17

;Configuracin del puerto C


out

DDRC,r18

;Configuracin del puerto D


out

DDRD,r19

Despus de haber configurado el microcontrolador de acuerdo


con nuestras necesidades hay que notificrselo al usuario. Para esto
la tarjeta debe encender el LED de READY y quedarse en espera
hasta que se pulse el botn de MARCHA. Una vez pulsado se aplica
un retardo y comienza la ejecucin del modo automtico.
;Encendemos el LED de READY
sbi

PORTA,7

ESP:
;Si MARCHA no est pulsado esperamos
sbic

PINA,6

rjmp

ESP

;Apagamos el LED de READY


cbi

PORTA,7

;Aplicamos un retardo antes de arrancar


rcall RETARDO
rcall RETARDO
rcall RETARDO
;El robot siempre empieza en modo automtico
rjmp

AUTOMAT

En el momento en el que el robot se queda en espera activa


ejecuta dos instrucciones. La segunda de ellas, la que cierra el bucle,
se salta cuando la pista de marcha se pone a cero.

- 36 -

Robot con control remoto y cmara de vdeo integrada

3.2.3. MODO AUTOMTICO


El modo automtico es el modo de ejecucin por defecto.
Cuando la tarjeta de control se haya en este modo el robot se
comporta como un microrobot seguidor normal. Esto quiere decir
que sigue un camino definido por una lnea negra sobre un fondo
blanco.
Como se ha visto en los apartados anteriores el robot dispone
de cuatro sensores capaces de distinguir un fondo negro de otro
blanco. Estos sensores se disponen de tal forma que dos de ellos,
los centrales, deben estar siempre sobre la lnea negra. Cuando se
produce alguna desviacin se debe modificar la marcha de los
motores para recuperar la situacin ideal. Adicionalmente, si se
detecta alguna colisin se ejecuta una interrupcin que hace que el
robot rodee el obstculo que la provoc. Sin embargo el cdigo de
esta instruccin se explica en un apartado posterior.
El software correspondiente a este modo se divide en varios
sectores. El primero de ellos es el que se encarga de cargar lo
registros de velocidades con los valores que se van a utilizar,
habilitar las interrupciones y arrancar los motores. Los registros 20 y
21 tienen el valor de configuracin del PWM para velocidad media y
los 22 y 23 para la rpida.
AUTOMAT:
ldi

r20,HIGH(VEL_MED)

ldi

r21,LOW(VEL_MED)

ldi

r22,HIGH(VEL_MAX2)

ldi

r23,LOW(VEL_MAX2)

;Habilitamos las interrupciones


sei
;Los registros 20 y 21 tienen el valor VEL_MED
;Los registros 22 y 23 tienen el valor VEL_MAX
;Arrancamos ambos PWM a velocidad media
out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20

out

OCR1BL,r21

- 37 -

Robot con control remoto y cmara de vdeo integrada

Despus de haber hecho estos ajustes iniciales comienza el


bucle central del programa que lo nico que hace es comprobar una
y otra vez lo que leen los sensores y acta en consecuencia.
Primero se miran los dos sensores centrales.
BAUT:
;Leemos el puerto C
in

r18,PINC

;Operaremos sobre el registro 24


mov

r24,r18

;Ponemos a cero todos los bits menos el bit0 y el


bit1
andi

r24,0x03

;Si no estamos sobre la lnea hay que girar


brne

GIR1

ldi

r17,GO

;Si estamos sobre la lnea seguimos recto


out

PORTB,r17

out

OCR1AH,r22

out

OCR1AL,r23

out

OCR1BH,r22

;Fijamos la velocidad al mximo


out

OCR1BL,r23

rjmp

BAUT

GIR1:
;Ponemos a cero todos los bits menos el bit1
andi

r24,0x02

;Si el bit1 no es cero hay que mirar el bit0


brne

GIR2

;Si el bit1 es cero es que el bit 0 es 1


ldi

r17,GO

;Seguimos hacia delante


out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

;El lado de la derecha se ha quedado fuera de la


lnea
out

OCR1BH,r22

;por lo que el motor izquierdo tiene que reducir


out

OCR1BL,r23

;Ponemos el flag T a uno (desviados por la derecha)

- 38 -

Robot con control remoto y cmara de vdeo integrada


set
rjmp

BAUT

GIR2:
mov

r24,r18

;Ponemos a cero todos los bits menos el bit0


andi

r24,0x01

;Si los bits 0 y 1 estaban a uno hemos perdido la


lnea
brne

GIR3

;Si estamos aqu es que el bit0 era 0 y el bit1 era 1


ldi

r17,GO

;Esto quiere decir que nos hemos desviado por la


izquierda
out

PORTB,r17

out

OCR1AH,r22

out

OCR1AL,r23

out

OCR1BH,r20

;El motor derecho tiene que reducir


out

OCR1BL,r21

;Ponemos el flag T a cero (desviados por la izquierda)


clt
rjmp

BAUT

Se puede ver que si alguno de los dos sensores centrales vea


a la lnea no se hacen ms comprobaciones y se vuelve al bucle. En
el caso de que los sensores centrales hayan perdido la lnea se
consultan los laterales.
GIR3:
;Tenemos que comprobar los CNY secundarios
mov

r24,r18

;Comprobamos el valor del CNY4


andi

r24,0x08

;Si este CNY


comprobando
brne

no

est

sobre

la

lnea

seguimos

GIR4

;Si tenemos la lnea bajo el CNY4 hay que girar a la


izquierda
ldi

r17,RIGHT

out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20
- 39 -

Robot con control remoto y cmara de vdeo integrada


;Ambos motores reducen la marcha
out

OCR1BL,r21

;Ponemos el flag T a uno (desviados por la derecha)


set
rjmp

BAUT

GIR4:
mov

r24,r18

;Comprobamos el valor del CNY3


andi

r24,0x04

;Si no tenemos lnea en ningn CNY hay que buscarla


brne

ROT

;Si tenemos la lnea bajo el CNY3 hay que girar a la


derecha
ldi

r17,LEFT

out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20

;Ambos motores reducen la marcha


out

OCR1BL,r21

;Ponemos el flag T a cero (desviados por la izquierda)


clt
rjmp

BAUT

Puede parecer cuando se quiere girar a la derecha se use la


variable LEFT es una incongruencia. Sin embargo, la variable LEFT
indica que el motor derecho se para y el izquierdo sigue avanzando.
Finalmente si se ha perdido la lnea por completo se debe parar el
robot y girar sobre s mismo hasta encontrarla. Es posible que el
lector se haya percatado que en las comprobaciones anteriores se
almacena en el bit T del registro de estado el flanco bajo el cual fue
vista la lnea por ltima vez. El robot rotar en el sentido que indique
este bit.
ROT:
;Antes de invertir los motores hay que pararlos
ldi

r17,STOP

;(1 useg aprox.)


out

PORTB,r17

brtc

ROT2

- 40 -

Robot con control remoto y cmara de vdeo integrada


;Si estamos desviados por la derecha hay que rotar
hacia la izquierda
ldi

r17,RRIGHT

rjmp

RT

ROT2:
;Si no hay que rotar hacia la derecha
ldi

r17,RLEFT

RT:
out

PORTB,r17

;Ambos motores reducen la marcha


out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20

out

OCR1BL,r21

rjmp

BAUT

Algo que es muy importante y que el usuario ha de tener en


cuenta es que hay que parar los motores antes de invertirlos.
Aunque en el momento de invertir los motores estos sigan girando
en la direccin anterior no es problemtico. En este caso se
producira un pico de tensin, que es lo que queremos evitar, pero
ser mucho menos intenso que si invertimos la marcha con los
motores alimentados. Por este motivo es de gran importancia pasar
por el estado de parada rpida antes de cambiar el sentido de giro
de los motores.
Otro comentario de utilidad e que al leer de los puertos
externos (in rxx,PINX) hay que usar el registro PINX porque si se
usara PORTX la lectura sera incorrecta. Este detalle no viene
especificado en la descripcin del microcontrolador y supuso un fallo
en tiempo de ejecucin que nos hizo perder mucho tiempo hasta dar
con l .
3.2.4. MODO MANUAL
La rutina de motores del robot se puede ejecutar en modo
manual. El usuario enva rdenes que decodifica la tarjeta principal y
se lo notifica a la de control.

- 41 -

Robot con control remoto y cmara de vdeo integrada

La tarjeta de control sabe en qu modo est por el estado de la


pista MODE. Si esta pata est a cero el modo ha de ser el
automtico. Un flanco de subida en esta pata provoca una
interrupcin de cambio de modo. En la rutina manual el
microcontrolador ha de leer constantemente el puerto A para ver la
instruccin a ejecutar. Al final del bucle ha de comprobar el estado
de MODE para seguir en modo manual o cambiar al modo
automtico.
Antes de ejecutar el bucle central de la rutina no hay que hacer
ningn ajuste puesto que todos los cambios los controla el usuario.
Primero se ha de leer la orden y calcular la posicin de la tabla de
rdenes a la que se ha de saltar. Como el microcontrolador no tiene
modo indexado hay que sumar el ndice, multiplicado por dos, a la
base de la tabla antes del salto.
;Cdigo para el modo manual
MANUAL:
in

r16,PINA

lsr

r16

;Leemos la orden a los motores


andi

r16,0x0f

;Multiplicamos por dos


lsl

r16

;Utilizamos el registro z para guardar un offset al


que sumamos el nmero de orden multiplicado por dos
para calcular la siguiente instruccin a procesar
ldi

r30,LOW(OFFST)

ldi

r31,HIGH(OFFST)

add

r30,r16

ijmp

Cada celda de la tabla contiene dos instrucciones, por eso hay


que multiplicar el ndice por dos. Estas instrucciones son una
llamada a la subrutina asociada a cada orden y un salto a las
comprobaciones finales.
OFFST:
;La orden 0x0 es seguir recto
rcall

RECTO

- 42 -

Robot con control remoto y cmara de vdeo integrada


rjmp

CMD

;La orden 0x1 es giro derecha


rcall

GD1

rjmp

CMD

;La orden 0x2 es giro izquierda


rcall

GI1

rjmp

CMD

;La orden 0x3 es dar marcha atrs


rcall

ATRAS

rjmp

CMD

;La orden 0x4 es desvio derecha


rcall

GD0

rjmp

CMD

;La orden 0x5 es desvio izquierda


rcall

GI0

rjmp

CMD

;La orden 0x6 es giro derecha trasero


rcall

GD2

rjmp

CMD

;La orden 0x7 es giro izquierda trasero


rcall

GI2

rjmp

CMD

;La orden 0x8 es acelerar


rcall

ACLR

rjmp

CMD

;La orden 0x9 es reducir


rcall

FRNR

rjmp

CMD

;La orden 0xa es buscar lnea y parar


rcall

BUSCL

rjmp

CMD

;La orden 0xb es rotar hacia la izquierda


rcall

ROTI

rjmp

CMD

;La orden 0xc es rotar hacia la derecha


rcall

ROTD

rjmp

CMD

;La orden 0xd no est definida


rcall

ERR

rjmp

CMD

- 43 -

Robot con control remoto y cmara de vdeo integrada


;La orden 0xe no est definida
rcall

ERR

rjmp

CMD

;La orden 0xf es parar el robot


rcall

PARA

Al final del bucle se actualiza el bit T tal y como se explica en


la rutina automtica. Esto se hace para mantener una referencia de
la lnea. Finalmente, tras comprobar el estado de MODE se vuelve a
saltar al programa correspondiente.
CMD:
in

r16,PINA

;Actualizamos el flag T
rcall

FLG

;Comprobamos el flag de MODE (PA5)


andi

r16,0x20

;Si seguimos en modo manual volvemos al bucle


brne

MANUAL

rjmp

AUTOMAT

3.2.5. INTERRUPCIONES
Las dos interrupciones que se han de comentar son las
debidas a fuentes externas puesto que la de reset se explica en otro
apartado. Estas fuentes pueden indicar un cambio de modo o una
colisin.
El cdigo de la interrupcin de cambio de modo es muy
sencillo. Simplemente saca de la pila la direccin de retorno y la
cambia por la de la rutina manual. Tambin para el motor para que
se ejecute la orden que ha provocado la interrupcin.
;Cdigo de la interrupcin de cambio de modo
INT_MODE:
ldi

r17,STOP

;Paramos el robot
out

PORTB,r17

pop

r27

pop

r28

;Modificamos la direccin
ejecute el programa manual
ldi

r27,HIGH(MANUAL)

- 44 -

de

retorno

para

que

se

Robot con control remoto y cmara de vdeo integrada


ldi

r28,LOW(MANUAL)

push

r28

push

r27

reti

La otra interrupcin es un poco ms complicada. Primero se


comprueba que los bumpers siguen presionados, no sea que el
obstculo se ha desplazado y ha liberado a los bumpers. De todas
formas esta situacin es poco probable puesto que entre la
activacin de la interrupcin y la comprobacin pasa un tiempo muy
pequeo. Despus de esto, el robot da marcha atrs y aplica un
retardo suficiente para apartarse del obstculo.
;Cdigo de la interrupcin de colisin
INT_MEC:
push

r24

push

r18

in

r18,PINC

mov

r24,r18

;Si los bumpers delanteros estn sin presionar


andi

r24,0x30

;Terminamos con la interrupcin


breq

FIN

push

r17

ldi

r17,STOP

;Paramos antes de invertir


out

PORTB,r17

push

r20

push

r21

ldi

r20,HIGH(VEL_MED)

ldi

r21,LOW(VEL_MED)

;Damos marcha atrs


ldi

r17,BACK

out

PORTB,r17

;Ponemos los motores a velocidad alta


out

OCR1AH,r22

out

OCR1AL,r23

out

OCR1BH,r22

out

OCR1BL,r23

rcall

RETARDO

rcall

RETARDO
- 45 -

Robot con control remoto y cmara de vdeo integrada


rcall

RETARDO

rcall

RETARDO

rcall

RETARDO

rcall

RETARDO

rcall

RETARDO

rcall

RETARDO

rcall

RETARDO

rcall

RETARDO

;Paramos antes de invertir


ldi

r17,STOP

out

PORTB,r17

Despus de esto comprueba cual de los dos bumpers golpe


el obstculo y gira en consecuencia. Si fueron ambos bumpers los
que golpearon lo que hace es rotar. Despus de esto el robot que da
parado. La rutina principal, sea la manual o automtica, se
encargar de determinar el siguiente movimiento del robot.
;Comprobamos el valor del bumper1
andi

r24,0x10

;Si est a cero


brne
;Si hemos
derecha

el bumper2 est pulsado

BP1
chocado

por

ldi

r17,RIGHT

out

PORTB,r17

rcall

RETARDO

ldi

r17,STOP

la

izquierda

giramos

la

giramos

la

;Paramos despus de esquivar


out

PORTB,r17

;Hemos terminado
rjmp

TER

BP1:
mov

r24,r18

;Comprobamos el valor del bumper 2


andi

r24,0x20

;si est a cero bumper1 est pulsado


brne

BP2

;Si hemos
izquierda

chocado

ldi

r17,LEFT

out

PORTB,r17

- 46 -

por

la

derecha

Robot con control remoto y cmara de vdeo integrada


rcall

RETARDO

ldi

r17,STOP

;Paramos despus de esquivar


out

PORTB,r17

;Hemos terminado
rjmp

TER

BP2:
;Colisin frontal
brtc

ESQ2

;Si estamos desviados por la derecha hay que rotar


hacia la izquierda
ldi

r17,RLEFT

rjmp

ESQ

ESQ2:
;Si no hay que rotar hacia la derecha
ldi

r17,RRIGHT

ESQ:
out

PORTB,r17

rcall RETARDO
ldi

r17,STOP

;Paramos despus de esquivar y terminamos


out

PORTB,r17

TER:
pop

r21

pop

r20

pop

r17

FIN:
;Recuperamos registros y terminamos
pop

r18

pop

r24

reti

3.2.6. SUBRUTINAS
Las subrutinas asociadas a las rdenes del modo manual se
agrupan en un archivo. Estas subrutinas son, en su mayora, para
avanzar, parar o girar y su cdigo es el mismo que se utiliza en el
resto del programa. Por esta razn no hay mucho que comentar
sobre estas subrutinas. Su cdigo se muestra a continuacin.
RECTO:
ldi

r17,GO

- 47 -

Robot con control remoto y cmara de vdeo integrada


;El robot ir recto a toda velocidad
out

PORTB,r17

out

OCR1AH,r22

out

OCR1AL,r23

out

OCR1BH,r22

out

OCR1BL,r23

ret
GD1:
ldi

r17,RIGHT

;El robot girar a la izquierda a velocidad media


out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20

out

OCR1BL,r21

ret
GI1:
ldi

r17,LEFT

;El robot girar a la derecha a velocidad media


out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20

out

OCR1BL,r21

ret
ATRAS:
;Hay que parar antes de invertir los motores
rcall

PARA

ldi

r17,BACK

;El robot ir marcha atrs a velocidad media


out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20

out

OCR1BL,r21

ret

- 48 -

Robot con control remoto y cmara de vdeo integrada


GD0:
ldi

r17,GO

;El robot se desviar a la derecha


out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r22

out

OCR1BL,r23

ret
GI0:
ldi

r17,GO

;El robot se desviar a la izquierda


out

PORTB,r17

out

OCR1AH,r22

out

OCR1AL,r23

out

OCR1BH,r20

out

OCR1BL,r21

ret
GD2:
;Hay que parar antes de invertir los motores
rcall

PARA

ldi

r17,BACK

;El robot se desviar a la derecha marcha atrs


out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r22

out

OCR1BL,r23

ret
GI2:
;Hay que parar antes de invertir los motores
rcall

PARA

ldi

r17,BACK

;El robot se desviar a la izquierda marcha atrs


out

PORTB,r17

out

OCR1AH,r22

out

OCR1AL,r23

- 49 -

Robot con control remoto y cmara de vdeo integrada


out

OCR1BH,r20

out

OCR1BL,r21

ret
ROTI:
;Hay que parar antes de invertir motores
rcall

PARA

;Rotamos hacia la izquierda


ldi

r17,RLEFT

out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20

out

OCR1BL,r21

ret
ROTD:
;Hay que parar antes de invertir motores
rcall PARA
;Rotamos hacia la derecha
ldi

r17,RRIGHT

out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20

out

OCR1BL,r21

ret
PARA:
ldi

r17,STOP

;Paramos los motores


out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20

out

OCR1BL,r21

ret

Sin embargo, hay algunas subrutinas especiales. Unas de


estas son las de cambio de velocidad global. Lo que hacen es
cambiar los valores almacenados en los registros de velocidad de
- 50 -

Robot con control remoto y cmara de vdeo integrada

acuerdo con los deseos del usuario. Como es lgico estas


subrutinas van asociadas a las ordenes de acelerar y parar.
ACLR:
cpi

r22,HIGH(VEL_MAX)

;Si la velocidad no es la normal la aumentamos


brne

ACB

ret
ACB:
ldi

r20,HIGH(VEL_MED)

ldi

r21,LOW(VEL_MED)

ldi

r22,HIGH(VEL_MAX)

ldi

r23,LOW(VEL_MAX)

ret
FRNR:
cpi

r22,HIGH(VEL_MAX2)

;Si la velocidad no es la reducida la reducimos


brne

FCB

ret
FCB:
ldi

r20,HIGH(VEL_MED2)

ldi

r21,LOW(VEL_MED2)

ldi

r22,HIGH(VEL_MAX2)

ldi

r23,LOW(VEL_MAX2)

ret

Otra subrutina especial es la de buscar y parar. Esta subrutina


hace que el robot gire sobre s mismo hasta encontrar la lnea. Una
vez encontrada se queda parado. Para determinar el sentido de giro
hace uso del bit T.
BUSCL:
;Comprobamos los CNY 1 y 2 si no estn ambos a cero
hay que seguir buscando
in

r18,PORTC

andi

r18,0x03

brne

NOLN

;Si tenemos la lnea paramos y lo indicamos en PA0


rcall

PARA

sbi

PORTA,0

ret

- 51 -

Robot con control remoto y cmara de vdeo integrada


NOLN:
brtc

CGIR

;Si estamos desviados por la derecha hay que rotar


hacia la izquierda
ldi

r17,LEFT

rjmp

SGIR

CGIR:
;Si no hay que rotar hacia la derecha
ldi

r17,RIGHT

SGIR:
out

PORTB,r17

out

OCR1AH,r20

out

OCR1AL,r21

out

OCR1BH,r20

;Ambos motores reducen la marcha


out

OCR1BL,r21

ret

La subrutina de error se asocia a instrucciones reservadas y lo


que hace es encender el LED de depuracin para notificar el error.
ERR:
;Encendemos el LED de depuracin
sbi

PORTB,4

ret

La ltima subrutina que queda por explicar es la de


actualizacin del bit T. Esta rutina comprueba las lecturas de los
CNY70 y asigna un valor al bit T del registro de estado dependiendo
de en qu flanco se encuentre la lnea.
FLG:
;Leemos el puerto C
in

r18,PORTC

;Operaremos sobre el registro 24


mov

r24,r18

andi

r24,0x03

brne

FLG1

;Si estamos sobre la lnea el flag no cambia


ret
FLG1:
andi

r24,0x01

brne

FLG2

- 52 -

Robot con control remoto y cmara de vdeo integrada


;Si el bit0 es cero el bit1 es uno y T se pone a cero
(desviados por la izquierda)
clt
ret
FLG2:
mov

r24,r18

andi

r24,0x02

brne

FLG3

;Si el bit1 es cero y el bit1 era 1 T se pone a uno


(desviados por la derecha)
set
ret
FLG3:
mov

r24,r18

andi

r24,0x04

brne

FLG4

;Si el CNY3 (bit2) est sobre


desviados por la izquierda (T=0)

la

lnea

estamos

la

lnea

estamos

clt
ret
FLG4:
mov

r24,r18

andi

r24,0x08

;Si el CNY4 (bit3) est sobre


desviados por la derecha (T=1)
brne

SAL

set
SAL:
;Si hemos perdido la lnea no cambiamos T
ret

- 53 -

Robot con control remoto y cmara de vdeo integrada

4. TARJETA DE CONTROL PRINCIPAL


La tarjeta principal se tiene que ocupar de coordinar la cmara, la tarjeta
de radiofrecuencia y la tarjeta de control de motores. Su funcin principal es
convertir, formatear y agrupar la seal leda por la cmara para su envo por el
enlace de radiofrecuencia. Se tiene que ocupar tanto de la sealizacin del
canal como de la adquisicin de datos.
Eventualmente, recibir alguna orden que tendr que decodificar. Estas
rdenes pueden ir dirigidas a la tarjeta de control de motores, a la cmara o al
sistema de orientacin de la cmara. Esta tarjeta incorpora tambin la
circuitera necesaria para orientar la cmara mediante servomotores tipo
FUTTABA.

4.1. DESCRIPCIN DEL HARDWARE


El hardware que se ajusta a las funciones que ha de desempear la
tarjeta se puede ver en el siguiente esquema.
C3
100uF

C4
100nF

J2
PWR_OUT

U2
39
38
37
36
35
34
33
32

CAM1
CAM2
CAM3
CAM4

XTAL1
XTAL2

19
18

RESET

31
9
40

+5V

PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK

PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD

XTAL1
XTAL2
ICP
RST
VCC

ALE
OC1B

21
22
23
24
25
26
27
28

GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
INCAM
ADCSTR

10
11
12
13
14
15
16
17

RX
TX
XRESET
SIN
LOAD
XCLK
START
READ

30
29

XTAL1
C5
15pF

SERVO2
+5V

Y2
OSC2
C8
15pF

SRV1
SRV2

17
18
1
2
3

OSC1
OSC2

16
15

OSC1
C9
15pF

20MHz

RESET

R5

4
14

1.2K

J16

D13
DIODO_RST

1
3
5
7
9

+5V

U5
LM385-2.5/TO

1
12
11

+5V

7
8
13

2
4
6
8
10

ADCSTR
+5V

PROGRAMADOR1

RESET

PIC16F84

RA0
RA1
RA2
RA3
RA4/TOCKI

RB0/INT
RB1
RB2
RB3
RB4
RB5
OSC1/CLKIN
RB6
OSC2/CLKOUT
RB7

6
7
8
9
10
11
12
13

CAM1
CAM2
CAM3
CAM4
EXP0
EXP1
EXP2
EXP3

R2
10K
J17

RESET

4
3
2
1

MCLR

SW1
RESET

C7
100nF

R3
1K

EXPANS

VDD 5

GND

U4

470
D12
PROG

RST
SCK
MISO

J5
1
2
3

SRV2

C6
15pF
U3

+5V

MOSI

SERVO1

XTAL2
8MHz

+5V

10K

1
2
3

SRV1

+5V

VOUT

R22

J4

+5V

Y1

+5V
R21

J10
8
7
6
5
4
3
2
1
TARJ_CTRL

PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15

R4
470

MOSI
MISO
SCK

AT90S8515

PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7

20

D14
DEP

1
2
3
4
5
6
7
8

R7
1K

R1
470

GND

PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7

GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE

6
20

J7

VIN

D0
D1
D2
D3
D4
D5
D6
D7

REF+
REFMODE
RD
CS
WR/RDY
VCC
ADC0820

GND

C2
100nF

D1
PWR_ON

INT
OFL

2
3
4
5
14
15
16
17

PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7

9
18

INCAM

+5V
XRESET
SIN
LOAD
XCLK
START
READ
VOUT

1
2
3
4
5
6
7
8
9
10
11
12

10

C1
220uF

+5V

REGULADOR

GND

J3
1

VOUT

J1
PWR_IN

L7805/TO220

VIN

U1
1

CAMARA
J8
TX
RX

1
3
5
7
9

2
4
6
8
10

+5V
Title

AURIEL
Size
A4
Date:

Tarjeta Principal para Robot LSED


Document Number
1
Monday , May 19, 2003

Rev
1.2
Sheet

Figura 29 Esquema de la tarjeta de control principal.

Para un mayor detalle, vase la figura 1 del apndice B.

- 54 -

of

Robot con control remoto y cmara de vdeo integrada

Se puede ver que la tarjeta se puede descomponer en varios


sectores. Estos sectores son alimentacin, control de orientacin de la
cmara, interfaz de la cmara y procesado.
4.1.1. ALIMENTACIN
La tarjeta principal se puede alimentar de dos formas distintas.
Las distintas formas se seleccionan abriendo o cerrando un jumper.
Una forma que tiene de alimentacin de la tarjeta principal es
suministrando directamente

una tensin estabilizada de 5V a la

entrada pertinente. De esta forma se puede hacer que ambas


tarjetas compartan fuente de alimentacin. La tarjeta de control de
motores tiene una salida despus del regulador que se puede utilizar
para alimentar la tarjeta principal de esta forma. Para seleccionar
este modo de alimentacin hay que dejar abierto el jumper
REGULADOR.
Sin embargo, la tarjeta tambin cuenta con un sistema de
alimentacin

autnomo

que

se

utilizar

cuando

el

jumper

REGULADOR est cerrado. El sistema de alimentacin mencionado


es idntico al de la tarjeta de control de motores (ver apartado 2.1.1).
Conviene

sealar

que

no

es

conveniente

utilizar

la

alimentacin de la tarjeta de control de motores si el jumper


REGULADOR est cerrado. Esto se debe a que no conviene
cortocircuitar directamente las salidas de los dos reguladores para
no daarlos.
4.1.2. CONTROL DE ORIENTACIN DE LA CMARA
Como se ha explicado antes, la tarjeta principal puede
controlar dos servomotores para orientar la cmara.

- 55 -

Robot con control remoto y cmara de vdeo integrada


J4
1
2
3

U3

+5V
SRV1
SRV2

SERVO1
J5
1
2
3

OSC1
OSC2

+5V

RESET
SERVO2
+5V

17
18
1
2
3
16
15
4
14

PIC16F84

RA0
RA1
RA2
RA3
RA4/TOCKI

RB0/INT
RB1
RB2
RB3
RB4
RB5
OSC1/CLKIN
RB6
OSC2/CLKOUT
RB7

6
7
8
9
10
11
12
13

CAM1
CAM2
CAM3
CAM4
EXP0
EXP1
EXP2
EXP3

MCLR
VDD 5

J17
4
3
2
1

EXPANS
GND

Figura 30 Sistema de orientacin de la cmara.

En la figura se puede ver que el elemento central de este


sistema es un microcontrolador PIC. Este microcontrolador se usa
exclusivamente para generar las dos seales PWM necesarias para
orientar

los

servomotores.

Los

servomotores

se

conectan

directamente a la alimentacin porque incorporan una lgica que


reduce el ruido impulsivo, por eso no se filtra su alimentacin.
El microcontrolador PIC lee la orientacin que le da el
microcontrolador principal por las lneas CAM1:4 y varia los ciclos de
trabajo de los servomotores en consecuencia. Tambin consta de un
puerto de cuatro bit s de expansin por si se quisiera aprovechar la
capacidad de procesamiento sobrante para alguna otra tarea.
4.1.3. INTERFAZ DE LA CMARA
El chip de la cmara es un MITSUBISHI M64282FP. Este CDC,
pese a estar descatalogado actualmente, se puede encontrar
fcilmente en el perifrico GameBoy Camera para la video consola
porttil GameBoy de Nintendo, que se puede adquirir de segunda
mano a travs de servicios de subasta on-line como e-Bay por
menos de 10$ USD.
La cmara se conecta directamente al microcontrolador a
excepcin de la seal de pxel. Esta seal es analgica por lo que es
necesario intercalar un conversor analgico digital para que el
microcontrolador pueda procesar el pxel.

- 56 -

Robot con control remoto y cmara de vdeo integrada

Figura 31 Cmara digital M64282FP


J7
1
2
3
4
5
6
7
8
9
10
11
12
CAMARA

U4
2
3
4
5
14
15
16
17

INCAM

9
18

D0
D1
D2
D3
D4
D5
D6
D7

VIN
REF+
REFMODE
RD
CS

INT
OFL

WR/RDY

10

VCC
GND

R5

+5V

1
2

PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7

1.2K

12
11

+5V

7
8
13

U5
LM385-2.5/TO
1

+5V
XRESET
SIN
LOAD
XCLK
START
READ
VOUT

ADCSTR

20

+5V

ADC0820

Figura 32 Interfaz de la tarjeta principal con la cmara.

Los bits que se conectan desde la cmara directamente al


microcontrolador son los bits de configuracin y control de ejecucin.

- 57 -

Robot con control remoto y cmara de vdeo integrada

La lnea de datos de la cmara tiene que sufrir una conversin


analgico-digital.
Figura 33 Asignacin de terminales de la cmara digital al bus de datos

La configuracin del conversor ha sido extrada de las hojas


del fabricante, Se ha configurado para ser controlado con solo dos
lneas, la INCAM y la ADCSTR. El conversor es de ocho bits y el
rango de conversin se ajusta de 0V a 2,5V. Este rango es
adecuado porque la cmara entrega una seal de 1V pico a pico con
un offset configurable.
4.1.4. PROCESADO
La configuracin de este sector es anloga a la del mismo
sector en la otra tarjeta. La disposicin de seales en el
microcontrolador es la siguiente.
U2
PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7
CAM1
CAM2
CAM3
CAM4

D14
DEP

R4
470

39
38
37
36
35
34
33
32

MOSI
MISO
SCK

1
2
3
4
5
6
7
8

XTAL1
XTAL2

19
18

RESET

31
9

+5V

40

AT90S8515

PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7

PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15

PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK

PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD

XTAL1
XTAL2

ALE
OC1B

21
22
23
24
25
26
27
28

GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
INCAM
ADCSTR

10
11
12
13
14
15
16
17

RX
TX
XRESET
SIN
LOAD
XCLK
START
READ

30
29

ICP
RST
VCC20

GND

Figura 34 Conexiones del microcontrolador.

El puerto A del microcontrolador se destina ntegramente a la


adquisicin de los datos convertidos a digital de la cmara. Este
puerto no tena ninguna otra funcionalidad por lo que no se sacrifica
ningn recurso en la lectura de los datos de la cmara.
El puerto B se divide en dos partes. Los cuatro bits menos
significativos

son

los

que

- 58 -

se

usan

para

comunicarle

al

Robot con control remoto y cmara de vdeo integrada

microcontrolador PIC la orientacin deseada de la cmara. El bit 5,


como pasaba en la otra tarjeta, se destina a un LED de depuracin
que ayude a la deteccin de errores en el software de la tarjeta.
Puede parecer absurdo malgastar una pata para este fin pero
nosotros lo hemos encontrado de vital importancia. La ayuda del
LED de depuracin hace que la deteccin de errores se pueda
realizar de forma emprica, ms cmoda, y nos evita tener que
desentraar el cdigo ejecutado por el microcontrolador.
Por ltimo, los otros tres bits se destinan al programador AVR.
Las conexiones son idnticas a la de la otra tarjeta, as como el
circuito de reset. Por lo que para su consulta remitimos al lector al
apartado de procesado de la tarjeta de control de motores.
Ntese que el microcontrolador PIC carece de programador
integrado en la tarjeta principal. Por consiguiente, se hace
indispensable el uso de un programador PIC independiente.
El puerto C se destina a la comunicacin entre tarjetas y al
control del conversor analgico digital. Los seis bits menos
significativos constituyen el otro extremo del bus que se conecta al
puerto A del microcontrolador de la tarjeta de control de motores.
Los dos bits ms significativos son los que se utilizan para controlar
la conversin a digital de los datos de la cmara.
Finalmente el puerto D se usa para configurar y controlar la
cmara y para la comunicacin con la tarjeta de radio. Los dos bits
menos significativos son los de transmisin y recepcin de la UART.
Estos bits se conectan directamente a la tarjeta de radio y no hace
falta ninguna pista adicional. El control de la comunicacin serie por
el enlace radio se hace ntegramente va software ayudndose de
los registros internos de la UART.
Los otros seis bits se utilizan para encender la cmara
(START), temporizarla (XCLK) y configurarla. Al iniciar la cmara es
necesario cargar unos registros internos que tiene para que funcione
de la forma deseada. Esto se consigue mediante una transmisin

- 59 -

Robot con control remoto y cmara de vdeo integrada

serie por SIN, temporizada por XCLK y validada por LOAD. La pista
READ es la notificacin de la cmara de que tiene un pxel nuevo
preparado para la conversin.

4.2. DESCRIPCIN DEL SOFTWARE


La tarjeta de control principal ha de gobernar todo el robot,
recibiendo las rdenes del host remoto, decodificndolas y ejecutndolas.
Adems, debe recopilar la informacin del estado del robot y los datos de
la cmara y enviarlos a travs del enlace de radio frecuencia,
implementando las rutinas necesarias para la separacin de tramas y la
temporizacin que exige la tarjeta de radio frecuencia.
Una vez ejecutada la rutina primera de reset y habilitadas las
interrupciones, el programa principal entra en un bucle continuo de
espera activa aguardando a que se produzcan las interrupciones
programadas:
Interrupcin del Timer0, que da lugar a la recopilacin de datos y
su envo a travs de la radio frecuencia.
Interrupcin por llegada de nuevos datos desde el enlace radio
frecuencia, que lanza el proceso de descodificacin del tipo de dato
recibido y el procesado del comando en caso de que se trate de datos
del servicio de comandos.
4.2.1. EQUIVALENCIAS Y VECTORES DE INTERRUPCIN
Al igual que con el otro programa se define un primer archivo
en el que se especifican unas equivalencias para facilitar la
programacin.
;Registros de entrada y salida
.EQU

SREG

= 0x3f

.EQU

SPH

= 0x3e

.EQU

SPL

= 0x3d

.EQU

GIMSK

= 0x3b

.EQU

GIFR

= 0x3a

.EQU

TIMSK

= 0x39

.EQU

TIFR

= 0x38

.EQU

MCUCR

= 0x35

- 60 -

Robot con control remoto y cmara de vdeo integrada


.EQU

TCCR0

= 0x33

.EQU

TCNT0

= 0x32

.EQU

TCCR1A

= 0x2f

.EQU

TCCR1B

= 0x2e

.EQU

TCNT1H

= 0x2d

.EQU

TCNT1L

= 0x2c

.EQU

OCR1AH

= 0x2b

.EQU

OCR1AL

= 0x2a

.EQU

OCR1BH

= 0x29

.EQU

OCR1BL

= 0x28

.EQU

ICR1H

= 0x25

.EQU

ICR1L

= 0x24

.EQU

WDTCR

= 0x21

.EQU

PORTA

= 0x1b

.EQU

DDRA

= 0x1a

.EQU

PINA

= 0x19

.EQU

PORTB

= 0x18

.EQU

DDRB

= 0x17

.EQU

PINB

= 0x16

.EQU

PORTC

= 0x15

.EQU

DDRC

= 0x14

.EQU

PINC

= 0x13

.EQU

PORTD

= 0x12

.EQU

DDRD

= 0x11

.EQU

PIND

= 0x10

.EQU

UDR

= 0x0C

.EQU

USR

= 0x0B

.EQU

UCR

= 0x0A

.EQU

UBRR

= 0x09

Se han aadido las equivalencias necesarias para manejar la


UART y se ha prescindido del resto de equivalencias pues no tena
sentido mantenerlas. Sin embargo, ms adelante se definirn
nombres simblicos de registros.
La

tabla

de

vectores

de

interrupcin

tambin

sufre

modificaciones porque las fuentes de interrupcin son distintas. En


este programa interrumpen los timers y la UART.
CSEG

- 61 -

Robot con control remoto y cmara de vdeo integrada


.ORG 0x000
;Salto a rutina de reset
rjmp

RESET

;Si saltan estas interrupcines se debe a un error


rjmp

RESET

rjmp

RESET

rjmp

RESET

rjmp

RESET

rjmp

RESET

;TIMER asociado a la RF
rjmp

IRQ_TIMER1

;TIMER asociado a rutina de captura de datos


rjmp

IRQ_TIMER0

;Si salta esta interrupcin se debe a un error


rjmp

RESET

;Tenemos datos del control remoto!


rjmp

IRQ_RX

;Se puede enviar el siguiente dato


rjmp

IRQ_UOBE

;Si saltan estas interrupcines se debe a un error


rjmp

RESET

rjmp

RESET

4.2.2. RUTINA DE RESET


Esta rutina se encarga, entre otras cosas, de configurar al
microcontrolador como queremos. Hay que configurar las interrupciones
de los timer y ajustar sus tiempos. Tambin tiene que fijar los parmetros
de la UART y de los puertos de entrada y salida adems de las tareas
tpicas de configuracin.
;Rutina de reset
RESET:
ldi

r16,0x02

out

SPH,r16

ldi

r16,0x5f

;SP al final de la RAM


out

SPL,r16

clr

r16

;Interrup. deshabilitadas
out

SREG,r16

- 62 -

Robot con control remoto y cmara de vdeo integrada


;Interrup. externas deshabilitadas
out

GIMSK,r16

;Sin RAM externa


out

MCUCR,r16

ldi

r16,0x82

;Interrup. por overflow


out

TIMSK,r16

ldi

r16,0xb8

;Configuracin de la UART
out

UCR,r16

ldi

r16,0x03

;Baud rate = 115200


out

UBRR,r16

ldi

r16,0xb7

;Interrup cada 10us


out

TCNT0,r16

clr

r16

;Reloj parado
out

TCCR0,r16

out

TCCR1A,r16

out

TCCR1B,r16

ldi

r16,0x00

out

TCNT1L,r16

ldi

r16,0xb8

;Mximo retardo de 20us


out

TCNT1H,r16

clr

r16

;Configuracin del puerto A


out

DDRA,r16

ldi

r16,0x5f

;Configuracin del puerto B


out

DDRB,r16

ldi

r16,0xbe

;Configuracin del puerto C


out

DDRC,r16

ldi

r16,0x7e

;Configuracin del puerto D


out

DDRD,r16

Despus de haber realizado las tareas de configuracin del


sistema se procede a inicializar la cmara y otras variables.

- 63 -

Robot con control remoto y cmara de vdeo integrada


;Reset de la cmara
rcall

RCAM

;Tamao del buffer


ldi

r16,96

ldi

r30,0x02

ldi

r31,0x01

;Guardamos en la direccin 0x0102


st

z,r16

;Capacidad del acumulador inicialmente al maximo


ldi

r16,8

mov

enACUav, r16

mov

deACUav, r16

;Empieza el programa
rjmp

PROG

4.2.3. RUTINAS DE CONFIGURACIN DE CMARA


En este apartado se incluye la subrutina que carga los
registros de la cmara y la rutina de reset de cmara. La rutina de
reset de cmara lo que hace es que guarda en las posiciones de
memoria asociadas a la cmara unos valores por defecto y llama a
la subrutina de carga.
RCAM:
;primero reseteamos la camara
;poner a cero reloj
cbi

PORTD, XCLK

cbi

PORTD, XRESET

sbi

PORTD, XCLK

sbi

PORTD, XRESET

;Cargamos valores por defecto


ldi

mierda1, 0x3f

sts

CAMDATA, mierda1

ldi mierda1, 0x04


sts CAMDATA+1, mierda1
ldi mierda1, 0x0a
sts CAMDATA+2, mierda1
ldi mierda1, 0xff

- 64 -

Robot con control remoto y cmara de vdeo integrada


sts CAMDATA+3, mierda1
ldi mierda1, 0x01
sts CAMDATA+4, mierda1
ldi mierda1, 0x00
sts CAMDATA+5, mierda1
ldi mierda1, 0x01
sts CAMDATA+6, mierda1
ldi mierda1, 0x02
sts CAMDATA+7, mierda1
rcall CAM_LOAD_REGISTERS
ret

Estos valores por defecto ajustan el tiempo de exposicin, la


ganancia, la luminancia a unos valores tpicos. Tambin se aseguran
de que el rango dinmico de la seal esta de acuerdo con lo que
espera el conversor analgico-digital. Es decir, 1V pico a pico ms
1V de continua.
La rutina de carga lo que hace es ir cogiendo cada uno de los
valores asociados a los registros y cargarlos en la cmara. La
cmara recibe bit a bit por la pata SIN. El reloj tiene que ir
sincronizado con la transmisin. Primero se transmiten tres bits de
direccin de registro (hay 8 registros) a cargar y luego el byte de
dato. Una vez terminada la transmisin hay que validarla con la
seal LOAD.
La subrutina primero guarda el contexto y calcula la direccin
del dato a cargar. Hecho esto lee el dato de la memoria y lo deja en
un registro.
CAM_LOAD_REGISTERS:
push sucio
push ocho
push mierda1

- 65 -

Robot con control remoto y cmara de vdeo integrada


push r30
push r31
;contador de 0 a 7 para los registros
clr sucio
bucleCarga:
mov r5,sucio
;Calculamos direccin y leemos dato
ldi mierda1, LOW(CAMDATA)
add ocho, mierda1
ldi mierda1, HIGH(CAMDATA)
adc r5,mierda1
mov r30, ocho
mov r31, r5
ld ocho, z

Se han definido nombres simblicos para algunos registros y


pines para hacer el programa ms legible. Hecho esto entra en un
bucle que manda bit a bit la direccin y el dato. Esto se hace
mediante rotaciones.
;mandar primero los tres bits del registro
;bucle contando con mierda1
ldi mierda1, 3
cargaDirReg:
;poner a cero el reloj de la camara
cbi PORTD, XCLK
sbrs sucio, 2
rjmp manda_cero
rcall CAM_SIN_1
decB1:
;poner a uno
sbi PORTD, XCLK
;mover a la izq sucio para mandar el siguiente bit
lsl sucio
dec mierda1
brne cargaDirReg
;xSSSxxxx
lsl sucio
;volvemos a colocar sucio en su posicion original
xxxxxSSS

- 66 -

Robot con control remoto y cmara de vdeo integrada


swap sucio
rjmp masDat
manda_cero:
rcall CAM_SIN_0
rjmp decB1
masDat:
;ahora metemos los ocho bits de datos
ldi mierda1, 8
cargaDatReg:
;poner a cero el reloj
cbi PORTD, XCLK
sbrs ocho, 7
rjmp manda_cero_
rcall CAM_SIN_1
decB2:
;poner a uno
sbi PORTD, XCLK
;mover a la izq sucio para mandar el siguiente bit
lsl ocho
dec mierda1
brne cargaDatReg
;terminado el registro se manda el siguiente
inc sucio
cpi sucio, 8
breq finCargaS
;mandar la seal de carga
sbi PORTD, LOAD
;reloj de camara a cero
cbi PORTD, XCLK
cbi PORTD, LOAD;
rjmp bucleCarga
manda_cero_:
rcall CAM_SIN_0
rjmp decB2

Se recupera el contexto y se termina con la subrutina.


finCargaS:
pop r31

- 67 -

Robot con control remoto y cmara de vdeo integrada


pop r30
pop mierda1
pop ocho
pop sucio
ret

Se han utilizado dos subrutinas que lo que hacen es activar o


desactivar la pata SIN del microcontrolador.
CAM_SIN_1:
;poner un 1 a Serial IN de la Camara
sbi PORTD, SIN
ret
CAM_SIN_0:
;poner a 0 la serial in de la camara
cbi PORTD, SIN
ret

4.2.4. EL PROGRAMA PRINCIPAL


Simplemente realiza la habilitacin de contadores, cmara e
interrupciones, para acabar en el bucle de espera activa:
PROG:
;activar contador TIMER0
clr mierda1
out TCCR0,mierda1
;activar la camara
cbi PORTD, XCLK
sbi PORTD, START;------------------sbi PORTD, XCLK
cbi PORTD, START
;habilitar interrupciones
sei
mainloop:
nop
rjmp mainloop

- 68 -

Robot con control remoto y cmara de vdeo integrada

4.2.5. ADQUISICIN DE DATOS


La adquisicin de datos la lleva a cabo como se indic
anteriormente la rutina de atencin a la interrupcin peridica del
contador 0, IRQ_TIMER0.
Para evitar problemas de desbordamiento del buffer de salida
de datos hacia el enlace de radio frecuencia, si el bit de Transmisin
Enabled de la UART del Atmel est a cero, la rutina simplemente
devolver el estado a la espera activa. Si por el contrario s que se
pueden transmitir datos, la rutina primeramente determina si debe
aadir las cabeceras de datos, tanto de Estado como de Imagen,
con los correspondientes seis bits menos significativos de la fila a la
que pertenecen los pxeles a enviar. Para ello se han habilitado los
bits 4 y 3 del byte del registro COMM que mantiene el estado de las
comunicaciones:

registro COMM

FR

VD

WC

NIF

NSF

3
Byte 1

TE
2

Figura 35 Detalle del registro de estado COMM

As el bit 4 estar a uno siempre que se deban incluir las


cabeceras de trama de imagen (New Image Frame) y el 3 indica si
se debe mandar el estado o no (New Status Frame) Estos bits se
ponen automticamente a uno en la rutina de atencin a la
interrupcin del TIMER 1, que se lanza cuando ha transcurrido el
tiempo de guarda necesario que impone la tarjeta de radio
frecuencia para modular los paquetes de 96 bytes que se le han
mandado.
Tras incluir, si procede, las cabeceras de trama, la rutina
verifica si el bit DATA (PD7) est a uno, en cuyo caso deber, por un
lado mandar un uno a la seal de reloj XCLK (PD5) para que la
cmara cargue a la su salida de datos analgica el siguiente pxel y
por otro, activar la seal ADCSTR poniendo el bit PC7 a cero para
que el conversor A/D inicie la conversin del dato que viene de la

- 69 -

Robot con control remoto y cmara de vdeo integrada

cmara. En la siguiente ejecucin de la rutina peridica, la seal


INCAM (PC6) estar a cero, indicando que el conversor A/D ha
finalizado la conversin y en el puerto A se dispondr del pxel en
formato digital. Tras poner a cero el reloj de la cmara XCLK, el byte
se enva por el canal de comunicaciones y se actualizan los registros
en los que se almacenan la fila y la columna por la que se va. En
caso de alcanzar la columna 127, se pasa a la lnea siguiente y en
caso de alcanzar la lnea 127, los contadores se ponen a cero y se
queda en estado de espera hasta, transcurrido el tiempo de
exposicin, la seal READ vuelva a estar activa indicando que la
nueva imagen est lista para ser lea pxel a pixel. Para determinar si
se est en la primera fase de conversin A/D o en la segunda se usa
el bit T del registro de estado del Atmel, que a su vez controla el reloj
XCLK.
4.2.6. LAS RUTINAS DE ENLACE
Antes de mandar ningn dato por el canal de comunicaciones
es preciso incluir las cabeceras de tramas, los separadores y evitar
los datos 01111110 para que no se confundan con los separadores
de trama.
Las rutinas DEL_ENLACE, AL_ENLACE, METE_FR_SP,
PROCESA_BYTE y SEND_ACK cubren todas las tareas del nivel
de enlace.
Los decodificadores de datos que vienen desde el canal y los
codificadores de datos hacia el canal usan tres registros cada uno
para mantener el estado interno de los bits que todava no se han
enviado o decodificado al haberse eliminado bits de cero de
redundancia impuestos por los separadores de trama 01111110. As
se han asignado los siguientes registros, tanto inmediatos como no
inmediatos:
.DEF enACU
.DEF enACUav

=
=

r15

.DEF enCount1 =

r20

.DEF deACU

- 70 -

r18

r21

Robot con control remoto y cmara de vdeo integrada


.DEF deACUav

r14

.DEF deCount1 =

r23

.DEF ocho

r24

;registro de sucio

.DEF sucio

r25

;registro de guarreo

.DEF toSend

r16

.DEF toRec

r17

.DEF mierda1

r19

.DEF COMM

r26

.DEF enDATA

r27

.DEF deDATA

r22

Tambin se han definido los siguientes EQU que contienen las


direcciones de la memoria de datos del Atmel que almacenan los IDs
de tramas esperados, recibidos y la ventana de recepcin de
comandos de 64 bytes.
.EQU expFRID

= $00

.EQU curFRID

= $01

.EQU buffFR

= $02 ;esto mas 63 es la ventana

Las rutinas codificadoras y decodificadoras del enlace se


basan en desplazamientos lgicos con arreo y comprobacin bit a bit
de si es un cero o un uno. En caso de que sea un uno, los
contadores enCount1 o deCount1 se incrementan, y si se trata de un
cero, los contadores se resetean. Para el caso del codificador, al
recibir cinco unos seguidos, automticamente introduce un cero para
evitar que otro uno ms lo confunda por un separador de trama.
Para el decodificador, si se recibe un cero y el nmero de unos es
igual a 6, entonces se tiene un separador de trama, activando el bit
ms significativo del registro de comunicaciones COMM. Si por el
contrario son 5 el nmero de unos recibido, entonces se trata de un
cero redundante, que es eliminado automticamente. Finalmente, si
es inferior a cinco el nmero de unos, el cero es vlido.
C

- 71 -

Robot con control remoto y cmara de vdeo integrada

ACUMULADOR

DATO COD/DEC

Figura 36 Esquema de funcionamiento de los codificadores de enlace

As se tiene el codificador de enlace


AL_ENLACE:
ldi toSend, 0x08
loop1:
lsl enDATA

;BMS del enDATA al C

brcs send1

;si C==1 enviamos 1

ldi enCount1, $06 ;como es 0, se resetea el contador


alAcu:
rol enACU
;al acu por la derecha el C que es
el dato que queremos
rjmp chkAcu;
send1:
dec enCount1
brne alAcu

;no se han mandado mas de 5 unos

ror enDATA

;volvemos a meter a enDATA el BMS

lsl enACU
derecha

;metemos al acumulador un 0 por la

inc toSend;
chkAcu:
dec enACUav ;
brne sig1

;ENVIO A LA UART DEL BYTE SI PROCEDE (AL_CANAL)


del enACU
rcall AL_CANAL
sig1:
clr enACU;
ldi ocho, 0x08
mov enACUav, ocho;
dec toSend
brne loop1;
ret

Y el decodificador de enlace

- 72 -

Robot con control remoto y cmara de vdeo integrada


;Decodifica un byte recibido
adecuadamente la sobrecarga

de

la

RF,

quitando

;introducida por el uso de los separadores de trama


DEL_ENLACE:
ldi toRec, 8
in

deDATA,UDR

loop2:
lsl deDATA
brcc rx0
inc deCount1
alACU2:
del C

rol deACU

;se meten los datos por la derecha

dec deACUav
brne deACUChk
sbr COMM, 6 ;x1xxxxxx, dato valido
;SALTO POR HACER AL PROCESADOR DE BYTES
rcall PROCESA_BYTE
clr deACU
ldi ocho, 0x08
mov deACUav, ocho;
rjmp deACUChk
rx0:
cpi deCount1, $05
breq rx02

;esto si tenemos un cero que sobra

brmi rx01

;cero legal, se mete al acu

;eso es una bonita trama


;y se indica en el BMS del byte COMM
cbr COMM, 6 ;x0xxxxxx, dato no valido
sbr

COMM, 7

clr deACU

;1xxxxxxx, frame separator


;

mov deACUav, ocho;


rjmp deACUChk
rx01:
clr deCount1
clc
el rol meta un cero
rjmp alACU2

- 73 -

;poner a cero el C para que

Robot con control remoto y cmara de vdeo integrada

rx02:
clr deCount1
deACUChk:
dec toRec
brne loop2

Que tambin hace uso de la subrutina de envo de


confirmaciones de comando y de la subrutina de procesado de bytes:
;procesa el byte recibido
;usa como entrada el deACU
.DEF backup = r2
PROCESA_BYTE:
mov backup, deACU
sbrs COMM, 6 ;x1xxxxxx byte valido?
rjmp finpro
sbrs COMM, 7 ;1xxxxxxx nueva trama?
rjmp sigue5
;aqui tenemos un inicio de trama
;el dato del acu es el frame ID si es comando
andi deACU, $C0
brne finpro
sbr

COMM, 5 ;xx1xxxxx, en espera de comando

cbr COMM, 7 ;0xxxxxxx, ya no es inicio de trama


sts

curFRID, backup

rjmp finpro
sigue5:
;comprobar si estamos en espera de comando
sbrs COMM, 5
rjmp finpro
cbr COMM, 5 ;ya
espera general

lo

atendemos

pasamos

modo

de

;comprobar si es el RESERVADO antes de nada, que


tiene prioridad
cpi deACU, 0xff
breq COM_VALID
lds ocho, curFRID
lds sucio, expFRID

- 74 -

Robot con control remoto y cmara de vdeo integrada


cp ocho, sucio
brne yaenviado
COM_VALID:
;comando valido
push ocho
rcall SEND_ACK
;almacenamos
recepcion

el

comando

valido

en

la

ventana

de

;para mandar ACKs de paquetes ya recibidos


ldi mierda1, buffFR
add ocho, mierda1;ocho contiene la pos de memoria
RAM donde guardar
push r30
push r31
mov r30, ocho
st z, backup
pop r31
pop r30

inc sucio
andi sucio, $3F
sts expFRID, sucio
;SALTO A PROCESAR COMANDO
rcall PROC_COM
rjmp finpro
yaenviado:
mov sucio, ocho
ldi mierda1, buffFR
add sucio, mierda1;
ande mirar

tenemos

la

pos

push r30
push r31
ld sucio, z
pop r31
pop r30
cp sucio, deACU
brne finpro
;MANDAR ACK DEL FR ID que esta en ocho

- 75 -

de

memoria

Robot con control remoto y cmara de vdeo integrada


push ocho;el FR ID esta en la pila
rcall SEND_ACK
finpro:
mov deACU, backup
ret

SEND_ACK:
;primerito de todo, meter el FR SP
rcall METE_FR_SP
;ahorita meter el ACK
push enDATA
push sucio
push r30;
push r31;
in r30, SPL
in r31, SPH
adiw r30, 4
ld sucio, z
;sucio tiene ahora el FR ID a mandar
ori sucio, 0x40
;enmascarar
indica ACK de comando

con

01xxxxxx,

que

mov enDATA, sucio


rcall AL_ENLACE
pop r31;
pop r30;
pop sucio;
pop enDATA
ret

La rutina encargada de procesar bytes se fija, primeramente si


est activado el bit de trama nueva (FR, 7) de COMM, y en caso
contrario, si est activado el bit de dato vlido (VD, 6) del registro
COMM. En este ltimo caso recoge el byte decodificado y determina
si se trata de un inicio de trama de comando, en cuyo caso
almacena el ID de la trama en la posicin de memoria de currFRID y
activa el bit 5 del COMM, indicando que esta a la espera de nuevo
comando (WC).

- 76 -

Robot con control remoto y cmara de vdeo integrada

Si PROCESA_BYTE determina que est a la espera de un


byte y el byte disponible en deACU es vlido (bit 6 de COMM),
entonces, cargar el valor almacenado en currFRID y en expFRID y
los comparar, si son iguales, el comando es vlido. En este caso,
se almacena en la posicin de memoria (buffFR + <frame actual>) el
valor del comando recibido, se enva un ACK para el comando y se
llama a la subrutina PROC_COM que se encarga de procesar el
comando.
En caso de que el comando recibido no tenga el identificador
de trama esperado y el valor del comando sea igual al dato
almacenado en la posicin de memoria de datos buffRF + <frame
recibido>, se trata de un comando reenviado por error, y se manda
un ACK del comando. En caso de que no coincida con el valor
registrado, no se hace nada y se sigue esperando a recibir una
trama con el Identificador de Trama de Comando vlido o bien un
comando reservado para resincronizar con el host remoto.
Finalmente, este mdulo de rutinas de enlace dispone de la
rutina METE_FR_SP encargada de introducir sin sobrecarga alguna
de ceros un separador de trama 01111110 al canal:
;envia un separador de trama
METE_FR_SP:
ldi enDATA, 126;

la trama

mov toSend, ocho

loop123:
lsl enDATA

;BMS del enDATA al C

ror enACU
;al acu por la derecha el C que es el
dato que queremos
dec enACUav ;
brne sig123 ;
;ENVIO AL CANAL (AL_CANAL)
rcall AL_CANAL
sig123:
clr enACU;
mov enACUav, ocho;
dec toSend

- 77 -

Robot con control remoto y cmara de vdeo integrada


brne loop123;
ret

4.2.7. EL NIVEL FSICO


Las rutinas del nivel fsico comprenden a AL_CANAL,
ENVIA_SERIE y actTIMER. Dado que las tarjetas de radio
frecuencia exigen un tamao mximo de rfagas de 96 bytes y un
tiempo de guarda entre rfagas fijado por la expresin

estas rutinas debern respetar estas limitaciones. Para ello lo


que se hace es almacenar los datos a enviar en un bfer auxliar de
192 bytes de capacidad y se activa el TIMER1 que, al lanzarse su
interrupcin TIMER1 lo que hace es transmitir de golpe hasta un
mximo de 96 bytes almacenados en el bfer y esperar el tiempo de
guarda mximo antes de volverse a ejecutar hasta vaciar el bfer de
salida.
Las posiciones de memoria de datos empleadas son:
;nivel fisico
.EQU iniBuffer

= 0x42

.EQU capBuffer

= 0xC0

.DEF puntEnvio

= r28

;registro inmediato

.DEF puntMete

= r29

;registro inmediato

.EQU serieAVA = 0x102


esta la capacidad de las RF

;pos

de

memoria

donde

Asimismo se definen los punteros de Envo y Mete que


apuntan respectivamente a las posiciones de memoria de datos con
el byte a enviar la siguiente vez que se ejecute la rutina de
interrupcin IRQ_UBOE y el hueco en el bfer para el siguiente byte
a enviar.
AL_CANAL:
cpi puntMete, capBuffer
breq fincanal
mov ocho, puntMete
clr sucio

- 78 -

Robot con control remoto y cmara de vdeo integrada


ldi mierda1, LOW(iniBuffer)
add ocho, mierda1
ldi mierda1, HIGH(iniBuffer)
adc sucio,mierda1
push r30
push r31
mov r30, ocho
mov r31, sucio
st z, enACU
pop r31
pop r30
inc puntMete
;ACTIVAR LA TAREA DE ENVIO
in sucio, TCCR1B
cpi sucio, 0x00
brne fincanal
;la tarea no esta activada, la activamos
ldi sucio, 0x01;modo NO PREESCALADO!!!
out TCCR1B, sucio
fincanal:
ret

ENVIA_SERIE:
;metemos el byte SOLO si ya esta vacio el UDRE
sbic USR, 5
rjmp etiqueta
rcall actTIMER
rjmp finEnvia
;decrementar la capacidad del buffer
etiqueta:
push r30
push r31
ldi r30, LOW(serieAVA)
ldi r31, HIGH(serieAVA)
ld sucio, z

- 79 -

Robot con control remoto y cmara de vdeo integrada

;ahora sucio tiene la capacidad del buffer


dec sucio
brne otro
rcall actTIMER
otro:
st z, sucio
mov ocho, puntEnvio
clr sucio
ldi mierda1, LOW(iniBuffer)
add ocho, mierda1
ldi mierda1, HIGH(iniBuffer)
adc sucio,mierda1
mov r30, ocho
mov r31, sucio
ld sucio, z
pop r31
pop r30
out UDR, sucio
inc puntEnvio
cpi puntEnvio, capBuffer
brne finEnvia
clr puntEnvio
clr puntMete
finEnvia:
ret
actTIMER:
;activar tempo 1
ldi

ocho,0x00

out

TCNT1L,ocho

ldi

ocho,0xb8

out

TCNT1H,ocho

;Mximo retardo de 20us

ldi ocho,0x02
out TCCR1B,ocho
cbi UCR,3

;deshabilitamos la TX de la UART

ret

- 80 -

Robot con control remoto y cmara de vdeo integrada

La rutina actTIMER es la encargada de activar el contador 1,


cargndole adems el retardo mximo de tiempo de guarda como
valor iniciar.
Para enviar datos al canal se usa la rutina AL_CANAL, que
guarda en el bfer auxiliar el byte contenido en el registro enACU
Como el canal es half-duplex, no se envan datos cuando se
estn recibiendo datos. De este modo, la rutina de atencin a la
interrupcin de recepcin de datos desde la UART deshabilita la
transmisin poniendo el bit 3 del registro I/O UCR a cero al entrar en
la rutina y restaurando su valor a uno tras la ejecucin de la misma,
justo antes del reti. Tambin mientras est el TIMER1 activado no se
permite la transmisin.

- 81 -

Robot con control remoto y cmara de vdeo integrada

5. HOST DE CONTROL REMOTO


Este host se encarga de controlar a la unidad mvil, recibiendo por una
parte los datos que recopile sta, y por otra parte, mandndole las rdenes
pertinentes para su funcionamiento en modo manual.

5.1. PLACA DE CONTROL


La

comunicacin

se

realiza

travs

de

las

tarjetas

de

radiofrecuencia de Auriel WIZ-434-SML-IA que se conectan al equipo va


puerto Serie. Estas tarjetas trabajan con seales TTL, mientras que los
puertos Serie, tpicamente, COM, de los ordenadores trabajan con
seales en RS232. Para llevar a cabo la adaptacin de niveles se hace
uso de la siguiente placa que dispone de un conversor MAX232 de Maxim.

Figura 37 Placa de control del host

Este circuito integrado dispone de dos entradas TTL con sus


correspondientes salidas en RS232 y dos entradas RS232 y sus salidas
convertidas en TTL. En la placa adaptadora se ha hecho uso de
nicamente un par de entradas, quedando el otro libre.

- 82 -

Robot con control remoto y cmara de vdeo integrada

Figura 38 Detalle del adaptador MAX232

La placa puede ser alimentada directamente con una pila de 9


voltios o bien usando una fuente de alimentacin y los conectores hembra
de tipo banana. El circuito dispone de un regulador de tensin de 5 voltios
L7805 para poder usar distintas alimentaciones.
La conexin con el PC se realiza mediante el conector DB9 hembra
incorporado, y la tarjeta de radio frecuencia se conecta mediante un bus
de 10 hilos al conector.

PIN 1

Figura 39 Detalle de la conexin con la tarjeta de radio frecuencia

Cuando el circuito est correctamente alimentado, el LED rojo de la


placa y el LED POW de la placa de radiofrecuencia se encendern. Al
- 83 -

Robot con control remoto y cmara de vdeo integrada

abrirse el puerto por la aplicacin de control, el LED Verde la placa se


iluminar. Este LED corresponde a la seal DTR del puerto serie COM, y
se alimenta de la propia seal que recibe desde el equipo PC, por lo que
puede estar perfectamente encendido sin tener el circuito alimentado, en
cuyo caso el enlace RF no funcionar. Cuando se transmiten o reciben
datos por la radiofrecuencia, el led RTX se encender.

DTR
POWER

POWER
RTX

Figura 40 LEDs de la placa de control

De los nueve pines de la conexin DB9 serie slo se emplean los


cinco primeros:
Pin 1 DCD, Data Carrier Detect, activo a nivel bajo, se pone a
cero cuando se detecta portadora. Est conectado al pin 6 de la tarjeta
de radio frecuencia (XTR Carrier Detect.)
Pin 2 TXD, Transmitted Data, los datos a transmitir por radio
enlace.
Pin 3 RXD, Received Data, los datos recibidos desde el radio
enlace.

- 84 -

Robot con control remoto y cmara de vdeo integrada

Pin 4 DTR, Data Terminal Ready, se activa cuando el equipo


terminal, es decir, el PC est listo, que se produce cuando se abre el
puerto de comunicaciones.
Pin 5 GND, Signal Ground, la tierra del PC y que se usa en toda
la placa como tierra. Est conectada internamente a los pines 3 y 4 de
la tarjeta de radiofrecuencia.
Los pines usados de la tarjeta de radio frecuencia estn marcados
en rojo en la siguiente ilustracin:

Figura 41 Pines de contacto de la tarjeta de radiofrecuencia WIZ-434-SML-IA

5.2. EL SOFTWARE
El software del equipo de control est escrito en el lenguaje Java de
Sun Microsystems, concretamente, para su versin de JSDK 1.4.1_02. La
eleccin de este lenguaje se ha debido a su prctica independencia de la
plataforma en que se ejecute la mquina virtual de Java. Asimismo, para
poder compilar el proyecto entero, se ha usado la herramienta ANT del
grupo Jakarta de la Apache Foundation. Para ms informacin acerca de
la instalacin de ANT, vea el apndice A Instalacin del Software.
El acceso a los puertos de comunicaciones serie se realiza a travs
del paquete javax.comm que Sun Microsystems distribuye de forma
separada al JSDK. Nuevamente, para su descarga e instalacin, vea el
apndice A.
El software de control se compone bsicamente de tres mdulos o
paquetes de Java:

- 85 -

Robot con control remoto y cmara de vdeo integrada

Paquete com.theexbteam.comm, que proporciona las clases


necesarias para establecer una conexin serie a travs de las tarjetas
de radio frecuencia.
Paquete com.theexbteam.robots, que incluye las clases de
gestin y control del robot.
Paquete com.theexbteam.robots.ui, que rene las clases de la
interface de usuario, tanto en lnea de comandos como las grficas.
El ltimo paquete precisa del segundo, y el segundo paquete hace
uso

de

las

clases

del

primero.

No

obstante,

el

paquete

de

comunicaciones se puede utilizar para desarrollar cualquier otra


aplicacin que precise de acceso a los puertos de comunicaciones serie o
paralelo. Para un mayor detalle de la API de cada paquete, vea la
documentacin generada por la herramienta javadoc que incluye precisas
descripciones de los mtodos ms importantes de cada clase.

5.3. PAQUETE COM.THEEXBTEAM.COMM


Como ya se indic, este paquete de clases permite transmitir datos a
travs de un puerto de comunicaciones del equipo PC. Sus clases hacen
uso de las clases de javax.comm para abrir primeramente los puertos,
activar los eventos pertinentes de aviso de llegada de datos y resolver los
posibles conflictos que puedan surgir entre dos aplicaciones que intenten
acceder al mismo puerto.
La

clase

AurielWiz434SerialConnection,

que

deriva

de

la

SerialConnection, es la encargada de gestionar el uso del canal halfduplex que proporcionan las tarjetas de radio frecuencia Auriel WIZ-434SML-IA. Permite a las aplicaciones que la usen mandar y recibir de forma
transparente datos, sin tener que preocuparse stas por el acceso al
canal, la fragmentacin de paquetes de 96 bytes que imponen las tarjetas,
o de guardar los tiempos especificados en las hojas del fabricante.
Internamente esta clase lo que hace es almacenar en un buffer
secundario los datos a enviar y proceder a su transmisin a la tarjeta de
radio frecuencia transcurrido los tiempos de guarda, fragmentando

- 86 -

Robot con control remoto y cmara de vdeo integrada

adems el buffer en segmentos de 96 bytes. Finalmente, y mientras est


recibiendo datos, la salida de datos hacia la radio frecuencia se inhabilita
para evitar colisiones al estar los dos extremos usando el canal de forma
simultnea.
La clase AurielWiz434SerialConnection, por defecto, y a diferencia
de su padre, SerialConnection, no atiende los eventos Output Buffer
Empty, Buffer de Salida Vaco. En caso de que se desee recibir
notificaciones

de

este

tipo,

se

debe

usar

la

funcin

setPortEventOutputEmptyEnabled(true).

Figura 42 Diagrama UML del paquete com.theexbteam.comm

Este

paquete

incluye

adems

un

subpaquete

llamado

com.theexbteam.comm.util, que implementa las funciones necesarias


para la creacin de los delimitadores de trama 01111110 usados en el
nivel de enlace del protocolo de comunicaciones. As, intercalar
automticamente a toda secuencia de datos de cinco unos seguidos un

- 87 -

Robot con control remoto y cmara de vdeo integrada

cero, independientemente de que el siguiente bit sea uno o cero, para as


evitar que los datos se confundan con los separadores de tramas. Cabe
destacar

que

el

mtodo

getFrameDecoded(byte)

de

la

clase

FrameEncoder puede devolver tres tipos de datos:


Un byte con el valor decodificado resultado de concatenar el
acumulador interno de la clase que contiene bytes incompletos con el
ltimo byte introducido, eliminando pertinentemente la sobrecarga de
ceros introducida tras cinco unos consecutivos. En este caso, el
mtodo isDecodedValid() deber devolver true.
Un objeto FrameSeparator, arrojado por el mtodo, en cuyo caso
tanto isDecodedValid() devolver false, que indica el comienzo de una
nueva trama.
Un byte no vlido, al devolver isDecodedValid() false. Esto se
debe a que se ha eliminado una sobrecarga de ceros y no se ha
llegado a completar los ocho bits del acumulador interno y por tanto no
se puede procesar el byte recibido hasta que llegue el siguiente.

5.4. PAQUETE COM.THEEXBTEAM.ROBOTS


La misin de este paquete es controlar la unidad remota, recibir los
datos que sta le transmita y transmitir las rdenes pertinentes de
movimiento, ajuste de cmara o de sistema.
El siguiente diagrama UML muestra las clases principales del
paquete as como su interrelacin:

- 88 -

Robot con control remoto y cmara de vdeo integrada

Figura 43 Diagrama UML del paquete com.theexbteam.robots

La clase Kernel es el ncleo del sistema de control. Ella alberga las


clases

CommunicationsCore,

CommandCore,

encargadas

de

ImageCore,
las

tareas

StatusMonitor
de

comunicaciones,

procesado de imgenes, monitor de estado del robot y control de rdenes


del robot respectivamente:
CommunicationsCore: implementa el nivel fsico y de aplicacin
de la pila de protocolos de comunicaciones y realiza las conexiones
con los puertos de comunicaciones serie segn los parmetros que se
le pasen al crear una instancia de ella. Los bytes que recibe desde el
nivel fsico a travs de las clases del paquete com.theexbteam.comm
son decodificados, separando cada trama de la anterior, determinando
si pertenecen al servicio de datos o al de comandos, y, en este ltimo
caso, enviando los paquetes de confirmaciones pertinentes. Una vez
extrado el servicio al que pertenece la informacin recibida, propaga
los eventos resultantes a las clases de gestin de datos y comandos:
ImageCore y StatusMonitor por un lado y CommandCore por el otro.

- 89 -

Robot con control remoto y cmara de vdeo integrada

Adems recoge estadsticas de uso del radio enlace que pueden ser
consultadas a travs de la funcin getStats() que devuelve un objeto de
la clase java.util.Map con diversos valores, como son los bytes
enviados y recibidos, comandos y confirmaciones enviados y recibidos
y estado de las ventanas de envo y recepcin del protocolo confirmado
de comandos. Los comandos de sistema PING no lanzan eventos
CommandEvent de tipo COMMAND_RECEIVED o COMMAND_
ACKNOWLEDGE,

sino

que

se

generan

de

tipo

PING_ECHO_REQUESTED cuando se reciben en la unidad remota y


PING_ECHO_RECEIVED cuando se recibe en la unidad que envi el
comando original el ACK del mismo.
ImageCore: atiende los eventos de datos de imagen que la
unidad remota transmite al host controlador as como mantiene la
configuracin de la cmara del robot. As, permite variar los diversos
modos de adquisicin de la cmara, el tiempo de exposicin o la
ganancia de salida de la seal de la cmara. Las modificaciones en los
registros de la cmara slo se mandan a la unidad remota cuando se
llama al mtodo loadSettings(), no cuando se modifican los valores.
Para ms informacin acerca de los valores que se pueden configurar,
vea la documentacin de la clase o bien el apartado dedicado a la
cmara de la memoria.
StatusMonitor se encarga de controlar el estado general del
robot. Toma los datos de tipo status que se reciben desde el enlace de
radio frecuencia. Actualmente slo se mantiene el estado hay lnea
que indica que la unidad remota en modo automtico est siguiendo
con xito un camino marcado.
CommandCore. Esta clase facilita a la interface con el usuario el
conjunto necesario de mtodos para gobernar el robot en modo manual,
enviando al CommunicationsCore las rdenes de comando necesarias
para realizar los movimientos que se le indiquen.
Para interactuar con el Kernel de la aplicacin se dispone de la clase
abstracta UserInterface, que se encarga de ejecutar los mtodos

- 90 -

Robot con control remoto y cmara de vdeo integrada

pertinentes de Kernel y sus elementos de acuerdo con las acciones que


realice el usuario o la aplicacin final. Se disponen de dos clases que
heredan de UserInterface:
CommandLineInterface,

interface

de

lnea

de

comandos,

orientada a interpretar cadenas de comandos que se le pasen desde


eventos de teclado.
GraphicalUserInterface,

orientada

interfaces

grficas,

proporciona los mtodos de escucha de los eventos principales de


java.awt como son los MouseEvents.
Figura 44 Aspecto de la interface grfica de usuario

- 91 -

Robot con control remoto y cmara de vdeo integrada

6. APNDICE A: INSTALACIN DEL SOFTWARE


El software ha sido desarrollado y probado con xito en un entorno
Windows NT5 (2000/Xp Home y Pro), usando para su edicin JBuilder 8
Enterprise de Borland y compilando satisfactoriamente tanto con los
compiladores de Borland como los del JSDK 1.4.1_2.

Figura 45 Logotipo del lenguaje de programacin Java de Sun Microsystems

El entorno Jakarta-ANT proporciona una forma rpida de compilar y


generar de forma automatizada la documentacin de las libreras creadas, que
es, adems, y a diferencia de make independiente de la plataforma en que se
ejecute. Jakarta-ANT pertenece al grupo de desarrollo Jakarta de la Apache
Software Foundation.

Figura 46 Logotipo del proyecto APACHE ANT

A continuacin se describe el procedimiento para instalar y ejecutar las


clases compiladas distribuidas.

6.1. INSTALACIN DEL ENTORNO JAVA


Si solamente desea ejecutar las clases previamente compiladas y no
tiene intencin de recompilar los fuentes, deber contar con el entorno de
ejecucin de Java (JRE, Java Runtime Environment), en su versin, como
mnimo 1.4.1_2, disponible gratuitamente en:
http://java.sun.com/j2se/downloads.html
Si por el contrario desea compilar los fuentes deber instalar el
entrono de desarrollo estndar de Java (J2SE-SDK, Java 2 Standar
Edition Software Development Kit), en su versin, como mnimo, 1.4.1_2,
tambin disponible desde el enlace anterior para su descarga gratuita.
- 92 -

Robot con control remoto y cmara de vdeo integrada

Una vez descargado al equipo local la versin de Java, ejecute el


archivo que iniciar el proceso automtico de instalacin del entorne
elegido de Java.

6.2. INSTALACIN DE LAS LIBRERAS JAVAX.COMM


Para instalar correctamente las libreras de comunicaciones de Sun
Microsystem siga los siguientes pasos:
Descargue de http://java.sun.com/products/javacomm/ la ltima
versin para la plataforma que use. Actualmente hay versiones
disponibles para plataformas Microsoft Windows y Sun Solares, tanto
para SPARC como para x86.
Descomprima el contenido del archivo comprimido a una carpeta
temporal si slo va a ejecutar el programa o bien a una carpeta de
desarrollo de su conveniencia para el caso de que prefiera compilar o
modificar los fuentes.
Revise antes de seguir los documentos README.HTML y
jdk1.2.html por si difiriera la instalacin con el procedimiento aqu
descrito para la versin 2.0 de la API de comunicaciones javax.comm.
Localice el directorio de instalacin del Java Runtime Environment,
JRE en su equipo, por defecto instalado en la subcarpeta <jdk>\jre si
instal conjuntamente el JSDK y el JRE o en la carpeta \jre si instal
nicamente el JRE.
En la subcarpeta <jdk>\jre\lib\ext, copie el archivo comm.jar
que encontrar entre los archivos comprimidos.
En

la

subcarpeta

<jdk>\jre\lib,

copie

el

archivo

javax.comm.properties. Si no va a compilar el proyecto, puede borrar

ya la carpeta temporal en la que descomprimi los archivos.


Si va a compilar el proyecto deber agregar a la variable de
entono CLASSPATH del sistema el archivo comm.jar, indicando tanto
la ruta de acceso como el nombre del mismo. Para entornos Windows
puede usar la directiva:

- 93 -

Robot con control remoto y cmara de vdeo integrada


SET CLASSPATH=%CLASSPATH%;<PATH_COMM.JAR>\comm.jar

6.3. INSTALACIN DE LA APLICACIN DE CONTROL


Los archivos necesarios para ejecutar la aplicacin de control as
como toda la documentacin y los archivos fuentes de la aplicacin se
encuentran disponibles para su descarga desde la URL
http://www.theexbteam.com/robots
Descomprima el archivo y agregue a la variable de entorno
CLASSPATH la carpeta classes que contiene la distribucin con todas
las clases compiladas de la forma:
SET CLASSPATH=%CLASSPATH%;<PATH_CARPETA_INSTALACIN>\

Para ejecutar las distintas Interfaces de Usuario o programas de


diagnstico, refirase al fichero README.TXT de la distribucin, en la
que encontrar detallada informacin acerca de los programas incluidos.

6.4. INSTALACIN DE JAKARTA-ANT


La instalacin del entorno Jakarta-ANT comprende los siguientes
pasos:
Descargue la ltima distribucin de Jakarta-ANT desde la pgina
del proyecto http://ant.apache.org/.
Descomprima el contenido de la distribucin. Asumiremos aqu
<ant> como la ruta a la carpeta en la que descomprimi ANT.
Agregue a la variable de entorno PATH en los sistemas Windows
o su equivalente para otras plataformas o sistemas operativos la
carpeta <ant>\bin. Para sistemas Windows:
SET PATH=%PATH%;<ant>\bin\

Cree la variable de entorno ANT_HOME con la ruta a la carpeta


de instalacin de ANT:
SET ANT_HOME=<ant>

Opcionalmente, y si tiene problemas para ejecutar ANT, cree la


variable de entorno JAVA_HOME que debe apuntar a la carpeta de
instalacin del JSDK:

- 94 -

Robot con control remoto y cmara de vdeo integrada


SET JAVA_HOME=<PATH_JSDK>\

Para poder ejecutar correctamente los build.xml de los paquetes


de la aplicacin, deber crear adems dos variables de entorno
llamadas JAVA_LIBS y JAVA_DOC. La primera variable deber
contener la carpeta en la que se colocarn las clases compiladas y en
la que se buscar a la hora de compilar el proyecto las clases
dependientes (CLASSPATH) y la segunda indicar la ruta donde se
copiar la documentacin generada automticamente por la tarea
documentar de que cuenta cada build.xml.
Adicionalmente se disponen de las tareas compilar para compilar
(tarea por defecto), documentar para generar la documentacin,
empaquetar para generar un archivo comprimido .JAR con todas las
clases, limpiar para eliminar las clases y la documentacin y
limpiarDoc para eliminar slo la documentacin generada.

- 95 -

Robot con control remoto y cmara de vdeo integrada

7. APNDICE B ESQUEMTICOS DE LAS PLACAS


En las siguientes dos pginas se han recogido a gran tamao los
esquemticos detallados de las dos placas de control de la unidad remota.

- 96 -

R4
470

D14
DEP

J1
PWR_IN

+5V

+5V

10K

D12
PROG

470

VCC

ICP
RST

XTAL1
XTAL2

RX

TX

1
3
5
7
9

AURIEL

RESET

2
4
6
8
10

RST
SCK
MISO

MOSI

J16
2
4
6
8
10

+5V

+5V

RX
TX
XRESET
SIN
LOAD
XCLK
START
READ

10
11
12
13
14
15
16
17
30
29

GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
INCAM
ADCSTR

21
22
23
24
25
26
27
28

C3
100uF

REGULADOR

J3
1

PROGRAMADOR1

1
3
5
7
9

ALE
OC1B

PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD

PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK

J8

AT90S8515

GND

PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15

VOUT

PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7

U2

D13
DIODO_RST

R22

31
9

RESET

R21

19
18

XTAL1
XTAL2

40

1
2
3
4
5
6
7
8

CAM1
CAM2
CAM3
CAM4

MOSI
MISO
SCK

39
38
37
36
35
34
33
32

C2
100nF

PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7

C1
220uF

VIN

GND

20

C4
100nF

XTAL1

R5

OSC1

XTAL2

1.2K

20MHz

Y2

8MHz

Y1

J2
PWR_OUT

U5
LM385-2.5/TO

+5V

C8
15pF

OSC2

C5
15pF

+5V

1
2

L7805/TO220

C9
15pF

C6
15pF

R1
470

+5V

D1
PWR_ON

+5V

ADCSTR

VOUT

+5V

RESET

20

7
8
13

12
11

14

16
15

17
18
1
2
3

OSC1
OSC2

SRV1
SRV2

R7
1K

PIC16F84

ADC0820

VCC

WR/RDY

MODE
RD
CS

REF+
REF-

VIN

U4

VDD 5

MCLR
GND

INT
OFL

D0
D1
D2
D3
D4
D5
D6
D7

Date:

Size
A4

4
3
2
1

EXPANS

J17

Monday , May 19, 2003

Document Number
1

SRV2

SRV1

1
2
3
4
5
6
7
8
9
10
11
12

C7
100nF

J7

+5V

of

R3
1K

SW1
RESET

Rev
1.2

SERVO2

J5

SERVO1

J4

R2
10K

1
2
3

1
2
3

CAMARA

RESET

+5V

+5V

Sheet

+5V
XRESET
SIN
LOAD
XCLK
START
READ
VOUT

Tarjeta Principal para Robot LSED

INCAM
9
18

Title

PIX0
PIX1
PIX2
PIX3
PIX4
PIX5
PIX6
PIX7

CAM1
CAM2
CAM3
CAM4
EXP0
EXP1
EXP2
EXP3

2
3
4
5
14
15
16
17

6
7
8
9
10
11
12
13

TARJ_CTRL

J10
8
7
6
5
4
3
2
1

RB0/INT
RB1
RB2
RB3
RB4
RB5
OSC1/CLKIN
RB6
OSC2/CLKOUT
RB7

RA0
RA1
RA2
RA3
RA4/TOCKI

U3

GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE

GND

U1

2
1

- 97 10

Robot con control remoto y cmara de vdeo integrada

R23
1K

BUMP_TRAS 11

U4D

EXP1
EXP2
EXP3
EXP4

VCC

ICP
RST

XTAL1
XTAL2

EXPAN

BUMPER3

1
2
3
4

J1

ALE
OC1B

PD0/RXD
PD1/TXD
PD2/INT0
PD3/INT1
PD4
PD5/OC1A
PD6/WR
PD7/RD

PC0/A8
PC1/A9
PC2/A10
PC3/A11
PC4/A12
PC5/A13
PC6/A14
PC7/A15

30
29

10
11
12
13
14
15
16
17

21
22
23
24
25
26
27
28

C4
100uF

AT90S8515

GND

VOUT

13 BUMPER4

PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK

VIN

C1
100nF

PA0/AD0
PA1/AD1
PA2/AD2
PA3/AD3
PA4/AD4
PA5/AD5
PA6/AD6
PA7/AD7

U3

7432

40

31
9

RESET

+5V

19
18

XTAL1
XTAL2

MOSI
MISO
SCK

1
2
3
4
5
6
7
8

MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1

C3
220uF

39
38
37
36
35
34
33
32

GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE
MARCHA

TARJ_PPAL

J3
8
7
6
5
4
3
2
1

R1
470

D14
DEP

GOT_LINE
MOTAC3
MOTAC2
MOTAC1
MOTAC0
MODE

R18
470

D11
READY

J5
PWR_IN

C2
100nF

R7

R4

47K

CNY 3

47K

CNY 1

EN_MOT2

EXP1
EXP2
MODE
INT_MEC
BUMP_TRAS
EN_MOT1
EXP3
EXP4

CNY 1
CNY 2
CNY 3
CNY 4
BUMPER1
BUMPER2
BUMPER3
BUMPER4

+5V

+5V

+5V
+5V

+5V

CNY 1

4
3
2
1

CNY 3

R6
J10
220

4
3
2
1

R12
J8
220

10K

D12
PROG

470

8MHz

Y1

R9

R5

7432

U4C

+5V

RESET

D13
DIODO_RST

R22

R21

C7
15pF

XTAL1

R3
470

D1
PWR_ON

INT_MEC 8

+5V

J4
PWR_OUT

1
2

L7805/TO220

14
7

U1

47K

CNY 4

47K

CNY 2

+5V

+5V

10

RST
SCK
MISO

MOSI
1
3
5
7
9

J16
2
4
6
8
10

+5V

U4B

CNY 2

4
3
2
1

CNY 4

R8
J11
220

4
3
2
1

R13
J9
220

7432

7432

U4A

PROGRAMADOR

+5V

C8
15pF

XTAL2

C9 +
100uF

16
8

1
9

EN_MOT1
EN_MOT2
+5V
+7,2V

2
7
10
15

MOT1_DIR0
MOT1_DIR1
MOT2_DIR0
MOT2_DIR1

+5V

Date:

Size
A4

Title

+5V

+5V

VCC1
VCC2

1/2EN
3/4EN

1A
2A
3A
4A

U2

C12
100nF

RESET

3
6
11
14

J7
MOT2

D7

D8

R15
1K

SW1
RESET

R14
10K

BUMPER2

4
3
2
1

J13

BUMPER1

4
3
2
1

J12

+5V

+5V

+5V

+7,2V

1N4001 1N4001

D10

D3
1N4001

Monday , June 23, 2003

Document Number
1
Sheet

BUMPER4
R20
10K

of

+5V

C10
100nF

BUMPER3
R19
10K

C11
100nF

D5

C6
100nF

Rev
4.0

BUMPER4

J15
4
3
2
1

BUMPER3

4
3
2
1

J14

R17
1K

SW2
MARCHA

R16
10K

+7,2V

1N4001 1N4001

D6

D4
1N4001

+7,2V

MARCHA

+7,2V

1N 4001

D9
1N 4001

J6
MOT1

Tarjeta de control de motores para Robot LSED

BUMPER2
R11
10K

BUMPER1
R10
10K

1Y
2Y
3Y
4Y

L293
2
1

GND

20

12

- 98 4

2
1

+7,2V

Robot con control remoto y cmara de vdeo integrada

Robot con control remoto y cmara de vdeo integrada

8. APNDICE F: AVISOS LEGALES


8.1. PAQUETES COM.THEEXBTEAM.*
Las libreras pertenecientes a los paquetes com.theexbteam.* se
distribuyen bajo licencia de fuente abierta u open source. Esta licencia es
la siguiente:
Copyright 2003 The EXB Team. Todos los derechos reservados.
The EXB Team (EXB) garantiza al usuario una licencia de uso, modificacin y
redistribucin del software tanto en forma de cdigo fuente o binario, no exclusiva y libre de
royalties, siempre que se mantenga:
i)

este aviso de copyright aparezca en todas las copias del software.

ii)

El cdigo fuente de este software se incluya en la distribucin o al menos se


indique de dnde se pueda obtener dichos fuentes.

iii)

El usuario licenciado no utilice el software en manera alguna que perjudique a


EXB

Este software se distribuye tal cual, sin garanta alguna de cualquier tipo. Toda condicin
explcita o implcita, representaciones y garantas, incluyendo aquellas que impliquen
garantas comerciales estn excluidas. EXB y sus usuarios licenciados no sern
responsables por cual dao que sufran los usuarios licenciados como resultado del uso,
modificacin o distribucin del software o sus derivados. En ningn caso EXB o sus
usuarios licenciados sern responsables por cualquier prdida de rdito, beneficio o datos
derivados del uso de este software.
El uso de este software implica la aceptacin de estos trminos de uso.

Esta licencia de uso puede cambiar en versiones futuras del


software. En cualquier caso, revise la licencia que se incluya en las
distribuciones.

8.2. LIBRERAS JAVAX.COMM


Las libreras javax.comm de la API de comunicaciones de Java
proporcionadas por Sun Microsystems se licencian segn el acuerdo de
uso descrito en el formulario Form ID#011801/LFI#123979 disponible en
el

paquete

de

las

libreras

desde

la

http://java.sun.com/products/javacomm/COMM2.0.3_license.txt.

- 99 -

URL

Robot con control remoto y cmara de vdeo integrada

Sun

Microsystems

no

ofrece

ningn

tipo

de

garanta

de

funcionamiento del software, proveyndolo tal cual y su nica


responsabilidad se limita al reemplazo del Software.

8.3. TERCERAS PARTES


Microsoft

Windows

es

una

marca

registrada

de

Microsoft

Corporation.
Java, JSDK, JRE y J2SE son marcas registradas de Sun
Microsystems. El logotipo de Java pertenece a Sun Microsystems.
Apache, Jakarta-ANT y ANT son marcas registradas de la Apache
Software Foundation. El paquete ANT se distribuye bajo licencia Apache
Software

License,

Version

1.1,

disponible

desde

la

URL

http://ant.apache.org/manual/LICENSE. El logotipo de Apache-ANT y


Apache pertenecen a la Apache Software Foundation.

- 100 -

Robot con control remoto y cmara de vdeo integrada

9. BIBLIOGRAFA
Para ms informacin sobre este y otros proyectos, versiones
actualizaciones del software y firmware del robot as como la API detallada de
las libreras empleadas, consulte
http://www.theexbteam.com/robots

9.1. REFERENCIAS BIBLIOGRFICAS (POR HACER)

[FRA88] Sergio Franco, Operational Amplifiers and Analog Integrated


Circuits, McGraw-Hill International Editions, Electrical & Electronic
Engineering Series. International edition 1988.

[FER et al. 2002] J. Ferreiros, J. Macas, et al. Aspectos prcticos de


diseo y medida en laboratorios de electrnica, Servicio de
publicaciones, E.T.S.I. Telecomunicacin. UPM, 2002.

[MAL98] N. R. Malik. Circuitos electrnicos. Anlisis, diseo y


simulacin, Prentice Hall, Madrid, 1998

[SAN01] Jess Sanz Maudes et al. Manual de prcticas de


Laboratorios de Electrnica Bsica y Componentes, 2 Parte
(simulaciones

PSPICE),

Servicio

de

publicaciones,

E.T.S.I.

Telecomunicacin UPM, 2001.

[WAK01] John F. Wakerly. Diseo digital, Prentice Hall, Mxico,01.

[TAN03] Andrew S. Tanenbaum, Computer Networks, fourth


international edition, Prentice Hall, Upper Saddle River (NJ), 2003.

[HER97] Guillermo Herranz Acebo, Ingeniera Elctrico, 1997,


Madrid,

Departamento

de

Publicaciones

de

la

E.T.S.I

Telecomunicacin UPM.

9.2. HOJAS DE CARACTERSTICAS Y RECURSOS EN LA


RED
Se han empleado las siguientes hojas de caractersticas disponibles
en Internet:

- 101 -

Robot con control remoto y cmara de vdeo integrada

Philips Semiconductors, http://semiconductors.philips.com, para


los componentes digitales.
Maxim, http://www.maxim-ic.com, para los conversores RS232 a
TTL MAX232.
Atmel, http://www.atmel.com, para los microcontroladores.
Nacional Semiconductors, http://www.national.com, para el
ADC0820.
Microchip, http://www.microchip.com, para el PIC16F84.
Timming tool, http://timingtool.com/, para los cronogramas.

9.3. DIRECCIONES DE FABRICANTES Y PROVEEDORES


A continuacin se facilitan las siguientes direcciones de los
fabricantes y proveedores del material necesario para fabricar el
hardware del robot y el control remoto:
AUREL S.p.A., Via Foro dei Tigli, 4 - 47015 Modigliana [FC]
ITALY, Tel.: (+39) 0546941124, Fax: +390546941660. Fabrica los
enlaces radio frecuencia empleados. Para ms informacin,
http://www.aurel.it.
ENDRICH Bauelemente S.L., c/ Balmes 243. 08006
BARCELONA, Tel. (+34) 93 217 31 44, Fax. (+34) 93 217 97 20,
e-Mail: endrich@intercom.es, suministrador oficial de AUREL en
Espaa.

Para

ms

informacin

http://www.endrich.net/.
eBay, http://www.ebay.com, para la cmara digital.

- 102 -

pedidos,

Das könnte Ihnen auch gefallen