Vous êtes sur la page 1sur 177

MANUAL USUARIO

DE MOWAY

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 2 de 177

Copyright (c) 2013 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".

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 3 de 177

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
3.4 Mdulo Wifi ..................................................................................................... 28
3.4.2
Conexin al robot ........................................................................................ 28
3.4.3
Pila TCP/IP .................................................................................................. 29
3.4.4
Comunicacin SPI ....................................................................................... 29
3.4.5
Caractersticas tcnicas ................................................................................ 30
4. Primeros pasos ........................................................................................................ 32
4.1 Instalacin pack ................................................................................................ 32
4.2 Grabacin del robot .......................................................................................... 33
4.3 Instalacin RFUSB ........................................................................................... 33
4.4 Instalacin drivers mOway Camera Board ...................................................... 35
5. Programacin ensamblador .................................................................................... 36
Creacin de un proyecto ............................................................................................. 36
5.1 Primer programa en ensamblador..................................................................... 40
5.2 Libreras............................................................................................................ 44
5.2.2
Librera sensores mOway ensamblador ....................................................... 44
5.2.2.1 Descripcin .................................................................................................. 45

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 4 de 177

5.2.2.2 Variables ...................................................................................................... 45


5.2.2.3 Funciones ..................................................................................................... 48
5.2.3
Librera motores mOway ensamblador ....................................................... 58
5.2.3.1 Descripcin .................................................................................................. 59
5.2.3.2 Variables ...................................................................................................... 59
5.2.3.3 Funciones ..................................................................................................... 61
5.2.4
Librera para el mdulo BZI-RF2GH4 en ensamblador .............................. 69
5.2.4.1 Descripcin .................................................................................................. 69
5.2.4.2 Variables ...................................................................................................... 69
5.2.4.3 Funciones ..................................................................................................... 71
5.2.4.4 Diagrama de flujo para envo y recepcin de datos ..................................... 78
5.2.5
Librera para el mdulo Moway Camera Board en ensamblador ................ 79
5.2.5.1 Descripcin .................................................................................................. 79
5.2.5.2 Variables ...................................................................................................... 79
5.2.5.3 Funciones ..................................................................................................... 80
6. Programacin C ...................................................................................................... 83
6.1 Creacin de un proyecto ................................................................................... 83
6.2 Primer programa en C18 .................................................................................. 87
6.3 Libreras............................................................................................................ 91
6.3.2
Librera sensores mOway en C para C18 .................................................... 91
6.3.2.1 Descripcin .................................................................................................. 91
6.3.2.2 Funciones ..................................................................................................... 92
6.4 Librera motores mOway C18 ........................................................................ 101
6.4.2.1 Descripcin ................................................................................................ 101
6.4.2.2 Funciones ................................................................................................... 102
6.4.3
Librera para el mdulo BZI-RF2GH4 en C18.......................................... 108
6.4.3.1 Descripcin ................................................................................................ 108
6.4.3.2 Funciones ................................................................................................... 108
6.4.3.3 Diagrama de flujo para envo y recepcin de datos ................................... 113
6.4.4
Librera para el mdulo de cmara en C18 ................................................ 115
6.4.4.1 Descripcin ................................................................................................ 115
6.4.4.2 Funciones ................................................................................................... 115
7. Programacin MowayWorld ................................................................................ 118
7.1 Espacio de trabajo de MowayWorld .............................................................. 118
7.1.1
Barra de herramientas ................................................................................ 118
7.1.2
Editor de diagramas de flujo ...................................................................... 118
7.1.3
Acciones .................................................................................................... 119
7.1.4
Propiedades ................................................................................................ 120
7.1.5
Lista de errores .......................................................................................... 120
7.1.6
Flechas ....................................................................................................... 121
7.1.7
Cambio de idioma y actualizaciones ......................................................... 122
7.2 Primer programa en MowayWorld ................................................................. 123
7.3 Mdulos .......................................................................................................... 127
7.3.1
Acciones de Moway .................................................................................. 127
7.3.2
Lectura de sensores .................................................................................... 131
7.3.3
Datos .......................................................................................................... 133
7.3.4
Control de flujo .......................................................................................... 135
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 5 de 177

7.3.5
Expansin .................................................................................................. 136
7.4 Variables ......................................................................................................... 141
7.5 Funciones / Subrutinas ................................................................................... 142
8. Aplicaciones ......................................................................................................... 144
8.1 Ventana de comunicaciones ........................................................................... 144
8.2 MowayCam .................................................................................................... 145
8.3 MowayRC ...................................................................................................... 147
8.3.1
Configuracin ............................................................................................ 148
8.3.2
Movimiento................................................................................................ 148
8.3.3
Luces .......................................................................................................... 149
8.3.4
Sonido ........................................................................................................ 149
8.3.5
Estado de sensores ..................................................................................... 149
8.3.6
Cmara ....................................................................................................... 149
8.4 MowayServer ................................................................................................. 149
9. Simulador ............................................................................................................. 152
9.1 Introduccin.................................................................................................... 152
9.2 Funcionamiento .............................................................................................. 153
9.3 Ejemplo de simulacin ................................................................................... 157
10.
mOway Scratch .............................................................................................. 159
10.1
Introduccin ............................................................................................... 159
10.2
Funcionamiento ......................................................................................... 159
10.3
Paso a paso ................................................................................................. 160
10.4
Comandos y Sensores ................................................................................ 164
10.5
Prcticas ..................................................................................................... 168
10.5.1 Movimiento por radiocontrol..................................................................... 168
10.5.2 LEDs por radiocontrol ............................................................................... 169
10.5.3 Sigue la lnea.............................................................................................. 170
Anexo I. mOway Scratch en euskera............................................................................ 172
11.1
Introduccin ............................................................................................... 172
11.2
Comandos y Sensores ................................................................................ 173

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 6 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 7 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 8 de 177

3. Robot mOway
En el interior de un mOway tenemos los siguientes elementos:

Procesador
Sistema motriz
Grupo de sensores e indicadores
Sistema de alimentacin
Engrane
Encoder
IR_

LINE_RX_R

RX
_R

MEDIDOR
BATERA

TEMP
MIC

IR_R

LED_
BRAKE

PIC16F687

X_ R
LINE_RX_R

FRON
T_LED

LINE_TX
LINE_RX_L

IR_R

IR_

PIC18f86j50

LED_
GREEN
LIGHT_
SEN
LED_
RED

X_ L

RX

LINE_TX

ACELE

M
O
T
O
R

FREE
PAD

E
X
P
A
N
S
I

Puente H

LED_
BRAKE

_L
SPEAKER

LINE_RX_R

LINE_TX

M
O
T
O
R

Encoder
Engrane

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
PORTA
RA0
RA1
RA2
RA3
RA5
PORTB
RB1

I/O

Sensor

I
I
I
I
I

Luz
Receptor central infrarrojo izquierdo
Receptor sensor lnea derecho
Receptor lateral infrarrojo izquierdo
Receptor sensor lnea izquierdo

Interrupcin 1 del acelermetro

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 9 de 177

RB2
RB3
RB5
RB6
PORTC
RC7
PORTD
RD1
RD4
RD5
RD6
RD7
PORTE
RE5
PORTF
RF5
RF6
PORTH
RH5
RH6
RH7
PORTJ
RJ6
RJ7

3.2

I
O
O
O

Interrupcin 2 del acelermetro


Altavoz
LED superior rojo
LED superior verde

LED frontal

O
I
O
O
I

Transmisor infrarrojo de lnea


Seal SDO para la comunicacin SPI del acelermetro
Seal SDI para la comunicacin SPI del acelermetro
Seal de reloj para la comunicacin SPI del acelermetro
Chip Select para la comunicacin SPI del acelermetro

LED de freno

I
I

Receptor lateral infrarrojo derecho


Receptor central infrarrojo derecho

I
I
I

Sensor de temperatura
Medidor de batera
Micrfono

O
I/O

Transmisor infrarrojo
Pad libre

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.
Engrane
Encoder
Sistema Motriz

LINE_RX_R

LINE_TX

M
O
T
O
R

PIC16F687

PUENTE H

LINE_RX_R

LINE_TX

M
O
T
O
R

Encoder
Engrane

Imagen 2. Sistema motriz: electrnica y mecnica

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 10 de 177

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.

Vcc=2.8V
Moway created by:
Iigo Sobradillo
Daniel del Rio
Javi Galvez
Juan Gil
Estibaliz Otero
Julen Gutierrez

PIC16F687

PWM

Puente H

Seal encoder
Vcc=2.8V
Moway created by:
Iigo Sobradillo
Daniel del Rio
Javi Galvez
Juan Gil
Estibaliz Otero
Julen Gutierrez

Encoder

Bloque electrnica

Bloque mecnico

Sistema Motriz
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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 11 de 177

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
RE1
I2C
RE7
I

3.3

Lnea Reloj del I2C


Lnea datos del I2C
Lnea indicadora de fin motor

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.

IR_

RX
_R

MEDIDOR
BATERA

TEMP
MIC

IR_R

LINE_RX_R

FRON
T_LED

LINE_TX
LINE_RX_L

IR_R

IR_

PIC18f86j50

X_ R
LED_
GREEN
LIGHT_
SEN
LED_
RED

X_ L

RX

ACELE
LED_
BRAKE
FREE
PAD

E
X
P
A
N
S
I

LED_
BRAKE

_L
SPEAKER

Imagen 4. Grupo sensores e indicadores

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 12 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 13 de 177

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 colores1.

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.

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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 14 de 177

Tabla 3. Conexiones Sensores de lnea-PIC

Pin PIC
PORTA
RA2
RA5
PORTD
RD1

I/O

Sensor
I
I

Receptor sensor lnea derecho


Receptor sensor lnea izquierdo

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.

Debido a tolerancias en el montaje de los componentes electrnicos, habr diferencias entre los
sensores en la deteccin de objetos a una misma distancia.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 15 de 177

Imagen 11. Sensor detector de obstculos


Tabla 4. Conexiones sensor antichoque-PIC

Pin PIC

I/O

PORTA
RA1
RA3
PORTF
RF5
RF6
PORTJ
RJ7

Sensor
I
I

Receptor central infrarrojo derecho


Receptor lateral infrarrojo izquierdo

I
I

Receptor lateral infrarrojo derecho


Receptor central infrarrojo izquierdo

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
PORTA
RA0

I/O

Sensor
I

Luz

Es fundamental apagar el LED bicolor en el momento que se desee hacer una lectura de la
intensidad de luz.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 16 de 177

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
Pin1
Pin2
Pin3
Pin4
Pin5
Pin6
Pin7
Pin8

I/O

PIC

O
O
I/O /PMD3/AN12/P3C
/C2INC
I/O/PMA5/AN7/C2INB
I/O /SCK1/SCL1
I/O /SDO1/C2OUT
I/O /SDI1/SDA1
I/O/INT

Vcc 3.3v
GND
RH4
RF2
RC3
RC5
RC4
RB0

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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 17 de 177

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 lectura4.
Tabla 7. Conexin PIC-sensor de temperatura

Pin PIC

I/O

PORTH
RH5

Sensor
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

PORTB
RB3

Sensor
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
PORTH
RH7

I/O

Sensor
I

Micrfono

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

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 18 de 177

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

Pin7
Pin8
Pin9
Pin12
Pin13
Pin14

PIC
I
I
I
I
O
O

RD7
RB1
RB2
RD4
RD5
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

PORTH
RH6

3.3.10

Sensor
I

Medidor de batera

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
PORTC
RC7

I/O

Sensor
O

LED frontal

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 19 de 177

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 luz5.
Tabla 13. Conexin PIC-Led superior

Pin PIC

I/O

PORTA
RA4
PORTB
RB6

Sensor
O

LED superior rojo

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
PORTE
RE5

I/O

Sensor
O

LED de freno

Es fundamental apagar el LED bicolor en el momento que se desee hacer una lectura de la
intensidad de luz.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 20 de 177

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 electrnicos6.
Tabla 15. Conexin PIC-pad libre

Pin PIC
PORTJ
RJ7

3.4

I/O

Sensor

I/O

Pad libre

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 robot7. 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
7

Slo para usuarios avanzados


Estos LEDs no pueden ser controlados por el usuario.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 21 de 177

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 apagar8.

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 RFUSB9.

Imagen 18. Mdulo RF

Estos mdulos se conectan a travs del conector de expansin y son fcilmente


manejables mediante MowayWorld.

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
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 22 de 177

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
Vdd
Vss
Tensin de entrada datos

Min
-0.3
-0.3

www.moway-robot.com

Max
3.6
0
5.25

Unidad
V
V
V

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 23 de 177

Tensin de salida datos


Potencia disipada
Temperatura de operacin
Temperatura de almacenaje

Vss-Vdd Vss-Vdd
60
-40
+85
-40
+125

V
mW
C
C

Tabla 17. Parmetros principales del mdulo BZI-RF2GH4

Parmetro
Tensin mnima de alimentacin
Tensin mxima de alimentacin
Potencia mxima de salida
Velocidad mxima de transmisin
Corriente en modo transmisin @ 0dbm potencia de salida
Corriente en modo recepcin @ 2000kbps
Corriente en modo Power Down
Frecuencia mxima del bus SPI
Rango de temperatura

Valor
1.9
3.6
0
2000
11.3
12.3
900
8
-40 a +85

Tabla 18. Pinout del mdulo BZI-RF2GH4

Pines
Vcc
Vss
CE
CSN
SCK
SDI
SDO
IRQ

Descripcin
Tensin de alimentacin del mdulo
GND
Chip Enable
Chip Select del SPI (Negado)
Reloj del bus SPI
Entrada de datos al mdulo RF del bus SPI (MOSI)
Salida de datos del mdulo RF del bus SPI (MISO)
Salida interrupcin (negado)

Imagen 20. Disposicin de componentes en la placa

www.moway-robot.com

Unidad
V
V
dBm
Kbps
mA
mA
nA
Mhz
C

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 24 de 177

3.6 Mdulo de cmara


El Mdulo de Cmara de mOway10 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 Board11.

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
11

Disponible segn pack


Disponible segn pack
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 25 de 177

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
Tensin mnima de alimentacin
Tensin mxima de alimentacin
Corriente en modo Power Down
Frecuencia mxima del bus SPI
Rango de temperatura
Tecnologa

Valor
1.9
3.6
1
10
-40 a +85
CMOS

Unidad
V
V
uA
Mhz
C
-

Max
5.5
0
125
700
+85
+125

Unidad
V
V
mA
mW
C
C

Tabla 20. Parmetros mximos

Parmetro
Vdd
Vss
Intensidad
Potencia disipada
Temperatura de operacin
Temperatura de almacenaje

Min
-0.3

-40
-40

Tabla 21. Patillaje del Mdulo de Cmara y del conector posterior

Pines
Vcc
Vss
CE
CS
SCK
SDI
SDO
IRQ

Descripcin
Tensin de alimentacin del mdulo
GND
Chip Enable
Chip Select del SPI
Reloj del bus SPI
Entrada de datos SPI (MOSI)
Salida de datos SPI (MISO)
Interrupcin SPI

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 26 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 27 de 177

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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 28 de 177

3.4 Mdulo Wifi


El Mdulo Wifi de mOway permite al robot crear una red inalmbrica (Wireless).
De este modo, podr comunicarse con dispositivos con tecnologa Wifi, como un
telfono, una tableta o un ordenador.
Este dispositivo permite desarrollar aplicaciones como la implementacin de un
servidor web en el robot mOway. Este servidor hace posible controlar el robot desde
dispositivos Wifi del usuario, as como recibir informacin del estado de los sensores de
mOway en dichos dispositivos.

Imagen 25. Mdulo Wifi y adaptador

Este mdulo se basa en el circuito integrado MRF24WB0MB de Microchip. Este


circuito integrado es un transceptor de radiofrecuencia de 2,4 GHz, diseado segn el
estndar IEEE 801.11b. El Mdulo Wifi de mOway incluye toda la circuitera necesaria
para que el usuario pueda emplear el mdulo sin tener que realizar ningn diseo
adicional.

3.4.2 Conexin al robot


Para poder conectar el Mdulo Wifi al robot mOway, es necesario colocar
previamente el adaptador en la ranura de expansin del robot. Una vez conectado el
adaptador, el Mdulo Wifi se conecta en cualquiera de los dos puertos del adaptador.

Imagen 26. Adaptador y Mdulo Wifi conectados

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 29 de 177

3.4.3 Pila TCP/IP


A nivel de programacin, el Mdulo Wifi se maneja por medio de la pila TCP/IP
desarrollada por Microchip. Proporciona las funciones necesarias para implementar el
protocolo de comunicacin TCP/IP para el mdulo MRF24WB0M, as como el control
del Mdulo Wifi desde el microcontrolador de mOway va SPI.
En la pgina web de mOway se puede descargar el proyecto del Servidor Web de
mOway en MPLAB, en el que se puede comprobar el uso de la pila TCP/IP de
Microchip y el control del mdulo a travs de SPI. La IP del Servidor Web de mOway
puede ser modificada en el archivo TCPIPConfig MRF24WB0M.h.
As mismo, se puede programar la aplicacin del Servidor Web de mOway desde
el software MowayWorld.

3.4.4 Comunicacin SPI


La comunicacin entre mOway y el Mdulo Wifi se realiza a travs del conector
de expansin del robot. Se trata de una comunicacin SPI de 4 lneas con interrupcin.
La frecuencia mxima del reloj SPI a la que puede funcionar el Mdulo Wifi es de 25
MHz.
La transmisin de datos desde el robot al Mdulo Wifi se inicia poniendo a nivel
bajo la patilla INT (patilla 8). Una vez enviados, la patilla INT vuelve al estado anterior
(nivel alto).
Para habilitar la transmisin de datos hacia el Mdulo Wifi, la patilla CS (patilla
4) debe conmutar (no puede mantenerse a nivel bajo continuamente). Un flanco de
bajada en CS indica el comienzo de la transmisin de datos. Un flanco de subida en CS
indica el final de dicha transmisin.
Tabla 22. Patillaje de Mdulo Wifi

Patilla
1
2
3
4
5
6
7
8

Nombre
+VCC
GND
RESET
CS
SCK
SDI
SDO
INT

www.moway-robot.com

Funcin
Alimentacin
Masa
Reset
SPI Chip Select
SPI Clock
SPI Data Input
SPI Data Output
SPI Interrupcin

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 30 de 177

3.4.5 Caractersticas tcnicas


El circuito integrado MRF24WB0MB es compatible con los estndares IEEE
802.11b/g/n. Soporta las siguientes encriptaciones de los estndares de seguridad de
802.1x, 802.1i:

WEP
WPA-PSK
WPA-2-PSK.

En cuanto a la compatibilidad electromagntica del dispositivo, est aprobada por


Estados Unidos (FCC), Canad (IC), Europa (ETSI) y Japn (ARIB).
La velocidad de transmisin puede configurarse a 1 Mbps o a 2 Mbps. El alcance
mximo del Mdulo Wifi es de 400 metros. A continuacin se muestra un diagrama con
el patrn de radiacin del Mdulo Wifi.

Imagen 27. Patrn de radiacin del Mdulo Wifi

Parmetros
Temperatura ambiente
Vdd

Tabla 23. Condiciones de funcionamiento recomendadas


Mnimo
Tpico
Mximo
-20
85
2.70
3.3
3.63

www.moway-robot.com

Unidades
C
Voltios

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 31 de 177

Tabla 24. Consumo de corriente (Condiciones nominales: 25C, VDD=3.3V)


Parmetros
Mnimo
Tpico
Mximo
Unidades
Modo RX
85
mA
Modo TX
154
mA
Modo Sleep
250
A
Modo Hibernate
< 0.1
A
Tabla 25. Caractersticas de recepcin
Parmetros
Mnimo
Tpico
Frecuencia
2412
Nivel de seal de entrada (1 Mbps)
-91
Nivel de seal de entrada (2 Mbps)
-88
-

Parmetros
Frecuencia
Potencia de salida media
Variacin media de la potencia

Mximo
2484
-4
-4

Tabla 26. Caractersticas de transmisin


Mnimo
Tpico
Mximo
2412
2484
+10
-0.5
+0.5

Imagen 28. Placa electrnica del Mdulo Wifi

www.moway-robot.com

Unidades
mA
dBm
dBm

Unidades
mA
dB
dB

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 32 de 177

4. Primeros pasos
4.1 Instalacin 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
RFUSB12 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 Board13


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

NOTA: Si durante la instalacin aparece un mensaje advertencia de seguridad,


instalar el driver de todos modos. El software de MowayWorld es seguro.

12
13
14

Disponible segn pack


Disponible segn pack
Disponible segn pack
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 33 de 177

Imagen 29. 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 Instalacin 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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 34 de 177

Imagen 30. Asistente instalacin driver Windows XP

Comenzar la instalacin.

Imagen 31. Instalacin driver Windows XP

Finalmente el asistente indicar que el hardware est instalado.

Imagen 32. Driver instalador Windows XP

Una vez finalizada la instalacin la gestin de este dispositivo se realiza desde la


ventana RF de MowayWorld.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 35 de 177

4.4 Instalacin drivers mOway Camera Board


Para visualizar las imgenes de la cmara de mOway es necesario conectar el
receptor de vdeo mOway Camera Board15 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.

15

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.

Disponible segn pack


www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 36 de 177

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 33. Project Wizard

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 37 de 177

1. El primer paso consiste en elegir el PIC instalado en mOway: PIC18F86J50 o


PIC18F87J50.

Imagen 34. Seleccin del PIC

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

Imagen 35. Seleccin de herramienta

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 38 de 177

3. En el paso tres se debe indicar la ubicacin del proyecto a crear.

Imagen 36. 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 37. Eleccin de libreras mOway

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 39 de 177

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

Imagen 38. 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 39. Creacin de .ASM

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 40 de 177

7. Por ltimo se aade el fichero fuente al proyecto accediendo a Project/Add Files to


Project

Imagen 40. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 41 de 177

Imagen 41. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 42 de 177

Imagen 42. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 43 de 177

Imagen 43. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 44 de 177

Imagen 44. 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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 45 de 177

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
Sin uso
-

Bit6
Sin uso
-

Bit5
Sin uso
-

Bit4
Sin uso
-

Bit3
Sin uso
-

Bit2
Sin uso
-

Bit1
Bit0
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
Sin uso
-

Bit6
Sin uso
-

Bit5
Sin uso
-

Bit4
Sin uso
-

Bit3
Sin uso
-

Bit2
Sin uso
-

www.moway-robot.com

Bit1
Bit0
TAP_TAP TAP

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 46 de 177

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 27. Valores admitidos para SEN_CHECK_OBS

Define
OBS_CENTER_L
OBS_SIDE_L
OBS_CENTER_R
OBS_SIDE_R

Valor
0
1
2
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 28. Valores admitidos para SEN_CHECK_ACCE

Define
ACCE_CHECK_X
ACCE_CHECK_Y
ACCE_CHECK_Z

Valor
0
1
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 29. Valores admitidos para SEN_CHECK_LINE

Define
LINE_L
LINE_R

Valor
0
1

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 47 de 177

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 30. Valores admitidos para SEN_SPEAKER_ON_OFF

Define
SPEAKER_OFF
SPEAKER_ON
SPEAKER_TIME

Valor
0
1
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).

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 48 de 177

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 31. Resumen de funciones en ensamblador
Nombre
Variable entrada
SEN_CONFIG

Variable salida
-

SEN_LIGHT

SEN_LIGHT_P

SEN_BATTERY

SEN_BATTERY_P

SEN_TEMPERATURE

SEN_TEMPERATURE_C

SEN_MIC_ANALOG

SEN_MIC

SEN_MIC_DIG

SEN_MIC

SEN_SPEAKER

SEN_SPEAKER_FREQ
SEN_SPEAKER_TIME
SEN_SPEAKER_ON_OFF

SEN_OBS_DIG

SEN_CHECK_OBS

SEN_OBS
SEN_STATUS

www.moway-robot.com

Descripcin
Configura para utilizar los
sensores.
Lee el valor del sensor de
luz .
Devuelve el nivel de
batera.
Detecta la temperatura en
C.
Detecta la intensidad con
la que le llega el sonido
Detecta si le llega sonido
o no.
Emite un tono de una
frecuencia comprendida
entre 250 Hz y 65 KHz,
con intervalos de 100 ms
Detecta la presencia de
obstculos.

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 49 de 177

SEN_OBS_ANALOG

SEN_CHECK_OBS

SEN_OBS
SEN_STATUS

SEN_ACCE_XYZ_READ

SEN_CHECK_ACCE

SEN_ACCE
SEN_STATUS

LED_BRAKE_ON

SEN_ACCE_TAP
SEN_STATUS
SEN_LINE
SEN_STATUS
SEN_LINE
SEN_STATUS
-

LED_FRONT_ON

LED_TOP_RED_ON

LED_TOP_GREEN_ON

LED_BRAKE _OFF

LED_FRONT_OFF

LED_TOP_RED_OFF

LED_TOP_GREEN_OFF

LED_BRAKE _ON_OFF

LED_FRONT_ON_OFF

LED_TOP_RED_ON_OFF

LED_TOP_GREEN_ON_OFF

SEN_ACCE_CHECK_TAP
SEN_LINE_DIG

SEN_CHECK_LINE

SEN_LINE_ANALOG

SEN_CHECK_LINE

Detecta la presencia de
obstculos, y la distancia
a los mismos.
Indica la aceleracin
sufrida en los ejes x,y,z
del robot.
Comprueba si el robot se
ha golpeado.
Detecta zona oscura
(lnea negra).
Detecta tonalidades en la
superficie.
Encendido del diodo LED
de freno.
Encendido del diodo LED
frontal.
Encendido del diodo LED
superior rojo.
Encendido del diodo LED
superior verde.
Apagado del diodo LED
de freno.
Apagado del diodo LED
frontal.
Apagado del diodo LED
superior rojo.
Apagado del diodo LED
superior verde.
Parpadeo del diodo LED
de freno.
Parpadeo del diodo LED
frontal.
Parpadeo del diodo LED
superior rojo.
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 32. Conexiones PIC-sensores

Pin PIC
PORTA
RA0
RA1
RA2
RA3
RA5
PORTB
RB1
RB2
RB3
RB5
RB6
PORTC
RC7
PORTD

I/O

Sensor

I
I
I
I
I

Luz
Receptor central infrarrojo izquierdo
Receptor sensor lnea derecho
Receptor lateral infrarrojo izquierdo
Receptor sensor lnea izquierdo

I
I
O
O
O

Interrupcin 1 del acelermetro


Interrupcin 2 del acelermetro
Altavoz
LED superior rojo
LED superior verde

LED frontal

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 50 de 177

RD1
RD4
RD5
RD6
RD7
PORTE
RE5
PORTF
RF5
RF6
PORTH
RH5
RH6
RH7
PORTJ
RJ6
RJ7

O
I
O
O
I

Transmisor infrarrojo de lnea


Seal SDO para la comunicacin SPI del acelermetro
Seal SDI para la comunicacin SPI del acelermetro
Seal de reloj para la comunicacin SPI del acelermetro
Chip Select para la comunicacin SPI del acelermetro

LED de freno

I
I

Receptor lateral infrarrojo derecho


Receptor central infrarrojo derecho

I
I
I

Sensor de temperatura
Medidor de batera
Micrfono

O
I/O

Transmisor infrarrojo
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


batera16. 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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 51 de 177

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 termistor17. 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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 52 de 177

Se copia el valor del receptor digital en la variable de salida SEN_MIC.

SEN_SPEAKER
Variables de entrada
SEN_SPEAKER_FREQ
SEN_SPEAKER_TIME
SEN_SPEAKER_ON_OFF

Frecuencia generadora del tono.


Tiempo que dura el tono.
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 33. Valores admitidos para SEN_SPEAKER_ON_OFF

Define
SPEAKER_OFF
SPEAKER_ON
SPEAKER_TIME

Valor
0
1
2

Tabla 34. Equivalencia valor SEN_SPEAKER_FREQ y frecuencia aplicada al zumbador


SEN_SPEAKER_FREQ

0
10
20
30
40
50
60
70
80
90
100
110
120
130
140

Frecuencia aplicada a zumbador


Hz
0,0000000
5681,8181818
2976,1904762
2016,1290323
1524,3902439
1225,4901961
1024,5901639
880,2816901
771,6049383
686,8131868
618,8118812
563,0630631
516,5289256
477,0992366
443,2624113

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 53 de 177

150
160
170
180
190
200
210
220
230
240
250
255

413,9072848
388,1987578
365,4970760
345,3038674
327,2251309
310,9452736
296,2085308
282,8054299
270,5627706
259,3360996
249,0039841
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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 54 de 177

Tabla 35. Valores de la variable de entrada SEN_CHECK_OBS

Define
OBS_CENTER_L
OBS_SIDE_L
OBS_CENTER_R
OBS_SIDE_R

Valor
0
1
2
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 36. Valores de la variable de entrada SEN_CHECK_OBS

Define
OBS_CENTER_L
OBS_SIDE_L
OBS_CENTER_R
OBS_SIDE_R

Valor
0
1
2
3

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 55 de 177

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 45. 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 37. Valores de la variable de entrada SEN_CHECK_ACCE

Define
ACCE_CHECK_X
ACCE_CHECK_Y
ACCE_CHECK_Z

Valor
0
1
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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 56 de 177

Bit7
Sin uso
-

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.
Bit6
Sin uso
-

Bit5
Sin uso
-

Bit4
Sin uso
-

Bit3
Sin uso
-

Bit2
Sin uso
-

Bit1
Bit0
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 38. Valores de la variable de entrada SEN_CHECK_LINE

Define
LINE_L
LINE_R

www.moway-robot.com

Valor
0
1

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 57 de 177

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


optoacopladores18. 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 39. Valores de la variable de entrada SEN_CHECK_LINE

Define
LINE_L
LINE_R

Valor
0
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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 58 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 59 de 177

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

_
W

MOT_DIR

MOT_
COMAND

T
Y
P
E

R
L

MOT_VEL

S
E
N

T_DIST_ANG

S
T
O
P

Imagen 46. Formato de comandos: MOT_STR, MOT_CHA_VEL

S
T
A
R
T

_
W

MOT_DIR

MOT_
COMAND

T
Y
P
E

R
L

MOT_VEL

S
E
N

RAD/
CENWHEEL

T_DIST_ANG

Imagen 47. Formato de comandos: MOT_CUR, MOT_ROT

S
T
A
R
T

MOT_DIR

_
W

S
T
O
P

COM_STOP/
RST_COM

Imagen 48. Formato de comandos: MOT_STOP, MOT_RST

S
T
A
R
T

MOT_DIR

MOT_STATUS_DATA_
0

MOT_STATUS_DATA_
1

S
T
O
P

Imagen 49. Formato de comando: MOT_FDBCK

5.2.3.2 Variables
MOT_STATUS
Registro que indica el estado del comando.
Bit7
Sin uso
-

Bit6
Sin uso
-

Bit5
Sin uso
-

Bit4
Sin uso
-

Bit3
Sin uso
-

Bit2
Sin uso
-

www.moway-robot.com

Bit1
Bit0
DMWRONG COMOK

S
T
O
P

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 60 de 177

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
Sin uso Sin uso Sin uso Sin uso Sin uso COMTYPE RL
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.

Bit0
FWDBACK

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 61 de 177

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 40. Resumen de funciones en ensamblador de lib_mot_moway
Nombre
Entrada
Retorno
MOT_CONFIG
MOT_STR

MOT_CHA_VEL

MOT_ROT

MOT_CUR

MOT_CHECK_END

MOT_VEL
MOT_T_DIST
MOT_CON
FWDBACK
COMTYPE
MOT_VEL
MOT_T_DIT

MOT_STATUS
COMOK
DWRONG

Descripcin
Configuracin
para
la
comunicacin
con
los
motores
Comando para movimiento
en lnea recta

MOT_STATUS
COMOK
DWRONG

Comando para cambiar la


velocidad de un motor

MOT_CON
FWDBACK
COMTYPE
RL
MOT_VEL
MOT_CENWHEEL
MOT_T_ANG

MOT_STATUS
COMOK
DWRONG

Comando para realizar la


rotacin del robot

MOT_CON
FWDBACK
COMTYPE
RL
MOT_VEL
MOT_RAD
MOT_T_DIST

MOT_STATUS
COMOK
DWRONG

Comando para realizar una


curva

MOT_CON
FWDBACK
COMTYPE
RL
-

Funcin que espera hasta la


finalizacin de comando

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 62 de 177

MOT_STOP
MOT_RST

MOT_RST_COM

MOT_FDBCK

STATUS_COM

MOT_STATUS
COMOK
DWRONG
MOT_STATUS
COMOK
DWRONG
MOT_STATUS_
DATA_0
MOT_STATUS_
DATA_1

Comando para detener el


robot
Comando para resetear las
variables temporales de
tiempo y distancia
Comando para ver el estado
de los motores

MOT_STATUS
COMOK
DWRONG

MOT_CONFIG
Esta funcin configura las entradas y salidas para que el microcontrolador pueda
comunicarse con el Sistema Motriz.
Tabla 41. Conexiones PIC-motores

Pin PIC
PORTE
RE7
RE0
RE1

I/O

Sensor
I Indica cundo el motor termina el comando
O SCL del protocolo I2C
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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 63 de 177

MOT_STR
Entrada
MOT_VEL
MOT_CON, FWDBACK
MOT_CON, COMTYPE
MOT_T_DIST

Velocidad deseada
Sentido de la marcha
Tipo de comando
El valor de Tiempo
Distancia

0
1-FWD
1-TIME
0
0

100
0-BACK
0-DIST
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
MOT_CON, FWDBACK
MOT_CON, RL
MOT_CON, COMTYPE
MOT_T_DIST

Velocidad deseada
Sentido de la marcha
Izquierda o derecha
Tipo de comando
El valor de Tiempo
Distancia

Variables de salida
FLAGS MOT_STATUS: COMOK y DWRONG

www.moway-robot.com

0
1-FWD
1-RIGHT
1-TIME
0
0

100
0-BACK
0-LEFT
0-DIST
255
255

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 64 de 177

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
MOT_CON, FWDBACK
MOT_CENWHEEL
MOT_CON, RL
MOT_CON, COMTYPE
MOT_T_ANG

Velocidad deseada
Sentido de la marcha
Sobre centro o rueda
Derecha o izquierda
Tipo de comando
El valor de Tiempo
ngulo

0
1-FWD
0x01-CE
1-RIGHT
1-TIME
0
0

100
0-BACK
0x00-WH
0-LEFT
0-ANG
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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 65 de 177

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

ngulo 3.33

MOT _ T _ ANG round


12

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
MOT_CON, FWDBACK
MOT_RAD
MOT_CON, RL
MOT_CON, COMTYPE
MOT_T_DIST

Velocidad deseada
Sentido de la marcha
Radio
Derecha o izquierda
Tipo de comando
El valor de Tiempo
Distancia

www.moway-robot.com

0
1-FWD
0
1-RIGHT
1-TIME
0
0

100
0-BACK
100
0-LEFT
0-DIST
255
255

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 66 de 177

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

0 MOT _ VEL MOT _ RAD 100

Ecuacin 3. Condicin 2 MOT_RAD

0 MOT _ VEL MOT _ RAD 100

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
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 67 de 177

bcf
bcf
bcf
call

MOT_CON,FWDBACK
MOT_CON,COMTYPE
MOT_CON,RL
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:

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 68 de 177

;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 42. Resolucin de los datos del motor

Parmetro
STATUS_T
STATUS_A
STATUS_V_R
STATUS_V_L
STATUS_D_R
STATUS_D_L
STATUS_KM

Resolucin
100ms/bit
3.6/bit
1%/bit
1%/bit
1mm/bit
1mm/bit
1mm/bit

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 69 de 177

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
byte 1
byte 0
call
MOT_FDBCK
0x01
0x08
;Ej. Salida:
0000 0001 0000 0100
;MOT_STATUS_DATA_0=0x08
264
;MOT_STATUS_DATA_1=0x01;
Distancia:
264*1mm
264mm

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
Sin uso
-

Bit6
Bit5
CONFIGOK OFFOK

Bit4
ONOK

Bit3
Bit2
Bit1
RCVNW RCVOK ACK

www.moway-robot.com

Bit0
SNDOK

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 70 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 71 de 177

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 43. Resumen de las funciones en ensamblador.

Funciones para el mdulo BZI-RF2GH4


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

19
20

El usuario puede cambiar estos pines modificando la librera donde se define el patillaje
dem.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 72 de 177

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
SCK
SDI
SDO

PIN PIC
RC3
RC5
RC4

Tabla 44. Configuracin SPI puertos PIC

RF_CONFIG
Variables de entrada
RF_DIR
RF_CHN

Direccin del dispositivo. Debe ser un valor entre 0x01 y 0xFE.


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
IRQ
CSN
CE

PIN PIC
RB0
RF2
RH4

Tabla 45. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 73 de 177

Canal
0x01

Canal
0x04

...

2.4Ghz

2.401Ghz

2.402Ghz

2.403Ghz

2.404Ghz

2.405Ghz

2.525Ghz

Imagen 50 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
movwf

0x40
RF_CHN

;Canal

call
btfss
nop

RF_CONFIG
RF_STATUS,CONFIGOK
;Mdulo no configurado

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 74 de 177

;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
RF_DATA_OUT_0
RF_DATA_OUT_7

Direccin a la que se quiere enviar los datos (1 byte).


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
movwf

0x02
RF_DIR_OUT

;Direccin del receptor

clrf

RF_DATA_OUT_0

;Datos a enviar

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 75 de 177

clrf
clrf
clrf
clrf
clrf
clrf
clrf

RF_DATA_OUT_1
RF_DATA_OUT_2
RF_DATA_OUT_3
RF_DATA_OUT_4
RF_DATA_OUT_5
RF_DATA_OUT_6
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
RF_DATA_IN_0
RF_DATA_IN_7
RCVOK y RCVNW

Direccin de quien ha enviado la trama


Trama recibida desde la direccin indicada.

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
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 76 de 177

btfsc
RF_STATUS,RCVNW
goto
RECIBIR
;-----------------------------------------------------------------------------

RF_RECEIVE_INT
Variables de salida
RF_DIR_IN
RF_DATA_IN_0
RF_DATA_IN_7
RCVOK, RCVNW

Direccin de quien ha enviado la trama


Trama recibida desde la direccin indicada.

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
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 77 de 177

;Configurar mdulos SPI del PIC


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

0x40
RF_CHN

;Canal

call
btfss
nop

RF_CONFIG
RF_STATUS,CONFIGOK
;Mdulo no configurado

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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 78 de 177

5.2.4.4 Diagrama de flujo para envo y recepcin de


datos
Interrupcin ext

Definir
RF_DIR

IRQ=1

RF_RECEIVE

RF_RECEIVE
_INT
Definir
RF_DATA

IRQ=0

RCVOK

RCVOK
RF_SEND

SNDOK

Envio no realizado

ACK no recibido

Tratar datos

Tratar datos

RCVNW
ACK

Envio realizado y
AKC recibido

Salir interrupcin

Diagrama 1. Envio de datos en


ensablador

Diagrama 2. Recepcin con


interrupcin en ensamblador

www.moway-robot.com

RCVNW

Salir recepcin

Diagrama 3. Recepcin sin


interrupcin en ensamblador

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 79 de 177

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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 80 de 177

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 46. Resumen de las funciones en ensamblador.

Funciones para el mdulo Moway Camera Board


Configura las entradas y salidas SPI del microcontrolador, as
CAM_CONFIG
como el puerto del controlador de la cmara.
Activa la cmara
CAM_ON
Desactiva la cmara
CAM_OFF
Selecciona el canal por el que va a transmitir la cmara al
CAM_CHN_SEL
receptor de vdeo.
Enva un comando (tipo de comando, registro y datos) al
CAM_SEND_COM
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 47. 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
ADDRESS_CAM

COM_WR para escribir registro


COM_RD para leer registro
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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 81 de 177

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
ADDRESS_CAM
DATA_CAM

COM_WR
OLAT_ADD
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
ADDRESS_CAM
DATA_CAM

COM_WR
OLAT_ADD
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
ADDRESS_CAM
DATA_CAM

COM_WR
IODIR_ADD
Canal 1: 0xD8
Canal 2: 0xD4
Canal 3: 0xCC
Canal 4: 0xDC

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 82 de 177

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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 83 de 177

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 51. Project Wizard

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 84 de 177

1. El primer paso consiste en elegir el PIC instalado en mOway: PIC18F86J50.

Imagen 52. Seleccin del PIC

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

Imagen 53. Seleccin de herramienta

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 85 de 177

3. En el paso tres se debe indicar la ubicacin del proyecto a crear.

Imagen 54. 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 55. Eleccin de libreras mOway con copia

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 86 de 177

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

Imagen 56. 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 57. Creacin de .c

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 87 de 177

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 58. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 88 de 177

Imagen 59. 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).

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 89 de 177

Imagen 60. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 90 de 177

Imagen 61. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 91 de 177

Imagen 62. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 92 de 177

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 48. Resumen de funciones en C
Nombre

Constantes
entrada

void SEN_CONFIGURAR(void)
unsigned char SEN_LIGHT(void)
unsigned char SEN_BATTERY(void)
unsigned char SEN_TEMPERATURE (void)
unsigned char SEN_MIC_ANALOG (void)
unsigned char SEN_MIC_DIG (void)
unsigned
char
SEN_SPEAKER(unsigned
unsigned char, unsigned char)

char,

unsigned char SEN_ACCE_XYZ_READ(unsigned char)


unsigned char SEN_ACCE_CHECK_TAP(void)
unsigned char SEN_OBS_DIG(unsigned char)

unsigned char SEN_OBS_ANALOG(unsigned char)

unsigned char SEN_LINE_DIG(unsigned char)


unsigned char SEN_LINE_ANALOG (unsigned char)
void LED_FRONT_ON(void)
void LED_BRAKE_ON(void)
void LED_TOP_RED_ON(void)
void LED_TOP_GREEN_ON(void)
void LED_FRONT _OFF(void)
void LED_BRAKE_OFF(void)
void LED_TOP_RED_OFF(void)
void LED_TOP_GREEN_OFF(void)
void LED_FRONT _ON_OFF(void)
void LED_BRAKE_ON_OFF(void)
void LED_TOP_RED_ON_OFF(void)
void LED_TOP_GREEN_ON_OFF(void)

Descripcin

Configura para utilizar los sensores

Lee el valor del sensor de luz

Lee el porcentaje de la batera

Lee la temperatura del interior del robot

Lee el valor analgico del micrfono

Lee el valor digital del micrfono

SPEAKER_OFF
SPEAKER_ON
SPEAKER_TIME
ACCE_CHECK_X
ACCE_CHECK_Y
ACCE_CHECK_Z
-

Controla el speaker.

OBS_SIDE_L
OBS_CENTER_L
OBS_CENTER_R
OBS_SIDE_R
OBS_SIDE_L
OBS_CENTER_L
OBS_CENTER_R
OBS_SIDE_R
LINE_R
LINE_L
LINE_R
LINE_L
-

Detecta la presencia de obstculos

Indica las aceleraciones que sufre el robot

Comprueba si ha habido golpe

Detecta distancia a obstculos

Detecta zona oscura (lnea negra)


Detecta tonalidades en la superficie
Encendido LED frontal

Encendido LED de freno

Encendido LED superior rojo

Encendido LED superior verde

Apagado LED frontal

Apagado LED de freno

Apagado LED superior rojo

Apagado LED superior verde

Parpadeo LED frontal

Parpadeo LED de freno

Parpadeo LED superior rojo

Parpadeo LED superior verde

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 93 de 177

Tabla 49. Conexiones PIC-sensores

Pin PIC
PORTA
RA0
RA1
RA2
RA3
RA5
PORTB
RB1
RB2
RB3
RB5
RB6
PORTC
RC7
PORTD
RD1
RD4
RD5
RD6
RD7
PORTE
RE5
PORTF
RF5
RF6
PORTH
RH5
RH6
RH7
PORTJ
RJ6
RJ7

I/O

Sensor

I
I
I
I
I

Luz
Receptor central infrarrojo izquierdo
Receptor sensor lnea derecho
Receptor lateral infrarrojo izquierdo
Receptor sensor lnea izquierdo

I
I
O
O
O

Interrupcin 1 del acelermetro


Interrupcin 2 del acelermetro
Altavoz
LED superior rojo
LED superior verde

LED frontal

O
I
O
O
I

Transmisor infrarrojo de lnea


Seal SDO para la comunicacin SPI del acelermetro
Seal SDI para la comunicacin SPI del acelermetro
Seal de reloj para la comunicacin SPI del acelermetro
Chip Select para la comunicacin SPI del acelermetro

LED de freno

I
I

Receptor lateral infrarrojo derecho


Receptor central infrarrojo derecho

I
I
I

Sensor de temperatura
Medidor de batera
Micrfono

O
I/O

Transmisor infrarrojo
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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 94 de 177

unsigned char SEN_BATTERY(void)


Salida
Porcentaje del nivel de batera

La funcin SEN_BATTERY captura el valor analgico que proviene de la


batera21. 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 termistor22. 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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 95 de 177

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,


SEN_SPEAKER_TIME, unsigned char SEN_SPEAKER_ON_OFF)

unsigned

char

Variables de entrada
SEN_SPEAKER_FREQ
SEN_SPEAKER_TIME
SEN_SPEAKER_ON_OFF

Frecuencia generadora del tono.


Tiempo que dura el tono en intervalos de 100ms
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 50. Valores admitidos para SEN_SPEAKER_ON_OFF

Define
SPEAKER_OFF
SPEAKER_ON
SPEAKER_TIME

Valor
0
1
2

Tabla 51. Equivalencia valor SEN_SPEAKER_FREQ y frecuencia aplicada a zumbador


SEN_SPEAKER_FREQ

0
10

Frecuencia aplicada a zumbador


Hz
0,0000000
5681,8181818

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 96 de 177

20
30
40
50
60
70
80
90
100
110
120
130
140
150
160
170
180
190
200
210
220
230
240
250,
255

2976,1904762
2016,1290323
1524,3902439
1225,4901961
1024,5901639
880,2816901
771,6049383
686,8131868
618,8118812
563,0630631
516,5289256
477,0992366
443,2624113
413,9072848
388,1987578
365,4970760
345,3038674
327,2251309
310,9452736
296,2085308
282,8054299
270,5627706
259,3360996
249,0039841
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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 97 de 177

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 52. Valores de la variable de entrada SEN_CHECK_OBS

Define
OBS_CENTER_L
OBS_SIDE_L
OBS_CENTER_R
OBS_SIDE_R

Valor
0
1
2
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 53. Valores de la variable de entrada SEN_CHECK_OBS

Define
OBS_CENTER_L
OBS_SIDE_L
OBS_CENTER_R
OBS_SIDE_R

Valor
0
1
2
3

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 98 de 177

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 63. 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 54. Valores de la variable de entrada SEN_CHECK_ACCE

Define
ACCE_CHECK_X
ACCE_CHECK_Y
ACCE_CHECK_Z

Valor
0
1
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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 99 de 177

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 55. Valores de la variable de entrada SEN_CHECK_LINE

Define
LINE_L
LINE_R

Valor
0
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


optoacopladores23. 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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 100 de 177

Tabla 56. Valores de la variable de entrada SEN_CHECK_LINE

Define
LINE_L
LINE_R

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.

www.moway-robot.com

Valor
0
1

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 101 de 177

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

_
W

MOT_
COMAND

T
Y
P
E

R
L

MOT_VEL

S
E
N

T_DIST_ANG

S
T
O
P

Imagen 64. Formato de comandos: MOT_STR, MOT_CHA_VEL

S
T
A
R
T

MOT_DIR

_
W

MOT_
COMAND

T
Y
P
E

R
L

MOT_VEL

S
E
N

RAD/
CENWHEEL

Imagen 65. Formato de comandos: MOT_CUR, MOT_ROT

S
T
A
R
T

MOT_DIR

_
W

S
T
O
P

COM_STOP/
RST_COM

Imagen 66. Formato de comandos: MOT_STOP, MOT_RST

S
T
A
R
T

MOT_DIR

MOT_STATUS_DATA_
0

MOT_STATUS_DATA_
1

S
T
O
P

Imagen 67. Formato de comando: MOT_FDBCK

www.moway-robot.com

T_DIST_ANG

S
T
O
P

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 102 de 177

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 57. Resumen de funciones en ensamblador de lib_mot_moway
Nombre
Entrada
Retorno
void MOT_CONFIG(void)

Descripcin
Configuracin
para
la
comunicacin
con
los
motores
Comando para movimiento
en lnea recta

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

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

0:Envo correcto
1: Envo incorrecto
0: Envo correcto
1: Envo incorrecto

Comando para detener el


robot
Comando para resetear las
variables temporales de
tiempo y distancia

0: Envo correcto
1: Envo incorrecto

Comando para ver el estado


de los motores

unsigned char MOT_STOP(void)


RST_COM

unsigned char MOT_RST(


unsigned char)
unsigned char*
MOT_FDBCK(void)

void MOT_CONFIG(void)
Esta funcin configura las entradas y salidas para que el microcontrolador pueda
comunicarse con el Sistema Motriz.
Tabla 58. Conexiones PIC-motores

Pin PIC
PORTE
RE7
RE0
RE1

I/O

Sensor
I Indica cundo el motor termina el comando
O SCL del protocolo I2C
O SDA del protocolo I2C

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 103 de 177

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


FWDBACK,unsigned char COMTYPE, unsigned char MOT_T_DIST)

char

Entrada
MOT_VEL
FWDBACK
COMTYPE
MOT_T_DIST

Velocidad deseada
Sentido de la marcha
Tipo de comando
El valor de Tiempo
Distancia

0
1-FWD
1-TIME
0
0

100
0-BACK
0-DIST
255
255

Salida
0: Envo correcto
2: Datos incorrectos

1: Envo incorrecto

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
FWDBACK
RL
COMTYPE
MOT_T_DIST

Velocidad deseada
Sentido de la marcha
Izquierda o derecha
Tipo de comando
El valor de Tiempo
Distancia

Salida
0: Envo correcto
2: Datos incorrectos

1: Envo incorrecto

www.moway-robot.com

0
1-FWD
1-RIGHT
1-TIME
0
0

100
0-BACK
0-LEFT
0-DIST
255
255

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 104 de 177

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
FWDBACK
MOT_CENWHEEL
RL
COMTYPE
MOT_T_ANG

Velocidad deseada
Sentido de la marcha
Sobre centro o rueda
Derecha o izquierda
Tipo de comando
El valor de Tiempo
ngulo

0
1-FWD
1-CENT
1-RIGHT
1-TIME
0
0

100
0-BACK
0-WHEEL
0-LEFT
0-ANG
255
100

Salida
0: Envo correcto
2: Datos incorrectos

1: Envo incorrecto

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

ngulo 3.33

MOT _ T _ ANG round


12

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 105 de 177

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


FWDBACK,unsigned char MOT_RAD,unsigned char RL,unsigned
COMTYPE, unsigned char MOT_T_DIST)

char
char

Entrada
MOT_VEL
FWDBACK
MOT_RAD
RL
COMTYPE
MOT_T_DIST

Velocidad deseada
Sentido de la marcha
Radio
Derecha o izquierda
Tipo de comando
El valor de Tiempo
Distancia

0
1-FWD
0
1-RIGHT
1-TIME
0
0

100
0-BACK
100
0-LEFT
0-DIST
255
255

Salida
0: Envo correcto
2: Datos incorrectos

1: Envo incorrecto

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

0 MOT _ VEL MOT _ RAD 100

Ecuacin 6. Condicin 2 MOT_RAD

0 MOT _ VEL MOT _ RAD 100

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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 106 de 177

//(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

www.moway-robot.com

STATUS_T
STATUS_A
STATUS_V_R
STATUS_V_L
STATUS_D_R
STATUS_D_L
STATUS_KM

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 107 de 177

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 59. Resolucin de los datos del motor

Parmetro
STATUS_T
STATUS_A
STATUS_V_R
STATUS_V_L
STATUS_D_R
STATUS_D_L
STATUS_KM

Resolucin
100ms/bit
3.6/bit
1%/bit
1%/bit
1mm/bit
1mm/bit
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
0x01
0000 0001
264

www.moway-robot.com

byte 0
0x08
0000 0100

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 108 de 177

//Ej. Salida:
// mOway_km[0]=0x08
// mOway_km[1]=0x01;

Distancia: 264*1mm
264mm

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
void RF_CONFIG_SPI(void)

void RF_INT_EN(void)

unsigned char RF_CONFIG(unsigned


char , unsigned char)

Entrada

Retorno

CHANNEL
ADDRESS

1: Configuracin
correcta
0: No configurado

unsigned char RF_ON(void)

0: No conectado
1: Conectado

unsigned char RF_OFF(void)

0: No desconectado
1: Desconectado

unsigned char RF_SEND(unsigned


char, unsigned char )
unsigned char
RF_RECEIVE(unsigned char*,
unsigned char*)

RF_DIR_OUT
RF_DATA_OUT[]
RF_DIR_IN
RF_DATA_IN[]

0:Envo correcto
1:Ack no recibido
2: No enviado
0: Recepcin correcta
y nica
1: Recepcin correcta
y mltiple
2:No recepcin

Tabla 60. Resumen de las funciones en C18.

www.moway-robot.com

Descripcin
Configura las entradas y
salidas del microcontrolador
as
como
parmetros
necesarios para utilizar el
bus SPI.
Esta rutina habilita en el
microcontrolador
la
interrupcin externa para el
mdulo de radio.
Configura las entradas y
salidas del microcontrolador
as como parmetros del
mdulo de radio.
Activa el mdulo de
radiofrecuencia en modo
escucha.
Desactiva el mdulo de
radiofrecuencia y lo deja en
modo de bajo consumo

Enva una trama de datos (8


Bytes) a la direccin
indicada.
Comprueba
si
se
ha
producido una recepcin y
de ser as, recoge la trama.

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 109 de 177

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
SCK
SDI
SDO

PIN PIC
RC3
RC5
RC4

Tabla 61. 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
ADDRESS

Canal a utilizar en la comunicacin. Debe ser un valor entre 0x00


y 0x7F (128 canales).
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
IRQ
CSN
CE

PIN PIC
RB0
RF2
RH4

Tabla 62. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 110 de 177

Canal
0x01

Canal
0x04

...

2.4Ghz

2.401Ghz

2.402Ghz

2.403Ghz

2.404Ghz

2.405Ghz

2.525Ghz

Imagen 68 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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 111 de 177

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
RF_DATA_OUT[]

Direccin a la que se quiere enviar los datos (1 byte).


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
}
//------------------------------------------------------------------------------------

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 112 de 177

unsigned char RF_RECEIVE(unsigned char* RF_DIR_IN, unsigned char*


RF_DATA_IN)
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
}
}
//----------------------------------------------------------------------------------------

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 113 de 177

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
Interrupcin ext

Definir
RF_DIR

RF_RECEIVE()

Definir
RF_DATA

Retorno

RF_SEND()

Retorno

Tratar datos

Tratar datos

1
Envio realizado y
AKC recibido

Envio realizado y
AKC no recibido

Salir interrupcin

Envio no realizado
y AKC no recibido

Diagrama 4. Envio de datos en C

Diagrama 5. Recepcin con


interrupcin en C

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 114 de 177

RF_RECEIVE()

Retorno

Tratar datos

Tratar datos

Salir recepcin

Diagrama 6. Recepcin sin


interrupcin en C

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 115 de 177

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
void CAM_CONFIG(void)

Entrada

Retorno

void CAM_SEND_COM (unsigned


char, unsigned char, unsigned char)
void CAM_ON (void)
void CAM_OFF (void)
void CAM_CHN_SEL (unsigned char)
void CAM _SPI_WRITE (unsigned
char)

COMMAND
ADDRESS
DATA

Descripcin
Configura los parmetros del
mdulo SPI y los pines del
PIC, as como el controlador
de la cmara.
Enva un comando por SPI al
controlador de la cmara. Se
compone de 3 bytes.

Activa la cmara.

Desactiva la cmara.

CHANNEL

DATA

Enva por SPI el comando de


cambio
de
canal
de
transmisin al controlador.
Enva un byte por el puerto
SPI del microcontrolador.

Tabla 63. 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
SCK
SDI
SDO
IRQ
CSN
CE

PIN PIC
RC3
RC5
RC4
RB0
RF2
RH4

Tabla 64. Configuracin SPI puertos PIC

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 116 de 177

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
ADDRESS_CAM

DATA_CAM

COM_WR para escribir registro


COM_RD para leer registro
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
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
ADDRESS_CAM
DATA_CAM

COM_WR
OLAT_ADD
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
ADDRESS_CAM
DATA_CAM

COM_WR
OLAT_ADD
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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 117 de 177

Variables de entrada
CAM_CHANNEL

Canal en el que transmitir la cmara. Debe ser un valor entre 1 y


4.

BYTES
COMMAND_CAM
ADDRESS_CAM
DATA_CAM

COM_WR
IODIR_ADD
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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 118 de 177

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 69. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 119 de 177

Imagen 70. 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 71. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 120 de 177

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 72. 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 73. Ventana de errores

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 121 de 177

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 74. 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 75. 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).

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 122 de 177

Si se quisiera crear un bucle, el proceso sera similar al anteriormente descrito,


pero pinchando la flecha en una marca del mismo bloque.

Imagen 76. 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 77. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 123 de 177

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 78. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 124 de 177

Imagen 79. 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 80. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 125 de 177

Imagen 81. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 126 de 177

Imagen 82. Configuracin de Movimiento y Rotacin

Imagen 83. Final de primer programa en MowayWorld

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 127 de 177

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 84. Ventana de configuracin de Movimiento Recto

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 128 de 177

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

Imagen 85. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 129 de 177

Imagen 86. 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 87. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 130 de 177

Imagen 88. 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 89. Ventana de configuracin de Luces

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 131 de 177

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 90. Ventana de configuracin de Lectura de sensores Obstculos

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 132 de 177

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 91. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 133 de 177

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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 134 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 135 de 177

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


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/s2).
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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 136 de 177

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 92. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 137 de 177

Imagen 93. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 138 de 177

Imagen 94. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 139 de 177

Imagen 95. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 140 de 177

Imagen 96. Ventana de configuracin de Comunicacin Recibir

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 141 de 177

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 97. Creacin de una nueva variable

Imagen 98. Creacin de una variable desde un mdulo

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 142 de 177

Las variables pueden ser editadas desde la barra de herramientas, en Variables


Variables.

Imagen 99. 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 100. Creacin de una funcin

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 143 de 177

El funcionamiento del LED explicado anteriormente se define en esta funcin de


usuario.

Imagen 101. 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 102. Llamada a funcin 3 veces desde el diagrama principal

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 144 de 177

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 103. 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 104. Ventana Comunicaciones

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 145 de 177

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 105. Acceso a MowayCam

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 146 de 177

Una vez pulsado el icono, aparecer el panel lateral de MowayCam.

Imagen 106. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 147 de 177

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).

R
F

PC
MOT_DIR
Moway_RC
Center.exe

Moway
USB

RFUsb

Moway_RC
_Client .hex

Imagen 107. Diagrama mOway RC

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

Imagen 108. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 148 de 177

Imagen 109. 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.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 149 de 177

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 Wifi24. 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


www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 150 de 177

Imagen 110. Acceso a Moway Web Server

Aparece el panel lateral de Moway Server.

Imagen 111. 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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 151 de 177

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 112. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 152 de 177

9. Simulador
9.1 Introduccin
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 113. Acceso al simulador

Al activar el simulador aparecer en el panel lateral:

Imagen 114. Panel lateral del simulador

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 153 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 154 de 177

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

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 155 de 177

Entorno: permite simular la variacin del valor de los sensores de luz,


temperatura y el micrfono.
Sensor de luz
Entorno a simular

Valor del sensor

Oscuridad total

Luminosidad intensa

100

Sensor de ruido
Entorno a simular

Valor del sensor

Silencio

Ruido intenso

100

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/s2). Por ejemplo, si queremos simular
que mOway se encuentra sobre una superficie plana, los valores seran los
siguientes:

Acelermetro
Eje del acelermetro

Valor del
acelermetro (g)

Eje X

Eje Y

Eje Z

1.00

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 156 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 157 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 158 de 177

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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 159 de 177

10.

mOway Scratch

10.1 Introduccin
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. La aplicacin mOway Scratch acta de pasarela de datos entre
Scratch y mOway.

mOway Scratch

Scratch

Robot 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 Funcionamiento
La comunicacin mOway Scratch se activa por medio de la aplicacin mOway
Scratch.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 160 de 177

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.
Para iniciar la comunicacin se pulsa el botn Conectar al canal . 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.

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 la aplicacin mOwayScratch:

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 161 de 177

5. Seleccionar el idioma en el que se van a realizar los programas de Scratch


(en este caso, Espaol):

6. Pulsar el botn Programar (no es necesario si el robot ya ha sido


programado previamente de esta forma).

7. Una vez programado correctamente, desconectar el robot mOway del


ordenador y encender el robot.

8. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 162 de 177

9. Pulsar OK.

10. Una vez abierto el proyecto en Scratch, pulsar el botn Conectar al


canal en la aplicacin. El estado del panel de la aplicacin ser el
siguiente:

11. 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.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 163 de 177

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 Desconectar.

2. Asignar un canal diferente a cada robot (en este caso, se elige el canal 4):

3. Reprogramar el robot pulsando en botn Programar.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 164 de 177

4. Una vez programado correctamente, desconectar el robot mOway del


ordenador y encender el robot.
5. Pulsar el botn Conectar al canal.

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 giro(izquierda) realizara un giro hacia la izquierda:

Comando
adelante
atras
izquierda
derecha
mediavuelta
parar
reset(distancia)

adelante(recto)

Descripcin
mOway avanaza recto de forma indefinida,
con una velocidad del 50%.
mOway retrocede recto de forma indefinida,
con una velocidad del 50%.
mOway realiza un giro de 90 hacia la
izquierda.
mOway realiza un giro de 90 hacia la
derecha.
mOway gira media vuelta.
mOway se detiene.
Resetea el contador de distancia total de los
motores.
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.

atras(recto)

mOway retrocede recto. Su comportamiento


es idntico a adelante, pero en sentido
contrario.

adelante(izquierda)

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.
www.moway-robot.com

Variables
empleadas
-

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 165 de 177

adelante(derecha)

mOway avanza en una curva hacia la derecha.


Idntico pero en direccin opuesta a
adelante(izquierda).

atras(izquierda)

mOway retrocede en una curva hacia la


izquierda. Idntico pero en sentido opuesto a
adelante(izquierda).

atras(derecha)

mOway retrocede en una curva hacia la


derecha. Idntico pero en sentido opuesto a
atras(izquierda).

giro(izquierda)

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.

giro(derecha)

mOway realiza una rotacin hacia la derecha.


Idntico a giro(izquierda), pero en direccin
opuesta.

ledfrontal(on)
ledfrontal(off)
ledfrontal(parpadeo)
ledfreno(on)
ledfreno(off)
ledfreno(parpadeo)
ledverde(on)
ledverde(off)
ledverde(parpadeo)
ledrojo(on)
ledrojo(off)
ledrojo(parpadeo)
leds(on)
leds(off)
leds(parpadeo)
sonido(on)
sonido(off)
melodia(carga)
melodia(fallo)
encerrado

Activa el LED frontal.


Desactiva el LED frontal.
Parpadea el LED frontal.
Activa el LED de freno
Desactiva el LED de freno
Parpadea el LED de freno.
Activa el LED verde superior
Desactiva el LED verde inferior
Parpadea el LED verde.
Activa el LED rojo superior
Desactiva el LED rojo superior
Parpadea el LED rojo superior.
Activa todos los LEDs.
Desactiva todos los LEDs.
Parpadea todos los LEDs.
Activa el altavoz con un sonido a una
frecuencia determinada.
Desactiva el altavoz.
Suena una meloda de a la carga.
Suena una meloda de fallo.
Subprograma para que mOway se quede
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 166 de 177

encerrado dentro de un crculo negro. Avanza


cuando est sobre una superficie blanca y
cuando llega a una lnea negra, da la vuelta.
Subprograma para detectar objetos. mOway
empujar
busca los objetos y los empuja.
Subprograma para que mOway expulse
defensor
objetos dentro de un crculo negro. Combina
los subprogramas encerrado y empujar.
Subprograma para seguir una lnea negra por
seguirlinea(izquierda)
el lado izquierdo.
Subprograma para seguir una lnea negra por
seguirlinea(derecha)
el lado derecho.

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 (radio + velocidad < 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
dcimas de segundos

en 0 255 (0 - 25,5 segundos)

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 167 de 177

En la siguiente tabla se muestran las variables de mOway que podemos leer en Scratch
utilizando el bloque valor del sensor. Por ejemplo, este bloque indicara el valor del
sensor de lnea derecho del robot:

Variable

Descripcin

Rango de Valores

Obstaculos lateral
izquierdo

Sensor de obstculos izquierdo lateral

0 (sin obstculo)
100 (obstculo muy cerca)

Obstaculos central
izquierdo

Sensor de obstculos izquierdo


central

0 (sin obstculo)
100 (obstculo muy cerca)

Obstaculos central
derecho

Sensor de obstculos derecho central

0 (sin obstculo)
100 (obstculo muy cerca)

Obstaculos lateral
derecho

Sensor de obstculos derecho lateral

0 (sin obstculo)
100 (obstculo muy cerca)

Linea izquierdo

Sensor de lnea izquierdo

0 (blanco) 100 (negro)

Linea derecho

Sensor de lnea derecho

0 (blanco) 100 (negro)

Luz(R)

Sensor de luz ambiente

0 100%

Distancia

Contador de km en mm

Microfono

Nivel de ruido ambiental

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

www.moway-robot.com

0- 100%

0-1

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 168 de 177

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
carpeta de proyectos de Scratch: Mis Proyectos -> mOway Robot -> Spanish.
Tambin puede accederse desde el men Inicio -> Todos los programas -> mOway
Pack v3 -> mOway Scratch projects.

10.5.1

Movimiento por radiocontrol

Cada vez que pulsamos una de las flechas del teclado, Scratch enviar un
comando de movimiento a mOway. Por ejemplo, al pulsar la flecha arriba, el
comando enviado es adelante. Esto hace que el robot avance. Si se pulsa la flecha
abajo, el robot se para.

De forma parecida, al pulsar las flechas derecha o izquierda, el robot gira 90


hacia el lugar correspondiente. En este caso, el robot de Scratch mostrar los giros del
robot real. Para ello, se usan los bloques girar 90 grados.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 169 de 177

Vers que el robot en Scratch copia los movimientos del robot real.

10.5.2

LEDs por radiocontrol

El programa consiste activar los LEDs cada vez que se pulse la tecla
correspondiente. Las flechas arriba y abajo controlan los LEDs frontal y de freno.
Las flechas izquierda y derecha controlan los LEDs verde y rojo.
Por ejemplo, al pulsar la tecla arriba, lo primero que se hace es
cambiar el dibujo del robot en el que el LED frontal est encendido.
Despus se enva al robot real el comando para encender el LED frontal.
Despus se enva el comando de apagar el LED de freno.

NOTA: En un principio, este ltimo comando no parece necesario, pero es til si


previamente hemos pulsado la flecha abajo y el LED de freno estaba encendido. De
este modo, nos aseguramos de que cada vez que pulsamos la flecas arriba o abajo,
queda encendido un solo LED.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 170 de 177

La parte del programa, que controla los LEDs rojo y verde, es muy similar a lo
explicado antes. Por ltimo, al pulsar la tecla espacio el dibujo del robot vuelve a ser
como el inicial y todos los LEDs del robot se apagan.

10.5.3

Sigue la lnea

En este ejercicio vamos a practicar los comandos de mOway de


seguirlinea(izquierda) y seguirlinea(derecha). Para ello necesitaremos utilizar una
pista en la que pintaremos una lnea negra sobre un fondo blanco. Tambin se pueden
descargar algunas pistas dentro de la seccin Club Moway en http://moway-robot.com.

Para familiarizarnos con los comandos de seguirlinea, el ejercicio propuesto es


un sencillo radiocontrol que va cambiando de un comando de seguirlinea(izquierda)
a un comando de seguirlinea(derecha) a travs de las teclas de direccin. La tecla
espacio detiene el mOway y la flecha atrs enva un comando de mediavuelta.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 171 de 177

En el escenario, la representacin de mOwayse mueve al lado izquierdo o derecho


de la lnea con el cambio de comando.

seguirlinea(izquierda)

seguirlinea(derecha)

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 172 de 177

Anexo I. mOway Scratch en euskera


11.1 Introduccin
El funcionamiento de la aplicacin mOway Scratch es el mismo que el visto en el
captulo anterior. La nica diferencia ser que los comandos se escribirn en euskera.
Del mismo modo, si se selecciona el idioma Euskera en el entorno Scratch, el nombre
de los bloques tambin cambiar. Por ejemplo:
Castellano

Euskera

Para cambiar el idioma de Scratch, se hace clic en el icono indicado:

A continuacin se muestra un listado con los comandos, variables y sensores de


mOway en euskera.

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 173 de 177

11.2 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 bidali denei.

Comando
aurrera
atzera
ezkerrera
eskuinera
biraegin
gelditu
hasieratu(distantzia)

aurrera(zuzen)

Descripcin
mOway avanaza recto de forma indefinida,
con una velocidad del 50%.
mOway retrocede recto de forma
indefinida, con una velocidad del 50%.
mOway realiza un giro de 90 hacia la
izquierda.
mOway realiza un giro de 90 hacia la
derecha.
mOway gira media vuelta.
mOway se detiene.
Resetea el contador de distancia total de los
motores.
mOway avanza recto a una velocidad
determinada durante la distancia
distantzia o el tiempo denbora. Si
denbora y distanztia son iguales a cero,
mOway avanzar indefinidamente.

atzera(zuzen)

mOway retrocede recto. Su


comportamiento es idntico a
aurrera(zuzen), pero en sentido contrario.

aurrera(ezker)

mOway avanza en una curva hacia la


izquierda de un radio determinado a una
velocidad determinada durante la distancia
distantzia o el tiempo denbora. Si
denbora y distanzia son iguales a cero,
mOway avanzar indefinidamente.

aurrera(eskuin)

mOway avanza en una curva hacia la


derecha. Idntico pero en direccin opuesta
a aurrera(ezker).

www.moway-robot.com

Variables
empleadas
-

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 174 de 177

atzera(ezker)

mOway retrocede en una curva hacia la


izquierda. Idntico pero en sentido opuesto
a aurrera(eskuin).

atzera(eskuin)

mOway retrocede en una curva hacia la


derecha. Idntico pero en sentido opuesto a
atzera(ezker).

biratu(ezker)

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
(biraketa) es igual a cero, la rotacin se
realiza de manera indefinida.

biratu(eskuin)

mOway realiza una rotacin hacia la


derecha. Idntico a biratu(ezker), pero en
direccin opuesta.

aurreleda(piztu)
aurreleda(amatatu)
aurreleda(dirdir)
balaztaleda(piztu)
balaztaleda(amatatu)
balaztaleda(dirdir)
ledberdea(piztu)
ledberdea(amatatu)
ledberdea(dirdir)
ledgorria(piztu)
ledgorria(amatatu)
ledgorria(dirdir)
ledak(piztu)
ledak(amatatu)
ledak(dirdir)
soinua(piztu)
soinua(amatatu)
melodia(kargatua)
melodia(galdu)

gartzelaturik

Activa el LED frontal.


Desactiva el LED frontal.
Parpadea el LED frontal.
Activa el LED de freno
Desactiva el LED de freno
Parpadea el LED de freno.
Activa el LED verde superior
Desactiva el LED verde inferior
Parpadea el LED verde.
Activa el LED rojo superior
Desactiva el LED rojo superior
Parpadea el LED rojo superior.
Activa todos los LEDs.
Desactiva todos los LEDs.
Parpadea todos los LEDs.
Activa el altavoz con un sonido a una
frecuencia determinada.
Desactiva el altavoz.
Suena una meloda de a la carga.
Suena una meloda de fallo.
Subprograma para que mOway se quede
encerrado dentro de un crculo negro.
Avanza cuando est sobre una superficie
blanca y cuando llega a una lnea negra, da
la vuelta.
www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 175 de 177

bultzada

jagole

marrajarraitu(ezker)
marrajarraitu(eskuin)

Subprograma para detectar objetos.


mOway busca los objetos y los empuja.
Subprograma para que mOway expulse
objetos dentro de un crculo negro.
Combina los subprogramas gartzelaturik
y bultzada.
Subprograma para seguir una lnea negra
por el lado izquierdo.
Subprograma para seguir una lnea negra
por el lado derecho.

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

distantzia

Distancia a recorrer en mm 0 255 mm ( 0 25,5 cm )

maiztasuna

Frecuencia de la seal del 0 16000 Hz


altavoz

radioa

Radio de curvatura

biraketa

ngulo de rotacin en 0 360


grados

biraketa-ardatza

Eje de rotacin

gurpila Sobre rueda


Cualquier valor Sobre centro

abiadura

Velocidad de movimiento

30 -100 %

denbora

Tiempo de movimiento en 0 255 (0 - 25,5 segundos)


dcimas de segundos

0- 100 (radio + velocidad < 100)

www.moway-robot.com

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 176 de 177

En la siguiente tabla se muestran las variables de mOway que podemos leer en Scratch
utilizando el bloque sentsorean balioa. Por ejemplo, este bloque indicara el valor del
sensor de lnea derecho del robot:

Variable

Descripcin

Rango de Valores

Ezker alboko oztopo

Sensor de obstculos izquierdo lateral

0 (sin obstculo)
100 (obstculo muy cerca)

Ezker erdiko oztopo

Sensor de obstculos izquierdo


central

0 (sin obstculo)
100 (obstculo muy cerca)

Eskuin erdiko oztopo

Sensor de obstculos derecho central

0 (sin obstculo)
100 (obstculo muy cerca)

Eskuin alboko oztopo

Sensor de obstculos derecho lateral

0 (sin obstculo)
100 (obstculo muy cerca)

Ezker marra

Sensor de lnea izquierdo

0 (blanco) 100 (negro)

Eskuin marra

Sensor de lnea derecho

0 (blanco) 100 (negro)

Argi(R)

Sensor de luz ambiente

0 100%

Distantzia

Contador de km en mm

Mikrofonoa

Nivel de ruido ambiental

X-Ardatza g

Aceleracin en g en el eje X

-2.0 2.0 g

Y-Ardatza g

Aceleracin en g en el eje Y

-2.0 2.0 g

Z-Ardatza g

Aceleracin en g en el eje Z

-2.0 2.0 g

Motore amaiera

Sensor que se activa cuando el ltimo


comando enviado al motor ha
finalizado

www.moway-robot.com

0- 100%

0-1

Ttulo: Manual Usuario


Rev: v3.1.2 Abril 2013
Pgina: 177 de 177

www.moway-robot.com

Vous aimerez peut-être aussi