You are on page 1of 167

MANUAL USUARIO

DE MOWAY





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 2 de 167



www.moway-robot.com

Copyright (c) 2012 Bizintek Innova, S.L.

Permission is granted to copy, distribute and/or modify this document under the
terms of the GNU Free Documentation License, Version 2.0 or any later version
published by the Free Software Foundation; with no Invariant Sections, no Front-Cover
Texts, and no Back-Cover Texts. A copy of the license is included in the section
entitled "GNU Free Documentation License".







Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 3 de 167



www.moway-robot.com
ndice

ndice ................................................................................................................................ 3
1. Introduccin .............................................................................................................. 6
2. Qu es mOway? ...................................................................................................... 7
3. Robot mOway ........................................................................................................... 8
3.1 Procesador .......................................................................................................... 8
3.2 Sistema motriz .................................................................................................... 9
3.3 Grupo de sensores e indicadores ...................................................................... 11
3.3.1 Sensor de lnea ............................................................................................. 12
3.3.2 Sensores detectores de obstculos ............................................................... 14
3.3.3 Sensor de luz ................................................................................................ 15
3.3.4 Conector de expansin ................................................................................. 16
3.3.5 Sensor de temperatura.................................................................................. 17
3.3.6 Speaker ........................................................................................................ 17
3.3.7 Micrfono .................................................................................................... 17
3.3.8 Acelermetro ............................................................................................... 18
3.3.9 Nivel de batera ............................................................................................ 18
3.3.10 LED frontal .................................................................................................. 18
3.3.11 LED superior bicolor ................................................................................... 19
3.3.12 LED de freno ............................................................................................... 19
3.3.13 Pad libre ....................................................................................................... 20
3.4 Sistema de alimentacin ................................................................................... 20
3.5 Mdulo RF y RFUSB ....................................................................................... 21
3.5.1 Especificaciones tcnicas............................................................................. 22
3.6 Mdulo de cmara ............................................................................................ 24
3.6.1 Especificaciones tcnicas............................................................................. 25
3.7 mOway Camera Board ..................................................................................... 26
3.7.1 Especificaciones tcnicas............................................................................. 27
4. Primeros pasos ........................................................................................................ 28
4.1 Instalacin pack ................................................................................................ 28
4.2 Grabacin del robot .......................................................................................... 29
4.3 Instalacin RFUSB ........................................................................................... 29
4.4 Instalacin drivers mOway Camera Board ...................................................... 31
5. Programacin ensamblador .................................................................................... 32
Creacin de un proyecto ............................................................................................. 32
5.1 Primer programa en ensamblador ..................................................................... 36
5.2 Libreras ............................................................................................................ 40
5.2.2 Librera sensores mOway ensamblador ....................................................... 40
5.2.2.1 Descripcin .................................................................................................. 41
5.2.2.2 Variables ...................................................................................................... 41
5.2.2.3 Funciones ..................................................................................................... 44
5.2.3 Librera motores mOway ensamblador ....................................................... 54
5.2.3.1 Descripcin .................................................................................................. 55
5.2.3.2 Variables ...................................................................................................... 55



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 4 de 167



www.moway-robot.com
5.2.3.3 Funciones ..................................................................................................... 57
5.2.4 Librera para el mdulo BZI-RF2GH4 en ensamblador .............................. 65
5.2.4.1 Descripcin .................................................................................................. 65
5.2.4.2 Variables ...................................................................................................... 65
5.2.4.3 Funciones ..................................................................................................... 67
5.2.4.4 Diagrama de flujo para envo y recepcin de datos ..................................... 74
5.2.5 Librera para el mdulo Moway Camera Board en ensamblador ................ 75
5.2.5.1 Descripcin .................................................................................................. 75
5.2.5.2 Variables ...................................................................................................... 75
5.2.5.3 Funciones ..................................................................................................... 76
6. Programacin C ...................................................................................................... 79
6.1 Creacin de un proyecto ................................................................................... 79
6.2 Primer programa en C18 .................................................................................. 83
6.3 Libreras ............................................................................................................ 87
6.3.2 Librera sensores mOway en C para C18 .................................................... 87
6.3.2.1 Descripcin .................................................................................................. 87
6.3.2.2 Funciones ..................................................................................................... 88
6.4 Librera motores mOway C18 .......................................................................... 97
6.4.2.1 Descripcin .................................................................................................. 97
6.4.2.2 Funciones ..................................................................................................... 98
6.4.3 Librera para el mdulo BZI-RF2GH4 en C18.......................................... 104
6.4.3.1 Descripcin ................................................................................................ 104
6.4.3.2 Funciones ................................................................................................... 104
6.4.3.3 Diagrama de flujo para envo y recepcin de datos ................................... 109
6.4.4 Librera para el mdulo de cmara en C18 ................................................ 111
6.4.4.1 Descripcin ................................................................................................ 111
6.4.4.2 Funciones ................................................................................................... 111
7. Programacin MowayWorld ................................................................................ 114
7.1 Espacio de trabajo de MowayWorld .............................................................. 114
7.1.1 Barra de herramientas ................................................................................ 114
7.1.2 Editor de diagramas de flujo ...................................................................... 114
7.1.3 Acciones .................................................................................................... 115
7.1.4 Propiedades ................................................................................................ 116
7.1.5 Lista de errores .......................................................................................... 116
7.1.6 Flechas ....................................................................................................... 117
7.1.7 Cambio de idioma y actualizaciones ......................................................... 118
7.2 Primer programa en MowayWorld ................................................................. 119
7.3 Mdulos .......................................................................................................... 123
7.3.1 Acciones de Moway .................................................................................. 123
7.3.2 Lectura de sensores .................................................................................... 127
7.3.3 Datos .......................................................................................................... 129
7.3.4 Control de flujo .......................................................................................... 131
7.3.5 Expansin .................................................................................................. 132
7.4 Variables ......................................................................................................... 137
7.5 Funciones / Subrutinas ................................................................................... 138
8. Aplicaciones ......................................................................................................... 140
8.1 Ventana de comunicaciones ........................................................................... 140



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 5 de 167



www.moway-robot.com
8.2 MowayCam .................................................................................................... 141
8.3 MowayRC ...................................................................................................... 143
8.3.1 Configuracin ............................................................................................ 144
8.3.2 Movimiento................................................................................................ 144
8.3.3 Luces .......................................................................................................... 145
8.3.4 Sonido ........................................................................................................ 145
8.3.5 Estado de sensores ..................................................................................... 145
8.3.6 Cmara ....................................................................................................... 145
8.4 MowayServer ................................................................................................. 145
9. Simulador ............................................................................................................. 148
9.1 Introduccin .................................................................................................... 148
9.2 Funcionamiento .............................................................................................. 149
9.3 Ejemplo de simulacin ................................................................................... 153
10. mOway Scratch .............................................................................................. 155
10.1 Introduccin ............................................................................................... 155
10.2 Integracin en MowayWorld ..................................................................... 155
10.3 Paso a paso ................................................................................................. 156
10.4 Comandos y Sensores ................................................................................ 159
10.5 Prcticas ..................................................................................................... 162
10.5.1 Figuras geomtricas ................................................................................... 162
10.5.2 Encerrado ................................................................................................... 164
10.5.3 MowayRC .................................................................................................. 165
10.5.4 Acelermetro ............................................................................................. 166





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 6 de 167



www.moway-robot.com
1. Introduccin

Comienza una nueva era, la de los minirobots. Cada vez son ms las aplicaciones
de la robtica mvil en nuestra vida cotidiana. Actualmente podemos ver robots que nos
ayudan en tareas sencillas como limpiar el suelo de casa, segar el csped o mantener
limpia la piscina. A medida que avanza la tecnologa estos pequeos artilugios, mezcla
de mecnica, electrnica y software, van asumiendo tareas ms complejas. Poco a poco
se van abriendo camino hacia nosotros sindonos cada vez ms tiles y descargndonos
de los trabajos menos gratificantes.

No es ningn disparate pensar que la revolucin que se dio en la informtica o en
las telecomunicaciones se va a repetir en la robtica durante la prxima dcada.
Actualmente disponemos de la tecnologa suficiente para fabricar estos dispositivos y la
sociedad est cada vez ms preparada para recibirlos en el mercado.

Hasta ahora los procesadores no se movan. Las cosas han cambiado. Uno de los
elementos fundamentales en el mundo de la robtica mvil es el software. La principal
diferencia a la hora de desarrollar programas para estos robots con respecto a hacerlo
para ejecutarlos en un ordenador personal estriba en la interaccin con el entorno. En las
aplicaciones para PC el entorno no cambia aleatoriamente, con la que la toma de
decisiones se simplifica y con ello los programas. Por otro lado, en la ejecucin de
comandos dentro de una aplicacin para un minirobot lo habitual es que se desconozca
de antemano cul va a ser el resultado, por lo que los algoritmos deben contemplar
situaciones con un abanico mucho ms amplio de posibilidades, algunas incluso
inesperadas.

Los mOways son herramientas diseadas especficamente para la docencia e
investigacin. Su objetivo es acercar el mundo de la robtica autnoma a los centros
docentes.

El objetivo principal de mOway es ser una herramienta til tanto para quienes se
introducen por primera vez en el mundo de la robtica como para quienes ya tienen
experiencia y desean realizar aplicaciones complejas de robtica colaborativa.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 7 de 167



www.moway-robot.com
2. Qu es mOway?

mOway es un pequeo robot autnomo programable diseado principalmente
para realizar aplicaciones prcticas de robtica mvil. Con l se ha conseguido una
plataforma hardware perfecta tanto para quien quiere dar sus primeros pasos en el
mundo de los robots mviles como para quien ya ha trabajado con robots y desea
realizar aplicaciones ms complejas.

El robot mOway est dotado de una serie de sensores que le ayudarn a
desenvolverse en un entorno real. A su vez cuenta con un grupo motor que le permitir
desplazarse sobre el terreno. Todos estos perifricos estn conectados a un
microcontrolador que ser el encargado de gobernar el robot.

Este pequeo robot cuenta adems con opciones de ampliacin a travs de un bus
de expansin. En l se puede conectar, por ejemplo, un mdulo de comunicaciones
inalmbricas, una cmara de video, una tarjeta de prototipos o cualquier otro dispositivo
que se considere interesante para el desempeo de una tarea. En la pgina web del
producto encontrar prcticas para realizar en el bus de expansin.

El diseo exterior de mOway es muy compacto, diseado para que pueda moverse
con agilidad y elegancia sin opcin a quedarse enganchado en ninguna esquina. Tan
pequeo como un mvil se ha ganado la denominacin de robot de bolsillo.

mOway es una herramienta perfecta para quien quiere aprender y para quien
quiere ensear qu es la robtica. El usuario se ver sorprendido con la rapidez que
comienza a cosechar logros incluso si ste es su primer contacto con los robots mviles.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 8 de 167



www.moway-robot.com
3. Robot mOway

En el interior de un mOway tenemos los siguientes elementos:

- Procesador
- Sistema motriz
- Grupo de sensores e indicadores
- Sistema de alimentacin


PIC18f86j50
FRON
T_LED
IR
_
R
X
_
R
LINE_TX
LINE_RX_R
LIGHT_
SEN
E
X
P
A
N
S
I

N
IR
_
R
X
_
L
LINE_RX_L
LED_
GREEN
LED_
RED
PIC16F687
LINE_TX LINE_RX_R
LINE_TX LINE_RX_R
Puente H
M
O
T
O
R
M
O
T
O
R
Engrane
Encoder
Engrane
Encoder
IR
_R
X_R
IR
_R
X_L
LED_
BRAKE
LED_
BRAKE
ACELE
SPEAKER
MIC
TEMP
MEDIDOR
BATERA
FREE
PAD

Imagen 1. Representacin de las partes de mOway
3.1 Procesador

Los mOways estn gobernados por un microcontrolador PIC18F86J50
PIC18F86J50 (versin 2.0.1) o PIC18F87J50 (versin 2.0.2) del fabricante Microchip
Technology que trabaja a 4Mhz. En este microcontrolador es donde descargaremos el
programa desarrollado en el PC. De sus puertos de entrada/salida cuelgan todos los
perifricos distribuidos por el robot. Algunos de ellos necesitan de una entrada o salida
digital, otros de una analgica y otros en cambio se controlan a travs de uno de los
buses de comunicacin I2C/SPI.

Tabla 1. Conexiones PIC-sensores
Pin PIC I/O Sensor
PORTA
RA0 I Luz
RA1 I Receptor central infrarrojo izquierdo
RA2 I Receptor sensor lnea derecho
RA3 I Receptor lateral infrarrojo izquierdo
RA5 I Receptor sensor lnea izquierdo
PORTB
RB1 I Interrupcin 1 del acelermetro



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 9 de 167



www.moway-robot.com
RB2 I Interrupcin 2 del acelermetro
RB3 O Altavoz
RB5 O LED superior rojo
RB6 O LED superior verde
PORTC
RC7 O LED frontal
PORTD
RD1 O Transmisor infrarrojo de lnea
RD4 I Seal SDO para la comunicacin SPI del acelermetro
RD5 O Seal SDI para la comunicacin SPI del acelermetro
RD6 O Seal de reloj para la comunicacin SPI del acelermetro
RD7 I Chip Select para la comunicacin SPI del acelermetro
PORTE
RE5 O LED de freno
PORTF
RF5 I Receptor lateral infrarrojo derecho
RF6 I Receptor central infrarrojo derecho
PORTH
RH5 I Sensor de temperatura
RH6 I Medidor de batera
RH7 I Micrfono
PORTJ
RJ6 O Transmisor infrarrojo
RJ7 I/O Pad libre

3.2 Sistema motriz

Los mOways disponen de un grupo servo-motor doble para poder desplazarse.
Consta de una parte electrnica y otra mecnica. La parte electrnica se encarga
principalmente de controlar la velocidad de los motores y la parte mecnica permite el
desplazamiento con una potencia suficiente para que mOway se mueva en diferentes
entornos.

Sistema Motriz
PIC16F687
LINE_TX LINE_RX_R
LINE_TX LINE_RX_R
PUENTE H
M
O
T
O
R
M
O
T
O
R
Engrane
Encoder
Engrane
Encoder

Imagen 2. Sistema motriz: electrnica y mecnica



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 10 de 167



www.moway-robot.com
El grupo servo-motor tiene diversas funcionalidades:

1. Control de velocidad: Controla la velocidad de cada motor por separado.
2. Control de tiempo: Controla el tiempo en cada comando con una precisin de
100ms.
3. Control de distancia recorrida: Controla la distancia recorrida en cada
comando con una precisin de 1mm.
4. Cuentakilmetros general: Cuenta la distancia recorrida desde el comienzo de
los comandos.
5. Control de ngulo: Control de ngulo cuando se produce la rotacin de
mOway.

El microcontrolador manda el comando I2C al sistema motriz que controla los
motores y por lo tanto el microcontrolador principal queda libre para poder llevar a cabo
otras tareas.
El control de velocidad se realiza mediante control en lazo cerrado gracias a la
seal de los encoders (sensores para medir la velocidad y recorrido de los motores). La
rotacin de la rueda es monitorizada por medio de un encoder sobre uno de los
engranajes del sistema y un sensor infrarrojo. El microcontrolador analiza esta seal y
acta sobre los motores. De esta manera, mOway puede controlar su velocidad y
distancia recorrida.

Sistema Motriz
Bloque mecnico Bloque electrnica
Puente H
Vcc=2.8V
Moway created by:
Iigo Sobradillo
Daniel del Rio
Javi Galvez
Juan Gil
Estibaliz Otero
Julen Gutierrez
PIC16F687
M
Vcc=2.8V
Moway created by:
Iigo Sobradillo
Daniel del Rio
Javi Galvez
Juan Gil
Estibaliz Otero
Julen Gutierrez
PWM
Seal encoder
Encoder
Imagen 3. Control de motores

Cuando desde el microcontrolador principal se quiere que el robot realice un
desplazamiento slo tenemos que mandar un comando de movimiento con sus
parmetros mediante I2C. Para ello se han diseado unas libreras en ensamblador y en
C con las que esta comunicacin queda simplificada por unas funciones que se encargan
de la comunicacin. El formato de las tramas se explica en el apartado de la librera de
motores.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 11 de 167



www.moway-robot.com
En la siguiente tabla podemos ver la conexin entre el microcontrolador principal
y el encargado de controlar los movimientos del robot.

Tabla 2. Conexiones Procesador-motores
Pin PIC I/O Sensor
PORTE
RE0 I2C Lnea Reloj del I2C
RE1 I2C Lnea datos del I2C
RE7 I Lnea indicadora de fin motor

3.3 Grupo de sensores e indicadores

Este grupo consta de diferentes sensores e indicadores conectados al
microprocesador de mOway con los que el robot interacta con el mundo exterior:

- Dos sensores de lnea.
- Cuatro sensores detectores de obstculos.
- Sensor de luz.
- Un conector de expansin.
- Cuatro tipos de LEDs.
- Sensor de temperatura.
- Speaker.
- Micrfono.
- Acelermetro.
- Nivel de batera.


PIC18f86j50
FRON
T_LED
IR
_
R
X
_
R
LINE_TX
LINE_RX_R
LIGHT_
SEN
E
X
P
A
N
S
I

N
IR
_
R
X
_
L
LINE_RX_L
LED_
GREEN
LED_
RED
IR
_R
X
_R
IR
_R
X
_L
LED_
BRAKE
LED_
BRAKE
ACELE
SPEAKER
MIC
TEMP
MEDIDOR
BATERA
FREE
PAD
Imagen 4. Grupo sensores e indicadores




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 12 de 167



www.moway-robot.com

Imagen 5. Vista superior placa electrnica mOway


Imagen 6. Vista inferior placa electrnica mOway

3.3.1 Sensor de lnea

Los sensores de lnea son dos optoacopladores de reflexin montados en la parte
inferior delantera del robot. Utilizan la reflexin de luz infrarroja para detectar el tono
del suelo en el punto en que se encuentra el robot.

Estos dos sensores estn conectados a dos de los puertos analgicos del
microcontrolador de manera que no slo podemos detectar contrastes fuertes en el
suelo, como lneas blancas sobre fondo negro, sino que es posible discernir entre
diferentes tonos.

El sensor CNY70 de Vishay, est compuesto por una estructura compacta donde la
fuente emisora de luz y el detector estn dispuestos en la misma direccin para poder
detectar mediante el uso de los rayos infrarrojos la luz reflejada en el suelo.
En las siguientes imgenes podemos ver los tres casos que se pueden dar:

- Superficie clara: La superficie blanca hace que toda la luz infrarroja
se refleje y por lo tanto a la salida del transistor en modo comn
obtenemos un voltaje bajo.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 13 de 167



www.moway-robot.com

Imagen 7. Sensor de lnea en superficie clara.

- Superficie de color: La superficie de color hace que parte de la luz
emitida se refleje obteniendo un voltaje intermedio en la entrada del
canal analgico del microcontrolador. De esta manera es fcil
identificar colores
1
.


Imagen 8. Sensor de lnea en superficie de color.


- Superficie oscura: La superficie oscura hace que se refleje muy
poca luz teniendo un voltaje alto a la salida del sensor.


Imagen 9. Sensor de lnea en superficie oscura.



1
Hay que tener en cuenta que debido a la tolerancia de los sensores CNY70, puede que en la
misma superficie los dos sensores den diferente valor para un mismo color.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 14 de 167



www.moway-robot.com
Tabla 3. Conexiones Sensores de lnea-PIC
Pin PIC I/O Sensor
PORTA
RA2 I Receptor sensor lnea derecho
RA5 I Receptor sensor lnea izquierdo
PORTD
RD1 O Trasmisor sensores de lnea izquierdo y derecho



Imagen 10. Ubicacin sensores de lnea

3.3.2 Sensores detectores de obstculos

Al igual que los sensores de lnea, los sensores detectores de obstculos utilizan
tambin la luz infrarroja para detectar objetos situados en la parte delantera de mOway.
El sensor est compuesto por dos fuentes de luz infrarroja (KPA3010-F3C de
Kingbright) y cuatro receptores colocados en ambos extremos delanteros de mOway.

La salida de los receptores PT100F0MP de Sharp est conectada a las entradas
analgicas del microcontrolador despus de ser filtrada y acondicionada, por lo que no
slo se detecta la presencia de algn objeto (modo digital) sino que tambin podemos
medir la distancia al mismo (modo analgico)
2
.

El funcionamiento del sensor es similar al sensor de lnea. El emisor de luz genera
un pulso de una duracin de 70 microsegundos que, en caso de existir un obstculo, se
refleja contra l y es captado por el receptor utilizando una etapa de filtrado y
amplificacin. Una vez procesada la seal electrnicamente, el microcontrolador puede
medirla como entrada digital o analgica.


2
Debido a tolerancias en el montaje de los componentes electrnicos, habr diferencias entre los
sensores en la deteccin de objetos a una misma distancia.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 15 de 167



www.moway-robot.com

Imagen 11. Sensor detector de obstculos

Tabla 4. Conexiones sensor antichoque-PIC
Pin PIC I/O Sensor
PORTA
RA1 I Receptor central infrarrojo derecho
RA3 I Receptor lateral infrarrojo izquierdo
PORTF
RF5 I Receptor lateral infrarrojo derecho
RF6 I Receptor central infrarrojo izquierdo
PORTJ
RJ7 O Transmisor infrarrojo



Imagen 12. Posicin de los sensores de obstculo

3.3.3 Sensor de luz

Este sensor permite a mOway conocer la intensidad de luz que entra por una
pequea abertura con forma de media luna en la parte superior del chasis. Al estar
orientada hacia delante permite conocer dnde est situada la fuente de luz y actuar en
consecuencia.
La salida del sensor APDS-9002 de Avago Technologies est conectada a un
puerto analgico del microcontrolador de manera que con una simple lectura del sensor
podemos saber el nivel de intensidad de luz y si ste ha aumentado o disminuido con
respecto a la ltima lectura. Este sensor funciona de una manera similar a los sensores
basados en LDR (Light Dependant Resistors)
3
.

Tabla 5. Conexin PIC-sensor de luz
Pin PIC I/O Sensor
PORTA
RA0 I Luz

3
Es fundamental apagar el LED bicolor en el momento que se desee hacer una lectura de la
intensidad de luz.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 16 de 167



www.moway-robot.com



Imagen 13. Apertura sensor de luz

3.3.4 Conector de expansin

Este conector permite la conexin de mOway con mdulos comerciales o con
circuitos electrnicos que el usuario desee.
La primera expansin disponible es el mdulo de RF mOway que permite la
comunicacin de mOway con otros de su especie y con el PC. Este mdulo permite
hacer aplicaciones colaborativas complejas sin tener que preocuparse de la gestin de la
comunicacin inalmbrica.


Tabla 6. Conexiones PIC-Conector de expansin
Pin Expa I/O PIC
Pin1 O Vcc 3.3v
Pin2 O GND
Pin3 I/O /PMD3/AN12/P3C
/C2INC
RH4
Pin4 I/O/PMA5/AN7/C2INB RF2
Pin5 I/O /SCK1/SCL1 RC3
Pin6 I/O /SDO1/C2OUT RC5
Pin7 I/O /SDI1/SDA1 RC4
Pin8 I/O/INT RB0



Imagen 14. Robots con mdulo de RF en el conector de expansin



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 17 de 167



www.moway-robot.com
3.3.5 Sensor de temperatura

mOway lleva instalado en la parte delantera (cerca de los sensores de obstculo)
como medidor de temperatura un termistor NTC de Murata, que es un semiconductor
cuya resistencia elctrica variable decrece a medida que la temperatura aumenta.

El termistor est conectado a una entrada analgica del microcontrolador de forma
que con una simple lectura del ADC podemos conocer la temperatura que hay y si ha
aumentado o disminuido con respecto a la ltima lectura
4
.

Tabla 7. Conexin PIC-sensor de temperatura
Pin PIC I/O Sensor
PORTH
RH5 I Sensor de temperatura
3.3.6 Speaker

El altavoz CMT-1102 de CUI INC conectado al microcontrolador del robot, es
capaz de reproducir tonos desde 250 Hz hasta 5,6 kHz en intervalos pares de 100 ms.
Se trata de un altavoz piezoelctrico. En estos altavoces el motor es un material
piezoelctrico, que al recibir una diferencia de tensin entre sus superficies metalizadas
experimenta alargamientos y compresiones.

Tabla 8. Conexin PIC-speaker
Pin PIC I/O Sensor
PORTB
RB3 O Altavoz

3.3.7 Micrfono

El micrfono CMC-5042PF-AC de CUI INC permite al robot detectar sonidos
desde 100 Hz hasta 20 KHZ.

La salida del micrfono est conectado a una entrada analgica del
microcontrolador de forma que no slo es capaz de detectar si hay sonido o no (modo
digital), sino que con una simple lectura del ADC, es capaz de detectar la intensidad con
la que est llegando ese sonido (modo analgico).

Tabla 9. Conexin PIC-Micrfono
Pin PIC I/O Sensor
PORTH
RH7 I Micrfono

4
La temperatura indicada por este sensor se corresponde al interior del robot que puede diferir en
unos 5C con la temperatura exterior.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 18 de 167



www.moway-robot.com
3.3.8 Acelermetro

Un acelermetro es un dispositivo que mide la aceleracin y las fuerzas inducidas
por la gravedad: el movimiento y el giro. Midiendo las coordenadas X, Y, Z, el
acelermetro MMA7455L de Freescale Semiconductor permite conocer si mOway est
en posicin correcta, invertido o ladeado. Adems, permite conocer si el robot se ha
golpeado o cado.


Tabla 10. Conexiones PIC-Acelermetro
Pin Acce I/O PIC
Pin7 I RD7
Pin8 I RB1
Pin9 I RB2
Pin12 I RD4
Pin13 O RD5
Pin14 O RD6

3.3.9 Nivel de batera

Para la alimentacin del robot, se dispone de una clula de LiPo recargable. Para
un correcto funcionamiento del microcontrolador, la batera va conectada a una de sus
entradas analgicas a travs de un adaptador de seal. De esa forma, con una lectura del
ADC podemos determinar el nivel de batera restante.


Tabla 11. Conexin PIC-Medidor de batera
Pin PIC I/O Sensor
PORTH
RH6 I Medidor de batera

3.3.10 LED frontal

El led frontal es un LED blanco que est situado en la parte delantera del robot. El
LED LW A6SG de OSRAM est conectado a una salida digital del microcontrolador.


Tabla 12. Conexin PIC- Led frontal
Pin PIC I/O Sensor
PORTC
RC7 O LED frontal





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 19 de 167



www.moway-robot.com
3.3.11 LED superior bicolor

Este indicador doble comparte la misma apertura en la parte superior del robot que
el sensor de luz. Estn conectados a dos salidas digitales del microcontrolador. Cabe
destacar que al compartir la misma apertura que el sensor de luz
5
.

Tabla 13. Conexin PIC-Led superior
Pin PIC I/O Sensor
PORTA
RA4 O LED superior rojo
PORTB
RB6 O LED superior verde


Imagen 15. Robot con LED frontal blanco y superior rojo encendidos

3.3.12 LED de freno

El LED de freno es un indicador que est conectado a una salida digital del
microcontrolador y est situado en la parte trasera del robot tras el filtro rojo.


Tabla 14. Conexin PIC- Led de freno
Pin PIC I/O Sensor
PORTE
RE5 O LED de freno


5
Es fundamental apagar el LED bicolor en el momento que se desee hacer una lectura de la
intensidad de luz.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 20 de 167



www.moway-robot.com

Imagen 16. Posicin LED de freno en rojo. LED verde de encendido no controlable

3.3.13 Pad libre

El PCB de mOway tiene un Pad, accesible slo abriendo el robot, situado en la
parte trasera del PCB al lado de los LED de freno para que el usuario pueda conectar
sus circuitos electrnicos
6
.

Tabla 15. Conexin PIC-pad libre
Pin PIC I/O Sensor
PORTJ
RJ7 I/O Pad libre
3.4 Sistema de alimentacin

La batera empleada en el robot mOway es de Litio Polmero recargable y se
encuentra en su interior.

La recarga de la batera se realiza por el puerto USB de cualquier ordenador
conectado directamente al puerto MINI-USB-B del propio robot. No es necesario
esperar a que la batera est completamente descargada para poder enchufarla, puede
hacerse en cualquier momento puesto que este tipo de bateras no tienen efecto
memoria. Su pequeo tamao, ligereza y flexibilidad hacen de estas bateras una
perfecta fuente de energa para mOway.

La duracin media de la batera es de 1h y 30 minutos aunque depende en gran
medida de los sensores activos y del tiempo de utilizacin de los motores. De todas
formas, gracias a la funcin nivel de batera, se puede saber la cantidad de carga que
tiene el robot en cada momento. El tiempo de carga aproximado es de 2h. El porcentaje
de carga est claramente indicado en la aplicacin MowayWorld.

El sistema de alimentacin controla dos indicadores luminosos situados en la
parte trasera del robot
7
. El LED verde indica que el robot est encendido y el LED rojo
indica que el robot est cargando las bateras al encontrarse conectado al PC.

6
Slo para usuarios avanzados
7
Estos LEDs no pueden ser controlados por el usuario.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 21 de 167



www.moway-robot.com
Cada vez que se conecte el robot al PC se encender el indicador de encendido
(para que la opcin de grabacin quede habilitada) y el LED rojo si la batera no est
completamente cargada. Cuando esto se produzca el LED rojo se apagar
8
.




Imagen 17. Indicadores encendido (verde) y cargando (rojo)

3.5 Mdulo RF y RFUSB

Estos mdulos de radiofrecuencia permiten comunicar al robot con otro mOway o
con el PC a travs del RFUSB
9
.

Imagen 18. Mdulo RF

Estos mdulos se conectan a travs del conector de expansin y son fcilmente
manejables mediante MowayWorld.

8
En el proceso de carga puede que el LED rojo se apague cuando la batera est completamente
cargada y al de un tiempo se encienda otra vez. Esto es debido a que el robot sigue encendido y la batera
pierde carga al estar el cargador apagado.
9
Disponible segn pack



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 22 de 167



www.moway-robot.com

Imagen 19. RFUSB

El mdulo de comunicacin por radiofrecuencia BZI-RF2GH4 est basado en el
transceptor nRF24L01 fabricado por Nordic Semiconductors. En este circuito
integrado se ha incorporado toda la lgica necesaria para establecer una comunicacin
inalmbrica bidireccional con acuse de recibo. La comunicacin con el
microcontrolador se realiza a travs de un bus SPI.
Las principales caractersticas del mdulo BZI-RF2GH4 son:
- Bajo consumo.
- Frecuencia de trabajo de 2.4GHz,
- Potencia de emisin entre -18 y 0 dBm,
- Velocidad de transmisin entre 1 y 2 Mbps,
- 128 canales de transmisin seleccionables por el bus SPI,

El mdulo BZI-RF2GH4 incorpora, adems del CI nRF24L01, toda la
electrnica anexa para su correcto funcionamiento y una antena microstrip en la misma
placa con la red de adaptacin de impedancias. De esta manera el usuario se
despreocupa por completo del hardware necesario para implementar la parte de radio de
su aplicacin.
Como interfaz dispone de cuatro pines accesibles para el bus SPI, dos pines ms
para el control del mdulo y otros dos para la alimentacin.
Con el objetivo de facilitar el manejo del mdulo se han desarrollado unas
libreras que simplifican y acortan el tiempo de desarrollo de cualquier aplicacin
inalmbrica con estos mdulos.
3.5.1 Especificaciones tcnicas

Tabla 16. Parmetros mximos
Parmetro Min Max Unidad
Vdd -0.3 3.6 V
Vss 0 V
Tensin de entrada datos -0.3 5.25 V



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 23 de 167



www.moway-robot.com
Tensin de salida datos Vss-Vdd Vss-Vdd V
Potencia disipada 60 mW
Temperatura de operacin -40 +85 C
Temperatura de almacenaje -40 +125 C



Tabla 17. Parmetros principales del mdulo BZI-RF2GH4
Parmetro Valor Unidad
Tensin mnima de alimentacin 1.9 V
Tensin mxima de alimentacin 3.6 V
Potencia mxima de salida 0 dBm
Velocidad mxima de transmisin 2000 Kbps
Corriente en modo transmisin @ 0dbm potencia de salida 11.3 mA
Corriente en modo recepcin @ 2000kbps 12.3 mA
Corriente en modo Power Down 900 nA
Frecuencia mxima del bus SPI 8 Mhz
Rango de temperatura -40 a +85 C



Tabla 18. Pinout del mdulo BZI-RF2GH4
Pines Descripcin
Vcc Tensin de alimentacin del mdulo
Vss GND
CE Chip Enable
CSN Chip Select del SPI (Negado)
SCK Reloj del bus SPI
SDI Entrada de datos al mdulo RF del bus SPI (MOSI)
SDO Salida de datos del mdulo RF del bus SPI (MISO)
IRQ Salida interrupcin (negado)





Imagen 20. Disposicin de componentes en la placa




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 24 de 167



www.moway-robot.com
3.6 Mdulo de cmara

El Mdulo de Cmara de mOway
10
permite mostrar en el ordenador lo que el
robot est viendo en cada momento. La cmara enva las imgenes por
radiofrecuencia al receptor de vdeo mOway Camera Board
11
.

Imagen 21. Mdulo de cmara

El Mdulo de Cmara se inserta en el conector de expansin de mOway. Su
funcionamiento se controla mediante la programacin del robot. Incorpora un conector
en la parte posterior del mdulo para conectar otros dispositivos, como el mdulo RF o
circuitera diseada por el usuario en el Kit de Expansin. El conector posterior tiene el
mismo patillaje que el conector de expansin de mOway.

El control de la cmara se realiza por medio del dispositivo MCP23S08 de
Microchip. Consiste en un puerto de entradas y salidas configurables, manejado va SPI.
Las funciones bsicas implementadas son las siguientes:
- Encendido: cuando la cmara est encendida, el LED del Mdulo de
Cmara se encender. En este estado, la cmara transmitir las imgenes
por radiofrecuencia al receptor de vdeo.
- Apagado: cuando la cmara est apagada, el LED del Mdulo de Cmara
permanecer apagado. En este estado, la transmisin por radiofrecuencia
se desactivar
- Cambio de canal: Cada vez que se realiza un cambio de canal de la
cmara, el LED del Mdulo de Cmara parpadear brevemente.
Si existen otras transmisiones por radiofrecuencia (redes wifi, por ejemplo), la
imagen recibida en el ordenador podra aparecer con interferencias. En estos casos, el
cambio de canal podra mejorar la calidad de la imagen. Para poder mostrar las
imgenes de la cmara en el ordenador, el canal seleccionado en el programa debe ser el
mismo que el canal seleccionado en el receptor de vdeo a travs del conmutador.

10
Disponible segn pack
11
Disponible segn pack



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 25 de 167



www.moway-robot.com
Dichos canales van del 1 al 4.

Como interfaz dispone de cuatro pines accesibles para el bus SPI, dos pines ms
para el control del mdulo y otros dos para la alimentacin. Con el objetivo de facilitar
el manejo del mdulo se han desarrollado una librera para el uso del sistema de visin.
NOTA: Debido a que tanto el mdulo de RF como la cmara emiten en el mismo
rango de frecuencias, si se utiliza ambos mdulos simultneamente, el alcance de RF
puede verse reducido.

3.6.1 Especificaciones tcnicas
Tabla 19. Parmetros principales del Mdulo de Cmara.
Parmetro Valor Unidad
Tensin mnima de alimentacin 1.9 V
Tensin mxima de alimentacin 3.6 V
Corriente en modo Power Down 1 uA
Frecuencia mxima del bus SPI 10 Mhz
Rango de temperatura -40 a +85 C
Tecnologa CMOS -

Tabla 20. Parmetros mximos
Parmetro Min Max Unidad
Vdd -0.3 5.5 V
Vss 0 V
Intensidad 125 mA
Potencia disipada 700 mW
Temperatura de operacin -40 +85 C
Temperatura de almacenaje -40 +125 C


Tabla 21. Patillaje del Mdulo de Cmara y del conector posterior
Pines Descripcin
Vcc Tensin de alimentacin del mdulo
Vss GND
CE Chip Enable
CS Chip Select del SPI
SCK Reloj del bus SPI
SDI Entrada de datos SPI (MOSI)
SDO Salida de datos SPI (MISO)
IRQ Interrupcin SPI




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 26 de 167



www.moway-robot.com

Imagen 22. Mdulo de cmara

3.7 mOway Camera Board

mOway Camera Board es el receptor de vdeo, encargado de mostrar en el
ordenador las imgenes de la cmara de mOway. Este dispositivo recibe las imgenes
enviadas por la cmara a travs de radiofrecuencia y las enva al ordenador por USB.



Imagen 23. mOway Camera Board

Consta de un selector para elegir los diferentes canales de comunicacin RF entre
la cmara y el receptor (canales de 1 a 4). El canal del receptor mOway Camera Board
debe ser el mismo que el definido en el programa grabado en el mOway al activar la
cmara.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 27 de 167



www.moway-robot.com


Imagen 24. Selector de canales

El receptor de vdeo se conecta al ordenador a travs de una conexin USB, por
medio del cable incluido en el pack. La primera vez que se conecta el receptor mOway
Camera Board al ordenador, es posible que aparezca un mensaje para instalar los
drivers de la misma. En ese caso, indicaremos que instale el software automticamente.

NOTA: Durante el funcionamiento del receptor de vdeo, su receptor RF se
calienta, por lo que la carcasa puede calentarse tambin. Este comportamiento es
normal.

3.7.1 Especificaciones tcnicas
- Interfaz USB 2.0
- Decodificador multiestndar
o PAL
o NTSC
o SECAM
o Filtro anti-aliasing



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 28 de 167



www.moway-robot.com
4. Primeros pasos
4.1 I nstalacin pack

Bien en el CD de instalacin del producto o en la pgina web de mOway:
(http://www.moway-robot.com), se podr encontrar el pack de instalacin que contiene
el software para mOway, las libreras para manejar el robot, los programas de prueba y
la documentacin.

Basta con seguir los pasos del instalador para tener todos los recursos de mOway:

- El manual de principiantes y usuario.
o En el manual de principiante aparece lo necesario para que el usuario
pueda empezar a utilizar el robot.
o El manual de usuario contiene una explicacin ms detallada del robot.

- El software MowayWorld.
o Es el software donde se puede controlar todos los aspectos del robot:
programacin, control de carga, control por radio control, control de
RFUSB
12
y grabacin proyectos escritos en C o en ensamblador.

- Proyectos de ejemplo en ensamblador, C y MowayWorld.
o Proyectos ejemplo para que el usuario puede empezar rpidamente el
aprendizaje.

- Driver para RFUSB
o Driver para instalar el RFUSB para comunicacin RF entre robot y PC.

- Driver para el receptor de vdeo mOway Camera Board
13

o Driver para visualizar en el PC las imgenes de la cmara
14
.

NOTA: Si durante la instalacin aparece un mensaje advertencia de seguridad,
instalar el driver de todos modos. El software de MowayWorld es seguro.



12
Disponible segn pack
13
Disponible segn pack
14
Disponible segn pack



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 29 de 167



www.moway-robot.com

Imagen 25. Men del CD

4.2 Grabacin del robot

La grabacin del robot se ejecuta siempre desde el programa MowayWorld. Esta
aplicacin puede grabar en el robot los proyectos de MowayWorld basados en
diagramas de flujo, proyectos en ensamblador (compilador MPLAB o gputils) y en C
(compilador C18).

Estos son los pasos para grabar el robot desde MowayWorld:

- Conectar robot mediante cable USB. No hace falta instalar ningn driver.
- Abrir MowayWorld.
- Apertura o creacin de proyecto en MowayWorld o importar un archivo
.hex de alguno de los proyectos en C o ensamblador.
- Clicar en el botn Programar mOway.
- Si el proyecto es correcto el robot ser programado.
- Desconectar y encender el robot.

4.3 I nstalacin RFUSB

RFUSB es una llave USB para realizar la comunicacin entre PC y robot.
Requiere de la instalacin de un driver que se proporciona con el pack.

- La primera vez que se conecta el RFUSB, el PC lo detectar como un
nuevo dispositivo y aparecer el Asistente para hardware nuevo
encontrado. Elegiremos la opcin No por el momento.
- En la siguiente ventana elegimos la opcin recomendada: Instalar
automticamente el software.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 30 de 167



www.moway-robot.com


Imagen 26. Asistente instalacin driver Windows XP

- Comenzar la instalacin.


Imagen 27. Instalacin driver Windows XP

- Finalmente el asistente indicar que el hardware est instalado.


Imagen 28. Driver instalador Windows XP


Una vez finalizada la instalacin la gestin de este dispositivo se realiza desde la
ventana RF de MowayWorld.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 31 de 167



www.moway-robot.com
4.4 I nstalacin drivers mOway Camera Board

Para visualizar las imgenes de la cmara de mOway es necesario conectar el
receptor de vdeo mOway Camera Board
15
a una conexin USB del ordenador.

Del mismo modo que el dispositivo RFUSB, el receptor de vdeo requiere de la
instalacin de un driver que se proporciona con el pack.

- La primera vez que se conecta el receptor de vdeo, el PC lo detectar
como un nuevo dispositivo y aparecer el Asistente para hardware
nuevo encontrado. Elegiremos la opcin No por el momento.

- En la siguiente ventana elegimos la opcin recomendada: Instalar
automticamente el software.

- Comenzar la instalacin.

- Finalmente el asistente indicar que el hardware est instalado.






15
Disponible segn pack



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 32 de 167



www.moway-robot.com
5. Programacin ensamblador

El MPLAB IDE de Microchip es el entorno de programacin ms utilizado para
los microcontroladores PIC (ya que Microchip tambin es el fabricante de dichos
microcontroladores). En principio el lenguaje que utiliza es el ensamblador, aunque se
le pueden aadir otros lenguajes. Gracias a l se puede compilar el cdigo fuente y
generar los ficheros hexadecimales (.HEX). Este compilador se puede descargar
gratuitamente desde la pgina web de Microchip.

En el pack de mOway encontrar libreras para el manejo de los sensores, motores
y mdulo RF escritas para ensamblador MPLAB.

En resumen:
- Muy interesante para aprender a programar en ensamblador (lenguaje de bajo
nivel).
- Recomendable si el programa a realizar va a ser largo (en cuanto a cdigo se
refiere).
- Imprescindible si el tiempo de respuesta es crtico.

Creacin de un proyecto

Para crear el primer proyecto utilizaremos el Project Wizard de MPLAB IDE que
permite crear proyectos rpidamente.



Imagen 29. Project Wizard



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 33 de 167



www.moway-robot.com
1. El primer paso consiste en elegir el PIC instalado en mOway: PIC18F86J50 o
PIC18F87J50.



Imagen 30. Seleccin del PIC


2. A continuacin se elige la herramienta de ensamblado: MPASM.



Imagen 31. Seleccin de herramienta




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 34 de 167



www.moway-robot.com
3. En el paso tres se debe indicar la ubicacin del proyecto a crear.



Imagen 32. Eleccin de carpeta

4. En el siguiente paso se aaden al proyecto las libreras de mOway que controlan
diferentes aspectos del robot. Esas libreras deben ser copiadas (manualmente o
indicndolo en el Wizard) en la carpeta del proyecto sino MPLAB utilizar las
libreras elegidas en la ubicacin elegida.



Imagen 33. Eleccin de libreras mOway



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 35 de 167



www.moway-robot.com
5. Siguiendo estos pasos el proyecto se crear, pero faltar todava la creacin del
fichero .ASM donde se inserta el cdigo fuente.



Imagen 34. Finalizacin Wizard

6. El siguiente paso es abrir el proyecto y crear un nuevo archivo (New File)
guardndolo en la misma carpeta del proyecto como Main.asm. ste ser nuestro
fichero fuente.



Imagen 35. Creacin de .ASM



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 36 de 167



www.moway-robot.com
7. Por ltimo se aade el fichero fuente al proyecto accediendo a Project/Add Files to
Project



Imagen 36. Proyecto con .ASM

5.1 Primer programa en ensamblador

Para hacer el primer programa es necesario haber creado un proyecto (captulo
anterior). Este primer programa bsico har que mOway evite los obstculos. El cdigo
utilizado ser el absoluto.

1. En primer lugar hay que aadir en el archivo Main.ASM del pic que tiene
mOway instalado: list p=18F86J50.
2. Tambin es necesario aadir la librera de este microcontrolador en la carpeta
del proyecto que encontrar en el directorio de instalacin de MPLAB o en los
programas de prueba del pack de mOway. Una vez copiada la librera en la
carpeta se debe incluir en el Main: #include "P18F86J50.INC".
3. El prximo paso es aadir los vectores de inicio (0x102A) y reset (0x1000),
incluir las libreras de mOway y aadir el END de fin de programa.
4. Se aade a continuacin una etiqueta INIT donde se inicia el programa y donde
se configurar el microcontrolador y una etiqueta MAIN que es un bucle infinito
donde se ejecutara el algoritmo principal.
5. A continuacin se llama a la funcin SEN_CONFIG encargada de configurar las
entradas y salidas del microcontrolador.
6. Se aade el parpadeo de uno de los leds.
7. Compilar el programa en cdigo absoluto y grabarlo en mOway a travs de
MowayWorld (Grabar fichero .hex) y comprobar que el LED verde parpadea.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 37 de 167



www.moway-robot.com


Imagen 37. Primer programa: configuracin y led



8. Para detectar obstculos se llama a la funcin SEN_OBS_DIG en el bucle
infinito que devolver en la variable SEN_OBS si tenemos obstculo o no en el
sensor indicado por la variable SEN_CHECK_OBS.
9. Si encuentra obstculo enciende el LED delanteros.
10. Probar el programa en mOway y comprobar que los LED se encienden cuando
se acerca un objeto a la parte delantera.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 38 de 167



www.moway-robot.com


Imagen 38. Primer programa: deteccin de obstculo



11. Aadimos movimiento al robot: comando recto indefinidamente hasta que
encuentra un obstculo.
12. Se aade la librera de motores en el main.asm.
13. Se llama a la funcin de configurar motores MOT_CONFIG.
14. Se llama a ir recto la primera vez.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 39 de 167



www.moway-robot.com


Imagen 39. Configuracin y primer comando recto


15. Cuando encuentra obstculo se manda un comando para que realice una rotacin
de 180 y enciende el LED frontal. El robot esperar hasta que el comando
termine y continuar en un movimiento recto.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 40 de 167



www.moway-robot.com


Imagen 40. Primer programa: movimiento con deteccin

Este programa est incluido en el pack de mOway como mOway_first_project_ASM.

5.2 Libreras
5.2.2 Librera sensores mOway ensamblador

Existen dos libreras en ensamblador que pueden ser incluidas en cualquier
proyecto de mOway que permiten al usuario controlar los sensores con gran facilidad.
Ambas son idnticas salvo el hecho de que una de ellas tiene la posibilidad de reubicar



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 41 de 167



www.moway-robot.com
tanto el cdigo como las variables (utilizando proyectos del MPLAB IDE).

Es importante saber que cada llamada a cualquier funcin de la librera utiliza un
nivel adicional de la pila de llamadas. Esto es, antes de llamar a una de estas funciones
debe de haber al menos tres niveles libres de la pila de llamadas para que no haya
errores.
5.2.2.1 Descripcin

La librera contiene una serie de funciones encargadas de leer los datos que
proporcionan los sensores del robot. Ellas son las encargadas de configurar los puertos
de entrada y salida adecuadamente, el ADC del microcontrolador y los indicadores
luminosos.
5.2.2.2 Variables

SEN_STATUS

Esta variable de slo lectura informa de la validez de los datos obtenidos por la
lectura de los sensores.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
Sin uso Sin uso Sin uso Sin uso Sin uso Sin uso DWRONG SENOK
- - - - - -

Bit 7-2: Sin uso

Bit 1: DWRONG: Muestra si los datos de entrada son correcto.
1 = Datos incorrectos.
0 = Datos correctos.

Bit 0: SENOK: Muestra si el sensor se ha ledo correctamente.
1 = Lectura correcta. Datos de salida vlidos.
0 = Lectura incorrecta. Datos de salida invlidos.


SEN_ACCE_TAP

Esta variable de lectura que indica si la funcin SEN_CHECK_ACCE_TAP ha
detectado toque o doble toque.
Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
Sin uso Sin uso Sin uso Sin uso Sin uso Sin uso TAP_TAP TAP
- - - - - -




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 42 de 167



www.moway-robot.com
Bit 7-2: Sin uso

Bit 1: TAP_TAP: Muestra si se han detectado dos toque.
1 = Doble Toque detectado.
0 = Doble Toque no detectado.

Bit 0: TAP: Muestra si se ha detectado un toque.
1 = Toque detectado.
0 = Toque no detectado.

SEN_CHECK_OBS

Esta variable de escritura que indica que sensor deben de leer las funciones que
controlan el sensor de obstculos. En la siguiente tabla se muestra los valores que puede
coger esta variable.
Tabla 22. Valores admitidos para SEN_CHECK_OBS
Define Valor
OBS_CENTER_L 0
OBS_SIDE_L 1
OBS_CENTER_R 2
OBS_SIDE_R 3

SEN_CHECK_ACCE

Esta variable de escritura que indica que eje debe de leer la funciones
SEN_ACCE_XYZ_READ. En la siguiente tabla se muestra los valores que puede coger
esta variable.
Tabla 23. Valores admitidos para SEN_CHECK_ACCE
Define Valor
ACCE_CHECK_X 0
ACCE_CHECK_Y 1
ACCE_CHECK_Z 2

SEN_CHECK_LINE

Esta variable de escritura que indica que sensor deben de leer las funciones que
controlan el sensor de lnea. En la siguiente tabla se muestra los valores que puede coger
esta variable.
Tabla 24. Valores admitidos para SEN_CHECK_LINE
Define Valor
LINE_L 0
LINE_R 1



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 43 de 167



www.moway-robot.com
SEN_SPEAKER_ON_OFF

Esta variable de escritura que indica que si el usuario quiere encender, apagar o
mantener durante un tiempo el speaker.
Tabla 25. Valores admitidos para SEN_SPEAKER_ON_OFF
Define Valor
SPEAKER_OFF 0
SPEAKER_ON 1
SPEAKER_TIME 2


SEN_LIGHT_P

En esta variable de lectura se guarda el porcentaje de la luz incidente en el
sensor de luz. Se actualiza cada vez que se llama a la funcin SEN_LIGHT.

SEN_BATTERY_P

En esta variable se guarda el porcentaje del nivel de batera que queda en el
robot. Se actualiza cada vez que se llama a la funcin SEN_BATTERY.

SEN_TEMPERATURE_C

En esta variable se guarda el valor en C de la temperatura que se ha captado. Se
actualiza cada vez que se llama a la funcin SEN_TEMPERATURE.

SEN_MIC

En esta variable se guarda el valor captado por el micrfono, siendo este dato
digital o analgico dependiendo de la funcin que se encarga de actualizarla:
SEN_MIC_DIG y SEN_MIC_ANALOG.

SEN_SPEAKER_FREQ

En esta variable se guarda el valor de la frecuencia, comprendida entre 250 Hz y
65KHz, con la que queremos crear el tono.


SEN_SPEAKER_TIME

En esta variable se guarda el tiempo que queremos que el altavoz emita el tono.
Este valor slo tiene validez si la variable SEN_SPEAKER_ON_OFF tiene valor de
SPEAKER_TIME (valor decimal: 2).






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 44 de 167



www.moway-robot.com
SEN_OBS

En esta variable se guarda el valor del sensor indicado por SEN_CHECK_OBS,
siendo este dato digital o analgico dependiendo de la funcin que se encarga de
actualizarla: SEN_OBS_DIG y SEN_OBS_ANALOG.

SEN_ACCE

En esta variable se guarda la posicin del eje indicado por SEN_CHECK_ACCE
del robot. Se actualiza cada vez que se llama a la funcin SEN_ACCE_XYZ_READ.

SEN_ACCE_TAP

En esta variable se guarda si el robot se ha chocado o le han dado uno o dos
toques. Se actualiza cada vez que se llama a la funcin SEN_ACCE_CHECK_TAP.

SEN_LINE

En esta variable se guarda el valor del sensor de lnea indicado en
SEN_CHECK_LINE, siendo este dato digital o analgico dependiendo de la funcin
que se encarga de actualizarla: SEN_LINE_DIG y SEN_LINE_ANALOG.


5.2.2.3 Funciones

En las libreras lib_sen_moway y lib_re_sen_moway existen una serie de
funciones que estn orientadas al control de los sensores y de los diodos LED de
mOway.

A continuacin se dar una breve descripcin de cada una de ellas:
Tabla 26. Resumen de funciones en ensamblador
Nombre Variable entrada Variable salida Descripcin
SEN_CONFIG
- - Configura para utilizar los
sensores.
SEN_LIGHT
- SEN_LIGHT_P Lee el valor del sensor de
luz .
SEN_BATTERY
- SEN_BATTERY_P Devuelve el nivel de
batera.
SEN_TEMPERATURE
- SEN_TEMPERATURE_C Detecta la temperatura en
C.
SEN_MIC_ANALOG
- SEN_MIC Detecta la intensidad con
la que le llega el sonido
SEN_MIC_DIG
- SEN_MIC Detecta si le llega sonido
o no.
SEN_SPEAKER
SEN_SPEAKER_FREQ
SEN_SPEAKER_TIME
SEN_SPEAKER_ON_OFF
- Emite un tono de una
frecuencia comprendida
entre 250 Hz y 65 KHz,
con intervalos de 100 ms
SEN_OBS_DIG
SEN_CHECK_OBS SEN_OBS
SEN_STATUS
Detecta la presencia de
obstculos.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 45 de 167



www.moway-robot.com
SEN_OBS_ANALOG
SEN_CHECK_OBS SEN_OBS
SEN_STATUS
Detecta la presencia de
obstculos, y la distancia
a los mismos.
SEN_ACCE_XYZ_READ
SEN_CHECK_ACCE SEN_ACCE
SEN_STATUS
Indica la aceleracin
sufrida en los ejes x,y,z
del robot.
SEN_ACCE_CHECK_TAP
- SEN_ACCE_TAP
SEN_STATUS
Comprueba si el robot se
ha golpeado.
SEN_LINE_DIG
SEN_CHECK_LINE SEN_LINE
SEN_STATUS
Detecta zona oscura
(lnea negra).
SEN_LINE_ANALOG
SEN_CHECK_LINE SEN_LINE
SEN_STATUS
Detecta tonalidades en la
superficie.
LED_BRAKE_ON
- - Encendido del diodo LED
de freno.
LED_FRONT_ON
- - Encendido del diodo LED
frontal.
LED_TOP_RED_ON
- - Encendido del diodo LED
superior rojo.
LED_TOP_GREEN_ON
- - Encendido del diodo LED
superior verde.
LED_BRAKE _OFF
- - Apagado del diodo LED
de freno.
LED_FRONT_OFF
- - Apagado del diodo LED
frontal.
LED_TOP_RED_OFF
- - Apagado del diodo LED
superior rojo.
LED_TOP_GREEN_OFF
- - Apagado del diodo LED
superior verde.
LED_BRAKE _ON_OFF
- - Parpadeo del diodo LED
de freno.
LED_FRONT_ON_OFF
- - Parpadeo del diodo LED
frontal.
LED_TOP_RED_ON_OFF
- - Parpadeo del diodo LED
superior rojo.
LED_TOP_GREEN_ON_OFF
- - Parpadeo del diodo LED
superior verde.


SEN_CONFIG

Esta funcin configura las entradas y salidas para poder manejar los sensores e
inicializa las variables.

Tabla 27. Conexiones PIC-sensores
Pin PIC I/O Sensor
PORTA
RA0 I Luz
RA1 I Receptor central infrarrojo izquierdo
RA2 I Receptor sensor lnea derecho
RA3 I Receptor lateral infrarrojo izquierdo
RA5 I Receptor sensor lnea izquierdo
PORTB
RB1 I Interrupcin 1 del acelermetro
RB2 I Interrupcin 2 del acelermetro
RB3 O Altavoz
RB5 O LED superior rojo
RB6 O LED superior verde
PORTC
RC7 O LED frontal
PORTD



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 46 de 167



www.moway-robot.com
RD1 O Transmisor infrarrojo de lnea
RD4 I Seal SDO para la comunicacin SPI del acelermetro
RD5 O Seal SDI para la comunicacin SPI del acelermetro
RD6 O Seal de reloj para la comunicacin SPI del acelermetro
RD7 I Chip Select para la comunicacin SPI del acelermetro
PORTE
RE5 O LED de freno
PORTF
RF5 I Receptor lateral infrarrojo derecho
RF6 I Receptor central infrarrojo derecho
PORTH
RH5 I Sensor de temperatura
RH6 I Medidor de batera
RH7 I Micrfono
PORTJ
RJ6 O Transmisor infrarrojo
RJ7 I/O Pad libre


SEN_LIGHT

Variables de salida
SEN_LIGHT_P Porcentaje de la luz incidente.

La funcin SEN_LIGHT captura el valor analgico dependiente de la luz
incidente en el fototransistor. Para ello se deben seguir los siguientes pasos:

- Activar el ADC.
- Esperar el tiempo de adquisicin de datos (100us).
- Leer el valor analgico.
- Con el voltaje analgico medido se calcula el porcentaje de la luz incidente.
- Se copia el dato en la variable SEN_LIGHT_P.


SEN_BATTERY

Variables de salida
SEN_BATTERY_P Porcentaje del nivel de batera

La funcin SEN_BATTERY captura el valor analgico que proviene de la
batera
16
. Para ello se deben seguir los siguientes pasos:

- Activar el ADC.
- Esperar el tiempo de adquisicin de datos (100us).
- Leer el valor analgico.
- Con el voltaje analgico medido se calcula el porcentaje del nivel de batera.

16
El porcentaje puede diferir del dato proporcionado por MowayWorld puesto que hay diferencias
en la lectura cuando la batera se est cargando o se est utilizando.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 47 de 167



www.moway-robot.com
- Se copia el dato en la variable SEN_BATTERY_P.


SEN_TEMPERATURE

Variables de salida
SEN_TEMPERATURE_C Temperatura en C

La funcin SEN_TEMPERATURE captura el valor analgico dependiente de la
temperatura que recoge el termistor
17
. Para ello se deben seguir los siguientes pasos:

- Activar el ADC.
- Esperar el tiempo de adquisicin de datos (100us).
- Leer el valor analgico.
- Con el voltaje analgico medido se calcula la temperatura en C.
- Se copia el dato en la variable SEN_TEMPERATURE_C.


SEN_MIC_ANALOG

Variables de salida
SEN_MIC Intensidad con la que llega el sonido

La funcin SEN_MIC_ANALOG captura el valor analgico dependiente de la
intensidad del sonido procedente del micrfono. Para ello se deben seguir los siguientes
pasos:

- Activar el ADC.
- Esperar el tiempo de adquisicin de datos (100us).
- Leer el valor analgico.
- Con el voltaje analgico medido se calcula la intensidad de la seal de audio.
- Se copia el dato en la variable SEN_MIC.


SEN_MIC_DIG

Variables de salida
SEN_MIC Indica si existe o no sonido

La funcin SEN_MIC indica si hay sonido o no. Para ello se deben seguir los
siguientes pasos:

- Se comprueba si se presenta alguna seal en el micrfono.

17
La temperatura indicada por este sensor difiere de la de fuera en unos 5C porque recoge la
temperatura interna del robot.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 48 de 167



www.moway-robot.com
- Se copia el valor del receptor digital en la variable de salida SEN_MIC.


SEN_SPEAKER

Variables de entrada
SEN_SPEAKER_FREQ Frecuencia generadora del tono.
SEN_SPEAKER_TIME Tiempo que dura el tono.
SEN_SPEAKER_ON_OFF Encender, apagar o encender un tiempo determinado

La funcin SEN_SPEAKER genera un tono de una frecuencia comprendida entre
250 Hz y 65 KHz. Dependiendo del valor de SEN_SPEAKER_ON_OFF esta funcin
puede encender el speaker con una frecuencia determinada, apagarlo o encenderlo
durante un intervalo de tiempo definido por SEN_SPEAKER_TIME (intervalos de
100ms). Para ello se deben seguir los siguientes pasos:

- Activar el generador de PWM con un duty cycle de 50% y frecuencia indicada.
- Si la funcin es de tiempo, esperar el tiempo indicado por
SEN_SPEAKER_TIME.
- Si la funcin es de tiempo apagar el mdulo de PWM del microcontrolador.

Tabla 28. Valores admitidos para SEN_SPEAKER_ON_OFF
Define Valor
SPEAKER_OFF 0
SPEAKER_ON 1
SPEAKER_TIME 2

Tabla 29. Equivalencia valor SEN_SPEAKER_FREQ y frecuencia aplicada al zumbador
SEN_SPEAKER_FREQ
Frecuencia aplicada a zumbador
Hz
0 0,0000000
10 5681,8181818
20 2976,1904762
30 2016,1290323
40 1524,3902439
50 1225,4901961
60 1024,5901639
70 880,2816901
80 771,6049383
90 686,8131868
100 618,8118812
110 563,0630631
120 516,5289256
130 477,0992366
140 443,2624113



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 49 de 167



www.moway-robot.com
150 413,9072848
160 388,1987578
170 365,4970760
180 345,3038674
190 327,2251309
200 310,9452736
210 296,2085308
220 282,8054299
230 270,5627706
240 259,3360996
250 249,0039841
255 244,1406250


SEN_OBS_DIG

Variables de entrada
SEN_CHECK_OBS Indica que sensor se quiere leer
Variables de salida
SEN_OBS Indica si existe o no objeto en el sensor deseado
Salida
SEN_STATUS: SENOK
DWRONG


Esta funcin indica si un obstculo en la parte del sensor que se le indique a travs
de la variable SEN_CHECK_OBS. Para ello se han de seguir los siguientes pasos:

- Se comprueba que sensor hay que mirar. Si no se corresponde con ningn valor
vlido de la variable se activa el flag DWRONG y la funcin termina.
- Antes de mandar el pulso de luz infrarroja asegurarse de que no exista ninguna
fuente de ruido que interfiera.
- Se manda pulso de luz infrarroja para la deteccin del obstculo. Si hay algn
obstculo la luz rebotar y esta seal ser captada por el receptor infrarrojo.
- Se comprueba si se presenta alguna seal en los cuatro receptores IR en modo
digital.
- Se copia el valor del receptor digital en la variable de salida.
- Se desactiva el LED infrarrojo.
- Se comprueba que no haya ninguna seal interferente.
- Si no se presenta ninguna seal interferente y el proceso se ejecuta sin
problemas el flag SENOK es activado.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 50 de 167



www.moway-robot.com
Tabla 30. Valores de la variable de entrada SEN_CHECK_OBS
Define Valor
OBS_CENTER_L 0
OBS_SIDE_L 1
OBS_CENTER_R 2
OBS_SIDE_R 3


SEN_OBS_ANALOG

Variables de entrada
SEN_CHECK_OBS Indica que sensor se quiere leer
Variables de salida
SEN_OBS Indica el valor analgico del sensor
Salida
SEN_STATUS: SENOK
DWRONG


Esta funcin indica si un obstculo en la parte del sensor que se le indique a travs
de la variable SEN_CHECK_OBS. Para ello se han de seguir los siguientes pasos:

- Se comprueba que sensor hay que mirar. Si no se corresponde con ningn valor
vlido de la variable se activa el flag DWRONG y la funcin termina.
- Antes de mandar el pulso de luz infrarroja asegurarse de que no exista ninguna
fuente de ruido que interfiera.
- Se manda pulso de luz infrarroja para la deteccin del obstculo.
- Se activa el ADC.
- Se comprueba si se presenta alguna seal en los cuatro receptores IR.
- Se copia el valor del receptor analgico en las variables de salida. Cuanto mayor
sea este valor ms cerca se encontrar el obstculo.
- Se desactiva LED infrarrojo.
- Se comprueba que no haya ninguna seal interferente.
- Si no se presenta seal interferente y el proceso se ejecuta sin problemas el flag
SENOK es activado.


Tabla 31. Valores de la variable de entrada SEN_CHECK_OBS
Define Valor
OBS_CENTER_L 0
OBS_SIDE_L 1
OBS_CENTER_R 2
OBS_SIDE_R 3







Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 51 de 167



www.moway-robot.com
SEN_ACCE_XYZ_READ

Variables de entrada
SEN_CHECK_ACCE Indica que eje se quiere leer
Variables de salida
SEN_ACCE Aceleracin que sufre el robot en el eje indicado
Salida
SEN_STATUS: SENOK
DWRONG

La funcin SEN_ACCE_XYZ_READ devuelve la aceleracin sufrida por el robot
en los 3 ejes. El sensor presenta una resolucin de 0.0156G/bit. Esto es, 0 se
corresponde a un valor de -2G y 255 a un valor de 2G.



Imagen 41. Posicin de los ejes del robot

- El microcontrolador se comunica con el sensor a travs de la interface SPI.
- Se manda el comando para poner el sensor en modo medida.
- Se espera a que el sensor realice la medida
- Le pregunta el valor del eje requerido por el usuario
- El acelermetro se pasa a modo deteccin de golpes.


Tabla 32. Valores de la variable de entrada SEN_CHECK_ACCE
Define Valor
ACCE_CHECK_X 0
ACCE_CHECK_Y 1
ACCE_CHECK_Z 2


SEN_ACCE_CHECK_TAP

Variables de salida
SEN_ACCE_TAP Indica si se ha detectado uno o dos toques
Salida
SEN_STATUS: SENOK
DWRONG

El acelermetro tiene la opcin de detectar golpes o doble golpes.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 52 de 167



www.moway-robot.com
- El microcontrolador se comunica con el sensor a travs de la interface SPI.
- Le pregunta si ha habido interrupcin por golpe.
- Se modifica el valor de SEN_ACCE_TAP.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
Sin uso Sin uso Sin uso Sin uso Sin uso Sin uso TAP_TAP TAP
- - - - - -

- Bit 7-2: Sin uso
- Bit 1: TAP_TAP: Muestra si se han detectado dos toque.
1 = Doble Toque detectado.
0 = Doble Toque no detectado.
- Bit 0: TAP: Muestra si se ha detectado un toque.
1 = Toque detectado.
0 = Toque no detectado.


SEN_LINE_DIG

Variables de entrada
SEN_CHECK_LINE Indica que sensor se quiere leer
Variables de salida
SEN_LINE Indica el valor digital del sensor
Salida
SEN_STATUS: SENOK
DWRONG


La funcin SEN_LINE_DIG indica si los sensores estn sobre una superficie
oscura o no. Para ello se deben seguir los siguientes pasos:

- Se comprueba que sensor hay que mirar. Si no se corresponde con ningn valor
vlido de la variable se activa el flag DWRONG y la funcin termina.
- Se manda pulso de luz infrarroja para la deteccin de la lnea. Si se detecta, la
luz rebotar y esta seal ser captada por el receptor infrarrojo.
- Esperar el tiempo de adquisicin de datos (900us).
- Se lee el sensor requerido.
- Se mueve el dato a la variable SEN_LINE. Si la superficie es oscura (la luz no
se refleja) obtendremos un 1 en la variable.


Tabla 33. Valores de la variable de entrada SEN_CHECK_LINE
Define Valor
LINE_L 0
LINE_R 1




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 53 de 167



www.moway-robot.com
SEN_LINE_ANALOG

Variables de entrada
SEN_CHECK_LINE Indica que sensor se quiere leer
Variables de salida
SEN_LINE Indica el valor analgico del sensor
Salida
SEN_STATUS: SENOK
DWRONG

La funcin SEN_LINE_ANALOG indica la luz que se ha reflejado en los
optoacopladores
18
. Para ello se deben seguir los siguientes pasos:

- Se comprueba que sensor hay que mirar. Si no se corresponde con ningn valor
vlido de la variable se activa el flag DWRONG y la funcin termina.
- Se manda pulso de luz infrarroja para la deteccin de la lnea. Si se detecta, la
luz rebotar y esta seal ser captada por el receptor infrarrojo.
- Esperar el tiempo de adquisicin de datos (900us).
- Se activa el ADC.
- Se lee el sensor requerido.
- Mover ese dato a la variable SEN_LINE. Cuanto ms alto sea este valor ms
oscura ser la superficie.

Tabla 34. Valores de la variable de entrada SEN_CHECK_LINE
Define Valor
LINE_L 0
LINE_R 1


LED_BRAKE_ON

Enciende el diodo LED de freno.

LED_FRONT_ON

Enciende el diodo LED frontal.

LED_TOP_RED_ON

Enciende el diodo LED superior rojo.

LED_TOP_GREEN_ON

Enciende el diodo LED superior verde.

18
El valor del sensor analgico variar de un sensor a otro debido a la tolerancia del componente
electrnico.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 54 de 167



www.moway-robot.com
LED_BRAKE _OFF

Apaga el diodo LED de freno.

LED_FRONT_OFF

Apaga el diodo LED frontal.

LED_TOP_RED_OFF

Apaga el diodo LED superior rojo.

LED_TOP_GREEN_OFF

Apaga el diodo LED superior verde.

LED_BRAKE_ON_OFF

Parpadeo del diodo LED de ruptura.

LED_FRONT_ON_OFF

Parpadeo del diodo LED frontal.

LED_TOP_RED_ON_OFF

Parpadeo del diodo LED superior rojo.

LED_TOP_GREEN_ON_OFF

Parpadeo del diodo LED superior verde.


5.2.3 Librera motores mOway ensamblador

Existen dos libreras en ensamblador que pueden ser incluidas en cualquier
proyecto de mOway que permiten al usuario controlar el sistema motriz con gran
facilidad. Ambas son idnticas salvo el hecho de que una de ellas tiene la posibilidad de
reubicar tanto el cdigo como las variables (utilizando proyectos del MPLAB IDE).

Es importante saber que cada llamada a cualquier funcin de la librera utiliza tres
niveles adicionales de la pila de llamadas. Esto es, antes de llamar a una de estas
funciones debe de haber al menos cuatro niveles libres de la pila de llamadas para que
no haya errores.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 55 de 167



www.moway-robot.com
5.2.3.1 Descripcin

La librera contiene una serie de funciones encargadas de mandar comandos por
I2C al Sistema Motriz, que ser el encargado de controlar los motores dejando libre de
carga de trabajo al microcontrolador principal, pudiendo ste realizar otras tareas.

La comunicacin con el mdulo motor se realiza mediante el protocolo I2C. El
formato de las tramas I2C del Sistema Motriz se puede observar en las siguientes
figuras. Cada una de estas tramas tiene una duracin de 350us.

S
T
A
R
T
MOT_DIR
MOT_
COMAND
T
Y
P
E
R
L
MOT_VEL
S
E
N
T_DIST_ANG
S
T
O
P
_
W

Imagen 42. Formato de comandos: MOT_STR, MOT_CHA_VEL

S
T
A
R
T
MOT_
COMAND
T
Y
P
E
R
L
MOT_VEL
S
E
N
RAD/
CENWHEEL
S
T
O
P
T_DIST_ANG MOT_DIR
_
W
Imagen 43. Formato de comandos: MOT_CUR, MOT_ROT

S
T
A
R
T
S
T
O
P
COM_STOP/
RST_COM
MOT_DIR
_
W

Imagen 44. Formato de comandos: MOT_STOP, MOT_RST

S
T
A
R
T
S
T
O
P
MOT_STATUS_DATA_
0
MOT_DIR R
MOT_STATUS_DATA_
1

Imagen 45. Formato de comando: MOT_FDBCK


5.2.3.2 Variables

MOT_STATUS

Registro que indica el estado del comando.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
Sin uso Sin uso Sin uso Sin uso Sin uso Sin uso DMWRONG COMOK
- - - - - -



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 56 de 167



www.moway-robot.com

Bit 7-2: Sin uso

Bit 1: DMWRONG: Muestra si los datos son incorrectos.
1 = Datos incorrectos.
0 = Datos correctos.

Bit 0: COMOK: Muestra si el comando ha sido enviado correctamente por
I2C.
1 = Envo correcto.
0 = Envo incorrecto.

MOT_CON

Registro de control. En este registro se definen parmetros de los comandos.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
Sin uso Sin uso Sin uso Sin uso Sin uso COMTYPE RL FWDBACK
- - - - -

Bit 7-3: Sin uso

Bit 2: COMTYPE: Tipo de comando.
1 = Tiempo.
0 = Distancia o ngulo (en MOT_ROT).

Bit 1: RL: Derecha o Izquierda
1 = Derecha.
0 = Izquierda.

Bit 0: FWDBACK: Adelante o hacia atrs.
1 = Adelante.
0 = Atrs.

MOT_VEL
Velocidad deseada en el comando.

MOT_T_DIST_ANG
Segn el valor de COMTYPE y del comando, esta variable ser el tiempo,
distancia o el ngulo.

MOT_CENWHEEL
Rotacin sobre el centro o sobre una de las ruedas del robot.

MOT_RAD
Radio para el comando MOT_CUR.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 57 de 167



www.moway-robot.com

MOT_RST_COM
Tipo de reset que se desea.

MOT_STATUS_COM
Tipo de dato que se quiere leer del motor.

MOT_STATUS_DATA_0-1

En estas dos variables se almacena el valor del dato requerido por la funcin
MOT_FDBCK.



5.2.3.3 Funciones

En la librera lib_mot_moway y lib_re_mot_moway existen una serie de
funciones que estn orientadas al control del sistema de motores de mOway.

A continuacin se dar una breve descripcin de cada una de ellas.

Tabla 35. Resumen de funciones en ensamblador de lib_mot_moway
Nombre Entrada Retorno Descripcin
MOT_CONFIG
- - Configuracin para la
comunicacin con los
motores
MOT_STR

MOT_VEL
MOT_T_DIST

MOT_CON
FWDBACK
COMTYPE
MOT_STATUS
COMOK
DWRONG
Comando para movimiento
en lnea recta
MOT_CHA_VEL

MOT_VEL
MOT_T_DIT

MOT_CON
FWDBACK
COMTYPE
RL
MOT_STATUS
COMOK
DWRONG
Comando para cambiar la
velocidad de un motor
MOT_ROT

MOT_VEL
MOT_CENWHEEL
MOT_T_ANG

MOT_CON
FWDBACK
COMTYPE
RL
MOT_STATUS
COMOK
DWRONG
Comando para realizar la
rotacin del robot
MOT_CUR

MOT_VEL
MOT_RAD
MOT_T_DIST

MOT_CON
FWDBACK
COMTYPE
RL
MOT_STATUS
COMOK
DWRONG
Comando para realizar una
curva
MOT_CHECK_END
- - Funcin que espera hasta la
finalizacin de comando



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 58 de 167



www.moway-robot.com
MOT_STOP
- MOT_STATUS
COMOK
DWRONG
Comando para detener el
robot
MOT_RST

MOT_RST_COM MOT_STATUS
COMOK
DWRONG
Comando para resetear las
variables temporales de
tiempo y distancia
MOT_FDBCK

STATUS_COM MOT_STATUS_
DATA_0
MOT_STATUS_
DATA_1

MOT_STATUS
COMOK
DWRONG
Comando para ver el estado
de los motores


MOT_CONFIG

Esta funcin configura las entradas y salidas para que el microcontrolador pueda
comunicarse con el Sistema Motriz.

Tabla 36. Conexiones PIC-motores
Pin PIC I/O Sensor
PORTE
RE7 I Indica cundo el motor termina el comando
RE0 O SCL del protocolo I2C
RE1 O SDA del protocolo I2C


El puerto RE7 nos indica la finalizacin de un comando. Este puerto tiene la
etiqueta MOT_END en la librera.

Ejemplo:

;Recto adelante al 100% de velocidad 10 segundos (100ms x 100)
movlw .100
movwf MOT_VEL
movlw .100
movwf MOT_T_DIST_ANG
bsf MOT_CON,FWDBACK
bsf MOT_CON,COMTYPE
call MOT_STR

;Hasta que el comando no termine no se hace nada
CHEQUEAR_FIN_DE_COMANDO
btfss MOT_END
goto CHEQUEAR_FIN_DE_COMANDO

Para ste mismo propsito se puede utilizar la funcin MOT_CHECK_END.






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 59 de 167



www.moway-robot.com
MOT_STR

Entrada
MOT_VEL Velocidad deseada 0 100
MOT_CON, FWDBACK Sentido de la marcha 1-FWD 0-BACK
MOT_CON, COMTYPE Tipo de comando 1-TIME 0-DIST
MOT_T_DIST El valor de Tiempo
Distancia
0
0
255
255
Variables de salida
FLAGS MOT_STATUS: COMOK y DWRONG

Comando para desplazamiento en lnea recta. Es necesario especificar velocidad,
sentido, tipo de comando y el tiempo o la distancia a recorrer. El tiempo tiene una
resolucin de 100ms y la distancia 1mm, y con un valor de 0 en MOT_T_DIST el
comando se mantendr hasta que no se especifique otra orden.

Ejemplo:

;Recto adelante al 100% de velocidad 10 segundos (100ms x 100)
movlw .100
movwf MOT_VEL
movlw .100
movwf MOT_T_DIST_ANG
bsf MOT_CON,FWDBACK
bsf MOT_CON,COMTYPE
call MOT_STR

;Recto hacia atrs al 15% de velocidad 100mm (1mm x 100)
movlw .15
movwf MOT_VEL
movlw .100
movwf MOT_T_DIST_ANG
bcf MOT_CON,FWDBACK
bcf MOT_CON,COMTYPE
call MOT_STR


MOT_CHA_VEL

Entrada
MOT_VEL Velocidad deseada 0 100
MOT_CON, FWDBACK Sentido de la marcha 1-FWD 0-BACK
MOT_CON, RL Izquierda o derecha 1-RIGHT 0-LEFT
MOT_CON, COMTYPE Tipo de comando 1-TIME 0-DIST
MOT_T_DIST El valor de Tiempo
Distancia
0
0
255
255
Variables de salida
FLAGS MOT_STATUS: COMOK y DWRONG



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 60 de 167



www.moway-robot.com
Comando para cambiar la velocidad a uno de los dos motores. Es necesario
especificar velocidad, sentido, el motor, tipo de comando y el tiempo o la distancia a
recorrer. El tiempo tiene una resolucin de 100ms y la distancia 1mm, y con un valor de
0 en MOT_T_DIST el comando se mantendr hasta que no se especifique otra orden.


Ejemplo:

;Cambiar velocidad (80% adelante) al motor derecho durante 10 segundos
;(100ms x 100)
movlw .80
movwf MOT_VEL
movlw .100
movwf MOT_T_DIST_ANG
bsf MOT_CON,FWDBACK
bsf MOT_CON,COMTYPE
bsf MOT_CON,RL
call MOT_CHA_VEL

;Cambiar velocidad (20% atrs) al motor izquierdo y hacer una distancia de 100
;mm (1mm x 100)
movlw .20
movwf MOT_VEL
movlw .100
movwf MOT_T_DIST_ANG
bcf MOT_CON,FWDBACK
bcf MOT_CON,COMTYPE
bcf MOT_CON,RL
call MOT_CHA_VEL


MOT_ROT

Entrada
MOT_VEL Velocidad deseada 0 100
MOT_CON, FWDBACK Sentido de la marcha 1-FWD 0-BACK
MOT_CENWHEEL Sobre centro o rueda 0x01-CE 0x00-WH
MOT_CON, RL Derecha o izquierda 1-RIGHT 0-LEFT
MOT_CON, COMTYPE Tipo de comando 1-TIME 0-ANG
MOT_T_ANG El valor de Tiempo
ngulo
0
0
255
100
Variables de salida
FLAGS MOT_STATUS: COMOK y DWRONG

Comando para hacer rotar a mOway. Es necesario especificar velocidad, sentido,
tipo de rotacin, el motor, tipo de comando y el tiempo o el ngulo a rotar. El tiempo
tiene una resolucin de 100ms, y con un valor de 0 en MOT_T_ANG el comando se
mantendr hasta que no se especifique otra orden.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 61 de 167



www.moway-robot.com
En cuanto al ngulo, las siguientes ecuaciones muestran como calcular el valor de
MOT_T_ANG teniendo en cuenta el ngulo de rotacin deseado. Si la rotacin se
produce sobre una de las ruedas se obtiene ms resolucin. Por otro lado, hay que tener
en cuenta la inercia mecnica por lo que se aconseja reducir la velocidad para conseguir
una mayor precisin e iniciar el movimiento con el robot parado.

Ecuacin 1. MOT_T_ANG en rotacin sobre el centro
|
|
.
|

\
|
=
12
33 . 3
_ _
ngulo
round ANG T MOT

Ejemplo:
;Rotacin respecto al centro a la derecha al 80% de velocidad durante 10 segundos
;(100ms x 100)
movlw .80
movwf MOT_VEL
movlw .100
movwf MOT_T_DIST_ANG
movlw 0x01
movwf MOT_CENWHEEL
bsf MOT_CON,FWDBACK
bsf MOT_CON,COMTYPE
bsf MOT_CON,RL
call MOT_ROT

;Rotacin respecto la rueda izquierda adelante al 20% de velocidad 180
movlw .20
movwf MOT_VEL
movlw .50
movwf MOT_T_DIST_ANG
movlw 0x00
movwf MOT_CENWHEEL
bsf MOT_CON,FWDBACK
bcf MOT_CON,COMTYPE
bcf MOT_CON,RL
call MOT_ROT


MOT_CUR

Entrada
MOT_VEL Velocidad deseada 0 100
MOT_CON, FWDBACK Sentido de la marcha 1-FWD 0-BACK
MOT_RAD Radio 0 100
MOT_CON, RL Derecha o izquierda 1-RIGHT 0-LEFT
MOT_CON, COMTYPE Tipo de comando 1-TIME 0-DIST
MOT_T_DIST El valor de Tiempo
Distancia
0
0
255
255



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 62 de 167



www.moway-robot.com
Variables de salida
FLAGS MOT_STATUS: COMOK y DWRONG


Comando para dar una curva. Es necesario especificar velocidad, sentido, radio,
direccin, tipo de comando y el tiempo o la distancia a recorrer. El radio es la velocidad
que se restar o se sumar a la velocidad global del robot. Esto es, si la velocidad
especificada es 50 y el radio 10, uno de los motores tendr 60 de velocidad y el otro 40.
Por lo tanto el radio tiene que cumplir la siguiente restriccin:

Ecuacin 2. Condicin 1 MOT_RAD
100 _ _ 0 s s RAD MOT VEL MOT

Ecuacin 3. Condicin 2 MOT_RAD
100 _ _ 0 s + s RAD MOT VEL MOT

El tiempo tiene una resolucin de 100ms y la distancia 1mm, y con un valor de 0
en MOT_T_ANG el comando se mantendr hasta que no se especifique otra orden. El
motor cuenta la distancia recorrida por el motor que est en el exterior de la curva.

Ejemplo:

;Curva hacia delante a la derecha al 50% con un radio de 10 durante 10 segundos
;(100ms x 100)
;VEL_I=60
;VEL_D=40
movlw .50
movwf MOT_VEL
movlw .100
movwf MOT_T_DIST_ANG
movlw .10
movwf MOT_RAD
bsf MOT_CON,FWDBACK
bsf MOT_CON,COMTYPE
bsf MOT_CON,RL
call MOT_CUR

;Curva hacia atrs a la izquierda al 80% con un radio de 15 durante 100mm
;(1mm x 100)
;VEL_I=95
;VEL_D=65
movlw .80
movwf MOT_VEL
movlw .100
movwf MOT_T_DIST_ANG
movlw .15
movwf MOT_RAD



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 63 de 167



www.moway-robot.com
bcf MOT_CON,FWDBACK
bcf MOT_CON,COMTYPE
bcf MOT_CON,RL
call MOT_CUR


MOT_CHECK_END

Comando para esperar a la finalizacin del comando. Una vez mandado el
comando el programa contina con su ejecucin. Si al usuario le interesa esperar hasta
que el robot termine un comando se puede llamar a esta funcin donde no finalizar
hasta que el comando termine.

Ejemplo:

;Esperar fin de comando
call MOT_CHECK_END


MOT_STOP

Variables de salida
FLAGS MOT_STATUS: COMOK

Comando para parar el robot.

Ejemplo:

;Parar mOway
call MOT_STOP


MOT_RST

Entrada
MOT_RST_COM El parmetro que se desea resetear RST_T
RST_DIST
RST_KM
Variables de salida
FLAGS MOT_STATUS: COMOK

Resetea las variables temporales internas de tiempo, distancia y cuentakilmetros
del motor.

Ejemplo:





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 64 de 167



www.moway-robot.com
;Reseteo del tiempo transcurrido
movlw RST_T
movwf MOT_RST_COM
call MOT_RST

;Reseteo de la distancia recorrida
movlw RST_D
movwf MOT_RST_COM
call MOT_RST


MOT_FDBCK

Entrada
STATUS_COM El parmetro que se desea consultar STATUS_T
STATUS_A
STATUS_V_R
STATUS_V_L
STATUS_D_R
STATUS_D_L
STATUS_KM
Variables de salida
MOT_STATUS_DATA_0 Primer byte de respuesta (tiempo, ngulo, velocidad, distancia
y primer byte del cuentakilmetros)
MOT_STATUS_DATA_1 Segundo byte de respuesta (segundo byte del cuentakilmetros)
FLAGS MOT_STATUS: COMOK y DWRONG

Comando para conocer diversos parmetros del sistema motriz. Podemos
consultar el tiempo transcurrido, el ngulo (slo en el comando MOT_ROT), velocidad
de los dos motores, distancia recorrida por cada motor y el cuentakilmetros.

Esta funcin actualiza dos variables donde se guardar la informacin requerida.
Todas las peticiones menos STATUS_KM devuelven un byte
(MOT_STATUS_DATA_0) manteniendo MOT_STATUS_DATA_1 al valor 0xFF.
Estas dos variables se actualizan cada vez que se manda un comando nuevo (ej. Se
puede pedir el tiempo transcurrido desde el ltimo comando). Cuando se utilice
STATUS_KM hay que tener en cuenta los dos bytes. Este comando resulta muy til
para calcular la longitud de una lnea mientras el robot la sigue.

Tabla 37. Resolucin de los datos del motor
Parmetro Resolucin
STATUS_T
100ms/bit
STATUS_A
3.6/bit
STATUS_V_R
1%/bit
STATUS_V_L
1%/bit
STATUS_D_R
1mm/bit
STATUS_D_L
1mm/bit
STATUS_KM
1mm/bit



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 65 de 167



www.moway-robot.com
Ejemplo:

;Peticin de tiempo transcurrido desde el ltimo comando
movlw STATUS_T
movwf MOT_STATUS_COM
call MOT_FDBCK
;Ej. Salida:
;MOT_STATUS_DATA_0=0x7F => Han transcurrido 12.7 segundos desde el
;ltimo comando
;MOT_STATUS_DATA_1=0xFF; => Dato no vlido

;Peticin de distancia recorrida por el motor derecho desde el ltimo comando
movlw STATUS_KM
movwf MOT_STATUS_COM
call MOT_FDBCK
;Ej. Salida:
;MOT_STATUS_DATA_0=0x08
;MOT_STATUS_DATA_1=0x01;




5.2.4 Librera para el mdulo BZI -RF2GH4 en ensamblador
5.2.4.1 Descripcin

Con esta librera es posible realizar fcilmente una comunicacin entre el robot y
el mdulo BZI-RF2GH4.
Dado que todas las funciones utilizan el protocolo SPI, es necesario habilitar el
hardware del microcontrolador para este propsito. Para ello basta con aadir unas
lneas de cdigo en la configuracin inicial del programa.
5.2.4.2 Variables

RF_STATUS

Esta variable de solo lectura informa de la situacin de la comunicacin por el
mdulo de radio.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
Sin uso CONFIGOK OFFOK ONOK RCVNW RCVOK ACK SNDOK
-

byte 1 byte 0
0x01 0x08
0000 0001 0000 0100
264
Distancia:
264*1mm
264mm



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 66 de 167



www.moway-robot.com
Bit 7: Sin uso

Bit 6: CONFIGOK: Muestra si el mdulo se ha configurado correctamente.
1 = El mdulo se ha configurado correctamente.
0 = Mdulo desconfigurado. Imposibilidad de comunicacin con el
mdulo por ausencia o conexin elctrica incorrecta.

Bit 5: OFFOK: Muestra si el mdulo se ha apagado correctamente.
1 = El mdulo se ha apagado correctamente.
0 = No se ha apagado correctamente. Imposibilidad de comunicacin con
el mdulo por ausencia o conexin elctrica incorrecta.

Bit 4: ONOK: Muestra si el mdulo se ha encendido correctamente.
1 = El mdulo se ha encendido correctamente.
0 = El mdulo no est activo. Imposibilidad de comunicacin con el
mdulo por ausencia o conexin elctrica incorrecta.

Bit 3: RCVNW: Muestra si todava quedan datos por leer.
1 = Quedan tramas de datos por leer en la pila del mdulo de radio.
0 = Tras la ltima lectura, la pila de datos del mdulo qued vaca. No
hay mensajes en espera.

Bit 2: RCVOK: Informa que se han recibido datos correctamente y estn
accesibles para ser tratados.
1 = Recepcin correcta.
0 = No se han recibido datos o la informacin recibida es corrupta.

Bit 1: ACK: Muestra si se ha recibido el ACK (confirmacin) del receptor tras
una transmisin.
1 = El receptor ha confirmado que ha recibido los datos correctamente.
0 = No se ha recibido la confirmacin del receptor. Puede ser causa de
que no haya recibido la seal o de que tenga la pila llena y no pueda
almacenar ms mensajes.

Bit 0: SNDOK: Muestra si el ltimo envo de datos se ha realizado.
1 = El mdulo de radio ha enviado los datos. Este bit no indica que
alguien lo haya escuchado.
0 = No ha sido posible enviar los datos. Puede ser debido a un fallo en la
comunicacin con el mdulo de radio

RF_DATA_OUT_0, RF_DATA_OUT _1, RF_DATA_OUT _7

Este grupo de variables consta de 8 bytes. En cada transmisin se enva el
contenido de los 8 bytes.






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 67 de 167



www.moway-robot.com

RF_DATA_IN_0, RF_DATA_IN _1, RF_DATA_IN _7

Este grupo de variables consta de 8 bytes. En cada recepcin se actualizan estos 8
bytes.

RF_DIR_OUT

Esta variable es de un solo byte. Indica la direccin del dispositivo que se desea
mandar el dato.
RF_DIR_IN

Esta variable es de un solo byte. Indica la direccin de los datos recibidos.
RF_DIR

Esta variable es de un solo byte. Indica la direccin propia con la que se configura
el mdulo.
5.2.4.3 Funciones

La librera consta de nueve funciones que facilitarn bastante el trabajo a la hora
de desarrollar una aplicacin de comunicacin con los mdulos BZI-RF2GH4. A
continuacin se dar una breve descripcin de cada una de ellas.
Tabla 38. Resumen de las funciones en ensamblador.

Funciones para el mdulo BZI-RF2GH4
RF_CONFIG
Configura las entradas y salidas del microcontrolador
19
as
como parmetros del mdulo de radio.
RF_CONFIG_SPI
Configura las entradas y salidas del microcontrolador
20
as
como los parmetros necesarios para utilizar el bus SPI.
RF_ON Activa el mdulo de radiofrecuencia en modo escucha.
RF_OFF
Desactiva el mdulo de radiofrecuencia y lo deja en modo de
bajo consumo.
RF_SEND Enva una trama de datos (8 Bytes) a la direccin indicada.
RF_RECEIVE
Comprueba si se ha producido una recepcin y de ser as,
recoge la trama.
RF_RECEIVE_INT
Realiza la misma funcin que RF_RECEIVE solo que por
interrupcin.
RF_INT_EN
Esta rutina habilita en el microcontrolador la interrupcin
externa para el mdulo de radio.


19
El usuario puede cambiar estos pines modificando la librera donde se define el patillaje
20
dem.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 68 de 167



www.moway-robot.com

RF_CONFIG_SPI

La velocidad del SPI no debe superar los 8 Mhz. En la funcin se configuran los
diferentes parmetros del mdulo SPI y los pines del PIC.
PIN RF PIN PIC
SCK RC3
SDI RC5
SDO RC4

Tabla 39. Configuracin SPI puertos PIC


RF_CONFIG

Variables de entrada
RF_DIR Direccin del dispositivo. Debe ser un valor entre 0x01 y 0xFE.
RF_CHN Canal a utilizar en la comunicacin. Debe ser un valor entre 0x00
y 0x7F (128 canales).
Variables de salida
FLAGS: CONFIGOK

Esta funcin configura el transceptor habilitando su propia direccin de escucha y
la direccin de broadcast. A su vez configura otros parmetros como pines del PIC, el
canal, la velocidad de transmisin, la potencia de emisin, la longitud de la direccin, la
longitud del cdigo CRC, etc.
PIN RF PIN PIC
IRQ RB0
CSN RF2
CE RH4

Tabla 40. Configuracin mdulo RF puertos PIC

El canal debe ser comn a todos los mdulos que van a participar en la
comunicacin. El usuario puede elegir cualquier canal de los 128 disponibles. Sin
embargo, si en el entorno existe ms de una comunicacin entre mdulos en diferentes
canales, hay que dejar un espaciamiento de 2 entre los canales a utilizar para evitar
interferencias dejando as 32 canales tiles. Otra cuestin a tener en cuenta es la
existencia de otras tecnologas que utilizan la banda ISM 2.4GHz (Wifi, Bluetooth,etc.)
y que tambin pueden causar interferencias en alguno de los canales.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 69 de 167



www.moway-robot.com
2.4Ghz 2.401Ghz 2.402Ghz 2.403Ghz
...
2.405Ghz 2.404Ghz 2.525Ghz
Canal
0x01
Canal
0x04

Imagen 46 Canales RF
La direccin que se asigna a cada dispositivo debe ser unvoca dentro de cada
canal.
Si la comunicacin SPI del PIC est mal configurada, el conexionado se ha
realizado incorrectamente o en ausencia del mdulo, el bit CONFIGOK de
RF_STATUS permanecer a 0.

RF_ON

Variables de salida
FLAGS: ONOK

Esta rutina activa el mdulo de radio en modo escucha para poder recibir datos
y/o realizar envos de datos.
Es importante tener en cuenta que tras la llamada a esta rutina el mdulo necesita
2,5ms para estar listo.
Si la comunicacin SPI del PIC est mal configurada, el conexionado se ha
realizado incorrectamente o en ausencia del mdulo, el bit ONOK de RF_STATUS
permanecer a 0.
Ejemplo:
;--[Rutina de configuracin sin interrupcin y activacin]-----
;Configurar mdulos SPI del PIC
call RF_CONFIG_SPI

;Configurar mdulo RF (canal y direccin propias)
movlw 0x01 ;Direccin propia
movwf RF_DIR

movlw 0x40 ;Canal
movwf RF_CHN

call RF_CONFIG
btfss RF_STATUS,CONFIGOK
nop ;Mdulo no configurado




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 70 de 167



www.moway-robot.com
;Activar el mdulo RF
call RF_ON
btfss RF_STATUS,ONOK
nop ;Mdulo no inicializado
;-----------------------------------------------------------------------------


RF_OFF

Variables de salida
FLAGS: OFFOK

Esta rutina desactiva el mdulo de radio dejndolo en modo de bajo consumo. No
borra la configuracin establecida.
Si la comunicacin SPI del PIC est mal configurada, el conexionado se ha
realizado incorrectamente o en ausencia del mdulo, el bit OFFOK de RF_STATUS
permanecer a 0.

RF_SEND

Variables de entrada
RF_DIR_OUT Direccin a la que se quiere enviar los datos (1 byte).
RF_DATA_OUT_0
RF_DATA_OUT_7
Variables que van a ser transmitidas (8 bytes).
Variables de salida
FLAGS: SNDOK y ACK

Esta funcin enva 8 Bytes de datos a la direccin indicada informando de la
correcta recepcin en el destinatario. Tras su ejecucin el dispositivo volver al modo
de escucha.
Si un mensaje es enviado a la direccin 0x00, este ser recibido por todos los
mdulos que se encuentren en el mismo canal. Se debe tomar en cuenta que el mdulo
acepta el primer ACK que recibe, por lo tanto no tendremos la certeza de la llegada del
dato a todos los dispositivos.
Ejemplo:
;---------------------[Rutina de envo de datos]------------------------
;Preparacin de la direccin del receptor
;y de los datos.

movlw 0x02 ;Direccin del receptor
movwf RF_DIR_OUT
;Datos a enviar
clrf RF_DATA_OUT_0



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 71 de 167



www.moway-robot.com
clrf RF_DATA_OUT_1
clrf RF_DATA_OUT_2
clrf RF_DATA_OUT_3
clrf RF_DATA_OUT_4
clrf RF_DATA_OUT_5
clrf RF_DATA_OUT_6
clrf RF_DATA_OUT_7

call RF_SEND ;Enviar trama
btfss RF_STATUS,SNDOK
nop ;No enviado
btfss RF_STATUS,ACK
nop ;No ACK
;-----------------------------------------------------------------------------


RF_RECEIVE

Variables de salida
RF_DIR_IN Direccin de quien ha enviado la trama
RF_DATA_IN_0
RF_DATA_IN_7
Trama recibida desde la direccin indicada.
RCVOK y RCVNW

Esta rutina se encarga de comprobar si se ha producido una recepcin y de ser as,
devuelve los datos recibidos. Asimismo, informa si quedan datos sin leer en la FIFO de
recepcin del mdulo.
Cuando se reciba una trama se debe hacer una comprobacin del bit RCVNW de
la variable RF_STATUS y si est activo se debe llamar a la funcin RF_RECEIVE de
nuevo tras tratar los datos. El transceptor tiene una pila de tres niveles, por lo que si no
se llama a la funcin recibir antes de que se llene la pila, el dispositivo no podr recibir
ms datos.
Al no utilizar interrupciones, la probabilidad de prdida de paquetes, con trfico
elevado, es moderada. Es aconsejable utilizarla slo en entornos con pocos dispositivos
y/o poco trfico de datos. Tambin se puede solucionar este problema haciendo que los
emisores reenven la misma trama hasta que la comunicacin haya sido correcta, pero
en entornos con mucho trfico las colisiones crecen exponencialmente aumentando
considerablemente los tiempos de envo.
Ejemplo:
;----- Rutina de recepcin de datos sin interrupcin]----------------
RECIBIR
call RF_RECEIVE
btfsc RF_STATUS,RCVOK
nop ;Tratar datos



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 72 de 167



www.moway-robot.com
btfsc RF_STATUS,RCVNW
goto RECIBIR
;-----------------------------------------------------------------------------



RF_RECEIVE_INT

Variables de salida
RF_DIR_IN Direccin de quien ha enviado la trama
RF_DATA_IN_0
RF_DATA_IN_7
Trama recibida desde la direccin indicada.
RCVOK, RCVNW

Es la rutina ptima de recepcin. Es una rutina prcticamente igual a
RF_RECEIVE con la diferencia que esta funciona por interrupcin. Por ello debe
ubicarse dentro del cdigo de la interrupcin y haber configurado las interrupciones
anteriormente (RF_INTER_EN). Se encarga de comprobar si se ha producido una
interrupcin externa (RB0) y si es as, limpia el flag de interrupcin. La probabilidad de
prdida de paquetes es mnima. An as conviene que los emisores reenven si el flag de
envo no se activa.
Ejemplo:
;--------- -[Rutina de recepcin de datos con interrupcin]---------
LEER_MAS_DATOS
call RF_RECEIVE_INT
btfsc RF_STATUS,RCVOK
nop ;Tratar datos
btfsc RF_STATUS,RCVNW
goto LEER_MAS_DATOS
goto SALIR_INTERRUPCIONES
;-----------------------------------------------------------------------------


RF_INT_EN

Esta rutina se encarga de habilitar la interrupcin externa del microcontrolador
(RB0) que utiliza el mdulo de RF en la recepcin de datos. Para ello se configura como
entrada el pin RB0. Aunque se puede manejar el mdulo sin interrupciones no se
garantiza el mnimo tiempo de respuesta.
;--[Rutina de configuracin con interrupcin y activacin]-----
;Habilitar interrupciones
call RF_INT_EN



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 73 de 167



www.moway-robot.com

;Configurar mdulos SPI del PIC
call RF_CONFIG_SPI

;Configurar mdulo RF (canal y direccin propias)
movlw 0x01 ;Direccin propia
movwf RF_DIR

movlw 0x40 ;Canal
movwf RF_CHN

call RF_CONFIG
btfss RF_STATUS,CONFIGOK
nop ;Mdulo no configurado

;Activar el mdulo RF
call RF_ON
btfss RF_STATUS,ONOK
nop ;Mdulo no inicializado
;-------------------------------------------------------------------------






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 74 de 167



www.moway-robot.com
5.2.4.4 Diagrama de flujo para envo y recepcin de
datos


SNDOK
RF_SEND
Definir
RF_DIR
Definir
RF_DATA
ACK no recibido
Envio no realizado
ACK
Envio realizado y
AKC recibido
1
1
0
0
Diagrama 1. Envio de datos en
ensablador

RF_RECEIVE
_INT
Interrupcin ext
RCVOK
RCVNW
Tratar datos
0
1
1
Salir interrupcin
0
Diagrama 2. Recepcin con
interrupcin en ensamblador

RF_RECEIVE
RCVOK
IRQ=0
RCVNW
Tratar datos
0
1
1
Salir recepcin
0
IRQ=1
Diagrama 3. Recepcin sin
interrupcin en ensamblador









Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 75 de 167



www.moway-robot.com
5.2.5 Librera para el mdulo Moway Camera Board en
ensamblador
5.2.5.1 Descripcin
Con esta librera es posible activar la cmara de mOway y elegir el canal de
transmisin de la misma, a travs de comandos SPI.
Para poder utilizar el mdulo BZI-RF2GH4 y el mdulo de cmara a la vez, se ha
diseado la electrnica para que el microcontrolador slo pueda comunicarse con uno
de los mdulos, evitando cortocircuitos. El mdulo de cmara se habilita con un 1 en
el pin CS del mdulo, quedando el mdulo BZI-RF2GH4 deshabilitado
automticamente. El mdulo BZI-RF2GH4 se habilita con un 0 en el pin CSN,
quedando el mdulo de cmara deshabilitado automticamente.
5.2.5.2 Variables

Las siguientes variables ocupan un byte.

COMMAND_CAM

Esta variable contiene el tipo de comando que se enviar al controlador de la
cmara. COM_WR si el comando es de escritura y COM_RD si es de lectura. Las
funciones de esta librera slo envan comandos de escritura (activar o desactivar
cmara y seleccin de canal).

ADDRESS_CAM

Esta variable contiene la direccin del registro del controlador de la cmara a leer
o escribir. Para configurar los puertos de entrada/salida del controlador de la cmara, se
asignar IODIR_ADD. Para cambiar el estado de los puertos de salida, se asignar
OLAT_ADD.

DATA_CAM

Esta variable contiene los datos a enviar al registro del controlador de la cmara
especificado en la variable ADDRESS_CAM.

CAM_STAT

Esta variable indica el estado de la cmara. Si est encendida su valor es 1, si
est apagada su valor es 0.

CAM_CHANNEL

Esta variable define el canal de transmisin de la cmara.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 76 de 167



www.moway-robot.com
5.2.5.3 Funciones

La librera incluye las funciones necesarias para manejar el mdulo de cmara. A
continuacin se dar una breve descripcin de cada una de ellas.
Tabla 41. Resumen de las funciones en ensamblador.
Funciones para el mdulo Moway Camera Board
CAM_CONFIG
Configura las entradas y salidas SPI del microcontrolador, as
como el puerto del controlador de la cmara.
CAM_ON Activa la cmara
CAM_OFF Desactiva la cmara
CAM_CHN_SEL
Selecciona el canal por el que va a transmitir la cmara al
receptor de vdeo.
CAM_SEND_COM
Enva un comando (tipo de comando, registro y datos) al
controlador de la cmara
CAM_SPI_WRITE Enva un byte por SPI.


CAM_CONFIG

En la funcin se configuran los diferentes parmetros del mdulo SPI y los pines
del PIC. Tambin configura el puerto de entradas/salidas del controlador de la cmara.
Nota: la velocidad del SPI no debe superar los 8MHz.
PIN SPI PIN PIC
SCK RC3
SDI RC5
SDO RC4
IRQ RB0
CSN RF2
CE RH4
Tabla 42. Configuracin SPI puertos PIC

CAM_SEND_COM

Esta rutina enva un comando por SPI al controlador de la cmara. El formato del
comando consiste en tres bytes que especifican el tipo de comando (lectura o escritura),
el registro a leer o escribir, y los datos a escribir en dicho registro.

COMANDOS
COMMAND_CAM COM_WR para escribir registro
COM_RD para leer registro
ADDRESS_CAM IODIR_ADD para configurar entradas/salidas del puerto del
controlador de la cmara.
OLAT_ADD para cambiar el estado de las salidas del puerto
del controlador de la cmara



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 77 de 167



www.moway-robot.com
DATA_CAM Datos a escribir en el registro especificado en
ADDRESS_CAM
CAM_ON

Esta rutina enva por SPI el comando de activacin de la cmara al controlador. Es
un comando de escritura en el registro de las salidas del puerto del controlador. Los tres
bytes a enviar son:

BYTES
COMMAND_CAM COM_WR
ADDRESS_CAM OLAT_ADD
DATA_CAM 0x22



CAM_OFF

Esta rutina enva por SPI el comando de desactivacin de la cmara al
controlador. Es un comando de escritura en el registro de las salidas del puerto del
controlador. Los tres bytes a enviar son:

BYTES
COMMAND_CAM COM_WR
ADDRESS_CAM OLAT_ADD
DATA_CAM 0x00



CAM_CHN_SEL

Esta rutina enva por SPI el comando de cambio de canal de transmisin al
controlador. Es un comando de escritura en el registro de configuracin de
entrada/salida del puerto del controlador.

Variables de entrada
CAM_CHANNEL Canal en el que transmitir la cmara. Debe ser un valor entre 1 y
4.


BYTES
COMMAND_CAM COM_WR
ADDRESS_CAM IODIR_ADD
DATA_CAM Canal 1: 0xD8
Canal 2: 0xD4
Canal 3: 0xCC
Canal 4: 0xDC






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 78 de 167



www.moway-robot.com
Ejemplo de activacin de la cmara:

; Configuracin de la cmara
call CAM_CONFIG

; Se selecciona el canal 1
movlw .1
movwf CAM_CHANNEL
call CAM_CHN_SEL

; Encender cmara
call CAM_ON



CAM_SPI_WRITE

Realiza las operaciones de lectura y escritura del puerto SPI del microcontrolador
en una sola funcin. Primero enva un byte al puerto SPI del microcontrolador. Despus
lee el buffer SPI del microcontrolador si se ha recibido algn dato.

Variables de entrada
BYTE_OUT Byte a enviar por SPI
Variables de salida
BYTE_IN Byte ledo por SPI






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 79 de 167



www.moway-robot.com
6. Programacin C

C18, de MPLAB, es un compilador que se sirve para la familia de
microcontrolador PIC18. Existe una evaluacin de este compilador que se puede
descargar gratuitamente desde la pgina web de Microchip.

En la web de mOway y en el pack de instalacin encontrar libreras para el
manejo de los sensores, motores y mdulo RF escritas para el compilador.

La gran ventaja que tiene es que el lenguaje que compila es C. El manejo de
variables numricas (char, int, etc.) y de estructuras de control de flujo (if, for, etc.) es
muy sencillo y contienen gran cantidad de funciones pre-compiladas que facilitan
enormemente la tarea de programacin (I2C, SPI). Sin embargo, los programas
generados son ms grandes en cuanto a tamao que en ensamblador.

En resumen:
- Muy interesante para comenzar a trabajar con mOway rpidamente.
- Muy interesante para realizar tareas sencillas o de complejidad media.
- No recomendable si el tiempo de respuesta es crtico.
6.1 Creacin de un proyecto

Para crear el primer proyecto utilizaremos el Project Wizard de MPLAB IDE que
permite crear proyectos rpidamente. Antes de empezar con la creacin del proyecto, el
usuario tiene que tener instalado todos los elementos del compilador C18. Estos
elementos se integran a la hora de la instalacin con MPLAB. Hay que destacar que el
ejemplo ha sido creado con la versin 8.4 de MPLAB.


Imagen 47. Project Wizard



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 80 de 167



www.moway-robot.com
1. El primer paso consiste en elegir el PIC instalado en mOway: PIC18F86J50.



Imagen 48. Seleccin del PIC


2. A continuacin se elige la herramienta MPLAB C18 C Compiler.



Imagen 49. Seleccin de herramienta





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 81 de 167



www.moway-robot.com
3. En el paso tres se debe indicar la ubicacin del proyecto a crear.



Imagen 50. Eleccin de carpeta

4. En el siguiente paso se aaden al proyecto las libreras de mOway que controlan
diferentes aspectos del robot. Esas libreras deben ser copiadas (manualmente o
indicndolo en el Wizard) en la carpeta del proyecto sino MPLAB utilizar las
libreras elegidas en la ubicacin elegida.



Imagen 51. Eleccin de libreras mOway con copia




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 82 de 167



www.moway-robot.com
5. Siguiendo estos pasos el proyecto se crear, pero faltar todava la creacin del
fichero .C donde se inserta el cdigo fuente.



Imagen 52. Finalizacin Wizard

6. El siguiente paso es abrir el proyecto y crear un nuevo archivo (New File)
guardndolo en la misma carpeta del proyecto como Main.c. ste ser nuestro
fichero fuente.



Imagen 53. Creacin de .c




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 83 de 167



www.moway-robot.com
7. Se aade el fichero fuente al proyecto accediendo a Project/Add Files to Project
Del mismo modo se aade tambin el script linker de mOway. Este fichero indica al
LINKER donde puede meter el programa en la memoria. Este script est disponible
en el pack de mOway y en los proyectos ejemplo.



Imagen 54. Proyecto con .C


6.2 Primer programa en C18

Para hacer el primer programa es necesario haber creado un proyecto (captulo
anterior). Este primer programa bsico har que mOway evite los obstculos. Es
necesario para realizar un proyecto redefinir los vectores de reset e interrupcin.

1. Aadir redefinicin de vectores. Este cdigo es necesario para que los
programas se graben correctamente en la memoria de programa del robot.





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 84 de 167



www.moway-robot.com


Imagen 55. Header de proyecto en C18


2. Se aade la funcin SEN_CONFIG habilitar al PIC en el uso de los sensores.

3. Se aade el parpadeo de uno de los LEDs.

4. Probar el programa y comprobar que se enciende el LED verde. La grabacin se
realiza mediante MowayWorld (Grabar fichero .hex).




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 85 de 167



www.moway-robot.com


Imagen 56. Primer programa: configuracin y parpadeo de led


5. Para detectar obstculos se llama a la funcin SEN_OBS_DIG() con el
parmetro OBS_CENTER_L para indicarle que chequee el sensor central
izquierdo.

6. Si encuentra obstculo enciende los LED delantero.

7. Probar el programa y comprobar que los LED delantero se encienden cuando
detectan un obstculo.





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 86 de 167



www.moway-robot.com

Imagen 57. Primer programa: deteccin de obstculo


8. Aadimos movimiento al robot: comando recto indefinidamente hasta que
encuentra un obstculo.

9. Cuando encuentra obstculo se manda un comando para que realice una rotacin
de 180. El robot esperar hasta que el comando termine y continuar en un
movimiento recto.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 87 de 167



www.moway-robot.com

Imagen 58. Primer programa: movimiento con deteccin


Este proyecto se suministra en el pack de mOway.

6.3 Libreras
6.3.2 Librera sensores mOway en C para C18

Esta librera en C18 puede ser incluida en cualquier proyecto de mOway que
permite al usuario controlar los sensores.

6.3.2.1 Descripcin
La librera contiene una serie de funciones encargadas de leer los datos que
proporcionan los sensores del robot. Ellas son las encargadas de configurar los puertos
de entrada y salida adecuadamente, el ADC del microcontrolador y los indicadores
luminosos.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 88 de 167



www.moway-robot.com
6.3.2.2 Funciones
En la librera lib_sen_moway existen una serie de funciones que estn orientadas
al control de los sensores y de los diodos LED de mOway.

Tabla 43. Resumen de funciones en C

A continuacin se dar una breve descripcin de cada una de ellas.

void SEN_CONFIG(void)


Esta funcin configura las entradas y salidas para poder manejar los sensores e
inicializa las variables.

Nombre Constantes
entrada
Descripcin
void SEN_CONFIGURAR(void)
- Configura para utilizar los sensores
unsigned char SEN_LIGHT(void)
- Lee el valor del sensor de luz
unsigned char SEN_BATTERY(void)
- Lee el porcentaje de la batera
unsigned char SEN_TEMPERATURE (void)
- Lee la temperatura del interior del robot
unsigned char SEN_MIC_ANALOG (void)
- Lee el valor analgico del micrfono
unsigned char SEN_MIC_DIG (void)
- Lee el valor digital del micrfono
unsigned char SEN_SPEAKER(unsigned char,
unsigned char, unsigned char)
SPEAKER_OFF
SPEAKER_ON
SPEAKER_TIME
Controla el speaker.
unsigned char SEN_ACCE_XYZ_READ(unsigned char)
ACCE_CHECK_X
ACCE_CHECK_Y
ACCE_CHECK_Z
Indica las aceleraciones que sufre el robot
unsigned char SEN_ACCE_CHECK_TAP(void)
- Comprueba si ha habido golpe
unsigned char SEN_OBS_DIG(unsigned char)
OBS_SIDE_L
OBS_CENTER_L
OBS_CENTER_R
OBS_SIDE_R
Detecta la presencia de obstculos
unsigned char SEN_OBS_ANALOG(unsigned char)
OBS_SIDE_L
OBS_CENTER_L
OBS_CENTER_R
OBS_SIDE_R
Detecta distancia a obstculos
unsigned char SEN_LINE_DIG(unsigned char)
LINE_R
LINE_L
Detecta zona oscura (lnea negra)
unsigned char SEN_LINE_ANALOG (unsigned char)
LINE_R
LINE_L
Detecta tonalidades en la superficie
void LED_FRONT_ON(void)
- Encendido LED frontal
void LED_BRAKE_ON(void)
- Encendido LED de freno
void LED_TOP_RED_ON(void)
- Encendido LED superior rojo
void LED_TOP_GREEN_ON(void)
- Encendido LED superior verde
void LED_FRONT _OFF(void)
- Apagado LED frontal
void LED_BRAKE_OFF(void)
- Apagado LED de freno
void LED_TOP_RED_OFF(void)
- Apagado LED superior rojo
void LED_TOP_GREEN_OFF(void)
- Apagado LED superior verde
void LED_FRONT _ON_OFF(void)
- Parpadeo LED frontal
void LED_BRAKE_ON_OFF(void)
- Parpadeo LED de freno
void LED_TOP_RED_ON_OFF(void)
- Parpadeo LED superior rojo
void LED_TOP_GREEN_ON_OFF(void)
- Parpadeo LED superior verde



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 89 de 167



www.moway-robot.com
Tabla 44. Conexiones PIC-sensores

Pin PIC I/O Sensor
PORTA
RA0 I Luz
RA1 I Receptor central infrarrojo izquierdo
RA2 I Receptor sensor lnea derecho
RA3 I Receptor lateral infrarrojo izquierdo
RA5 I Receptor sensor lnea izquierdo
PORTB
RB1 I Interrupcin 1 del acelermetro
RB2 I Interrupcin 2 del acelermetro
RB3 O Altavoz
RB5 O LED superior rojo
RB6 O LED superior verde
PORTC
RC7 O LED frontal
PORTD
RD1 O Transmisor infrarrojo de lnea
RD4 I Seal SDO para la comunicacin SPI del acelermetro
RD5 O Seal SDI para la comunicacin SPI del acelermetro
RD6 O Seal de reloj para la comunicacin SPI del acelermetro
RD7 I Chip Select para la comunicacin SPI del acelermetro
PORTE
RE5 O LED de freno
PORTF
RF5 I Receptor lateral infrarrojo derecho
RF6 I Receptor central infrarrojo derecho
PORTH
RH5 I Sensor de temperatura
RH6 I Medidor de batera
RH7 I Micrfono
PORTJ
RJ6 O Transmisor infrarrojo
RJ7 I/O Pad libre


unsigned char SEN_LIGHT(void)

Salida
Porcentaje de la luz incidente.

La funcin SEN_LIGHT captura el valor analgico dependiente de la luz
incidente en el fototransistor. Para ello se deben seguir los siguientes pasos:

- Activar el ADC.
- Esperar el tiempo de adquisicin de datos (100us).
- Leer el valor analgico.
- Con el voltaje analgico medido se calcula el porcentaje de la luz incidente.
- Retorna el porcentaje de luz incidente.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 90 de 167



www.moway-robot.com
unsigned char SEN_BATTERY(void)

Salida
Porcentaje del nivel de batera

La funcin SEN_BATTERY captura el valor analgico que proviene de la
batera
21
. Para ello se deben seguir los siguientes pasos:

- Activar el ADC.
- Esperar el tiempo de adquisicin de datos (100us).
- Leer el valor analgico.
- Con el voltaje analgico medido se calcula el porcentaje del nivel de batera.
- Retorna el porcentaje de batera.


unsigned char SEN_TEMPERATURE(void)

Salida
Temperatura en C

La funcin SEN_TEMPERATURE captura el valor analgico dependiente de la
temperatura que recoge el termistor
22
. Para ello se deben seguir los siguientes pasos:

- Activar el ADC.
- Esperar el tiempo de adquisicin de datos (100us).
- Leer el valor analgico.
- Con el voltaje analgico medido se calcula la temperatura en C.
- Retorna la temperatura en C.


unsigned char SEN_MIC_ANALOG(void)

Salida
Intensidad con la que llega el sonido

La funcin SEN_MIC_ANALOG captura el valor analgico dependiente de la
intensidad del sonido procedente del micrfono. Para ello se deben seguir los siguientes
pasos:

- Activar el ADC.
- Esperar el tiempo de adquisicin de datos (100us).
- Leer el valor analgico.

21
El porcentaje puede diferir del dato proporcionado por MowayWorld porque hay diferencias en
la lectura cuando la batera se est cargando o se est utilizando.
22
La temperatura indicada por este sensor difiere de la de fuera en unos 5C porque recoge la
temperatura interna del robot.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 91 de 167



www.moway-robot.com
- Con el voltaje analgico medido se calcula la intensidad de la seal de audio.
- Retorna el valor del micrfono amplificado.


unsigned char SEN_MIC_DIG(void)

Salida
Indica si existe o no sonido

La funcin SEN_MIC indica si hay sonido o no. Para ello se deben seguir los
siguientes pasos:
- Se comprueba si se presenta alguna seal en el micrfono.
- Retorna un 1 si hay sonido y un 0 si no lo hay.


void SEN_SPEAKER(unsigned char SEN_SPEAKER_FREQ, unsigned char
SEN_SPEAKER_TIME, unsigned char SEN_SPEAKER_ON_OFF)

Variables de entrada
SEN_SPEAKER_FREQ Frecuencia generadora del tono.
SEN_SPEAKER_TIME Tiempo que dura el tono en intervalos de 100ms
SEN_SPEAKER_ON_OFF Encender, apagar o encender un tiempo determinado

La funcin SEN_SPEAKER genera un tono de una frecuencia comprendida entre
250 Hz y 65 KHz. Dependiendo del valor de SEN_SPEAKER_ON_OFF esta funcin
puede encender el speaker con una frecuencia determinada, apagarlo o encenderlo
durante un intervalo de tiempo definido por SEN_SPEAKER_TIME (intervalos de
100ms). Para ello se deben seguir los siguientes pasos:

- Activar el generador de PWM con el duty y frecuencia indicada.
- Si la funcin es de tiempo, esperar el tiempo indicado por
SEN_SPEAKER_TIME.
- Si la funcin es de tiempo apagar el mdulo de PWM del microcontrolador.

Tabla 45. Valores admitidos para SEN_SPEAKER_ON_OFF
Define Valor
SPEAKER_OFF 0
SPEAKER_ON 1
SPEAKER_TIME 2


Tabla 46. Equivalencia valor SEN_SPEAKER_FREQ y frecuencia aplicada a zumbador
SEN_SPEAKER_FREQ
Frecuencia aplicada a zumbador
Hz
0 0,0000000
10 5681,8181818



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 92 de 167



www.moway-robot.com
20 2976,1904762
30 2016,1290323
40 1524,3902439
50 1225,4901961
60 1024,5901639
70 880,2816901
80 771,6049383
90 686,8131868
100 618,8118812
110 563,0630631
120 516,5289256
130 477,0992366
140 443,2624113
150 413,9072848
160 388,1987578
170 365,4970760
180 345,3038674
190 327,2251309
200 310,9452736
210 296,2085308
220 282,8054299
230 270,5627706
240 259,3360996
250, 249,0039841
255 244,1406250


unsigned char SEN_OBS_DIG(unsigned char SEN_CHECK_OBS)

Variables de entrada
SEN_CHECK_OBS Indica que sensor se quiere leer
Salida
Indica si existe o no objeto en el sensor deseado


Esta funcin indica si un obstculo en la parte del sensor que se le indique a travs
de la variable SEN_CHECK_OBS. Para ello se han de seguir los siguientes pasos:

- Se comprueba que sensor hay que mirar. Si no se corresponde con ningn valor
vlido de la variable la funcin termina con un 0.
- Antes de mandar el pulso de luz infrarroja asegurarse de que no exista ninguna
fuente de ruido que interfiera.
- Se manda pulso de luz infrarroja para la deteccin del obstculo. Si hay algn
obstculo la luz rebotar y esta seal ser captada por el receptor infrarrojo.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 93 de 167



www.moway-robot.com
- Se comprueba si se presenta alguna seal en los cuatro receptores IR en modo
digital.
- Se copia el valor del receptor digital en la variable de salida.
- Se desactiva el LED infrarrojo.
- Se comprueba que no haya ninguna seal interferente.

Tabla 47. Valores de la variable de entrada SEN_CHECK_OBS
Define Valor
OBS_CENTER_L 0
OBS_SIDE_L 1
OBS_CENTER_R 2
OBS_SIDE_R 3


unsigned char SEN_OBS_ANALOG(unsigned char SEN_CHECK_OBS)

Variables de entrada
SEN_CHECK_OBS Indica que sensor se quiere leer
Salida
Indica el valor analgico del sensor


Esta funcin indica si un obstculo en la parte del sensor que se le indique a travs
de la variable SEN_CHECK_OBS. Para ello se han de seguir los siguientes pasos:

- Se comprueba que sensor hay que mirar. Si no se corresponde con ningn valor
vlido de la variable la funcin termina con un 0.
- Antes de mandar el pulso de luz infrarroja asegurarse de que no exista ninguna
fuente de ruido que interfiera.
- Se manda pulso de luz infrarroja para la deteccin del obstculo.
- Se activa el ADC.
- Se comprueba si se presenta alguna seal en los cuatro receptores IR.
- Se copia el valor del receptor analgico en las variables de salida. Cuanto mayor
sea este valor ms cerca se encontrar el obstculo.
- Se desactiva LED infrarrojo.
- Se comprueba que no haya ninguna seal interferente.


Tabla 48. Valores de la variable de entrada SEN_CHECK_OBS
Define Valor
OBS_CENTER_L 0
OBS_SIDE_L 1
OBS_CENTER_R 2
OBS_SIDE_R 3





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 94 de 167



www.moway-robot.com
unsigned char SEN_ACCE_XYZ_READ(unsigned char SEN_CHECK_ACCE)

Variables de entrada
SEN_CHECK_ACCE Indica que eje se quiere leer
Salida
Aceleracin que sufre el robot en el eje indicado

La funcin SEN_ACCE_XYZ_READ devuelve la aceleracin sufrida por el robot
en los 3 ejes. El sensor presenta una resolucin de 0.0156G/bit. Esto es, 0 se
corresponde a un valor de -2G y 255 a un valor de 2G.


Imagen 59. Posicin de los ejes del robot

- El microcontrolador se comunica con el sensor a travs de la interface SPI.
- Se manda el comando para poner el sensor en modo medida.
- Se espera a que el sensor realice la medida
- Le pregunta el valor del eje requerido por el usuario
- El acelermetro se pasa a modo deteccin de golpes.

Tabla 49. Valores de la variable de entrada SEN_CHECK_ACCE
Define Valor
ACCE_CHECK_X 0
ACCE_CHECK_Y 1
ACCE_CHECK_Z 2


unsigned char SEN_ACCE_CHECK_TAP(void)

Variables de salida
SEN_ACCE_TAP Indica si se ha detectado uno o dos toques
Salida
1: Un toque
2: Dos toques

El acelermetro tiene la opcin de detectar golpes o doble golpes.

- El microcontrolador se comunica con el sensor a travs de la interface SPI.
- Le pregunta si ha habido interrupcin por golpe.
- Si no ha habido toque se retorna un 0.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 95 de 167



www.moway-robot.com
unsigned char SEN_LINE_DIG(unsigned char SEN_CHECK_LINE)

Variables de entrada
SEN_CHECK_LINE Indica que sensor se quiere leer
Salida
Indica el valor digital del sensor


La funcin SEN_LINE_DIG indica si los sensores estn sobre una superficie
oscura o no. Para ello se deben seguir los siguientes pasos:
- Se comprueba que sensor hay que mirar. Si no se corresponde con ningn valor
vlido de la variable la funcin termina con un 0.
- Se manda pulso de luz infrarroja para la deteccin de la lnea. Si se detecta, la
luz rebotar y esta seal ser captada por el receptor infrarrojo.
- Esperar el tiempo de adquisicin de datos (900us).
- Se lee el sensor requerido.
- .Si la superficie es oscura (la luz no se refleja) obtendremos un 1 en la salida.

Tabla 50. Valores de la variable de entrada SEN_CHECK_LINE
Define Valor
LINE_L 0
LINE_R 1


unsigned char SEN_LINE_ANALOG(unsigned char SEN_CHECK_LINE)

Variables de entrada
SEN_CHECK_LINE Indica que sensor se quiere leer
Salida
Indica el valor digital del sensor

La funcin SEN_LINE_ANALOG indica la luz que se ha reflejado en los
optoacopladores
23
. Para ello se deben seguir los siguientes pasos:

- Se comprueba que sensor hay que mirar. Si no se corresponde con ningn valor
vlido de la variable la funcin termina con un 0.
- Se manda pulso de luz infrarroja para la deteccin de la lnea. Si se detecta, la
luz rebotar y esta seal ser captada por el receptor infrarrojo.
- Esperar el tiempo de adquisicin de datos (900us).
- Se activa el ADC.
- Se lee el sensor requerido.
- Mover ese dato a la variable SEN_LINE. Cuanto ms alto sea este valor ms
oscura ser la superficie.


23
El valor del sensor analgico variar de un sensor a otro debido a la tolerancia del componente
electrnico.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 96 de 167



www.moway-robot.com
Tabla 51. Valores de la variable de entrada SEN_CHECK_LINE
Define Valor
LINE_L 0
LINE_R 1


void LED_BRAKE_ON(void)

Enciende el diodo LED de freno.

void LED_FRONT_ON(void)

Enciende el diodo LED frontal.

void LED_TOP_RED_ON(void)

Enciende el diodo LED superior rojo.

void LED_TOP_GREEN_ON(void)

Enciende el diodo LED superior verde.

void LED_BRAKE_OFF(void)

Apaga el diodo LED de freno.

void LED_FRONT_OFF(void)

Apaga el diodo LED frontal.

void LED_TOP_RED_OFF(void)

Apaga el diodo LED superior rojo.

void LED_TOP_GREEN_OFF(void)

Apaga el diodo LED superior verde.

void LED_BRAKE_ON_OFF(void)

Parpadeo del diodo LED de freno.

void LED_FRONT_ON_OFF(void)

Parpadeo del diodo LED frontal.





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 97 de 167



www.moway-robot.com
void LED_TOP_RED_ON_OFF(void)

Parpadeo del diodo LED superior rojo.

void LED_TOP_GREEN_ON_OFF(void)

Parpadeo del diodo LED superior verde.


6.4 Librera motores mOway C18
6.4.2.1 Descripcin

La librera contiene una serie de funciones encargadas de mandar comandos por
I2C al Sistema Motriz, que ser el encargado de controlar los motores dejando libre de
carga de trabajo al microcontrolador principal, pudiendo ste realizar otras tareas.

La comunicacin con el mdulo motor se realiza mediante el protocolo I2C. El
formato de las tramas I2C del Sistema Motriz se puede observar en las siguientes
figuras. Cada una de estas tramas tiene una duracin de 350us.

S
T
A
R
T
MOT_DIR
MOT_
COMAND
T
Y
P
E
R
L
MOT_VEL
S
E
N
T_DIST_ANG
S
T
O
P
_
W

Imagen 60. Formato de comandos: MOT_STR, MOT_CHA_VEL

S
T
A
R
T
MOT_
COMAND
T
Y
P
E
R
L
MOT_VEL
S
E
N
RAD/
CENWHEEL
S
T
O
P
T_DIST_ANG MOT_DIR
_
W
Imagen 61. Formato de comandos: MOT_CUR, MOT_ROT

S
T
A
R
T
S
T
O
P
COM_STOP/
RST_COM
MOT_DIR
_
W

Imagen 62. Formato de comandos: MOT_STOP, MOT_RST

S
T
A
R
T
S
T
O
P
MOT_STATUS_DATA_
0
MOT_DIR R
MOT_STATUS_DATA_
1

Imagen 63. Formato de comando: MOT_FDBCK



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 98 de 167



www.moway-robot.com
6.4.2.2 Funciones

En la librera lib_mot_moway existen una serie de funciones que estn orientadas
al control del sistema de motores de mOway.

A continuacin se dar una breve descripcin de cada una de ellas.

Tabla 52. Resumen de funciones en ensamblador de lib_mot_moway
Nombre Entrada Retorno Descripcin
void MOT_CONFIG(void)
- - Configuracin para la
comunicacin con los
motores
unsigned char MOT_STR(
unsigned char, unsigned char,
unsigned char, unsigned char)

MOT_VEL
FWDBACK
COMTYPE
MOT_T_DIST
0: Envo correcto
1: Envo incorrecto
2: Datos incorrectos
Comando para movimiento
en lnea recta
unsigned char MOT_CHA_VEL(
unsigned char, unsigned char,
unsigned char, unsigned char,
unsigned char)

MOT_VEL
FWDBACK
RL
COMTYPE
MOT_T_DIST
0: Envo correcto
1: Envo incorrecto
2: Datos incorrectos
Comando para cambiar la
velocidad de un motor
unsigned char MOT_ROT(
unsigned char, unsigned char,
unsigned char, unsigned char,
unsigned char, unsigned char)


MOT_VEL
FWDBACK
MOT_CENWHEEL
RL
COMTYPE
MOT_T_ANG
0: Envo correcto
1: Envo incorrecto
2: Datos incorrectos
Comando para realizar la
rotacin del robot
unsigned char MOT_CUR(
unsigned char, unsigned char,
unsigned char, unsigned char,
unsigned char, unsigned char)

MOT_VEL
FWDBACK
MOT_RAD
RL
COMTYPE
MOT_T_DIST
0: Envo correcto
1: Envo incorrecto
2: Datos incorrectos
Comando para realizar una
curva
unsigned char MOT_STOP(void)
0:Envo correcto
1: Envo incorrecto
Comando para detener el
robot
unsigned char MOT_RST(
unsigned char)

RST_COM 0: Envo correcto
1: Envo incorrecto
Comando para resetear las
variables temporales de
tiempo y distancia
unsigned char*
MOT_FDBCK(void)

0: Envo correcto
1: Envo incorrecto

Comando para ver el estado
de los motores


void MOT_CONFIG(void)

Esta funcin configura las entradas y salidas para que el microcontrolador pueda
comunicarse con el Sistema Motriz.

Tabla 53. Conexiones PIC-motores
Pin PIC I/O Sensor
PORTE
RE7 I Indica cundo el motor termina el comando
RE0 O SCL del protocolo I2C
RE1 O SDA del protocolo I2C



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 99 de 167



www.moway-robot.com
El puerto RE7 nos indica la finalizacin de un comando. Este puerto tiene la
etiqueta MOT_END en la librera.

Ejemplo:
//Recto adelante al 100% de velocidad 10 segundos (100ms x 100)
MOT_STR(100, FWD, TIME, 100);
//Hasta que el comando no termine no se hace nada
while(!input(MOT_END)){}


unsigned char MOT_STR(unsigned char MOT_VEL,unsigned char
FWDBACK,unsigned char COMTYPE, unsigned char MOT_T_DIST)

Entrada
MOT_VEL Velocidad deseada 0 100
FWDBACK Sentido de la marcha 1-FWD 0-BACK
COMTYPE Tipo de comando 1-TIME 0-DIST
MOT_T_DIST El valor de Tiempo
Distancia
0
0
255
255
Salida
0: Envo correcto 1: Envo incorrecto
2: Datos incorrectos

Comando para desplazamiento en lnea recta. Es necesario especificar velocidad,
sentido, tipo de comando y el tiempo o la distancia a recorrer. El tiempo tiene una
resolucin de 100ms y la distancia 1mm, y con un valor de 0 en MOT_T_DIST el
comando se mantendr hasta que no se especifique otra orden.

Ejemplo:
//Recto adelante al 100% de velocidad 10 segundos (100ms x 100)
MOT_STR(100, FWD, TIME, 100);

//Recto hacia atrs al 15% de velocidad 100mm (1mm x 100)
MOT_STR(15, BACK, DISTANCE, 100);

unsigned char MOT_CHA_VEL(unsigned char MOT_VEL,unsigned char
FWDBACK,unsigned char RL,unsigned char COMTYPE,unsigned char
MOT_T_DIST)

Entrada
MOT_VEL Velocidad deseada 0 100
FWDBACK Sentido de la marcha 1-FWD 0-BACK
RL Izquierda o derecha 1-RIGHT 0-LEFT
COMTYPE Tipo de comando 1-TIME 0-DIST
MOT_T_DIST El valor de Tiempo
Distancia
0
0
255
255
Salida
0: Envo correcto 1: Envo incorrecto
2: Datos incorrectos



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 100 de 167



www.moway-robot.com
Comando para cambiar la velocidad a uno de los dos motores. Es necesario
especificar velocidad, sentido, el motor, tipo de comando y el tiempo o la distancia a
recorrer. El tiempo tiene una resolucin de 100ms y la distancia 1mm, y con un valor de
0 en MOT_T_DIST el comando se mantendr hasta que no se especifique otra orden.

Ejemplo:
//Cambiar velocidad (80% adelante) al motor derecho durante 10 segundos
//(100ms x 100)
MOT_CHA_VEL(80, FWD, RIGHT, TIME, 100) ;

//Cambiar velocidad (20% atrs) al motor izquierdo y hacer una distancia de 100
//mm (1mm x 100)
MOT_CHA_VEL(20, BACK, LEFT, DISTANCE, 100) ;


unsigned char MOT_ROT(unsigned char MOT_VEL,unsigned char
FWDBACK,unsigned char MOT_CENWHEEL,unsigned char RL,unsigned char
COMTYPE,unsigned char MOT_T_ANG)

Entrada
MOT_VEL Velocidad deseada 0 100
FWDBACK Sentido de la marcha 1-FWD 0-BACK
MOT_CENWHEEL Sobre centro o rueda 1-CENT 0-WHEEL
RL Derecha o izquierda 1-RIGHT 0-LEFT
COMTYPE Tipo de comando 1-TIME 0-ANG
MOT_T_ANG El valor de Tiempo
ngulo
0
0
255
100
Salida
0: Envo correcto 1: Envo incorrecto
2: Datos incorrectos


Comando para hacer rotar a mOway. Es necesario especificar velocidad, sentido,
tipo de rotacin, el motor, tipo de comando y el tiempo o el ngulo a rotar. El tiempo
tiene una resolucin de 100ms, y con un valor de 0 en MOT_T_ANG el comando se
mantendr hasta que no se especifique otra orden.

En cuanto al ngulo, las siguientes ecuaciones muestran como calcular el valor de
MOT_T_ANG tiendo en cuenta el ngulo de rotacin deseado. Si la rotacin se produce
sobre una de las ruedas se obtiene ms resolucin. Por otro lado, hay que tener en
cuenta la inercia mecnica por lo que se aconseja reducir la velocidad para conseguir
una mayor precisin e iniciar el movimiento con el robot parado.


Ecuacin 4. MOT_T_ANG en rotacin sobre el centro
|
|
.
|

\
|
=
12
33 . 3
_ _
ngulo
round ANG T MOT




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 101 de 167



www.moway-robot.com
Ejemplo:
//Rotacin respecto al centro a la derecha al 80% de velocidad durante 10
// segundos (100ms x 100)
MOT_ROT(80, FWD, CENTER, RIGHT, TIME, 100) ;

//Rotacin respecto la rueda izquierda al 20% de velocidad 180
MOT_ROT(20, BACK, WHEEL, LEFT, ANGLE, 50) ;


unsigned char MOT_CUR(unsigned char MOT_VEL,unsigned char
FWDBACK,unsigned char MOT_RAD,unsigned char RL,unsigned char
COMTYPE, unsigned char MOT_T_DIST)

Entrada
MOT_VEL Velocidad deseada 0 100
FWDBACK Sentido de la marcha 1-FWD 0-BACK
MOT_RAD Radio 0 100
RL Derecha o izquierda 1-RIGHT 0-LEFT
COMTYPE Tipo de comando 1-TIME 0-DIST
MOT_T_DIST El valor de Tiempo
Distancia
0
0
255
255
Salida
0: Envo correcto 1: Envo incorrecto
2: Datos incorrectos

Comando para dar una curva. Es necesario especificar velocidad, sentido, radio,
direccin, tipo de comando y el tiempo o la distancia a recorrer. El radio es la velocidad
que se restar o se sumar a la velocidad global del robot. Esto es, si la velocidad
especificada es 50 y el radio 10, uno de los motores tendr 60 de velocidad y el otro 40.
Por lo tanto el radio tiene que cumplir la siguiente restriccin:

Ecuacin 5. Condicin 1 MOT_RAD
100 _ _ 0 s s RAD MOT VEL MOT

Ecuacin 6. Condicin 2 MOT_RAD
100 _ _ 0 s + s RAD MOT VEL MOT

El tiempo tiene una resolucin de 100ms y la distancia 1mm, y con un valor de 0
en MOT_T_ANG el comando se mantendr hasta que no se especifique otra orden. El
motor cuenta la distancia recorrida por el motor que est en el exterior de la curva.

Ejemplo:
//Curva a derechas al 50% con un radio de 10 durante 10 segundos
//(100ms x 100)
//VEL_I=60
//VEL_D=40
MOT_CUR(50, FWD, 10, RIGHT, TIME, 100) ;
//Curva a izquierdas al 80% con un radio de 15 durante 100mm



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 102 de 167



www.moway-robot.com
//(1mm x 100)
//VEL_I=95
//VEL_D=65
MOT_CUR(80, BACK, 15, LEFT, DISTANCE, 100) ;


unsigned char MOT_STOP(void)

Salida
0: Envo correcto 1: Envo incorrecto

Comando para parar el robot.

Ejemplo:
//Parar mOway
MOT_STOP() ;


unsigned char MOT_RST(unsigned char RST_COM)

Entrada
MOT_RST_COM El parmetro que se desea resetear RST_T
RST_DIST
RST_KM
Salida
0: Envo correcto 1: Envo incorrecto

Resetea las variables temporales internas de tiempo, distancia y cuentakilmetros
del motor.

Ejemplo:

//Reseteo del tiempo transcurrido
MOT_RST(RST_T);

//Reseteo de la distancia recorrida
MOT_RST(RST_D);


unsigned char* MOT_FDBCK(unsigned char STATUS_COM)

Entrada
STATUS_COM El parmetro que se desea consultar STATUS_T
STATUS_A
STATUS_V_R
STATUS_V_L
STATUS_D_R
STATUS_D_L
STATUS_KM



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 103 de 167



www.moway-robot.com
Salida
Puntero a vector de dos bytes.

Comando para conocer diversos parmetros del sistema motriz. Podemos
consultar el tiempo transcurrido, el ngulo (slo en el comando MOT_ROT), velocidad
de los dos motores, distancia recorrida por cada motor y el cuentakilmetros.

Esta funcin devuelve un puntero que apunta hacia un array de dos bytes. Todas
las peticiones menos STATUS_KM devuelven un byte
(MOT_FDBCK(STATUS_x)[0]) manteniendo MOT_FDBCK(STATUS_x)[1] al valor
0xFF. Estas dos variables se actualizan cada vez que se manda un comando nuevo (ej.
Se puede pedir el tiempo transcurrido desde el ltimo comando). Cuando se utilice
STATUS_KM hay que tener en cuenta los dos bytes. Este comando resulta muy til
para calcular la longitud de una lnea mientras el robot la sigue.

Tabla 54. Resolucin de los datos del motor
Parmetro Resolucin
STATUS_T
100ms/bit
STATUS_A
3.6/bit
STATUS_V_R
1%/bit
STATUS_V_L
1%/bit
STATUS_D_R
1mm/bit
STATUS_D_L
1mm/bit
STATUS_KM
1mm/bit


Ejemplo:
//Peticin de tiempo transcurrido desde el ltimo comando
char command_time;

command_time =MOT_FDBCK(STATUS_T)[0];
//Ej. Salida:
//MOT_FDBCK(STATUS_T)[0]=0x7F => Han transcurrido 12.7 segundos
//desde el ltimo comando
// MOT_FDBCK(STATUS_T)[1]=0xFF; => Dato no vlido


//Peticin de distancia recorrida por el motor derecho desde el ltimo comando
char mOway_km[2];
mOway_km[0]= MOT_FDBCK(STATUS_KM)[0];
mOway_km[1]= MOT_FDBCK(STATUS_KM)[1];

byte 1 byte 0
0x01 0x08
0000 0001 0000 0100
264



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 104 de 167



www.moway-robot.com
//Ej. Salida:
// mOway_km[0]=0x08
// mOway_km[1]=0x01;

6.4.3 Librera para el mdulo BZI -RF2GH4 en C18
6.4.3.1 Descripcin
Con esta librera es posible realizar fcilmente una comunicacin entre el robot y
el mdulo BZI-RF2GH4.

6.4.3.2 Funciones
La librera consta de nueve funciones que facilitarn bastante el trabajo a la hora
de desarrollar una aplicacin de comunicacin con los mdulos BZI-RF2GH4. A
continuacin se dar una breve descripcin de cada una de ellas.

Nombre Entrada Retorno Descripcin
void RF_CONFI G_SPI (void)
- - Configura las entradas y
salidas del microcontrolador
as como parmetros
necesarios para utilizar el
bus SPI.
void RF_I NT_EN(void)
- - Esta rutina habilita en el
microcontrolador la
interrupcin externa para el
mdulo de radio.
unsigned char RF_CONFI G(unsigned
char , unsigned char)
CHANNEL
ADDRESS
1: Configuracin
correcta
0: No configurado
Configura las entradas y
salidas del microcontrolador
as como parmetros del
mdulo de radio.
unsigned char RF_ON(void)

- 0: No conectado
1: Conectado
Activa el mdulo de
radiofrecuencia en modo
escucha.
unsigned char RF_OFF(void)
- 0: No desconectado
1: Desconectado
Desactiva el mdulo de
radiofrecuencia y lo deja en
modo de bajo consumo
unsigned char RF_SEND(unsigned
char, unsigned char )
RF_DIR_OUT
RF_DATA_OUT[]
0:Envo correcto
1:Ack no recibido
2: No enviado
Enva una trama de datos (8
Bytes) a la direccin
indicada.
unsigned char
RF_RECEI VE(unsigned char*,
unsigned char*)
RF_DIR_IN
RF_DATA_IN[]
0: Recepcin correcta
y nica
1: Recepcin correcta
y mltiple
2:No recepcin
Comprueba si se ha
producido una recepcin y
de ser as, recoge la trama.

Tabla 55. Resumen de las funciones en C18.


Distancia: 264*1mm
264mm



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 105 de 167



www.moway-robot.com
void RF_CONFIG_SPI(void)

La velocidad del SPI no debe superar los 8 Mhz. En la funcin se configuran los
diferentes parmetros del mdulo SPI y los pines del PIC.
PIN RF PIN PIC
SCK RC3
SDI RC5
SDO RC4

Tabla 56. Configuracin SPI puertos PIC

Ejemplo:
//Configurar mdulos SPI del PIC
RF_CONFIG_SPI();


unsigned char RF_CONFIG(unsigned char CHANNEL unsigned char
ADDRESS)

Variables de entrada
CHANNEL Canal a utilizar en la comunicacin. Debe ser un valor entre 0x00
y 0x7F (128 canales).
ADDRESS Direccin del dispositivo. Debe ser un valor entre 0x01 y 0xFE.
Salida
0: No configurado
1:Configurado correctamente

Esta funcin configura el transceptor habilitando su propia direccin de escucha y
la direccin de broadcast. A su vez configura otros parmetros como pines del PIC, el
canal, la velocidad de transmisin, la potencia de emisin, la longitud de la direccin, la
longitud del cdigo CRC, etc.
PIN RF PIN PIC
IRQ RB0
CSN RF2
CE RH4

Tabla 57. Configuracin mdulo RF puertos PIC

El canal debe ser comn a todos los mdulos que van a participar en la
comunicacin. El usuario puede elegir cualquier canal de los 128 disponibles. Sin
embargo, si en el entorno existe ms de una comunicacin entre mdulos en diferentes
canales, hay que dejar un espaciamiento de 2 entre los canales a utilizar para evitar
interferencias dejando as 32 canales tiles. Otra cuestin a tener en cuenta es la
existencia de otras tecnologas que utilizan la banda ISM 2.4GHz (Wifi, Bluetooth,etc.)
y que tambin pueden causar interferencias en alguno de los canales.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 106 de 167



www.moway-robot.com
2.4Ghz 2.401Ghz 2.402Ghz 2.403Ghz
...
2.405Ghz 2.404Ghz 2.525Ghz
Canal
0x01
Canal
0x04

Imagen 64 Canales RF

La direccin que se asigna a cada dispositivo debe ser unvoca dentro de cada
canal.
Si la comunicacin SPI del PIC est mal configurada, el conexionado se ha
realizado incorrectamente o en ausencia del mdulo, la salida de la funcin ser 0.
Ejemplo:
//Configurar mdulo RF (canal y direccin)
if(RF_CONFIG(0x40,0x01)==0){
//Mdulo no configurado
}

unsigned char RF_ON(void)

Salida
0: No configurado
1:Configurado correctamente

Esta rutina activa el mdulo de radio en modo escucha para poder recibir datos
y/o realizar envos de datos.
Es importante tener en cuenta que tras la llamada a esta rutina el mdulo necesita
2,5ms para estar listo.
Si la comunicacin SPI del PIC est mal configurada, el conexionado se ha
realizado incorrectamente o en ausencia del mdulo, la salida ser 0.
Ejemplo:
//Activar el mdulo RF
if(RF_ON()==0){
//Mdulo no inicializado
}


unsigned char RF_OFF(void)

Salida
0: No configurado
1:Configurado correctamente



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 107 de 167



www.moway-robot.com
Esta rutina desactiva el mdulo de radio dejndolo en modo de bajo consumo. No
borra la configuracin establecida.
Si la comunicacin SPI del PIC est mal configurada, el conexionado se ha
realizado incorrectamente o en ausencia del mdulo, la salida ser 0.

unsigned char RF_SEND(unsigned char RF_DIR_OUT, unsigned char
RF_DATA_OUT[])

Variables de entrada
RF_DIR_OUT Direccin a la que se quiere enviar los datos (1 byte).
RF_DATA_OUT[] Variables que van a ser transmitidas (8 bytes).
Variables de salida
0:Envo correcto
1:Ack no recibido
2: No enviado

Esta funcin enva 8 Bytes de datos a la direccin indicada informando de la
correcta recepcin en el destinatario. Tras su ejecucin el dispositivo volver al modo
de escucha.
Si un mensaje es enviado a la direccin 0x00, este ser recibido por todos los
mdulos que se encuentren en el mismo canal. Se debe tomar en cuenta que el mdulo
acepta el primer ACK que recibe, por lo tanto no tendremos la certeza de la llegada del
dato a todos los dispositivos.
Ejemplo:
static char data_out[8];
static char dir_out;
//-------------------------[Rutina de envio de datos]-----------------------------
ret=RF_SEND(dir_out,data_out);
if(ret==0){
//Envio realizado y ACK recibido
}
else if(ret==1){
//Envio realizado y ACK no recibido
}
else{
//Envio no realizado
}
//------------------------------------------------------------------------------------








Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 108 de 167



www.moway-robot.com
unsigned char RF_RECEIVE(unsigned char* RF_DI R_I N, unsigned char*
RF_DATA_I N)

Variables de salida
RF_DIR_IN* Direccin de quien ha enviado la trama
RF_DATA_IN* Trama recibida desde la direccin indicada.
0: Recepcin correcta y nica
1: Recepcin correcta y mltiple
2: No recepcin

Esta rutina se encarga de comprobar si se ha producido una recepcin y de ser as,
devuelve los datos recibidos. Asimismo, informa si quedan datos sin leer en la FIFO de
recepcin del mdulo.
Si se tiene una recepcin mltiple se debe llamar a la funcin RF_RECEIVE de
nuevo tras tratar los datos. El transceptor tiene una pila de tres niveles, por lo que si no
se llama a la funcin recibir antes de que se llene la pila, el dispositivo no podr recibir
ms datos.
Es recomendable utilizar esta funcin con interrupcin. Para evitar la prdida de
datos el usuario puede hacer que los emisores reenven la misma trama hasta que la
comunicacin haya sido correcta, pero en entornos con mucho trfico las colisiones
crecen exponencialmente aumentando considerablemente los tiempos de envo.
Ejemplo:
char data_in[8];
char data_in_dir;
//--------------[Rutina de recepcin con interrupcin]--------------------------
#pragma interrupt YourHighPriorityISRCode
void YourHighPriorityISRCode() {
RF_RECEIVE(&data_in_dir,&data_in[0]);
} //---------------------------------------------------------------------------------------


//--------------[Rutina de recepcin sin interrupcin]--------------------------
//Interrupcin del mdulo RF
while(1){

while(RF_RECEIVE(&data_in_dir,&data_in[0])!=2){
// Sustituir por cdigo necesario para tratar los datos
}
}
//----------------------------------------------------------------------------------------





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 109 de 167



www.moway-robot.com
void RF_INT_EN(void)

Esta rutina se encarga de habilitar la interrupcin externa del microcontrolador
(RB0) que utiliza el mdulo de RF en la recepcin de datos. Para ello se configura como
entrada el pin RB0. Aunque se puede manejar el mdulo sin interrupciones no se
garantiza el mnimo tiempo de respuesta.
Ejemplo:
//-----------[Rutina de configuracin y activacin con interrupcin]----------
//Habilitar interrupciones
RF_INT_EN();

6.4.3.3 Diagrama de flujo para envo y recepcin de
datos
Retorno
RF_SEND()
Definir
RF_DIR
Definir
RF_DATA
0
Envio realizado y
AKC recibido
Envio realizado y
AKC no recibido
Envio no realizado
y AKC no recibido
1
2
Diagrama 4. Envio de datos en C

RF_RECEIVE()
Interrupcin ext
Retorno
Tratar datos
1
Salir interrupcin
Diagrama 5. Recepcin con
interrupcin en C
Tratar datos
0
2





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 110 de 167



www.moway-robot.com
Retorno
Tratar datos
1
Salir recepcin
Diagrama 6. Recepcin sin
interrupcin en C
Tratar datos
0
2
RF_RECEIVE()




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 111 de 167



www.moway-robot.com
6.4.4 Librera para el mdulo de cmara en C18
6.4.4.1 Descripcin

Con esta librera es posible realizar el control del mdulo de cmara.
6.4.4.2 Funciones

La librera incluye las funciones necesarias para manejar el mdulo de cmara. A
continuacin se dar una breve descripcin de cada una de ellas.
Nombre Entrada Retorno Descripcin
void CAM_CONFI G(void)
- - Configura los parmetros del
mdulo SPI y los pines del
PIC, as como el controlador
de la cmara.
void CAM_SEND_COM (unsigned
char, unsigned char, unsigned char)
COMMAND
ADDRESS
DATA
- Enva un comando por SPI al
controlador de la cmara. Se
compone de 3 bytes.
void CAM_ON (void)
- - Activa la cmara.
void CAM_OFF (void)
- - Desactiva la cmara.
void CAM_CHN_SEL (unsigned char) CHANNEL
- Enva por SPI el comando de
cambio de canal de
transmisin al controlador.
void CAM _SPI _WRI TE (unsigned
char)
DATA
- Enva un byte por el puerto
SPI del microcontrolador.

Tabla 58. Resumen de las funciones en C18.



CAM_CONFIG

En la funcin se configuran los diferentes parmetros del mdulo SPI y los pines
del PIC. Tambin configura el puerto de entradas/salidas del controlador de la cmara.
Nota: la velocidad del SPI no debe superar los 8MHz.
PIN SPI PIN PIC
SCK RC3
SDI RC5
SDO RC4
IRQ RB0
CSN RF2
CE RH4

Tabla 59. Configuracin SPI puertos PIC





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 112 de 167



www.moway-robot.com
CAM_SEND_COM

Esta rutina enva un comando por SPI al controlador de la cmara. El formato del
comando consiste en tres bytes que especifican el tipo de comando (lectura o escritura),
el registro a leer o escribir, y los datos a escribir en dicho registro.

COMANDOS
COMMAND_CAM COM_WR para escribir registro
COM_RD para leer registro
ADDRESS_CAM IODIR_ADD para configurar entradas/salidas del puerto del
controlador de la cmara.
OLAT_ADD para cambiar el estado de las salidas del puerto
del controlador de la cmara
DATA_CAM Datos a escribir en el registro especificado en
ADDRESS_CAM


CAM_ON

Esta rutina enva por SPI el comando de activacin de la cmara al controlador. Es
un comando de escritura en el registro de las salidas del puerto del controlador. Los tres
bytes a enviar son:

BYTES
COMMAND_CAM COM_WR
ADDRESS_CAM OLAT_ADD
DATA_CAM 0x22



CAM_OFF

Esta rutina enva por SPI el comando de desactivacin de la cmara al
controlador. Es un comando de escritura en el registro de las salidas del puerto del
controlador. Los tres bytes a enviar son:

BYTES
COMMAND_CAM COM_WR
ADDRESS_CAM OLAT_ADD
DATA_CAM 0x00



CAM_CHN_SEL

Esta rutina enva por SPI el comando de cambio de canal de transmisin al
controlador. Es un comando de escritura en el registro de configuracin de
entrada/salida del puerto del controlador.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 113 de 167



www.moway-robot.com
Variables de entrada
CAM_CHANNEL Canal en el que transmitir la cmara. Debe ser un valor entre 1 y
4.


BYTES
COMMAND_CAM COM_WR
ADDRESS_CAM IODIR_ADD
DATA_CAM Canal 1: 0xD8
Canal 2: 0xD4
Canal 3: 0xCC
Canal 4: 0xDC


Ejemplo de activacin de la cmara:

// Configurar mdulo de cmara
CAM_CONFIG();

// Seleccionar canal 1 de transmisin
CAM_CHN_SEL(1);

// Encender cmara
CAM_ON();



CAM_SPI_WRITE

Enva un byte por SPI desde el microcontrolador.

Variables de entrada
DATA Byte a enviar por SPI






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 114 de 167



www.moway-robot.com
7. Programacin MowayWorld

La aplicacin MowayWorld permite disear programas por medio de diagramas
de flujo, con lo que se consigue programar el robot mOway de forma muy intuitiva.
Diferentes bloques o mdulos representan las funciones que controlan los sensores y
actuadores del robot. Estos mdulos son conectados mediante flechas para crear as el
programa deseado.

La mxima ventaja es que no se necesita ninguna nocin de programacin para
crear una aplicacin.

En resumen:
- La mejor manera para comenzar a trabajar con mOway rpidamente.
- La mejor manera para realizar tareas sencillas o de complejidad media.
- Cdigo generado optimizado en espacio y rendimiento.

7.1 Espacio de trabajo de MowayWorld

A continuacin se describe las diferentes zonas que componen el espacio de
trabajo del programa MowayWorld.
7.1.1 Barra de herramientas

La barra de tareas permite crear un nuevo proyecto, guardar el proyecto actual,
editar el diagrama de flujo, crear subrutinas y variables, programar el robot mOway,
cambiar el idioma de MowayWorld, etc.



Imagen 65. Barra de herramientas

7.1.2 Editor de diagramas de flujo

El editor de diagramas de flujo es el espacio en el que el programador coloca los
bloques que forman el programa y las flechas que los unen.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 115 de 167



www.moway-robot.com


Imagen 66. Editor de diagramas de flujo

7.1.3 Acciones

El men de Acciones permite elegir el mdulo para insertar en el diagrama de
flujo. Estn clasificados por el tipo de funcin que realizan.



Imagen 67. Men de Acciones

Para insertar un mdulo en el diagrama, simplemente hay que arrastrarlo hasta el
editor de diagramas y configurar dicho mdulo para que realice la funcin deseada. Los
mens con una flecha en la parte derecha incluyen submens con ms mdulos.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 116 de 167



www.moway-robot.com
7.1.4 Propiedades

Cuando se selecciona un bloque del diagrama, aparecer en la zona derecha del
espacio de trabajo una ventana de propiedades, que nos permitir cambiar la
configuracin de dicho mdulo de forma rpida.



Imagen 68. Propiedades del mdulo Recta
7.1.5 Lista de errores

Muestra los errores encontrados en el diagrama. Describe el error e indica en qu
diagrama se encuentra el error (en caso de que haya ms de un diagrama). Un diagrama
con errores no se programar en el robot.



Imagen 69. Ventana de errores



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 117 de 167



www.moway-robot.com
7.1.6 Flechas

El orden de ejecucin de los diferentes mdulos se define por medio de flechas.
Para unir dos bloques mediante una flecha hay que realizar los pasos siguientes:

- Se coloca el cursor sobre el primer bloque hasta que aparezcan las marcas
rojas.
- Se pincha sobre una de estas marcas.
- Despus se pincha sobre una de las marcas del bloque siguiente.



Imagen 70. Trazado de flechas

Para mayor facilidad a la hora de colocar las flechas es posible utilizar la
herramienta Conector de la barra de tareas.

NOTA: Con la herramienta Conector no es posible seleccionar los elementos
del diagrama. Para seleccionarlos, es necesario volver a la herramienta por defecto
Cursor.


Imagen 71. Iconos de las herramientas Cursor y Conector

Todos los bloques del diagrama tienen que tener al menos una flecha de entrada.
Adems tienen que tener una flecha de salida (dos flechas de salida si el bloque es
condicional).

Los bloques condicionales (de forma ovalada) tienen dos flechas de salida: una de
ellas es el camino que seguir el programa si la condicin del bloque es verdadera, y la
otra ser el camino del programa cuando la condicin del bloque sea falsa.

Al trazar las dos flechas de salida, la primera de ellas ser automticamente el
camino de la condicin verdadera (marca verde). La flecha restante ser el camino de la
condicin falsa (marca roja).




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 118 de 167



www.moway-robot.com
Si se quisiera crear un bucle, el proceso sera similar al anteriormente descrito,
pero pinchando la flecha en una marca del mismo bloque.



Imagen 72. Trazado de flechas para un bucle


El trazado de las flechas puede ser modificado arrastrando los puntos que
aparecen al situar el cursor sobre ellas.



Imagen 73. Modificar trazado

7.1.7 Cambio de idioma y actualizaciones

El idioma de MowayWorld puede ser cambiado mediante la barra de
herramientas, en Language.

As mismo, se puede comprobar si el software puede ser actualizado por medio de
la opcin Ayuda Comprobar actualizaciones.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 119 de 167



www.moway-robot.com
7.2 Primer programa en MowayWorld

Este primer programa bsico har que mOway evite los obstculos. Lo primero de
todo es salvar el proyecto con un nombre, como por ejemplo primer_proyecto.

1. Una vez creado el proyecto, se comienza el programa aadiendo un retardo de
dos segundos. Basta con arrastrar el mdulo de Pausa en el editor de diagramas,
seleccionando un valor constante de 2 segundos.

2. Se aade el parpadeo del LED verde, por medio del bloque Luces. A
continuacin se muestra la configuracin de los dos bloques:



Imagen 74. Configuracin Pausa y Luces


3. Se aade el final de programa (mdulo Fin).

4. Se graba en el robot por medio del botn de Programar mOway de la barra de
herramientas, indicado con un crculo rojo en la imagen siguiente.

5. Probar el programa y comprobar que despus de esperar 2 segundos se enciende
el LED verde.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 120 de 167



www.moway-robot.com


Imagen 75. Diagrama de flujo y botn Programar mOway

6. Para detectar obstculos se inserta cuatro mdulos Sensores Obstculo y se
configuran para que cada uno compruebe uno de los cuatro sensores.




Imagen 76. Configuracin Chequear obstculos

7. Los mdulos de condicin tienen una salida verdadera y otra falsa. Si se detecta
el obstculo, la condicin es verdadera (marca verde) y el LED correspondiente
debe encenderse. Si no hay obstculo, la condicin es falsa (marca roja) el LED
se apagara. El encendido y apagado debe realizarse con los mdulos Luces.

8. Probar el programa y comprobar que los LED delanteros se encienden cuando se
detecta un obstculo.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 121 de 167



www.moway-robot.com


Imagen 77. Primer programa en MowayWorld: deteccin de obstculos

9. Aadimos movimiento al robot con mdulos Acciones de mOway
Movimiento Recta, para que el robot avance recto indefinidamente hasta que
encuentre un obstculo.

10. Cuando encuentra obstculo se manda un comando para que realice una rotacin
de 180 (Acciones de mOway Movimiento Rotacin). El robot continuar
el movimiento recto cuando la rotacin termine.





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 122 de 167



www.moway-robot.com



Imagen 78. Configuracin de Movimiento y Rotacin





Imagen 79. Final de primer programa en MowayWorld



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 123 de 167



www.moway-robot.com
7.3 Mdulos
Los mdulos son las acciones o funciones que puede realizar el robot mOway:
moverse, leer los sensores, encender los LEDs, transmitir mensajes por radiofrecuencia,
etc. Estos mdulos estn agrupados dependiendo del tipo de funcin que realizan y
pueden ser configurados de diversas formas.

A continuacin se describe cada uno de los mdulos incluidos en MowayWorld.

7.3.1 Acciones de Moway

Este grupo de funciones permite controlar los actuadores de mOway: motores,
altavoz y diodos LED. Estos mdulos disponen de la opcin Esperar lmite de
tiempo/distancia para continuar con el diagrama. Esta opcin hace que se est
ejecutando el comando actual (el programa no contina su ejecucin) hasta que la dicho
comando termina (bien por tiempo o por distancia). Si esta opcin no es seleccionada, el
comando seguir ejecutndose indefinidamente hasta que otra funcin anule el comando
actual.

- Movimiento Recto
El robot mOway dispone de dos motores, uno en cada rueda, lo que
le permite una gran flexibilidad a la hora de realizar movimientos. El
comando de movimiento recto hace que el robot pueda avanzar o
retroceder en lnea recta, pudiendo elegir su velocidad.



Imagen 80. Ventana de configuracin de Movimiento Recto



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 124 de 167



www.moway-robot.com

- Movimiento Libre
El movimiento libre es similar al anterior, con la diferencia de que
permite controlar las velocidades individuales de cada motor.



Imagen 81. Ventana de configuracin de Movimiento Libre


- Movimiento Curva
Con el mdulo de giro, el programa calcular la velocidad de los
motores para poder describir una curva sealando la velocidad y la curvatura
de giro.

Tambin podemos hacer uso de las limitaciones en tiempo y distancia.






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 125 de 167



www.moway-robot.com
Imagen 82. Ventana de configuracin de Movimiento Curva
- Movimiento Rotacin
El mdulo de rotacin hace que mOway rote bien sobre su centro o
sobre alguna de las dos ruedas. Podemos configurar el sentido de giro y la
velocidad de rotacin.



Imagen 83. Ventana de configuracin de Movimiento Rotacin


- Movimiento Parar
El mdulo de parar movimiento detiene los motores de mOway.

- Sonido Empezar
Esta funcin permite a mOway emitir sonidos desde 244 Hz hasta
16 KHz, al activar el altavoz interno del robot. Es posible elegir si estar
activo durante un tiempo determinado, o bien indefinido.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 126 de 167



www.moway-robot.com


Imagen 84. Ventana de configuracin de Sonido - Empezar


- Sonido Parar
Detiene el sonido del altavoz

- Luces
Este mdulo permite controlar los LEDs de mOway, de forma que
se puede encender, apagar o hacer parpadear. Se puede actuar sobre todos
los LEDs que el usuario necesite de forma simultnea.



Imagen 85. Ventana de configuracin de Luces



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 127 de 167



www.moway-robot.com
7.3.2 Lectura de sensores

Este grupo de funciones permiten obtener el valor de los sensores integrados en el
robot mOway. Son bloques condicionales, los cuales tienen dos posibles caminos de
salida: si la condicin impuesta en el bloque se cumple, el resultado es verdadero. Si
la condicin no se cumple, el resultado es falso. En el diagrama de flujo, la salida
verdadera del bloque condicional se identifica con una marca verde, mientras que la
salida falsa se identifica con una cruz roja.

- Obstculos
Este mdulo comprueba el valor digital de los sensores de obstculo. Cada sensor
permite cumplir alguna de las tres condiciones siguientes:

o deteccin de un obstculo
o no deteccin de obstculo
o no lectura de sensor

Por otra parte, se puede elegir entre realizar una operacin AND u OR con las
condiciones anteriores. Si se elige la opcin AND se deben cumplir todas las
condiciones seleccionadas para que la salida del bloque condicional sea verdadera. Por
el contrario, si se elige la opcin OR, es suficiente con que una sola condicin se
cumpla para tener una salida verdadera.



Imagen 86. Ventana de configuracin de Lectura de sensores Obstculos





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 128 de 167



www.moway-robot.com
- Lnea
Este mdulo comprueba el valor digital de los sensores de lnea. Esta funcin se
emplea para hacer que mOway siga una lnea (negra o blanca) en el suelo, detectar
lmites de terreno, etc.

Cada sensor permite cumplir alguna de las tres condiciones siguientes:

o deteccin de lnea negra
o deteccin de lnea blanca
o no lectura de sensor

Del mismo modo que el bloque anterior (Lectura de sensores de obstculos),
permite las opciones AND y OR.



Imagen 87. Ventana de configuracin de Lectura de sensores Lnea


- Ruido
Este mdulo tiene un resultado verdadero si detecta un sonido
fuerte. No tiene ventana de configuracin.

- Golpe
Este mdulo tiene un resultado verdadero si detecta un golpe sobre
mOway. No tiene ventana de configuracin.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 129 de 167



www.moway-robot.com
7.3.3 Datos

Con este grupo de funciones es posible leer, escribir y modificar los datos que
proporciona el robot mOway. Estos datos pueden provenir de la lectura de los sensores
o de variables creadas por el usuario y almacenadas en la memoria de mOway.

Estos datos se almacenan en variables, las cuales son definidas por el usuario.
Para crear una nueva variable, se elige el men Variables de la barra de herramientas
y se selecciona Nueva variable. Se asigna un nombre y un valor inicial para ella.

Algunos de los bloques permiten crear estas variables directamente desde su
ventana de configuracin, para valores que puedan variar a lo largo del programa.

NOTA: Cada variable se almacena en un byte de memoria, por lo que su rango de
valores es de 0 como mnimo a 255 como mximo.

- Calcular
Se emplea para realizar operaciones aritmticas de sumar (+=) o
restar (-=) sobre una variable. El primer parmetro debe ser siempre una
variable y en l se almacenar el resultado de la operacin. El segundo
operando puede ser una constante o una variable.

- Reiniciar Datos de mOway
Este mdulo pone a cero los contadores almacenados de tiempo y
distancia. Permite seleccionar qu datos en concreto queremos reiniciar.

- Asignar variable
Este grupo de mdulos permiten asignar un valor a una variable creada por el
usuario. Este valor puede ser constante o bien el valor analgico de alguno de los
sensores.

o Valor: asigna a la variable un valor constante.

o Tiempo: asigna a la variable el tiempo transcurrido. El valor
tiene un rango de 0 a 255 dcimas de segundo.

o Velocidad: asigna a la variable la velocidad de uno de los
motores. El valor tiene un rango de 0 (motor parado) a 100
(velocidad mxima).

o Distancia: asigna a la variable la distancia recorrida por el
robot. El valor tiene un rango de 0 a 255 centmetros.

o ngulo: asigna a la variable el valor del ngulo girado por el
robot. El valor tiene un rango de 0 (correspondiente a 0



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 130 de 167



www.moway-robot.com
grados) a 100 (correspondiente a 360 grados).

o Luminosidad: asigna a la variable el valor del sensor de luz.
El valor tiene un rango de 0 (oscuridad) a 100 (luz).

o Lnea: asigna a la variable el valor de uno de los sensores de
lnea. El valor tiene un rango de 0 (correspondiente a blanco)
a 100 (correspondiente a negro).

o Obstculo: asigna a la variable el valor de uno de los
sensores de obstculo. El valor tiene un rango de 0 (no
deteccin) a 100 (obstculo muy cercano).

o Acelermetro: asigna a la variable el valor de uno de los ejes
del acelermetro. El valor tiene un rango de 0 (aceleracin
lmite negativa) a 255 (aceleracin lmite positiva). Para una
aceleracin nula, el valor es de 127 (la mitad del rango de
valores).

o Ruido: asigna a la variable el valor del micrfono del robot.
El valor tiene un rango de 0 (silencio) a 255 (ruido).

o Temperatura: asigna a la variable el valor de la temperatura
del robot. El valor tiene un rango de 0C a 255C.

o Batera: asigna a la variable el valor del nivel de batera del
robot. El valor tiene un rango de 0 a 100%.

- Comparar
Este grupo de mdulos permiten comparar un valor (bien sea constante o bien la
lectura de un sensor), con una constante o a una variable creada por el usuario. Los
operadores de comparacin son los siguientes: igual (==), diferente (<>), mayor (>),
mayor o igual (>=), menor (<), menor o igual (<=).

o Dato: compara una variable creada por el usuario.

o Tiempo: compara el valor tiempo transcurrido. El rango es
de 0.1 a 25.5 segundos.

o Velocidad: compara el valor de la velocidad de uno de los
motores. El rango es de 0 (motor parado) a 100 (velocidad
mxima).

o Distancia: compara el valor de la distancia recorrida por el
robot. El rango es de 0 a 255 centmetros.

o ngulo: compara el valor del ngulo girado por el robot. El



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 131 de 167



www.moway-robot.com
rango es de 0 a 360 grados.

o Luminosidad: compara el valor del sensor de luz. El rango
es de 0 (oscuridad) a 100 (luz).

o Lnea: compara el valor de uno de los sensores de lnea. El
rango es de 0 (correspondiente a blanco) a 100
(correspondiente a negro).

o Obstculo: compara el valor de uno de los sensores de
obstculo. El rango es de 0 (no deteccin) a 100 (obstculo
muy cercano).

o Acelermetro: asigna a la variable el valor de uno de los
ejes del acelermetro. El valor tiene un rango de -2g
(aceleracin lmite negativa) a 2g (aceleracin lmite
positiva). Para una aceleracin nula, el valor es de 0. (NOTA:
El valor g equivale a un valor de 9.81m/s
2
).

o Ruido: compara el valor del micrfono del robot. El rango es
de 0% (silencio) a 100% (ruido).

o Temperatura: compara el valor de la temperatura del robot.
El rango es de 0C a 255C.

o Batera: compara el nivel de batera del robot. El rango es de
0 a 100%.

7.3.4 Control de flujo

- Pausa
Permite realizar una pausa en el programa de una duracin mltiplo
de 0,05 segundos. El parmetro de pausa puede ser una constante o una
variable.

- Llamada a funcin

Este mdulo permite usar una funcin o subrutina creada por el
usuario. Ver captulo Subrutinas de este manual.


- Fin
Este mdulo determina el final del programa. Los programas que consisten
en un bucle que se repite indefinidamente no necesitan emplear este mdulo.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 132 de 167



www.moway-robot.com
7.3.5 Expansin

Este grupo de funciones permiten usar el conector de expansin de mOway, bien
sea para usar el mdulo RF u otros mdulos de expansin.

ATENCIN!
Slo los usuarios avanzados pueden usar la configuracin del mdulo IO. La
incorrecta conexin de elementos electrnicos en el conector de expansin puede causar
daos irreversibles en el robot.

- Mdulo IO Configurar
Este mdulo configura los terminales del conector de expansin
como entradas (Input) o salidas (Output), y les asigna un valor inicial en
caso de que sean salidas.



Imagen 88. Ventana de configuracin de Mdulo IO Configurar


- Mdulo IO Salida
Este mdulo activa (On), desactiva (Off) o conmuta los terminales configurados
como salidas del conector de expansin.

ATENCIN!
Slo se puede asignar un valor a los terminales configurados como
salida. Si se asignase un valor a los terminales configurados como
entradas, el circuito electrnico podra daarse.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 133 de 167



www.moway-robot.com


Imagen 89. Ventana de configuracin de Mdulo IO Salida


- Mdulo IO Entrada
Este mdulo comprueba el valor digital de uno de los 6 terminales
de entrada del conector de expansin. Compara si el estado de dicho
terminal es igual (==) o diferente (<>) a encendido (1) o apagado (0).

- Cmara Activar

Este mdulo activa la cmara de mOway y permite seleccionar el
canal de transmisin. Este canal debe ser el mismo que el del receptor
de vdeo.

- Cmara Detener

Este mdulo apaga la cmara.


- Comunicacin Empezar
Este mdulo configura el robot para establecer una comunicacin
por radiofrecuencia (RF). A la hora de activarlo debemos seleccionar qu
identificador usar el robot y en qu canal queremos que opere. Para que
dos mOways puedan comunicarse entre s deben estar funcionando en el
mismo canal y normalmente, cada uno tendr un identificador diferente.

Si la configuracin es correcta, la salida de este mdulo es verdadera. En la
imagen del lateral se muestra cmo colocar las flechas en este mdulo en el diagrama.




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 134 de 167



www.moway-robot.com


Imagen 90. Ventana de configuracin de Comunicacin Empezar



- Comunicacin Parar
Este mdulo detiene la comunicacin por RF. No tiene ventana de
configuracin.

- Comunicacin Enviar
Con este mdulo se puede transmitir una trama a una direccin
concreta. En la trama hay que indicar la direccin del receptor y los datos
a enviar, que pueden ser constantes o variables. Si el mensaje ha sido
recibido por el receptor, la salida es verdadera. De otro modo, la salida
es falsa.

Hay que recordar que previamente a este condicional, se tiene que configurar el
mdulo Comunicacin - Empezar. Los robots participantes en la comunicacin RF
tienen que tener el mismo canal y direcciones diferentes.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 135 de 167



www.moway-robot.com


Imagen 91. Ventana de configuracin de Comunicacin Enviar


- Comunicacin Recibir
Con este mdulo se puede recibir una trama desde una direccin
concreta. Hay que indicar por lo menos dos variables: una para recoger la
direccin de emisor y la otra para el dato. Si el mensaje enviado por el
transmisor ha sido recibido correctamente, la salida es verdadera. Si el
mensaje no ha sido recibido, la salida es falsa.

Hay que recordar que previamente a este condicional, se tiene que configurar el
mdulo Comunicacin - Empezar. Los robots participantes en la comunicacin RF
tienen que tener el mismo canal y direcciones diferentes.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 136 de 167



www.moway-robot.com


Imagen 92. Ventana de configuracin de Comunicacin Recibir



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 137 de 167



www.moway-robot.com
7.4 Variables

Una variable contiene un valor que puede cambiar a lo largo del programa, y es
almacenada en la memoria interna de mOway. Las variables permiten manejar datos del
programa, lo cual proporciona una mayor flexibilidad a la hora de desarrollar el
programa. Estos datos pueden ser los valores de los sensores del robot, mensajes
recibidos por radiofrecuencia, etc.

Estas variables pueden ser creadas desde ciertos mdulos, o tambin desde la
barra de tareas. Para crear una nueva variable, se elige el men Variables de la barra
de herramientas y se selecciona Nueva variable.

Se asigna un nombre y un valor inicial para ella. El nombre debe comenzar por
al menos una letra y no debe tener ms de 14 caracteres.



Imagen 93. Creacin de una nueva variable





Imagen 94. Creacin de una variable desde un mdulo




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 138 de 167



www.moway-robot.com
Las variables pueden ser editadas desde la barra de herramientas, en Variables
Variables.



Imagen 95. Ventana de Variables

7.5 Funciones / Subrutinas

Una funcin o subrutina es un programa, normalmente un diagrama pequeo, que
puede ser usado (llamado) por otro programa, por ejemplo, desde el diagrama principal.
A continuacin se muestra un ejemplo en el que se define un diagrama que encienda el
LED frontal, espere un segundo, apague el LED frontal y por ltimo espere otro
segundo.

Si este programa se define como una Funcin, puede ser llamado desde el
diagrama principal. Para crear una funcin nueva, se pulsa el icono + que se
encuentra en la zona superior del editor de diagramas y se le asigna un nombre (por
ejemplo, MyFunction). Aparecer una nueva pestaa MyFunction.




Imagen 96. Creacin de una funcin




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 139 de 167



www.moway-robot.com
El funcionamiento del LED explicado anteriormente se define en esta funcin de
usuario.



Imagen 97. Diagrama de MyFunction

Para regresar al diagrama principal, se pulsa sobre la pestaa Principal. Desde
este diagrama se puede llamar a la funcin MyFunction con el mdulo Control de
Flujo Llamada a Funcin. En este mdulo se selecciona la funcin MyFunction

En este ejemplo, la funcin se llama tres veces desde el diagrama principal. Por
tanto, el LED frontal parpadear tres veces.



Imagen 98. Llamada a funcin 3 veces desde el diagrama principal



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 140 de 167



www.moway-robot.com
8. Aplicaciones
8.1 Ventana de comunicaciones

La ventana de comunicaciones permite enviar y recibir comandos RF utilizando el
RFUSB conectado al ordenador. Para lanzar esta ventana hay que pulsar el icono
Comunicaciones.



Imagen 99. Icono Comunicaciones

La ventana de Comunicaciones aparecer en el lado derecho del espacio de
trabajo. Para empezar la comunicacin RF del dispositivo RFUSB, se configura el
RFUSB con direccin y canal (en este ejemplo 2 y 0), y se pulsa el botn Iniciar.



Imagen 100. Ventana Comunicaciones



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 141 de 167



www.moway-robot.com
Para enviar un mensaje desde el ordenador a mOway, se selecciona la direccin
del robot (en este ejemplo es 1), se cambia los datos a enviar (ordenados desde el
Dato 7 hasta el Dato 0) y se pulsa en botn Enviar. Si se selecciona 0 en la
Direccin de Moway el mensaje ser recibido por todos los robots al alcance.

Cuando el RFUSB recibe un mensaje desde un mOway, muestra la hora en la que
se ha recibido el mensaje y los datos del mismo con el siguiente formato:

- El nmero entre parntesis es la direccin del robot que ha enviado el
mensaje.

- El resto de nmeros son los datos enviados por el robot, ordenados desde
el Dato 7 hasta el Dato 0.


8.2 MowayCam

La aplicacin MowayCam permite mostrar en el PC las imgenes enviadas por el
mdulo de cmara Moway Camera Board y guardar capturas de dichas imgenes en
cualquier dispositivo de almacenamiento conectado al PC. Esta aplicacin se lanza
desde la pestaa Ver -> mOway Cam o desde el icono indicado:




Imagen 101. Acceso a MowayCam





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 142 de 167



www.moway-robot.com
Una vez pulsado el icono, aparecer el panel lateral de MowayCam.


Imagen 102. Panel de MowayCam

En esta ventana se muestra las imgenes de la cmara. Tambin permite habilitar
y deshabilitar la capturadora de vdeo y guardar dichas imgenes en el dispositivo de
almacenamiento que elija el usuario.
- Botn Actualizar: recarga en la lista los dispositivos de vdeo conectados
al ordenador. Dependiendo de la versin del driver, el receptor de vdeo de
Moway puede identificarse como Moway Videocap, STK1160
Grabber o USB2.0 ATV.
- Botn Iniciar: activa el receptor de vdeo Moway Camera Board.
- Botn Detener: desactiva el receptor de vdeo Moway Camera Board.
- Botn Capturar: guarda la imagen actual de la cmara en la ubicacin
especificada y con el nombre indicado.
IMPORTANTE: Una vez activada la captura de vdeo, NO DESCONECTAR el
receptor de vdeo Moway Camera Board del puerto USB del ordenador. Si se
desconectase mientras el receptor est activado, el ordenador podra reiniciarse. Para
desconectarlo, pulsar el botn Detener o cerrar el panel MowayCam.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 143 de 167



www.moway-robot.com
8.3 MowayRC

MowayRC es una aplicacin que permite controlar a mOway como si fuera un
dispositivo de radio control y monitorizar todos los sensores del robot. Es una
herramienta que se vale de los mdulos de RF BZI-RF2GH4 y del RFUSB muy til
para todos aquellos usuarios que quieran explorar el campo donde se desenvolver el
microbot.

El concepto de funcionamiento es el siguiente: la aplicacin transmite comandos
por USB al RFUSB y sta los transmite a mOway, que previamente ha sido grabado con
un programa que interpreta esos comandos (mOway_RC_Client incluido en mOway
Pack).

Moway
RFUsb
MOT_DIR
PC
R
F
USB
Moway_RC
Center.exe
Moway_RC
_Client .hex


Imagen 103. Diagrama mOway RC



Esta aplicacin se lanza desde la pestaa MowayRC -> Abrir o desde el icono
indicado:




Imagen 104. Acceso a Moway RC Center

Una vez iniciado el proceso, se preguntar al usuario si quiere programar el
mOway_RC_Client en el robot y la aplicacin mOwayRC comenzar. A continuacin
se describen las diferentes partes del programa.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 144 de 167



www.moway-robot.com

Imagen 105. Aplicacin mOway RC
8.3.1 Configuracin
En esta parte se configura el mdulo RFUSB de mOway con la direccin por
defecto 2 y el canal de comunicaciones 0 (canal por defecto del programa de RC de
mOway).
Para evitar interferencias por WIFI, Bluetooth, Microondas, u otros mOways, se
puede cambiar el canal con el botn Cambiar canal. Para realizar el cambio de canal el
robot tiene que estar encendido y comunicndose con el RFUSB. Cada vez que se
desconecta el RFUSB el canal por defecto ser el 0.
El procedimiento recomendado a seguir es el siguiente:
1) Encender el robot
2) Conectar el RFUSB.
3) Probar el canal mandado comandos a mOway
4) Si el robot no responde bien cambiar el canal y probar de nuevo
En caso de que el robot no haya sido cargado con el mOway_RC_Client, se
puede reprogramar con el botn Programar mOway.

8.3.2 Movimiento
Una vez conectado el RFUSB podemos mandar comandos a mOway. Mediante
los botones podemos controlar los movimientos del robot, o desde el teclado (teclas W,
S, A, D). Tambin existen dos barras donde definir la velocidad y la curvatura de giro.
Se muestra la distancia recorrida por el robot, la cual puede ser reseteada al pulsar el
botn Resetear distancia.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 145 de 167



www.moway-robot.com

8.3.3 Luces
En este apartado se controla el encendido y apagado de los cuatro LEDs de
mOway.
8.3.4 Sonido
En este apartado se puede encender, apagar el speaker del robot a una
determinada frecuencia, as como realizar un pitido. Tambin es posible reproducir
notas musicales.

8.3.5 Estado de sensores

- Sensores de lnea: mayor valor cuanto ms oscura es la superficie.
- Ambiente de mOway: lecturas de luminosidad, temperatura y ruido detectados
por mOway.
- Obstculos: mayor valor cuanto ms cerca est el objeto.
- Aceleracin: lecturas de la aceleracin sobre los tres ejes de mOway.

8.3.6 Cmara
Permite activar la cmara de mOway en el canal seleccionado durante un mximo
de 15 segundos. Durante el tiempo de activacin de la cmara se detiene la
comunicacin con mOway, para evitar interferencias. Una vez finalizado este tiempo, la
comunicacin se restablece automticamente.

Para ver las imgenes de la cmara es necesario lanzar el panel de Cmara.

8.4 MowayServer

Gracias a esta aplicacin, el robot Moway puede ser controlado desde un telfono
mvil, una tableta o un ordenador, a travs de comunicacin WiFi. Estos dispositivos
pueden conectarse a la red creada por el robot Moway, al que previamente se ha
conectado el Mdulo Wifi
24
. Una vez conectados, el robot puede ser controlado desde
el explorador web del dispositivo.

La aplicacin se lanza desde la barra de herramientas.


24
Disponible segn pack



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 146 de 167



www.moway-robot.com


Imagen 106. Acceso a Moway Web Server

Aparece el panel lateral de Moway Server.



Imagen 107. Panel lateral de Moway Web Server

El procedimiento para poder comunicarse con el servidor web es el siguiente:

1) Seleccionar una IP (slo es modificable el ltimo campo) y pulsar el botn
Programar web server.

2) Despus de unos segundos, el robot crear una red Wifi adhoc con nombre
MowayNet***, siendo *** el nmero seleccionado para la IP en el paso
anterior.

3) Si se est usando el ordenador para acceder al servidor web, pulsar el botn



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 147 de 167



www.moway-robot.com
Moway web server para abrir el explorador web con la IP seleccionada. Si se
est usando otro dispositivo, abrir el explorador web e introducir la IP
seleccionada.

Una vez realizados los pasos anteriores, aparecer una pantalla como la mostrada
en la imagen siguiente, desde la cual se puede controlar el movimiento y luces de
mOway, as como leer ciertos sensores.



Imagen 108. Servidor web de mOway

NOTA: Dependiendo de la conexin wifi y del explorador web, tanto la conexin
a la red como el mostrado del servidor pueden tardar un tiempo.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 148 de 167



www.moway-robot.com
9. Simulador
9.1 I ntroduccin
El simulador de MowayWorld permite probar el funcionamiento de un programa
antes de grabarlo en el robot mOway. De esta forma se puede detectar los posibles
errores que haya en el programa y solucionarlos rpidamente.

El simulador se abre desde la barra de herramientas:



Imagen 109. Acceso al simulador

Al activar el simulador aparecer en el panel lateral:



Imagen 110. Panel lateral del simulador



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 149 de 167



www.moway-robot.com
Las acciones disponibles en simulador son las siguientes:

Ejecutar: En el modo Ejecutar, el simulador ejecuta el programa en
tiempo real, es decir, a la velocidad en la que el programa se ejecutara en
el robot.

Animar: En el modo Animar, el simulador ejecuta el programa paso a
paso, detenindose durante un segundo en cada bloque. El bloque que est
ejecutando el simulador en cada momento se indica con una flecha amarilla.

Pausa: Detiene la simulacin en el bloque actual.

Reiniciar: Al pulsar el botn de reinicio, la simulacin vuelve al estado
inicial, es decir, al principio del programa. Tambin se reinicia el valor de
las variables.

Paso a paso con funciones: En este modo, el simulador avanza por el
programa paso a paso, detenindose en cada bloque. Adems, avanza
tambin por los las funciones creadas por el usuario.

Paso a paso sin funciones: En este modo, el simulador avanza por el
programa paso a paso, detenindose en cada bloque. A diferencia del modo
anterior, el simulador no avanza por las funciones de usuario.

9.2 Funcionamiento

En el simulador, el usuario puede variar el valor de los sensores del mOway y ver
cmo esto afecta al funcionamiento del robot, en funcin del programa que est siendo
simulado.

Los apartados del robot que pueden visualizarse y controlarse en la simulacin
son los siguientes:

- Movimiento, luces y sonido: muestra el estado de los motores, el estado
de los LEDs y el altavoz de mOway.
o El giro de las ruedas se indica por medio de las flechas rojas.
Tambin se refleja la distancia recorrida por el robot.
o El sonido emitido por el robot se indica por medio del icono en
forma de altavoz. Cuando est verde se simula que mOway emite
un sonido. En rojo simula que el sonido se ha detenido.



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 150 de 167



www.moway-robot.com


- Sensores de lnea y obstculos: permite simular la variacin del valor de
los sensores de lnea y obstculos. El valor de los sensores del simulador
est definido segn el valor analgico de los sensores reales del robot. Por
tanto, los valores de los sensores simulados son los siguientes:



Sensores de lnea
Lnea a
simular
Valor del
sensor
Blanca De 0 a 20
Gris De 21 a 229
Negra De 230 a 255

Sensores de obstculos
Obstculo a
simular
Valor del
sensor
Obstculo no
detectado
De 0 a 127
Obstculo
detectado
De 128 a 255




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 151 de 167



www.moway-robot.com
- Entorno: permite simular la variacin del valor de los sensores de luz,
temperatura y el micrfono.



- Acelermetro: permite simular la variacin del valor del acelermetro, en
sus 3 ejes. El valor del acelermetro vara entre -2g y +2g, siendo g la
aceleracin de la gravedad (9,81m/s
2
). Por ejemplo, si queremos simular
que mOway se encuentra sobre una superficie plana, los valores seran los
siguientes:



Sensor de luz
Entorno a simular Valor del sensor
Oscuridad total 0
Luminosidad intensa 100

Sensor de ruido
Entorno a simular Valor del sensor
Silencio 0
Ruido intenso 100

Acelermetro
Eje del acelermetro Valor del
acelermetro (g)
Eje X 0
Eje Y 0
Eje Z 1.00




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 152 de 167



www.moway-robot.com
- Comunicaciones: permite simular el envo de datos por radiofrecuencia al
robot mOway, as como simular la recepcin de datos enviados por
mOway. En el apartado Datos del emisor se simula el envo de datos al
robot. En el apartado Datos de mOway se muestra los datos enviados
por el robot simulado.





- Registros: muestra un listado de las variables creadas en el programa con
su valor en cada momento.






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 153 de 167



www.moway-robot.com
9.3 Ejemplo de simulacin
En el siguiente ejemplo se muestra la simulacin de un programa en el que el
robot avanza recto durante 12 cm y despus enciende el LED frontal. Pulsando el botn
de Animar o Paso a paso, una flecha amarilla indica en qu punto del diagrama se
encuentra el simulador.




Mientras el simulador ejecuta el bloque Recta, se indica la direccin de giro de
las ruedas y se va incrementando la distancia recorrida.







Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 154 de 167



www.moway-robot.com
Una vez que el bloque Recta ha terminado (el robot habra recorrido 12 cm), el
simulador ejecuta el bloque Luces, en el que se enciende el LED frontal. Una vez
hecho esto, el simulador termina.






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 155 de 167



www.moway-robot.com
10. mOway Scratch
10.1 I ntroduccin

Ahora mOway es tambin compatible con Scratch. La comunicacin entre Scratch
y mOway es bidireccional, de modo que Scratch recibe el valor de los sensores de
mOway y a su vez mOway recibe comandos provenientes de Scratch. Para implementar
esta funcionalidad se hace uso de las conexiones mediante sockets de Scratch para
obtener datos de sensores remotos y de los comandos enviar a todos para enviar
rdenes a mOway. MowayWorld, en este caso, acta de pasarela de datos entre Scratch
y mOway.



La conexin entre mOway y Scratch se realiza a travs de los mdulos de
radiofrecuencia mOway y el mdulo RFUSB conectado al ordenador. Es por tanto
necesario tener el mdulo de radiofrecuencia colocado en la ranura de expansin
mOway y el mdulo RFUSB conectado a un puerto USB del ordenador.

10.2 I ntegracin en MowayWorld
La comunicacin mOway Scratch se activa en MowayWorld, abriendo el Men
Ver y seleccionando mOway Scratch.



Scratch


MowayWorld


Robot mOway





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 156 de 167



www.moway-robot.com
El botn Programar descarga el firmware necesario en mOway para que la
conexin con Scratch sea correcta. Para ello el robot mOway debe estar conectado a
travs del puerto USB. El firmware se grabar para funcionar en el canal seleccionado
en la caja canal. Una vez grabado el firmware con un canal determinado, ese canal
deber ser seleccionado a la hora de conectarnos a Scratch.

Para iniciar la comunicacin se pulsa el botn Conectar. El robot mOway
deber tener el firmware de Scratch previamente grabado, el mdulo RFUSB deber
estar conectado y Scratch abierto con alguno de los programas de ejemplo de mOway.

Una vez establecida la conexin desde Scratch es posible obtener los valores de
cualquiera de los sensores de mOway y es posible enviar rdenes a mOway para realizar
acciones de movimiento, encender o apagar LEDs y zumbador. Para configurar estas
acciones se hace uso de algunas variables dentro de Scratch.

Los comandos y actualizacin de datos enviados por Scratch se mostrarn en la
ventana Status.

10.3 Paso a paso

1. Conectar el mdulo RF al conector de expansin del robot mOway.


2. Conectar el RFUSB al ordenador.


3. Conectar el robot mOway al ordenador.

4. Abrir MowayWorld y lanzar el panel de Scratch, pulsando cualquiera de
los campos indicados en estas imgenes:





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 157 de 167



www.moway-robot.com
5. Pulsar el botn Programar en el panel lateral (no es necesario si el robot
ya ha sido programado previamente de esta forma).





6. Una vez programado correctamente, desconectar el robot mOway del
ordenador y encender el robot.


7. Abrir uno de los proyectos para mOway en Scratch. Se puede acceder a
estos proyectos a travs del men Inicio -> Todos los programas ->
mOway Pack v3 -> mOway Scratch projects. Por ejemplo, abrir el
proyecto moway_RC.sb.



8. Pulsar OK.





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 158 de 167



www.moway-robot.com
9. Una vez abierto el proyecto en Scratch, pulsar el botn Iniciar en el
panel de MowayWorld. El estado del panel de MowayWorld ser el
siguiente:



10. Volviendo a la ventana de Scratch se ver cmo varan los valores de los
sensores de mOway. Al pulsar los cursores del teclado (flechas), el robot
mOway se desplazar.

Si se quiere emplear varios robots en diferentes ordenadores, es necesario asignar
un canal diferente a cada robot para que no haya interferencias entre ellos. Para ello,
seguir los siguientes pasos:

1. Si la conexin con Scratch se ha iniciado, pulsar el botn Parar.






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 159 de 167



www.moway-robot.com
2. Asignar un canal diferente a cada robot en el panel lateral de
MowayWorld (en este caso, se elige el canal 4):


3. Reprogramar el robot pulsando en botn Programar.

4. Una vez programado correctamente, desconectar el robot mOway del
ordenador y encender el robot.

5. Pulsar el botn Iniciar.

10.4 Comandos y Sensores

A continuacin se presenta la relacin de acciones disponibles para ejecutar desde
el entorno Scratch y las variables que configuran cada accin. El envo de comandos a
mOway se realiza empleando el bloque de control enviar a todos:



Por ejemplo, el mensaje rotacionizquierda realizara una rotacin hacia la izquierda.

Comando Descripcin
Variables
empleadas
adelante
mOway avanza recto a una velocidad determinada
durante la distancia distancia o el tiempo
tiempo. Si tiempo y distancia son iguales a
cero, mOway avanzar indefinidamente

detener mOway se detiene -
atrs
mOway retrocede recto. Su comportamiento es
idntico a adelante, pero en sentido contrario




Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 160 de 167



www.moway-robot.com
adelanteizquierda
mOway avanza en una curva hacia la izquierda de
un radio determinado a una velocidad determinada
durante la distancia distancia o el tiempo
tiempo. Si tiempo y distancia son iguales a
cero, mOway avanzar indefinidamente

adelanteizquierda
mOway avanza en una curva hacia la derecha.
Idntico pero en direccin opuesta a goleft

atrasizquierda
mOway retrocede en una curva hacia la izquierda.
Idntico pero en sentido opuesto a
adelanteizquierda

atrasderecha
mOway retrocede en una curva hacia la derecha.
Idntico pero en sentido opuesto a
adelanteizquierda

rotacionizquierda
mOway realiza una rotacin a una velocidad
determinada de un ngulo determinado hacia la
izquierda, sobre su eje o sobre una rueda. Si el
ngulo (rotacin) es igual a cero, la rotacin se
realiza de manera indefinida

rotacionderecha
mOway realiza una rotacin hacia la derecha.
Idntico a rotacionizquierda, pero en direccin
opuesta.

ledfrontalon Activa el LED frontal -
ledfrontaloff Desactiva el LED frontal -
ledfrenoon Activa el LED de freno -
ledfrenooff Desactiva el LED de freno -
ledverdeon Activa el LED verde superior -
ledverdeoff Desactiva el LED verde inferior -
ledrojoon Activa el LED rojo superior -
ledrojooff Desactiva el LED rojo superior -
sonidoempezar
Activa el altavoz con un sonido a una frecuencia
determinada
sonidodetener Desactiva el zumbador -
resetcontador
Resetea el contador de distancia total de los
motores
-






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 161 de 167



www.moway-robot.com
En la siguiente tabla se muestran la relacin de variables con los valores que pueden
tomar para la correcta ejecucin de los comandos:

Variable Descripcin Rango de Valores
distancia Distancia a recorrer en mm 0 255 mm ( 0 25,5 cm )
frecuencia Frecuencia de la seal del altavoz 0 16000 Hz
radio Radio de curvatura 0- 100 (radius + speed < 100)
rotacion ngulo de rotacin en grados 0 360
eje-rotacion Eje de rotacin Wheel Sobre rueda
Cualquier valor Sobre centro
velocidad Velocidad de movimiento 30 -100 %
tiempo Tiempo de movimiento en
dcimas de segundos
0 255 (0 - 25,5 segundos)


En la siguiente tabla se muestran las variables de mOway que podemos leer en Scratch
utilizando el bloque valor del sensor.



Por ejemplo, el bloque anterior indicara el nivel de batera restante en mOway.

Variable Descripcin Rango de Valores
Obstaculos lateral
izquierdo
Sensor de obstculos izquierdo lateral
0 -255
Obstaculos central
izquierdo
Sensor de obstculos izquierdo
central
0-255
Obstaculos central
derecho
Sensor de obstculos derecho central
0-255
Obstaculos lateral
derecho
Sensor de obstculos derecho lateral
0-255
Linea izquierdo Sensor de lnea izquierdo
0 (blanco) 255 (negro)
Linea derecho Sensor de lnea derecho
0 (blanco) 255 (negro)
Luz Sensor de luz ambiente
0 100%
Distancia Contador de km en mm
-
Temperatura Temperatura en grados en el interior
de mOway
-20 C a 50C
Bateria Nivel de batera restante de mOway
0 - 100%



Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 162 de 167



www.moway-robot.com
Microfono Nivel de ruido ambiental
0- 255
Eje-X g Aceleracin en g en el eje X
-2.0 2.0 g
Eje-Y g Aceleracin en g en el eje Y
-2.0 2.0 g
Eje-Z g Aceleracin en g en el eje Z
-2.0 2.0 g
Motor Fin Sensor que se activa cuando el ltimo
comando enviado al motor ha
finalizado
0 - 1

10.5 Prcticas
Para entender mejor la integracin con mOway, dentro del instalador
MowayWorld se incluyen cinco prcticas de ejemplo. Por defecto se encuentran en la
siguiente carpeta: Archivos de Programa -> mOwayPack v3 -> mOway Robot ->
mOway Scratch projects. Tambin puede accederse desde el men Inicio -> Todos
los programas -> mOway Pack v3 -> mOway Scratch projects.

10.5.1 Figuras geomtricas
El siguiente programa de Scratch reproduce formas geomtricas. Los ejemplos
pueden encontrarse en la carpeta de los proyectos Scratch de mOway Pack, con el
nombre moway_cuadrado.sb y moway_triangulo.sb.

La figura geomtrica se determina variando el nmero de iteraciones (lados del
polgono), rotacion (ngulos de rotacin de mOway) y distancia (longitud del lado).
La misma figura geomtrica que se reproduce en Scratch la reproducir mOway en el
mundo real.





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 163 de 167



www.moway-robot.com
El resultado que se obtiene es que el robot traza un cuadrado. Se observa que el
cuentakilmetros de mOway marca aproximadamente (con un cierto margen de error)
los 200 mm x 4 lados recorridos por mOway.






Si se modifican la variable de rotacin a 120 y el nmero de iteraciones del
bloque repetir a 3, el resultado obtenido ser un tringulo equiltero.






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 164 de 167



www.moway-robot.com
10.5.2 Encerrado
El objetivo de esta prctica es que mOway avance hasta que se encuentre con una
lnea negra. El programa de la prctica est en la carpeta de los proyectos Scratch de
mOway Pack, con el nombre moway_encerrado.sb.

Cuando en alguno de los dos sensores de lnea detecta una lnea negra, mOway
retroceder un poco, dar la vuelta y continuar avanzando. De este modo mOway
quedar encerrado dentro de un contorno negro sobre un fondo blanco.



A su vez la deteccin tambin tendr su reflejo en Scratch. Cada vez que mOway
detecte una lnea negra, el objeto rotar y avisar de que ha detectado una lnea.







Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 165 de 167



www.moway-robot.com
10.5.3 MowayRC

La siguiente prctica acta como un radiocontrol de mOway empleando Scratch.
El programa puede encontrarse en la carpeta de los proyectos Scratch de mOway Pack,
con el nombre moway_RC_ES.sb.

Con las teclas de direccin controlamos el movimiento de mOway y con algunas
teclas adicionales activamos el LED frontal o el zumbador.





En el escenario observaremos los valores de los sensores de mOway en tiempo real.





Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 166 de 167



www.moway-robot.com
10.5.4 Acelermetro
En este prctica mOway actuar como si fuera un mando de una consola de
videojuegos, empleando el acelermetro. El programa puede encontrarse en la carpeta
de los proyectos Scratch de mOway Pack, con el nombre moway_acel.sb.

El objetivo es mantener a mOway dentro del cuadrado de la pantalla de Scratch.
Inclinando el mOway, el objeto de Scratch se desplazar por la pantalla. En el caso de
que el objeto toque el borde, el robot mOway activar el zumbador y el LED frontal.





Podemos modificar la prctica aadiendo ms obstculos y ms dificultad.






Ttulo: Manual Usuario
Rev: v3.0.4 Noviembre 2012
Pgina: 167 de 167



www.moway-robot.com