manual usuario moway v3.1

170
MANUAL USUARIO DE MOWAY

Upload: moway-moway

Post on 30-Mar-2016

319 views

Category:

Documents


5 download

DESCRIPTION

Manual de Usuario del robot mOway. Incluye una descripción del robot y del software para programarlo.

TRANSCRIPT

Page 1: Manual Usuario mOway V3.1

MANUAL USUARIO

DE MOWAY

Page 2: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 2 de 170

www.moway-robot.com

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

Page 3: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 3 de 170

www.moway-robot.com

Índice

Índice ................................................................................................................................ 3

1. Introducción .............................................................................................................. 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 línea ............................................................................................. 12 3.3.2 Sensores detectores de obstáculos ............................................................... 14

3.3.3 Sensor de luz ................................................................................................ 15 3.3.4 Conector de expansión ................................................................................. 16 3.3.5 Sensor de temperatura.................................................................................. 17

3.3.6 Speaker ........................................................................................................ 17 3.3.7 Micrófono .................................................................................................... 17 3.3.8 Acelerómetro ............................................................................................... 18

3.3.9 Nivel de batería ............................................................................................ 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 alimentación ................................................................................... 20

3.5 Módulo RF y RFUSB ....................................................................................... 21 3.5.1 Especificaciones técnicas............................................................................. 22 3.6 Módulo de cámara ............................................................................................ 24 3.6.1 Especificaciones técnicas............................................................................. 25

3.7 mOway Camera Board ..................................................................................... 26 3.7.1 Especificaciones técnicas............................................................................. 27

4. Primeros pasos ........................................................................................................ 28 4.1 Instalación pack ................................................................................................ 28 4.2 Grabación del robot .......................................................................................... 29

4.3 Instalación RFUSB ........................................................................................... 29 4.4 Instalación drivers mOway Camera Board ...................................................... 31

5. Programación ensamblador .................................................................................... 32

Creación de un proyecto ............................................................................................. 32 5.1 Primer programa en ensamblador ..................................................................... 36 5.2 Librerías ............................................................................................................ 40 5.2.2 Librería sensores mOway ensamblador ....................................................... 40

5.2.2.1 Descripción .................................................................................................. 41 5.2.2.2 Variables ...................................................................................................... 41 5.2.2.3 Funciones ..................................................................................................... 44 5.2.3 Librería motores mOway ensamblador ....................................................... 54 5.2.3.1 Descripción .................................................................................................. 55 5.2.3.2 Variables ...................................................................................................... 55

Page 4: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 4 de 170

www.moway-robot.com

5.2.3.3 Funciones ..................................................................................................... 57 5.2.4 Librería para el módulo BZI-RF2GH4 en ensamblador .............................. 65 5.2.4.1 Descripción .................................................................................................. 65

5.2.4.2 Variables ...................................................................................................... 65 5.2.4.3 Funciones ..................................................................................................... 67 5.2.4.4 Diagrama de flujo para envío y recepción de datos ..................................... 74 5.2.5 Librería para el módulo Moway Camera Board en ensamblador ................ 75 5.2.5.1 Descripción .................................................................................................. 75

5.2.5.2 Variables ...................................................................................................... 75 5.2.5.3 Funciones ..................................................................................................... 76

6. Programación C ...................................................................................................... 79

6.1 Creación de un proyecto ................................................................................... 79 6.2 Primer programa en C18 .................................................................................. 83 6.3 Librerías ............................................................................................................ 87 6.3.2 Librería sensores mOway en C para C18 .................................................... 87

6.3.2.1 Descripción .................................................................................................. 87 6.3.2.2 Funciones ..................................................................................................... 88

6.4 Librería motores mOway C18 .......................................................................... 97 6.4.2.1 Descripción .................................................................................................. 97 6.4.2.2 Funciones ..................................................................................................... 98

6.4.3 Librería para el módulo BZI-RF2GH4 en C18.......................................... 104 6.4.3.1 Descripción ................................................................................................ 104

6.4.3.2 Funciones ................................................................................................... 104

6.4.3.3 Diagrama de flujo para envío y recepción de datos ................................... 109

6.4.4 Librería para el módulo de cámara en C18 ................................................ 111 6.4.4.1 Descripción ................................................................................................ 111

6.4.4.2 Funciones ................................................................................................... 111 7. Programación MowayWorld ................................................................................ 114

7.1 Espacio de trabajo de MowayWorld .............................................................. 114 7.1.1 Barra de herramientas ................................................................................ 114 7.1.2 Editor de diagramas de flujo ...................................................................... 114

7.1.3 Acciones .................................................................................................... 115 7.1.4 Propiedades ................................................................................................ 116

7.1.5 Lista de errores .......................................................................................... 116 7.1.6 Flechas ....................................................................................................... 117 7.1.7 Cambio de idioma y actualizaciones ......................................................... 118

7.2 Primer programa en MowayWorld ................................................................. 119 7.3 Módulos .......................................................................................................... 123 7.3.1 Acciones de Moway .................................................................................. 123 7.3.2 Lectura de sensores .................................................................................... 127

7.3.3 Datos .......................................................................................................... 129 7.3.4 Control de flujo .......................................................................................... 131 7.3.5 Expansión .................................................................................................. 132 7.4 Variables ......................................................................................................... 137 7.5 Funciones / Subrutinas ................................................................................... 138

8. Aplicaciones ......................................................................................................... 140 8.1 Ventana de comunicaciones ........................................................................... 140

Page 5: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 5 de 170

www.moway-robot.com

8.2 MowayCam .................................................................................................... 141 8.3 MowayRC ...................................................................................................... 143 8.3.1 Configuración ............................................................................................ 144

8.3.2 Movimiento................................................................................................ 144 8.3.3 Luces .......................................................................................................... 145 8.3.4 Sonido ........................................................................................................ 145 8.3.5 Estado de sensores ..................................................................................... 145 8.3.6 Cámara ....................................................................................................... 145

8.4 MowayServer ................................................................................................. 145 9. Simulador ............................................................................................................. 148

9.1 Introducción .................................................................................................... 148

9.2 Funcionamiento .............................................................................................. 149 9.3 Ejemplo de simulación ................................................................................... 153

10. mOway Scratch .............................................................................................. 155 10.1 Introducción ............................................................................................... 155

10.2 Funcionamiento ......................................................................................... 155 10.3 Paso a paso ................................................................................................. 156

10.4 Comandos y Sensores ................................................................................ 160 10.5 Prácticas ..................................................................................................... 164 10.5.1 Figuras geométricas ................................................................................... 164

10.5.2 Encerrado ................................................................................................... 166 10.5.3 MowayRC .................................................................................................. 167

10.5.4 Acelerómetro ............................................................................................. 168

Page 6: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 6 de 170

www.moway-robot.com

1. Introducción

Comienza una nueva era, la de los minirobots. Cada vez son más las aplicaciones

de la robótica móvil en nuestra vida cotidiana. Actualmente podemos ver robots que nos

ayudan en tareas sencillas como limpiar el suelo de casa, segar el césped o mantener

limpia la piscina. A medida que avanza la tecnología estos pequeños artilugios, mezcla

de mecánica, electrónica y software, van asumiendo tareas más complejas. Poco a poco

se van abriendo camino hacia nosotros siéndonos cada vez más útiles y descargándonos

de los trabajos menos gratificantes.

No es ningún disparate pensar que la revolución que se dio en la informática o en

las telecomunicaciones se va a repetir en la robótica durante la próxima década.

Actualmente disponemos de la tecnología suficiente para fabricar estos dispositivos y la

sociedad está cada vez más preparada para recibirlos en el mercado.

Hasta ahora los procesadores no se movían. Las cosas han cambiado. Uno de los

elementos fundamentales en el mundo de la robótica móvil 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 interacción 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 ejecución de

comandos dentro de una aplicación para un minirobot lo habitual es que se desconozca

de antemano cuál va a ser el resultado, por lo que los algoritmos deben contemplar

situaciones con un abanico mucho más amplio de posibilidades, algunas incluso

inesperadas.

Los mOways son herramientas diseñadas específicamente para la docencia e

investigación. Su objetivo es acercar el mundo de la robótica autónoma 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 robótica como para quienes ya tienen

experiencia y desean realizar aplicaciones complejas de robótica colaborativa.

Page 7: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 7 de 170

www.moway-robot.com

2. ¿Qué es mOway?

mOway es un pequeño robot autónomo programable diseñado principalmente

para realizar aplicaciones prácticas de robótica móvil. Con él se ha conseguido una

plataforma hardware perfecta tanto para quien quiere dar sus primeros pasos en el

mundo de los robots móviles como para quien ya ha trabajado con robots y desea

realizar aplicaciones más complejas.

El robot mOway está dotado de una serie de sensores que le ayudarán a

desenvolverse en un entorno real. A su vez cuenta con un grupo motor que le permitirá

desplazarse sobre el terreno. Todos estos periféricos están conectados a un

microcontrolador que será el encargado de gobernar el robot.

Este pequeño robot cuenta además con opciones de ampliación a través de un bus

de expansión. En él se puede conectar, por ejemplo, un módulo de comunicaciones

inalámbricas, una cámara de video, una tarjeta de prototipos o cualquier otro dispositivo

que se considere interesante para el desempeño de una tarea. En la página web del

producto encontrará prácticas para realizar en el bus de expansión.

El diseño exterior de mOway es muy compacto, diseñado para que pueda moverse

con agilidad y elegancia sin opción a quedarse enganchado en ninguna esquina. Tan

pequeño como un móvil se ha ganado la denominación de “robot de bolsillo”.

mOway es una herramienta perfecta para quien quiere aprender y para quien

quiere enseñar qué es la robótica. El usuario se verá sorprendido con la rapidez que

comienza a cosechar logros incluso si éste es su primer contacto con los robots móviles.

Page 8: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 8 de 170

www.moway-robot.com

3. Robot mOway

En el interior de un mOway tenemos los siguientes elementos:

Procesador

Sistema motriz

Grupo de sensores e indicadores

Sistema de alimentación

PIC18f86j50

FRON

T_LED

IR_RX_R

LINE_TX

LINE_RX_R

LIGHT_

SEN

E

X

P

A

N

S

I

Ó

N

IR_RX_L

LINE_RX_L

LED_

GREEN

LED_

RED

PIC16F687

LINE_TXLINE_RX_R

LINE_TXLINE_RX_R

Puente H

M

O

T

O

R

M

O

T

O

R

Engrane

Encoder

Engrane

Encoder

IR_RX_R

IR_RX_L

LED_

BRAKE

LED_

BRAKE

ACELE

SPEAKER

MIC

TEMPMEDIDOR

BATERÍA

FREE

PAD

Imagen 1. Representación de las partes de mOway

3.1 Procesador

Los mOways están gobernados por un microcontrolador PIC18F86J50

PIC18F86J50 (versión 2.0.1) o PIC18F87J50 (versión 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

periféricos distribuidos por el robot. Algunos de ellos necesitan de una entrada o salida

digital, otros de una analógica y otros en cambio se controlan a través de uno de los

buses de comunicación I2C/SPI.

Tabla 1. Conexiones PIC-sensores

Pin PIC I/O Sensor PORTA

RA0 I Luz

RA1 I Receptor central infrarrojo izquierdo

RA2 I Receptor sensor línea derecho

RA3 I Receptor lateral infrarrojo izquierdo

RA5 I Receptor sensor línea izquierdo

PORTB

RB1 I Interrupción 1 del acelerómetro

Page 9: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 9 de 170

www.moway-robot.com

RB2 I Interrupción 2 del acelerómetro

RB3 O Altavoz

RB5 O LED superior rojo

RB6 O LED superior verde

PORTC

RC7 O LED frontal

PORTD

RD1 O Transmisor infrarrojo de línea

RD4 I Señal SDO para la comunicación SPI del acelerómetro

RD5 O Señal SDI para la comunicación SPI del acelerómetro

RD6 O Señal de reloj para la comunicación SPI del acelerómetro

RD7 I Chip Select para la comunicación SPI del acelerómetro

PORTE

RE5 O LED de freno

PORTF

RF5 I Receptor lateral infrarrojo derecho

RF6 I Receptor central infrarrojo derecho

PORTH

RH5 I Sensor de temperatura

RH6 I Medidor de batería

RH7 I Micrófono

PORTJ

RJ6 O Transmisor infrarrojo

RJ7 I/O Pad libre

3.2 Sistema motriz

Los mOways disponen de un grupo servo-motor doble para poder desplazarse.

Consta de una parte electrónica y otra mecánica. La parte electrónica se encarga

principalmente de controlar la velocidad de los motores y la parte mecánica permite el

desplazamiento con una potencia suficiente para que mOway se mueva en diferentes

entornos.

Sistema Motriz

PIC16F687

LINE_TXLINE_RX_R

LINE_TXLINE_RX_R

PUENTE H

M

O

T

O

R

M

O

T

O

R

Engrane

Encoder

Engrane

Encoder

Imagen 2. Sistema motriz: electrónica y mecánica

Page 10: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 10 de 170

www.moway-robot.com

El grupo servo-motor tiene diversas funcionalidades:

1. Control de velocidad: Controla la velocidad de cada motor por separado.

2. Control de tiempo: Controla el tiempo en cada comando con una precisión de

100ms.

3. Control de distancia recorrida: Controla la distancia recorrida en cada

comando con una precisión de 1mm.

4. Cuentakilómetros general: Cuenta la distancia recorrida desde el comienzo de

los comandos.

5. Control de ángulo: Control de ángulo cuando se produce la rotación 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

señal de los encoders (sensores para medir la velocidad y recorrido de los motores). La

rotación 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 señal y

actúa sobre los motores. De esta manera, mOway puede controlar su velocidad y

distancia recorrida.

Sistema Motriz

Bloque mecánicoBloque electrónica

Puente H

Vcc=2.8V

Moway created by:

Iñigo Sobradillo

Daniel del Rio

Javi Galvez

Juan Gil

Estibaliz Otero

Julen Gutierrez

PIC16F687

M

Vcc=2.8V

Moway created by:

Iñigo Sobradillo

Daniel del Rio

Javi Galvez

Juan Gil

Estibaliz Otero

Julen Gutierrez

PWM

Señal encoder

Encoder

Imagen 3. Control de motores

Cuando desde el microcontrolador principal se quiere que el robot realice un

desplazamiento sólo tenemos que mandar un comando de movimiento con sus

parámetros mediante I2C. Para ello se han diseñado unas librerías en ensamblador y en

C con las que esta comunicación queda simplificada por unas funciones que se encargan

de la comunicación. El formato de las tramas se explica en el apartado de la librería de

motores.

Page 11: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 11 de 170

www.moway-robot.com

En la siguiente tabla podemos ver la conexión 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 Línea Reloj del I2C

RE1 I2C Línea datos del I2C

RE7 I Línea indicadora de fin motor

3.3 Grupo de sensores e indicadores

Este grupo consta de diferentes sensores e indicadores conectados al

microprocesador de mOway con los que el robot interactúa con el mundo exterior:

Dos sensores de línea.

Cuatro sensores detectores de obstáculos.

Sensor de luz.

Un conector de expansión.

Cuatro tipos de LEDs.

Sensor de temperatura.

Speaker.

Micrófono.

Acelerómetro.

Nivel de batería.

PIC18f86j50

FRON

T_LED

IR_RX_R

LINE_TX

LINE_RX_R

LIGHT_

SEN

E

X

P

A

N

S

I

Ó

N

IR_RX_L

LINE_RX_L

LED_

GREEN

LED_

RED

IR_RX_R

IR_RX_L

LED_

BRAKE

LED_

BRAKE

ACELE

SPEAKER

MIC

TEMPMEDIDOR

BATERÍA

FREE

PAD

Imagen 4. Grupo sensores e indicadores

Page 12: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 12 de 170

www.moway-robot.com

Imagen 5. Vista superior placa electrónica mOway

Imagen 6. Vista inferior placa electrónica mOway

3.3.1 Sensor de línea

Los sensores de línea son dos optoacopladores de reflexión montados en la parte

inferior delantera del robot. Utilizan la reflexión de luz infrarroja para detectar el tono

del suelo en el punto en que se encuentra el robot.

Estos dos sensores están conectados a dos de los puertos analógicos del

microcontrolador de manera que no sólo podemos detectar contrastes fuertes en el

suelo, como líneas 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 están dispuestos en la misma dirección para poder

detectar mediante el uso de los rayos infrarrojos la luz reflejada en el suelo.

En las siguientes imágenes 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 común

obtenemos un voltaje bajo.

Page 13: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 13 de 170

www.moway-robot.com

Imagen 7. Sensor de línea 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 analógico del microcontrolador. De esta manera es fácil

identificar colores1.

Imagen 8. Sensor de línea 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 línea en superficie oscura.

1 Hay que tener en cuenta que debido a la tolerancia de los sensores CNY70, puede que en la

misma superficie los dos sensores den diferente valor para un mismo color.

Page 14: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 14 de 170

www.moway-robot.com

Tabla 3. Conexiones Sensores de línea-PIC

Pin PIC I/O Sensor PORTA

RA2 I Receptor sensor línea derecho

RA5 I Receptor sensor línea izquierdo

PORTD

RD1 O Trasmisor sensores de línea izquierdo y derecho

Imagen 10. Ubicación sensores de línea

3.3.2 Sensores detectores de obstáculos

Al igual que los sensores de línea, los sensores detectores de obstáculos utilizan

también 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

analógicas del microcontrolador después de ser filtrada y acondicionada, por lo que no

sólo se detecta la presencia de algún objeto (modo digital) sino que también podemos

medir la distancia al mismo (modo analógico)2.

El funcionamiento del sensor es similar al sensor de línea. El emisor de luz genera

un pulso de una duración de 70 microsegundos que, en caso de existir un obstáculo, se

refleja contra él y es captado por el receptor utilizando una etapa de filtrado y

amplificación. Una vez procesada la señal electrónicamente, el microcontrolador puede

medirla como entrada digital o analógica.

2 Debido a tolerancias en el montaje de los componentes electrónicos, habrá diferencias entre los

sensores en la detección de objetos a una misma distancia.

Page 15: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 15 de 170

www.moway-robot.com

Imagen 11. Sensor detector de obstáculos

Tabla 4. Conexiones sensor antichoque-PIC

Pin PIC I/O Sensor PORTA

RA1 I Receptor central infrarrojo derecho

RA3 I Receptor lateral infrarrojo izquierdo

PORTF

RF5 I Receptor lateral infrarrojo derecho

RF6 I Receptor central infrarrojo izquierdo

PORTJ

RJ7 O Transmisor infrarrojo

Imagen 12. Posición de los sensores de obstáculo

3.3.3 Sensor de luz

Este sensor permite a mOway conocer la intensidad de luz que entra por una

pequeña abertura con forma de media luna en la parte superior del chasis. Al estar

orientada hacia delante permite conocer dónde está situada la fuente de luz y actuar en

consecuencia.

La salida del sensor APDS-9002 de Avago Technologies está conectada a un

puerto analógico 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. Conexión PIC-sensor de luz

Pin PIC I/O Sensor PORTA

RA0 I Luz

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

intensidad de luz.

Page 16: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 16 de 170

www.moway-robot.com

Imagen 13. Apertura sensor de luz

3.3.4 Conector de expansión

Este conector permite la conexión de mOway con módulos comerciales o con

circuitos electrónicos que el usuario desee.

La primera expansión disponible es el módulo de RF mOway que permite la

comunicación de mOway con otros de su especie y con el PC. Este módulo permite

hacer aplicaciones colaborativas complejas sin tener que preocuparse de la gestión de la

comunicación inalámbrica.

Tabla 6. Conexiones PIC-Conector de expansión

Pin Expa I/O PIC Pin1 O Vcc 3.3v

Pin2 O GND

Pin3 I/O /PMD3/AN12/P3C

/C2INC

RH4

Pin4 I/O/PMA5/AN7/C2INB RF2

Pin5 I/O /SCK1/SCL1 RC3

Pin6 I/O /SDO1/C2OUT RC5

Pin7 I/O /SDI1/SDA1 RC4

Pin8 I/O/INT RB0

Imagen 14. Robots con módulo de RF en el conector de expansión

Page 17: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 17 de 170

www.moway-robot.com

3.3.5 Sensor de temperatura

mOway lleva instalado en la parte delantera (cerca de los sensores de obstáculo)

como medidor de temperatura un termistor NTC de Murata, que es un semiconductor

cuya resistencia eléctrica variable decrece a medida que la temperatura aumenta.

El termistor está conectado a una entrada analógica 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. Conexión PIC-sensor de temperatura

Pin PIC I/O Sensor PORTH

RH5 I Sensor de temperatura

3.3.6 Speaker

El altavoz CMT-1102 de CUI INC conectado al microcontrolador del robot, es

capaz de reproducir tonos desde 250 Hz hasta 5,6 kHz en intervalos pares de 100 ms.

Se trata de un altavoz piezoeléctrico. En estos altavoces el motor es un material

piezoeléctrico, que al recibir una diferencia de tensión entre sus superficies metalizadas

experimenta alargamientos y compresiones.

Tabla 8. Conexión PIC-speaker

Pin PIC I/O Sensor PORTB

RB3 O Altavoz

3.3.7 Micrófono

El micrófono CMC-5042PF-AC de CUI INC permite al robot detectar sonidos

desde 100 Hz hasta 20 KHZ.

La salida del micrófono está conectado a una entrada analógica del

microcontrolador de forma que no sólo 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 analógico).

Tabla 9. Conexión PIC-Micrófono

Pin PIC I/O Sensor PORTH

RH7 I Micrófono

4 La temperatura indicada por este sensor se corresponde al interior del robot que puede diferir en

unos 5ºC con la temperatura exterior.

Page 18: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 18 de 170

www.moway-robot.com

3.3.8 Acelerómetro

Un acelerómetro es un dispositivo que mide la aceleración y las fuerzas inducidas

por la gravedad: el movimiento y el giro. Midiendo las coordenadas X, Y, Z, el

acelerómetro MMA7455L de Freescale Semiconductor permite conocer si mOway está

en posición correcta, invertido o ladeado. Además, permite conocer si el robot se ha

golpeado o caído.

Tabla 10. Conexiones PIC-Acelerómetro

Pin Acce I/O PIC Pin7 I RD7

Pin8 I RB1

Pin9 I RB2

Pin12 I RD4

Pin13 O RD5

Pin14 O RD6

3.3.9 Nivel de batería

Para la alimentación del robot, se dispone de una célula de LiPo recargable. Para

un correcto funcionamiento del microcontrolador, la batería va conectada a una de sus

entradas analógicas a través de un adaptador de señal. De esa forma, con una lectura del

ADC podemos determinar el nivel de batería restante.

Tabla 11. Conexión PIC-Medidor de batería

Pin PIC I/O Sensor PORTH

RH6 I Medidor de batería

3.3.10 LED frontal

El led frontal es un LED blanco que está situado en la parte delantera del robot. El

LED LW A6SG de OSRAM está conectado a una salida digital del microcontrolador.

Tabla 12. Conexión PIC- Led frontal

Pin PIC I/O Sensor PORTC

RC7 O LED frontal

Page 19: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 19 de 170

www.moway-robot.com

3.3.11 LED superior bicolor

Este indicador doble comparte la misma apertura en la parte superior del robot que

el sensor de luz. Están conectados a dos salidas digitales del microcontrolador. Cabe

destacar que al compartir la misma apertura que el sensor de luz5.

Tabla 13. Conexión PIC-Led superior

Pin PIC I/O Sensor PORTA

RA4 O LED superior rojo

PORTB

RB6 O LED superior verde

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

3.3.12 LED de freno

El LED de freno es un indicador que está conectado a una salida digital del

microcontrolador y está situado en la parte trasera del robot tras el filtro rojo.

Tabla 14. Conexión PIC- Led de freno

Pin PIC I/O Sensor PORTE

RE5 O LED de freno

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

intensidad de luz.

Page 20: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 20 de 170

www.moway-robot.com

Imagen 16. Posición LED de freno en rojo. LED verde de encendido no controlable

3.3.13 Pad libre

El PCB de mOway tiene un Pad, accesible sólo 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 electrónicos6.

Tabla 15. Conexión PIC-pad libre

Pin PIC I/O Sensor PORTJ

RJ7 I/O Pad libre

3.4 Sistema de alimentación

La batería empleada en el robot mOway es de Litio Polímero recargable y se

encuentra en su interior.

La recarga de la batería 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 batería esté completamente descargada para poder enchufarla, puede

hacerse en cualquier momento puesto que este tipo de baterías no tienen efecto

memoria. Su pequeño tamaño, ligereza y flexibilidad hacen de estas baterías una

perfecta fuente de energía para mOway.

La duración media de la batería es de 1h y 30 minutos aunque depende en gran

medida de los sensores activos y del tiempo de utilización de los motores. De todas

formas, gracias a la función nivel de batería, 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 aplicación MowayWorld.

El sistema de alimentación 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 baterías al encontrarse conectado al PC.

6 Sólo para usuarios avanzados

7 Estos LEDs no pueden ser controlados por el usuario.

Page 21: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 21 de 170

www.moway-robot.com

Cada vez que se conecte el robot al PC se encenderá el indicador de encendido

(para que la opción de grabación quede habilitada) y el LED rojo si la batería no está

completamente cargada. Cuando esto se produzca el LED rojo se apagará8.

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

3.5 Módulo RF y RFUSB

Estos módulos de radiofrecuencia permiten comunicar al robot con otro mOway o

con el PC a través del RFUSB9.

Imagen 18. Módulo RF

Estos módulos se conectan a través del conector de expansión y son fácilmente

manejables mediante MowayWorld.

8 En el proceso de carga puede que el LED rojo se apague cuando la batería esté completamente

cargada y al de un tiempo se encienda otra vez. Esto es debido a que el robot sigue encendido y la batería

pierde carga al estar el cargador apagado. 9 Disponible según pack

Page 22: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 22 de 170

www.moway-robot.com

Imagen 19. RFUSB

El módulo de comunicación por radiofrecuencia BZI-RF2GH4 está basado en el

transceptor nRF24L01 fabricado por “Nordic Semiconductors”. En este circuito

integrado se ha incorporado toda la lógica necesaria para establecer una comunicación

inalámbrica bidireccional con acuse de recibo. La comunicación con el

microcontrolador se realiza a través de un bus SPI.

Las principales características del módulo BZI-RF2GH4 son:

Bajo consumo.

Frecuencia de trabajo de 2.4GHz,

Potencia de emisión entre -18 y 0 dBm,

Velocidad de transmisión entre 1 y 2 Mbps,

128 canales de transmisión seleccionables por el bus SPI,

El módulo BZI-RF2GH4 incorpora, además del CI nRF24L01, toda la

electrónica anexa para su correcto funcionamiento y una antena microstrip en la misma

placa con la red de adaptación de impedancias. De esta manera el usuario se

despreocupa por completo del hardware necesario para implementar la parte de radio de

su aplicación.

Como interfaz dispone de cuatro pines accesibles para el bus SPI, dos pines más

para el control del módulo y otros dos para la alimentación.

Con el objetivo de facilitar el manejo del módulo se han desarrollado unas

librerías que simplifican y acortan el tiempo de desarrollo de cualquier aplicación

inalámbrica con estos módulos.

3.5.1 Especificaciones técnicas

Tabla 16. Parámetros máximos

Parámetro Min Max Unidad

Vdd -0.3 3.6 V

Vss 0 V

Tensión de entrada datos -0.3 5.25 V

Page 23: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 23 de 170

www.moway-robot.com

Tensión de salida datos Vss-Vdd Vss-Vdd V

Potencia disipada 60 mW

Temperatura de operación -40 +85 ºC

Temperatura de almacenaje -40 +125 ºC

Tabla 17. Parámetros principales del módulo BZI-RF2GH4

Parámetro Valor Unidad

Tensión mínima de alimentación 1.9 V

Tensión máxima de alimentación 3.6 V

Potencia máxima de salida 0 dBm

Velocidad máxima de transmisión 2000 Kbps

Corriente en modo transmisión @ 0dbm potencia de salida 11.3 mA

Corriente en modo recepción @ 2000kbps 12.3 mA

Corriente en modo Power Down 900 nA

Frecuencia máxima del bus SPI 8 Mhz

Rango de temperatura -40 a +85 ºC

Tabla 18. Pinout del módulo BZI-RF2GH4

Pines Descripción

Vcc Tensión de alimentación del módulo

Vss GND

CE Chip Enable

CSN Chip Select del SPI (Negado)

SCK Reloj del bus SPI

SDI Entrada de datos al módulo RF del bus SPI (MOSI)

SDO Salida de datos del módulo RF del bus SPI (MISO)

IRQ Salida interrupción (negado)

Imagen 20. Disposición de componentes en la placa

Page 24: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 24 de 170

www.moway-robot.com

3.6 Módulo de cámara

El Módulo de Cámara de mOway10

permite mostrar en el ordenador lo que el

robot está “viendo” en cada momento. La cámara envía las imágenes por

radiofrecuencia al receptor de vídeo mOway Camera Board11

.

Imagen 21. Módulo de cámara

El Módulo de Cámara se inserta en el conector de expansión de mOway. Su

funcionamiento se controla mediante la programación del robot. Incorpora un conector

en la parte posterior del módulo para conectar otros dispositivos, como el módulo RF o

circuitería diseñada por el usuario en el Kit de Expansión. El conector posterior tiene el

mismo patillaje que el conector de expansión de mOway.

El control de la cámara se realiza por medio del dispositivo MCP23S08 de

Microchip. Consiste en un puerto de entradas y salidas configurables, manejado vía SPI.

Las funciones básicas implementadas son las siguientes:

Encendido: cuando la cámara esté encendida, el LED del Módulo de

Cámara se encenderá. En este estado, la cámara transmitirá las imágenes

por radiofrecuencia al receptor de vídeo.

Apagado: cuando la cámara esté apagada, el LED del Módulo de Cámara

permanecerá apagado. En este estado, la transmisión por radiofrecuencia

se desactivará

Cambio de canal: Cada vez que se realiza un cambio de canal de la

cámara, el LED del Módulo de Cámara parpadeará brevemente.

Si existen otras transmisiones por radiofrecuencia (redes wifi, por ejemplo), la

imagen recibida en el ordenador podría aparecer con interferencias. En estos casos, el

cambio de canal podría mejorar la calidad de la imagen. Para poder mostrar las

imágenes de la cámara en el ordenador, el canal seleccionado en el programa debe ser el

mismo que el canal seleccionado en el receptor de vídeo a través del conmutador.

10

Disponible según pack 11

Disponible según pack

Page 25: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 25 de 170

www.moway-robot.com

Dichos canales van del 1 al 4.

Como interfaz dispone de cuatro pines accesibles para el bus SPI, dos pines más

para el control del módulo y otros dos para la alimentación. Con el objetivo de facilitar

el manejo del módulo se han desarrollado una librería para el uso del sistema de visión.

NOTA: Debido a que tanto el módulo de RF como la cámara emiten en el mismo

rango de frecuencias, si se utiliza ambos módulos simultáneamente, el alcance de RF

puede verse reducido.

3.6.1 Especificaciones técnicas Tabla 19. Parámetros principales del Módulo de Cámara.

Parámetro Valor Unidad

Tensión mínima de alimentación 1.9 V

Tensión máxima de alimentación 3.6 V

Corriente en modo Power Down 1 uA

Frecuencia máxima del bus SPI 10 Mhz

Rango de temperatura -40 a +85 ºC

Tecnología CMOS -

Tabla 20. Parámetros máximos

Parámetro Min Max Unidad

Vdd -0.3 5.5 V

Vss 0 V

Intensidad 125 mA

Potencia disipada 700 mW

Temperatura de operación -40 +85 ºC

Temperatura de almacenaje -40 +125 ºC

Tabla 21. Patillaje del Módulo de Cámara y del conector posterior

Pines Descripción

Vcc Tensión de alimentación del módulo

Vss GND

CE Chip Enable

CS Chip Select del SPI

SCK Reloj del bus SPI

SDI Entrada de datos SPI (MOSI)

SDO Salida de datos SPI (MISO)

IRQ Interrupción SPI

Page 26: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 26 de 170

www.moway-robot.com

Imagen 22. Módulo de cámara

3.7 mOway Camera Board

mOway Camera Board es el receptor de vídeo, encargado de mostrar en el

ordenador las imágenes de la cámara de mOway. Este dispositivo recibe las imágenes

enviadas por la cámara a través de radiofrecuencia y las envía al ordenador por USB.

Imagen 23. mOway Camera Board

Consta de un selector para elegir los diferentes canales de comunicación RF entre

la cámara 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

cámara.

Page 27: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 27 de 170

www.moway-robot.com

Imagen 24. Selector de canales

El receptor de vídeo se conecta al ordenador a través de una conexión 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 automáticamente.

NOTA: Durante el funcionamiento del receptor de vídeo, su receptor RF se

calienta, por lo que la carcasa puede calentarse también. Este comportamiento es

normal.

3.7.1 Especificaciones técnicas

Interfaz USB 2.0

Decodificador multiestándar

o PAL

o NTSC

o SECAM

o Filtro anti-aliasing

Page 28: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 28 de 170

www.moway-robot.com

4. Primeros pasos

4.1 Instalación pack

Bien en el CD de instalación del producto o en la página web de mOway:

(http://www.moway-robot.com), se podrá encontrar el pack de instalación que contiene

el software para mOway, las librerías para manejar el robot, los programas de prueba y

la documentación.

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 explicación más detallada del robot.

El software MowayWorld.

o Es el software donde se puede controlar todos los aspectos del robot:

programación, control de carga, control por radio control, control de

RFUSB12

y grabación proyectos escritos en C o en ensamblador.

Proyectos de ejemplo en ensamblador, C y MowayWorld.

o Proyectos ejemplo para que el usuario puede empezar rápidamente el

aprendizaje.

Driver para RFUSB

o Driver para instalar el RFUSB para comunicación RF entre robot y PC.

Driver para el receptor de vídeo mOway Camera Board13

o Driver para visualizar en el PC las imágenes de la cámara14

.

NOTA: Si durante la instalación aparece un mensaje advertencia de seguridad,

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

12

Disponible según pack 13

Disponible según pack 14

Disponible según pack

Page 29: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 29 de 170

www.moway-robot.com

Imagen 25. Menú del CD

4.2 Grabación del robot

La grabación del robot se ejecuta siempre desde el programa MowayWorld. Esta

aplicación 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 ningún driver.

Abrir MowayWorld.

Apertura o creación de proyecto en MowayWorld o importar un archivo

“.hex” de alguno de los proyectos en C o ensamblador.

Clicar en el botón “Programar mOway”.

Si el proyecto es correcto el robot será programado.

Desconectar y encender el robot.

4.3 Instalación RFUSB

RFUSB es una llave USB para realizar la comunicación entre PC y robot.

Requiere de la instalación 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 opción No por el momento.

En la siguiente ventana elegimos la opción recomendada: Instalar

automáticamente el software.

Page 30: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 30 de 170

www.moway-robot.com

Imagen 26. Asistente instalación driver Windows XP

Comenzará la instalación.

Imagen 27. Instalación driver Windows XP

Finalmente el asistente indicará que el hardware está instalado.

Imagen 28. Driver instalador Windows XP

Una vez finalizada la instalación la gestión de este dispositivo se realiza desde la

ventana RF de MowayWorld.

Page 31: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 31 de 170

www.moway-robot.com

4.4 Instalación drivers mOway Camera Board

Para visualizar las imágenes de la cámara de mOway es necesario conectar el

receptor de vídeo mOway Camera Board15

a una conexión USB del ordenador.

Del mismo modo que el dispositivo RFUSB, el receptor de vídeo requiere de la

instalación de un driver que se proporciona con el pack.

La primera vez que se conecta el receptor de vídeo, el PC lo detectará

como un nuevo dispositivo y aparecerá el “Asistente para hardware

nuevo encontrado”. Elegiremos la opción No por el momento.

En la siguiente ventana elegimos la opción recomendada: Instalar

automáticamente el software.

Comenzará la instalación.

Finalmente el asistente indicará que el hardware está instalado.

15

Disponible según pack

Page 32: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 32 de 170

www.moway-robot.com

5. Programación ensamblador

El MPLAB IDE de Microchip es el entorno de programación más utilizado para

los microcontroladores PIC (ya que Microchip también es el fabricante de dichos

microcontroladores). En principio el lenguaje que utiliza es el ensamblador, aunque se

le pueden añadir otros lenguajes. Gracias a él se puede compilar el código fuente y

generar los ficheros hexadecimales (.HEX). Este compilador se puede descargar

gratuitamente desde la página web de Microchip.

En el pack de mOway encontrará librerías para el manejo de los sensores, motores

y módulo 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 código se

refiere).

Imprescindible si el tiempo de respuesta es crítico.

Creación de un proyecto

Para crear el primer proyecto utilizaremos el Project Wizard de MPLAB IDE que

permite crear proyectos rápidamente.

Imagen 29. Project Wizard

Page 33: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 33 de 170

www.moway-robot.com

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

PIC18F87J50.

Imagen 30. Selección del PIC

2. A continuación se elige la herramienta de ensamblado: MPASM.

Imagen 31. Selección de herramienta

Page 34: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 34 de 170

www.moway-robot.com

3. En el paso tres se debe indicar la ubicación del proyecto a crear.

Imagen 32. Elección de carpeta

4. En el siguiente paso se añaden al proyecto las librerías de mOway que controlan

diferentes aspectos del robot. Esas librerías deben ser copiadas (manualmente o

indicándolo en el Wizard) en la carpeta del proyecto sino MPLAB utilizará las

librerías elegidas en la ubicación elegida.

Imagen 33. Elección de librerías mOway

Page 35: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 35 de 170

www.moway-robot.com

5. Siguiendo estos pasos el proyecto se creará, pero faltará todavía la creación del

fichero .ASM donde se inserta el código fuente.

Imagen 34. Finalización Wizard

6. El siguiente paso es abrir el proyecto y crear un nuevo archivo (New File)

guardándolo en la misma carpeta del proyecto como Main.asm. Éste será nuestro

fichero fuente.

Imagen 35. Creación de .ASM

Page 36: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 36 de 170

www.moway-robot.com

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

Project…

Imagen 36. Proyecto con .ASM

5.1 Primer programa en ensamblador

Para hacer el primer programa es necesario haber creado un proyecto (capítulo

anterior). Este primer programa básico hará que mOway evite los obstáculos. El código

utilizado será el absoluto.

1. En primer lugar hay que añadir en el archivo Main.ASM del pic que tiene

mOway instalado: list p=18F86J50.

2. También es necesario añadir la librería de este microcontrolador en la carpeta

del proyecto que encontrará en el directorio de instalación de MPLAB o en los

programas de prueba del pack de mOway. Una vez copiada la librería en la

carpeta se debe incluir en el Main: #include "P18F86J50.INC".

3. El próximo paso es añadir los vectores de inicio (0x102A) y reset (0x1000),

incluir las librerías de mOway y añadir el END de fin de programa.

4. Se añade a continuación 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 continuación se llama a la función SEN_CONFIG encargada de configurar las

entradas y salidas del microcontrolador.

6. Se añade el parpadeo de uno de los leds.

7. Compilar el programa en código absoluto y grabarlo en mOway a través de

MowayWorld (Grabar fichero .hex) y comprobar que el LED verde parpadea.

Page 37: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 37 de 170

www.moway-robot.com

Imagen 37. Primer programa: configuración y led

8. Para detectar obstáculos se llama a la función SEN_OBS_DIG en el bucle

infinito que devolverá en la variable SEN_OBS si tenemos obstáculo o no en el

sensor indicado por la variable SEN_CHECK_OBS.

9. Si encuentra obstáculo 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.

Page 38: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 38 de 170

www.moway-robot.com

Imagen 38. Primer programa: detección de obstáculo

11. Añadimos movimiento al robot: comando recto indefinidamente hasta que

encuentra un obstáculo.

12. Se añade la librería de motores en el main.asm.

13. Se llama a la función de configurar motores MOT_CONFIG.

14. Se llama a ir recto la primera vez.

Page 39: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 39 de 170

www.moway-robot.com

Imagen 39. Configuración y primer comando recto

15. Cuando encuentra obstáculo se manda un comando para que realice una rotación

de 180º y enciende el LED frontal. El robot esperará hasta que el comando

termine y continuará en un movimiento recto.

Page 40: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 40 de 170

www.moway-robot.com

Imagen 40. Primer programa: movimiento con detección

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

5.2 Librerías

5.2.2 Librería sensores mOway ensamblador

Existen dos librerías en ensamblador que pueden ser incluidas en cualquier

proyecto de mOway que permiten al usuario controlar los sensores con gran facilidad.

Ambas son idénticas salvo el hecho de que una de ellas tiene la posibilidad de reubicar

Page 41: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 41 de 170

www.moway-robot.com

tanto el código como las variables (utilizando proyectos del MPLAB IDE).

Es importante saber que cada llamada a cualquier función de la librería 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 Descripción

La librería 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 sólo lectura informa de la validez de los datos obtenidos por la

lectura de los sensores.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Sin uso Sin uso Sin uso Sin uso Sin uso Sin uso DWRONG SENOK

- - - - - -

Bit 7-2: Sin uso

Bit 1: DWRONG: Muestra si los datos de entrada son correcto.

1 = Datos incorrectos.

0 = Datos correctos.

Bit 0: SENOK: Muestra si el sensor se ha leído correctamente.

1 = Lectura correcta. Datos de salida válidos.

0 = Lectura incorrecta. Datos de salida inválidos.

SEN_ACCE_TAP

Esta variable de lectura que indica si la función SEN_CHECK_ACCE_TAP ha

detectado toque o doble toque.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Sin uso Sin uso Sin uso Sin uso Sin uso Sin uso TAP_TAP TAP

- - - - - -

Page 42: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 42 de 170

www.moway-robot.com

Bit 7-2: Sin uso

Bit 1: TAP_TAP: Muestra si se han detectado dos toque.

1 = Doble Toque detectado.

0 = Doble Toque no detectado.

Bit 0: TAP: Muestra si se ha detectado un toque.

1 = Toque detectado.

0 = Toque no detectado.

SEN_CHECK_OBS

Esta variable de escritura que indica que sensor deben de leer las funciones que

controlan el sensor de obstáculos. En la siguiente tabla se muestra los valores que puede

coger esta variable.

Tabla 22. Valores admitidos para SEN_CHECK_OBS

Define Valor

OBS_CENTER_L 0

OBS_SIDE_L 1

OBS_CENTER_R 2

OBS_SIDE_R 3

SEN_CHECK_ACCE

Esta variable de escritura que indica que eje debe de leer la funciones

SEN_ACCE_XYZ_READ. En la siguiente tabla se muestra los valores que puede coger

esta variable.

Tabla 23. Valores admitidos para SEN_CHECK_ACCE

Define Valor

ACCE_CHECK_X 0

ACCE_CHECK_Y 1

ACCE_CHECK_Z 2

SEN_CHECK_LINE

Esta variable de escritura que indica que sensor deben de leer las funciones que

controlan el sensor de línea. En la siguiente tabla se muestra los valores que puede coger

esta variable.

Tabla 24. Valores admitidos para SEN_CHECK_LINE

Define Valor

LINE_L 0

LINE_R 1

Page 43: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 43 de 170

www.moway-robot.com

SEN_SPEAKER_ON_OFF

Esta variable de escritura que indica que si el usuario quiere encender, apagar o

mantener durante un tiempo el speaker.

Tabla 25. Valores admitidos para SEN_SPEAKER_ON_OFF

Define Valor

SPEAKER_OFF 0

SPEAKER_ON 1

SPEAKER_TIME 2

SEN_LIGHT_P

En esta variable de lectura se guarda el porcentaje de la luz incidente en el

sensor de luz. Se actualiza cada vez que se llama a la función SEN_LIGHT.

SEN_BATTERY_P

En esta variable se guarda el porcentaje del nivel de batería que queda en el

robot. Se actualiza cada vez que se llama a la función 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 función SEN_TEMPERATURE.

SEN_MIC

En esta variable se guarda el valor captado por el micrófono, siendo este dato

digital o analógico dependiendo de la función 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 sólo tiene validez si la variable SEN_SPEAKER_ON_OFF tiene valor de

SPEAKER_TIME (valor decimal: 2).

Page 44: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 44 de 170

www.moway-robot.com

SEN_OBS

En esta variable se guarda el valor del sensor indicado por SEN_CHECK_OBS,

siendo este dato digital o analógico dependiendo de la función que se encarga de

actualizarla: SEN_OBS_DIG y SEN_OBS_ANALOG.

SEN_ACCE

En esta variable se guarda la posición del eje indicado por SEN_CHECK_ACCE

del robot. Se actualiza cada vez que se llama a la función 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 función SEN_ACCE_CHECK_TAP.

SEN_LINE

En esta variable se guarda el valor del sensor de línea indicado en

SEN_CHECK_LINE, siendo este dato digital o analógico dependiendo de la función

que se encarga de actualizarla: SEN_LINE_DIG y SEN_LINE_ANALOG.

5.2.2.3 Funciones

En las librerías lib_sen_moway y lib_re_sen_moway existen una serie de

funciones que están orientadas al control de los sensores y de los diodos LED de

mOway.

A continuación se dará una breve descripción de cada una de ellas:

Tabla 26. Resumen de funciones en ensamblador

Nombre Variable entrada Variable salida Descripción

SEN_CONFIG - - Configura para utilizar los

sensores.

SEN_LIGHT - SEN_LIGHT_P Lee el valor del sensor de

luz .

SEN_BATTERY - SEN_BATTERY_P Devuelve el nivel de

batería.

SEN_TEMPERATURE - SEN_TEMPERATURE_C Detecta la temperatura en

ºC.

SEN_MIC_ANALOG - SEN_MIC Detecta la intensidad con la que le llega el sonido

SEN_MIC_DIG - SEN_MIC Detecta si le llega sonido

o no.

SEN_SPEAKER SEN_SPEAKER_FREQ SEN_SPEAKER_TIME

SEN_SPEAKER_ON_OFF

- Emite un tono de una frecuencia comprendida

entre 250 Hz y 65 KHz,

con intervalos de 100 ms

SEN_OBS_DIG SEN_CHECK_OBS SEN_OBS SEN_STATUS

Detecta la presencia de obstáculos.

Page 45: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 45 de 170

www.moway-robot.com

SEN_OBS_ANALOG SEN_CHECK_OBS SEN_OBS

SEN_STATUS

Detecta la presencia de

obstáculos, y la distancia

a los mismos.

SEN_ACCE_XYZ_READ SEN_CHECK_ACCE SEN_ACCE SEN_STATUS

Indica la aceleración sufrida en los ejes x,y,z

del robot.

SEN_ACCE_CHECK_TAP - SEN_ACCE_TAP SEN_STATUS

Comprueba si el robot se ha golpeado.

SEN_LINE_DIG SEN_CHECK_LINE SEN_LINE

SEN_STATUS

Detecta zona oscura

(línea negra).

SEN_LINE_ANALOG SEN_CHECK_LINE SEN_LINE

SEN_STATUS

Detecta tonalidades en la

superficie.

LED_BRAKE_ON - - Encendido del diodo LED

de freno.

LED_FRONT_ON - - Encendido del diodo LED

frontal.

LED_TOP_RED_ON - - Encendido del diodo LED superior rojo.

LED_TOP_GREEN_ON - - Encendido del diodo LED

superior verde.

LED_BRAKE _OFF - - Apagado del diodo LED de freno.

LED_FRONT_OFF - - Apagado del diodo LED

frontal.

LED_TOP_RED_OFF - - Apagado del diodo LED

superior rojo.

LED_TOP_GREEN_OFF - - Apagado del diodo LED

superior verde.

LED_BRAKE _ON_OFF - - Parpadeo del diodo LED

de freno.

LED_FRONT_ON_OFF - - Parpadeo del diodo LED frontal.

LED_TOP_RED_ON_OFF - - Parpadeo del diodo LED

superior rojo.

LED_TOP_GREEN_ON_OFF - - Parpadeo del diodo LED superior verde.

SEN_CONFIG

Esta función configura las entradas y salidas para poder manejar los sensores e

inicializa las variables.

Tabla 27. Conexiones PIC-sensores

Pin PIC I/O Sensor PORTA

RA0 I Luz

RA1 I Receptor central infrarrojo izquierdo

RA2 I Receptor sensor línea derecho

RA3 I Receptor lateral infrarrojo izquierdo

RA5 I Receptor sensor línea izquierdo

PORTB

RB1 I Interrupción 1 del acelerómetro

RB2 I Interrupción 2 del acelerómetro

RB3 O Altavoz

RB5 O LED superior rojo

RB6 O LED superior verde

PORTC

RC7 O LED frontal

PORTD

Page 46: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 46 de 170

www.moway-robot.com

RD1 O Transmisor infrarrojo de línea

RD4 I Señal SDO para la comunicación SPI del acelerómetro

RD5 O Señal SDI para la comunicación SPI del acelerómetro

RD6 O Señal de reloj para la comunicación SPI del acelerómetro

RD7 I Chip Select para la comunicación SPI del acelerómetro

PORTE

RE5 O LED de freno

PORTF

RF5 I Receptor lateral infrarrojo derecho

RF6 I Receptor central infrarrojo derecho

PORTH

RH5 I Sensor de temperatura

RH6 I Medidor de batería

RH7 I Micrófono

PORTJ

RJ6 O Transmisor infrarrojo

RJ7 I/O Pad libre

SEN_LIGHT

Variables de salida SEN_LIGHT_P Porcentaje de la luz incidente.

La función SEN_LIGHT captura el valor analógico dependiente de la luz

incidente en el fototransistor. Para ello se deben seguir los siguientes pasos:

Activar el ADC.

Esperar el tiempo de adquisición de datos (100us).

Leer el valor analógico.

Con el voltaje analógico 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 batería

La función SEN_BATTERY captura el valor analógico que proviene de la

batería16

. Para ello se deben seguir los siguientes pasos:

Activar el ADC.

Esperar el tiempo de adquisición de datos (100us).

Leer el valor analógico.

Con el voltaje analógico medido se calcula el porcentaje del nivel de batería.

16

El porcentaje puede diferir del dato proporcionado por MowayWorld puesto que hay diferencias

en la lectura cuando la batería se está cargando o se está utilizando.

Page 47: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 47 de 170

www.moway-robot.com

Se copia el dato en la variable SEN_BATTERY_P.

SEN_TEMPERATURE

Variables de salida SEN_TEMPERATURE_C Temperatura en ºC

La función SEN_TEMPERATURE captura el valor analógico dependiente de la

temperatura que recoge el termistor17

. Para ello se deben seguir los siguientes pasos:

Activar el ADC.

Esperar el tiempo de adquisición de datos (100us).

Leer el valor analógico.

Con el voltaje analógico 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 función SEN_MIC_ANALOG captura el valor analógico dependiente de la

intensidad del sonido procedente del micrófono. Para ello se deben seguir los siguientes

pasos:

Activar el ADC.

Esperar el tiempo de adquisición de datos (100us).

Leer el valor analógico.

Con el voltaje analógico medido se calcula la intensidad de la señal 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 función SEN_MIC indica si hay sonido o no. Para ello se deben seguir los

siguientes pasos:

Se comprueba si se presenta alguna señal en el micrófono.

17

La temperatura indicada por este sensor difiere de la de fuera en unos 5ºC porque recoge la

temperatura interna del robot.

Page 48: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 48 de 170

www.moway-robot.com

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

SEN_SPEAKER

Variables de entrada SEN_SPEAKER_FREQ Frecuencia generadora del tono.

SEN_SPEAKER_TIME Tiempo que dura el tono.

SEN_SPEAKER_ON_OFF Encender, apagar o encender un tiempo determinado

La función SEN_SPEAKER genera un tono de una frecuencia comprendida entre

250 Hz y 65 KHz. Dependiendo del valor de SEN_SPEAKER_ON_OFF esta función

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 función es de tiempo, esperar el tiempo indicado por

SEN_SPEAKER_TIME.

Si la función es de tiempo apagar el módulo de PWM del microcontrolador.

Tabla 28. Valores admitidos para SEN_SPEAKER_ON_OFF

Define Valor

SPEAKER_OFF 0

SPEAKER_ON 1

SPEAKER_TIME 2

Tabla 29. Equivalencia valor SEN_SPEAKER_FREQ y frecuencia aplicada al zumbador

SEN_SPEAKER_FREQ

Frecuencia aplicada a zumbador Hz

0 0,0000000

10 5681,8181818

20 2976,1904762

30 2016,1290323

40 1524,3902439

50 1225,4901961

60 1024,5901639

70 880,2816901

80 771,6049383

90 686,8131868

100 618,8118812

110 563,0630631

120 516,5289256

130 477,0992366

140 443,2624113

Page 49: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 49 de 170

www.moway-robot.com

150 413,9072848

160 388,1987578

170 365,4970760

180 345,3038674

190 327,2251309

200 310,9452736

210 296,2085308

220 282,8054299

230 270,5627706

240 259,3360996

250 249,0039841

255 244,1406250

SEN_OBS_DIG

Variables de entrada SEN_CHECK_OBS Indica que sensor se quiere leer

Variables de salida SEN_OBS Indica si existe o no objeto en el sensor deseado

Salida SEN_STATUS: SENOK

DWRONG

Esta función indica si un obstáculo en la parte del sensor que se le indique a través

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 ningún valor

válido de la variable se activa el flag DWRONG y la función 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 detección del obstáculo. Si hay algún

obstáculo la luz rebotará y esta señal será captada por el receptor infrarrojo.

Se comprueba si se presenta alguna señal 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 señal interferente.

Si no se presenta ninguna señal interferente y el proceso se ejecuta sin

problemas el flag SENOK es activado.

Page 50: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 50 de 170

www.moway-robot.com

Tabla 30. Valores de la variable de entrada SEN_CHECK_OBS

Define Valor

OBS_CENTER_L 0

OBS_SIDE_L 1

OBS_CENTER_R 2

OBS_SIDE_R 3

SEN_OBS_ANALOG

Variables de entrada SEN_CHECK_OBS Indica que sensor se quiere leer

Variables de salida SEN_OBS Indica el valor analógico del sensor

Salida SEN_STATUS: SENOK

DWRONG

Esta función indica si un obstáculo en la parte del sensor que se le indique a través

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 ningún valor

válido de la variable se activa el flag DWRONG y la función 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 detección del obstáculo.

Se activa el ADC.

Se comprueba si se presenta alguna señal en los cuatro receptores IR.

Se copia el valor del receptor analógico en las variables de salida. Cuanto mayor

sea este valor más cerca se encontrará el obstáculo.

Se desactiva LED infrarrojo.

Se comprueba que no haya ninguna señal interferente.

Si no se presenta señal interferente y el proceso se ejecuta sin problemas el flag

SENOK es activado.

Tabla 31. Valores de la variable de entrada SEN_CHECK_OBS

Define Valor

OBS_CENTER_L 0

OBS_SIDE_L 1

OBS_CENTER_R 2

OBS_SIDE_R 3

Page 51: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 51 de 170

www.moway-robot.com

SEN_ACCE_XYZ_READ

Variables de entrada SEN_CHECK_ACCE Indica que eje se quiere leer

Variables de salida SEN_ACCE Aceleración que sufre el robot en el eje indicado

Salida SEN_STATUS: SENOK

DWRONG

La función SEN_ACCE_XYZ_READ devuelve la aceleración sufrida por el robot

en los 3 ejes. El sensor presenta una resolución de ±0.0156G/bit. Esto es, 0 se

corresponde a un valor de -2G y 255 a un valor de 2G.

Imagen 41. Posición de los ejes del robot

El microcontrolador se comunica con el sensor a través 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 acelerómetro se pasa a modo “detección de golpes”.

Tabla 32. Valores de la variable de entrada SEN_CHECK_ACCE

Define Valor

ACCE_CHECK_X 0

ACCE_CHECK_Y 1

ACCE_CHECK_Z 2

SEN_ACCE_CHECK_TAP

Variables de salida SEN_ACCE_TAP Indica si se ha detectado uno o dos toques

Salida SEN_STATUS: SENOK

DWRONG

El acelerómetro tiene la opción de detectar golpes o doble golpes.

Page 52: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 52 de 170

www.moway-robot.com

El microcontrolador se comunica con el sensor a través de la interface SPI.

Le pregunta si ha habido interrupción por golpe.

Se modifica el valor de SEN_ACCE_TAP.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Sin uso Sin uso Sin uso Sin uso Sin uso Sin uso TAP_TAP TAP

- - - - - -

Bit 7-2: Sin uso

Bit 1: TAP_TAP: Muestra si se han detectado dos toque.

1 = Doble Toque detectado.

0 = Doble Toque no detectado.

Bit 0: TAP: Muestra si se ha detectado un toque.

1 = Toque detectado.

0 = Toque no detectado.

SEN_LINE_DIG

Variables de entrada SEN_CHECK_LINE Indica que sensor se quiere leer

Variables de salida SEN_LINE Indica el valor digital del sensor

Salida SEN_STATUS: SENOK

DWRONG

La función SEN_LINE_DIG indica si los sensores están 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 ningún valor

válido de la variable se activa el flag DWRONG y la función termina.

Se manda pulso de luz infrarroja para la detección de la línea. Si se detecta, la

luz rebotará y esta señal será captada por el receptor infrarrojo.

Esperar el tiempo de adquisición de datos (900us).

Se lee el sensor requerido.

Se mueve el dato a la variable SEN_LINE. Si la superficie es oscura (la luz no

se refleja) obtendremos un ‘1’ en la variable.

Tabla 33. Valores de la variable de entrada SEN_CHECK_LINE

Define Valor

LINE_L 0

LINE_R 1

Page 53: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 53 de 170

www.moway-robot.com

SEN_LINE_ANALOG

Variables de entrada SEN_CHECK_LINE Indica que sensor se quiere leer

Variables de salida SEN_LINE Indica el valor analógico del sensor

Salida SEN_STATUS: SENOK

DWRONG

La función 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 ningún valor

válido de la variable se activa el flag DWRONG y la función termina.

Se manda pulso de luz infrarroja para la detección de la línea. Si se detecta, la

luz rebotará y esta señal será captada por el receptor infrarrojo.

Esperar el tiempo de adquisición de datos (900us).

Se activa el ADC.

Se lee el sensor requerido.

Mover ese dato a la variable SEN_LINE. Cuanto más alto sea este valor más

oscura será la superficie.

Tabla 34. Valores de la variable de entrada SEN_CHECK_LINE

Define Valor

LINE_L 0

LINE_R 1

LED_BRAKE_ON

Enciende el diodo LED de freno.

LED_FRONT_ON

Enciende el diodo LED frontal.

LED_TOP_RED_ON

Enciende el diodo LED superior rojo.

LED_TOP_GREEN_ON

Enciende el diodo LED superior verde.

18

El valor del sensor analógico variará de un sensor a otro debido a la tolerancia del componente

electrónico.

Page 54: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 54 de 170

www.moway-robot.com

LED_BRAKE _OFF

Apaga el diodo LED de freno.

LED_FRONT_OFF

Apaga el diodo LED frontal.

LED_TOP_RED_OFF

Apaga el diodo LED superior rojo.

LED_TOP_GREEN_OFF

Apaga el diodo LED superior verde.

LED_BRAKE_ON_OFF

Parpadeo del diodo LED de ruptura.

LED_FRONT_ON_OFF

Parpadeo del diodo LED frontal.

LED_TOP_RED_ON_OFF

Parpadeo del diodo LED superior rojo.

LED_TOP_GREEN_ON_OFF

Parpadeo del diodo LED superior verde.

5.2.3 Librería motores mOway ensamblador

Existen dos librerías en ensamblador que pueden ser incluidas en cualquier

proyecto de mOway que permiten al usuario controlar el sistema motriz con gran

facilidad. Ambas son idénticas salvo el hecho de que una de ellas tiene la posibilidad de

reubicar tanto el código como las variables (utilizando proyectos del MPLAB IDE).

Es importante saber que cada llamada a cualquier función de la librería 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.

Page 55: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 55 de 170

www.moway-robot.com

5.2.3.1 Descripción

La librería 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 comunicación con el módulo 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 duración de 350us.

S

T

A

R

T

MOT_DIRMOT_

COMAND

T

Y

P

E

R

LMOT_VEL

S

E

N

T_DIST_ANG

S

T

O

P

_

W

Imagen 42. Formato de comandos: MOT_STR, MOT_CHA_VEL

S

T

A

R

T

MOT_

COMAND

T

Y

P

E

R

LMOT_VEL

S

E

N

RAD/

CENWHEEL

S

T

O

P

T_DIST_ANGMOT_DIR_

W

Imagen 43. Formato de comandos: MOT_CUR, MOT_ROT

S

T

A

R

T

S

T

O

P

COM_STOP/

RST_COMMOT_DIR

_

W

Imagen 44. Formato de comandos: MOT_STOP, MOT_RST

S

T

A

R

T

S

T

O

P

MOT_STATUS_DATA_

0MOT_DIR R

MOT_STATUS_DATA_

1

Imagen 45. Formato de comando: MOT_FDBCK

5.2.3.2 Variables

MOT_STATUS

Registro que indica el estado del comando.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Sin uso Sin uso Sin uso Sin uso Sin uso Sin uso DMWRONG COMOK

- - - - - -

Page 56: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 56 de 170

www.moway-robot.com

Bit 7-2: Sin uso

Bit 1: DMWRONG: Muestra si los datos son incorrectos.

1 = Datos incorrectos.

0 = Datos correctos.

Bit 0: COMOK: Muestra si el comando ha sido enviado correctamente por

I2C.

1 = Envío correcto.

0 = Envío incorrecto.

MOT_CON

Registro de control. En este registro se definen parámetros de los comandos.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Sin uso Sin uso Sin uso Sin uso Sin uso COMTYPE RL FWDBACK

- - - - -

Bit 7-3: Sin uso

Bit 2: COMTYPE: Tipo de comando.

1 = Tiempo.

0 = Distancia o ángulo (en MOT_ROT).

Bit 1: RL: Derecha o Izquierda

1 = Derecha.

0 = Izquierda.

Bit 0: FWDBACK: Adelante o hacia atrás.

1 = Adelante.

0 = Atrás.

MOT_VEL Velocidad deseada en el comando.

MOT_T_DIST_ANG

Según el valor de COMTYPE y del comando, esta variable será el tiempo,

distancia o el ángulo.

MOT_CENWHEEL

Rotación sobre el centro o sobre una de las ruedas del robot.

MOT_RAD

Radio para el comando MOT_CUR.

Page 57: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 57 de 170

www.moway-robot.com

MOT_RST_COM

Tipo de reset que se desea.

MOT_STATUS_COM Tipo de dato que se quiere leer del motor.

MOT_STATUS_DATA_0-1

En estas dos variables se almacena el valor del dato requerido por la función

MOT_FDBCK.

5.2.3.3 Funciones

En la librería lib_mot_moway y lib_re_mot_moway existen una serie de

funciones que están orientadas al control del sistema de motores de mOway.

A continuación se dará una breve descripción de cada una de ellas.

Tabla 35. Resumen de funciones en ensamblador de lib_mot_moway

Nombre Entrada Retorno Descripción

MOT_CONFIG - - Configuración para la

comunicación con los

motores

MOT_STR

MOT_VEL MOT_T_DIST

MOT_CON FWDBACK

COMTYPE

MOT_STATUS COMOK

DWRONG

Comando para movimiento en línea recta

MOT_CHA_VEL

MOT_VEL MOT_T_DIT

MOT_CON FWDBACK

COMTYPE

RL

MOT_STATUS COMOK

DWRONG

Comando para cambiar la velocidad de un motor

MOT_ROT

MOT_VEL MOT_CENWHEEL

MOT_T_ANG

MOT_CON

FWDBACK

COMTYPE RL

MOT_STATUS COMOK

DWRONG

Comando para realizar la rotación del robot

MOT_CUR

MOT_VEL

MOT_RAD MOT_T_DIST

MOT_CON FWDBACK

COMTYPE

RL

MOT_STATUS COMOK DWRONG

Comando para realizar una

curva

MOT_CHECK_END - - Función que espera hasta la finalización de comando

Page 58: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 58 de 170

www.moway-robot.com

MOT_STOP - MOT_STATUS COMOK

DWRONG

Comando para detener el

robot

MOT_RST

MOT_RST_COM MOT_STATUS COMOK

DWRONG

Comando para resetear las variables temporales de

tiempo y distancia

MOT_FDBCK

STATUS_COM MOT_STATUS_ DATA_0

MOT_STATUS_

DATA_1

MOT_STATUS COMOK DWRONG

Comando para ver el estado de los motores

MOT_CONFIG

Esta función configura las entradas y salidas para que el microcontrolador pueda

comunicarse con el Sistema Motriz.

Tabla 36. Conexiones PIC-motores

Pin PIC I/O Sensor PORTE

RE7 I Indica cuándo el motor termina el comando

RE0 O SCL del protocolo I2C

RE1 O SDA del protocolo I2C

El puerto RE7 nos indica la finalización de un comando. Este puerto tiene la

etiqueta MOT_END en la librería.

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 propósito se puede utilizar la función MOT_CHECK_END.

Page 59: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 59 de 170

www.moway-robot.com

MOT_STR

Entrada MOT_VEL Velocidad deseada 0 100

MOT_CON, FWDBACK Sentido de la marcha 1-FWD 0-BACK

MOT_CON, COMTYPE Tipo de comando 1-TIME 0-DIST

MOT_T_DIST El valor de Tiempo

Distancia

0

0

255

255

Variables de salida FLAGS MOT_STATUS: COMOK y DWRONG

Comando para desplazamiento en línea recta. Es necesario especificar velocidad,

sentido, tipo de comando y el tiempo o la distancia a recorrer. El tiempo tiene una

resolución 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 atrás al 15% de velocidad 100mm (1mm x 100)

movlw .15

movwf MOT_VEL

movlw .100

movwf MOT_T_DIST_ANG

bcf MOT_CON,FWDBACK

bcf MOT_CON,COMTYPE

call MOT_STR

MOT_CHA_VEL

Entrada MOT_VEL Velocidad deseada 0 100

MOT_CON, FWDBACK Sentido de la marcha 1-FWD 0-BACK

MOT_CON, RL Izquierda o derecha 1-RIGHT 0-LEFT

MOT_CON, COMTYPE Tipo de comando 1-TIME 0-DIST

MOT_T_DIST El valor de Tiempo

Distancia

0

0

255

255

Variables de salida FLAGS MOT_STATUS: COMOK y DWRONG

Page 60: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 60 de 170

www.moway-robot.com

Comando para cambiar la velocidad a uno de los dos motores. Es necesario

especificar velocidad, sentido, el motor, tipo de comando y el tiempo o la distancia a

recorrer. El tiempo tiene una resolución 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% atrás) al motor izquierdo y hacer una distancia de 100

;mm (1mm x 100)

movlw .20

movwf MOT_VEL

movlw .100

movwf MOT_T_DIST_ANG

bcf MOT_CON,FWDBACK

bcf MOT_CON,COMTYPE

bcf MOT_CON,RL

call MOT_CHA_VEL

MOT_ROT

Entrada MOT_VEL Velocidad deseada 0 100

MOT_CON, FWDBACK Sentido de la marcha 1-FWD 0-BACK

MOT_CENWHEEL Sobre centro o rueda 0x01-CE 0x00-WH

MOT_CON, RL Derecha o izquierda 1-RIGHT 0-LEFT

MOT_CON, COMTYPE Tipo de comando 1-TIME 0-ANG

MOT_T_ANG El valor de Tiempo

Ángulo

0

0

255

100

Variables de salida FLAGS MOT_STATUS: COMOK y DWRONG

Comando para hacer rotar a mOway. Es necesario especificar velocidad, sentido,

tipo de rotación, el motor, tipo de comando y el tiempo o el ángulo a rotar. El tiempo

tiene una resolución de 100ms, y con un valor de 0 en MOT_T_ANG el comando se

mantendrá hasta que no se especifique otra orden.

Page 61: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 61 de 170

www.moway-robot.com

En cuanto al ángulo, las siguientes ecuaciones muestran como calcular el valor de

MOT_T_ANG teniendo en cuenta el ángulo de rotación deseado. Si la rotación se

produce sobre una de las ruedas se obtiene más resolución. Por otro lado, hay que tener

en cuenta la inercia mecánica por lo que se aconseja reducir la velocidad para conseguir

una mayor precisión e iniciar el movimiento con el robot parado.

Ecuación 1. MOT_T_ANG en rotación sobre el centro

º12

33.3º__

ÁnguloroundANGTMOT

Ejemplo:

;Rotación 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

;Rotación respecto la rueda izquierda adelante al 20% de velocidad 180º

movlw .20

movwf MOT_VEL

movlw .50

movwf MOT_T_DIST_ANG

movlw 0x00

movwf MOT_CENWHEEL

bsf MOT_CON,FWDBACK

bcf MOT_CON,COMTYPE

bcf MOT_CON,RL

call MOT_ROT

MOT_CUR

Entrada MOT_VEL Velocidad deseada 0 100

MOT_CON, FWDBACK Sentido de la marcha 1-FWD 0-BACK

MOT_RAD Radio 0 100

MOT_CON, RL Derecha o izquierda 1-RIGHT 0-LEFT

MOT_CON, COMTYPE Tipo de comando 1-TIME 0-DIST

MOT_T_DIST El valor de Tiempo

Distancia

0

0

255

255

Page 62: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 62 de 170

www.moway-robot.com

Variables de salida FLAGS MOT_STATUS: COMOK y DWRONG

Comando para dar una curva. Es necesario especificar velocidad, sentido, radio,

dirección, 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 restricción:

Ecuación 2. Condición 1 MOT_RAD

100__0 RADMOTVELMOT

Ecuación 3. Condición 2 MOT_RAD

100__0 RADMOTVELMOT

El tiempo tiene una resolución 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 atrás 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

Page 63: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 63 de 170

www.moway-robot.com

bcf MOT_CON,FWDBACK

bcf MOT_CON,COMTYPE

bcf MOT_CON,RL

call MOT_CUR

MOT_CHECK_END

Comando para esperar a la finalización del comando. Una vez mandado el

comando el programa continúa con su ejecución. Si al usuario le interesa esperar hasta

que el robot termine un comando se puede llamar a esta función 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 parámetro 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 cuentakilómetros

del motor.

Ejemplo:

Page 64: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 64 de 170

www.moway-robot.com

;Reseteo del tiempo transcurrido

movlw RST_T

movwf MOT_RST_COM

call MOT_RST

;Reseteo de la distancia recorrida

movlw RST_D

movwf MOT_RST_COM

call MOT_RST

MOT_FDBCK

Entrada STATUS_COM El parámetro 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 cuentakilómetros)

MOT_STATUS_DATA_1 Segundo byte de respuesta (segundo byte del cuentakilómetros)

FLAGS MOT_STATUS: COMOK y DWRONG

Comando para conocer diversos parámetros del sistema motriz. Podemos

consultar el tiempo transcurrido, el ángulo (sólo en el comando MOT_ROT), velocidad

de los dos motores, distancia recorrida por cada motor y el cuentakilómetros.

Esta función actualiza dos variables donde se guardará la información 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 línea mientras el robot la sigue.

Tabla 37. Resolución de los datos del motor

Parámetro Resolución STATUS_T 100ms/bit STATUS_A 3.6º/bit STATUS_V_R 1%/bit STATUS_V_L 1%/bit STATUS_D_R 1mm/bit STATUS_D_L 1mm/bit STATUS_KM 1mm/bit

Page 65: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 65 de 170

www.moway-robot.com

Ejemplo:

;Petición 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 válido

;Petición de distancia recorrida por el motor derecho desde el último comando

movlw STATUS_KM

movwf MOT_STATUS_COM

call MOT_FDBCK

;Ej. Salida:

;MOT_STATUS_DATA_0=0x08

;MOT_STATUS_DATA_1=0x01;

5.2.4 Librería para el módulo BZI-RF2GH4 en ensamblador

5.2.4.1 Descripción

Con esta librería es posible realizar fácilmente una comunicación entre el robot y

el módulo BZI-RF2GH4.

Dado que todas las funciones utilizan el protocolo SPI, es necesario habilitar el

hardware del microcontrolador para este propósito. Para ello basta con añadir unas

líneas de código en la configuración inicial del programa.

5.2.4.2 Variables

RF_STATUS

Esta variable de solo lectura informa de la situación de la comunicación por el

módulo de radio.

Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0

Sin uso CONFIGOK OFFOK ONOK RCVNW RCVOK ACK SNDOK

-

byte 1 byte 0

0x01 0x08

0000 0001 0000 0100

264

Distancia:

264*1mm

264mm

Page 66: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 66 de 170

www.moway-robot.com

Bit 7: Sin uso

Bit 6: CONFIGOK: Muestra si el módulo se ha configurado correctamente.

1 = El módulo se ha configurado correctamente.

0 = Módulo desconfigurado. Imposibilidad de comunicación con el

módulo por ausencia o conexión eléctrica incorrecta.

Bit 5: OFFOK: Muestra si el módulo se ha apagado correctamente.

1 = El módulo se ha apagado correctamente.

0 = No se ha apagado correctamente. Imposibilidad de comunicación con

el módulo por ausencia o conexión eléctrica incorrecta.

Bit 4: ONOK: Muestra si el módulo se ha encendido correctamente.

1 = El módulo se ha encendido correctamente.

0 = El módulo no está activo. Imposibilidad de comunicación con el

módulo por ausencia o conexión eléctrica incorrecta.

Bit 3: RCVNW: Muestra si todavía quedan datos por leer.

1 = Quedan tramas de datos por leer en la pila del módulo de radio.

0 = Tras la última lectura, la pila de datos del módulo quedó vacía. No

hay mensajes en espera.

Bit 2: RCVOK: Informa que se han recibido datos correctamente y están

accesibles para ser tratados.

1 = Recepción correcta.

0 = No se han recibido datos o la información recibida es corrupta.

Bit 1: ACK: Muestra si se ha recibido el ACK (confirmación) del receptor tras

una transmisión.

1 = El receptor ha confirmado que ha recibido los datos correctamente.

0 = No se ha recibido la confirmación del receptor. Puede ser causa de

que no haya recibido la señal o de que tenga la pila llena y no pueda

almacenar más mensajes.

Bit 0: SNDOK: Muestra si el último envío de datos se ha realizado.

1 = El módulo 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

comunicación con el módulo de radio

RF_DATA_OUT_0, RF_DATA_OUT _1,… RF_DATA_OUT _7

Este grupo de variables consta de 8 bytes. En cada transmisión se envía el

contenido de los 8 bytes.

Page 67: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 67 de 170

www.moway-robot.com

RF_DATA_IN_0, RF_DATA_IN _1,… RF_DATA_IN _7

Este grupo de variables consta de 8 bytes. En cada recepción se actualizan estos 8

bytes.

RF_DIR_OUT

Esta variable es de un solo byte. Indica la dirección del dispositivo que se desea

mandar el dato.

RF_DIR_IN

Esta variable es de un solo byte. Indica la dirección de los datos recibidos.

RF_DIR

Esta variable es de un solo byte. Indica la dirección propia con la que se configura

el módulo.

5.2.4.3 Funciones

La librería consta de nueve funciones que facilitarán bastante el trabajo a la hora

de desarrollar una aplicación de comunicación con los módulos BZI-RF2GH4. A

continuación se dará una breve descripción de cada una de ellas.

Tabla 38. Resumen de las funciones en ensamblador.

Funciones para el módulo BZI-RF2GH4

RF_CONFIG Configura las entradas y salidas del microcontrolador

19 así

como parámetros del módulo de radio.

RF_CONFIG_SPI Configura las entradas y salidas del microcontrolador

20 así

como los parámetros necesarios para utilizar el bus SPI.

RF_ON Activa el módulo de radiofrecuencia en modo escucha.

RF_OFF Desactiva el módulo de radiofrecuencia y lo deja en modo de

bajo consumo.

RF_SEND Envía una trama de datos (8 Bytes) a la dirección indicada.

RF_RECEIVE Comprueba si se ha producido una recepción y de ser así,

recoge la trama.

RF_RECEIVE_INT Realiza la misma función que RF_RECEIVE solo que por

interrupción.

RF_INT_EN Esta rutina habilita en el microcontrolador la interrupción

externa para el módulo de radio.

19

El usuario puede cambiar estos pines modificando la librería donde se define el patillaje 20

Ídem.

Page 68: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 68 de 170

www.moway-robot.com

RF_CONFIG_SPI

La velocidad del SPI no debe superar los 8 Mhz. En la función se configuran los

diferentes parámetros del módulo SPI y los pines del PIC.

PIN RF PIN PIC SCK RC3

SDI RC5

SDO RC4

Tabla 39. Configuración SPI puertos PIC

RF_CONFIG

Variables de entrada RF_DIR Dirección del dispositivo. Debe ser un valor entre 0x01 y 0xFE.

RF_CHN Canal a utilizar en la comunicación. Debe ser un valor entre 0x00

y 0x7F (128 canales).

Variables de salida FLAGS: CONFIGOK

Esta función configura el transceptor habilitando su propia dirección de escucha y

la dirección de ‘broadcast’. A su vez configura otros parámetros como pines del PIC, el

canal, la velocidad de transmisión, la potencia de emisión, la longitud de la dirección, la

longitud del código CRC, etc.

PIN RF PIN PIC IRQ RB0

CSN RF2

CE RH4

Tabla 40. Configuración módulo RF puertos PIC

El canal debe ser común a todos los módulos que van a participar en la

comunicación. El usuario puede elegir cualquier canal de los 128 disponibles. Sin

embargo, si en el entorno existe más de una comunicación entre módulos en diferentes

canales, hay que dejar un espaciamiento de 2 entre los canales a utilizar para evitar

interferencias dejando así 32 canales útiles. Otra cuestión a tener en cuenta es la

existencia de otras tecnologías que utilizan la banda ISM 2.4GHz (Wifi, Bluetooth,etc.)

y que también pueden causar interferencias en alguno de los canales.

Page 69: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 69 de 170

www.moway-robot.com

2.4Ghz 2.401Ghz 2.402Ghz 2.403Ghz

……...

2.405Ghz2.404Ghz 2.525Ghz

Canal

0x01

Canal

0x04

Imagen 46 Canales RF

La dirección que se asigna a cada dispositivo debe ser unívoca dentro de cada

canal.

Si la comunicación SPI del PIC está mal configurada, el conexionado se ha

realizado incorrectamente o en ausencia del módulo, el bit CONFIGOK de

RF_STATUS permanecerá a 0.

RF_ON

Variables de salida FLAGS: ONOK

Esta rutina activa el módulo de radio en modo escucha para poder recibir datos

y/o realizar envíos de datos.

Es importante tener en cuenta que tras la llamada a esta rutina el módulo necesita

2,5ms para estar listo.

Si la comunicación SPI del PIC está mal configurada, el conexionado se ha

realizado incorrectamente o en ausencia del módulo, el bit ONOK de RF_STATUS

permanecerá a 0.

Ejemplo:

;--[Rutina de configuración sin interrupción y activación]-----

;Configurar módulos SPI del PIC

call RF_CONFIG_SPI

;Configurar módulo RF (canal y dirección propias)

movlw 0x01 ;Dirección propia

movwf RF_DIR

movlw 0x40 ;Canal

movwf RF_CHN

call RF_CONFIG

btfss RF_STATUS,CONFIGOK

nop ;Módulo no configurado

Page 70: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 70 de 170

www.moway-robot.com

;Activar el módulo RF

call RF_ON

btfss RF_STATUS,ONOK

nop ;Módulo no inicializado

;-----------------------------------------------------------------------------

RF_OFF

Variables de salida FLAGS: OFFOK

Esta rutina desactiva el módulo de radio dejándolo en modo de bajo consumo. No

borra la configuración establecida.

Si la comunicación SPI del PIC está mal configurada, el conexionado se ha

realizado incorrectamente o en ausencia del módulo, el bit OFFOK de RF_STATUS

permanecerá a 0.

RF_SEND

Variables de entrada RF_DIR_OUT Dirección a la que se quiere enviar los datos (1 byte).

RF_DATA_OUT_0 –

RF_DATA_OUT_7

Variables que van a ser transmitidas (8 bytes).

Variables de salida FLAGS: SNDOK y ACK

Esta función envía 8 Bytes de datos a la dirección indicada informando de la

correcta recepción en el destinatario. Tras su ejecución el dispositivo volverá al modo

de escucha.

Si un mensaje es enviado a la dirección 0x00, este será recibido por todos los

módulos que se encuentren en el mismo canal. Se debe tomar en cuenta que el módulo

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 envío de datos]------------------------

;Preparación de la dirección del receptor

;y de los datos.

movlw 0x02 ;Dirección del receptor

movwf RF_DIR_OUT

;Datos a enviar

clrf RF_DATA_OUT_0

Page 71: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 71 de 170

www.moway-robot.com

clrf RF_DATA_OUT_1

clrf RF_DATA_OUT_2

clrf RF_DATA_OUT_3

clrf RF_DATA_OUT_4

clrf RF_DATA_OUT_5

clrf RF_DATA_OUT_6

clrf RF_DATA_OUT_7

call RF_SEND ;Enviar trama

btfss RF_STATUS,SNDOK

nop ;No enviado

btfss RF_STATUS,ACK

nop ;No ACK

;-----------------------------------------------------------------------------

RF_RECEIVE

Variables de salida RF_DIR_IN Dirección de quien ha enviado la trama

RF_DATA_IN_0 –

RF_DATA_IN_7

Trama recibida desde la dirección indicada.

RCVOK y RCVNW

Esta rutina se encarga de comprobar si se ha producido una recepción y de ser así,

devuelve los datos recibidos. Asimismo, informa si quedan datos sin leer en la FIFO de

recepción del módulo.

Cuando se reciba una trama se debe hacer una comprobación del bit RCVNW de

la variable RF_STATUS y si está activo se debe llamar a la función 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 función recibir antes de que se llene la pila, el dispositivo no podrá recibir

más datos.

Al no utilizar interrupciones, la probabilidad de pérdida de paquetes, con tráfico

elevado, es moderada. Es aconsejable utilizarla sólo en entornos con pocos dispositivos

y/o poco tráfico de datos. También se puede solucionar este problema haciendo que los

emisores reenvíen la misma trama hasta que la comunicación haya sido correcta, pero

en entornos con mucho tráfico las colisiones crecen exponencialmente aumentando

considerablemente los tiempos de envío.

Ejemplo:

;----- Rutina de recepción de datos sin interrupción]----------------

RECIBIR

call RF_RECEIVE

btfsc RF_STATUS,RCVOK

nop ;Tratar datos

Page 72: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 72 de 170

www.moway-robot.com

btfsc RF_STATUS,RCVNW

goto RECIBIR

;-----------------------------------------------------------------------------

RF_RECEIVE_INT

Variables de salida RF_DIR_IN Dirección de quien ha enviado la trama

RF_DATA_IN_0 –

RF_DATA_IN_7

Trama recibida desde la dirección indicada.

RCVOK, RCVNW

Es la rutina óptima de recepción. Es una rutina prácticamente igual a

RF_RECEIVE con la diferencia que esta funciona por interrupción. Por ello debe

ubicarse dentro del código de la interrupción y haber configurado las interrupciones

anteriormente (RF_INTER_EN). Se encarga de comprobar si se ha producido una

interrupción externa (RB0) y si es así, limpia el flag de interrupción. La probabilidad de

pérdida de paquetes es mínima. Aún así conviene que los emisores reenvíen si el flag de

envío no se activa.

Ejemplo:

;--------- -[Rutina de recepción de datos con interrupción]---------

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 interrupción externa del microcontrolador

(RB0) que utiliza el módulo de RF en la recepción de datos. Para ello se configura como

entrada el pin RB0. Aunque se puede manejar el módulo sin interrupciones no se

garantiza el mínimo tiempo de respuesta.

;--[Rutina de configuración con interrupción y activación]-----

;Habilitar interrupciones

call RF_INT_EN

Page 73: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 73 de 170

www.moway-robot.com

;Configurar módulos SPI del PIC

call RF_CONFIG_SPI

;Configurar módulo RF (canal y dirección propias)

movlw 0x01 ;Dirección propia

movwf RF_DIR

movlw 0x40 ;Canal

movwf RF_CHN

call RF_CONFIG

btfss RF_STATUS,CONFIGOK

nop ;Módulo no configurado

;Activar el módulo RF

call RF_ON

btfss RF_STATUS,ONOK

nop ;Módulo no inicializado

;-------------------------------------------------------------------------

Page 74: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 74 de 170

www.moway-robot.com

5.2.4.4 Diagrama de flujo para envío y recepción de

datos

SNDOK

RF_SEND

Definir

RF_DIR

Definir

RF_DATA

ACK no recibido

Envio no realizado

ACK

Envio realizado y

AKC recibido

1

1

0

0

Diagrama 1. Envio de datos en

ensablador

RF_RECEIVE

_INT

Interrupción ext

RCVOK

RCVNW

Tratar datos 0

11

Salir interrupción

0

Diagrama 2. Recepción con

interrupción en ensamblador

RF_RECEIVE

RCVOK

IRQ=0

RCVNW

Tratar datos 0

11

Salir recepción

0

IRQ=1

Diagrama 3. Recepción sin

interrupción en ensamblador

Page 75: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 75 de 170

www.moway-robot.com

5.2.5 Librería para el módulo Moway Camera Board en

ensamblador

5.2.5.1 Descripción Con esta librería es posible activar la cámara de mOway y elegir el canal de

transmisión de la misma, a través de comandos SPI.

Para poder utilizar el módulo BZI-RF2GH4 y el módulo de cámara a la vez, se ha

diseñado la electrónica para que el microcontrolador sólo pueda comunicarse con uno

de los módulos, evitando cortocircuitos. El módulo de cámara se habilita con un ‘1’ en

el pin CS del módulo, quedando el módulo BZI-RF2GH4 deshabilitado

automáticamente. El módulo BZI-RF2GH4 se habilita con un ‘0’ en el pin CSN,

quedando el módulo de cámara deshabilitado automáticamente.

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

cámara. COM_WR si el comando es de escritura y COM_RD si es de lectura. Las

funciones de esta librería sólo envían comandos de escritura (activar o desactivar

cámara y selección de canal).

ADDRESS_CAM

Esta variable contiene la dirección del registro del controlador de la cámara a leer

o escribir. Para configurar los puertos de entrada/salida del controlador de la cámara, 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 cámara

especificado en la variable ADDRESS_CAM.

CAM_STAT

Esta variable indica el estado de la cámara. Si está encendida su valor es ‘1’, si

está apagada su valor es ‘0’.

CAM_CHANNEL

Esta variable define el canal de transmisión de la cámara.

Page 76: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 76 de 170

www.moway-robot.com

5.2.5.3 Funciones

La librería incluye las funciones necesarias para manejar el módulo de cámara. A

continuación se dará una breve descripción de cada una de ellas.

Tabla 41. Resumen de las funciones en ensamblador.

Funciones para el módulo Moway Camera Board

CAM_CONFIG Configura las entradas y salidas SPI del microcontrolador, así

como el puerto del controlador de la cámara.

CAM_ON Activa la cámara

CAM_OFF Desactiva la cámara

CAM_CHN_SEL Selecciona el canal por el que va a transmitir la cámara al

receptor de vídeo.

CAM_SEND_COM Envía un comando (tipo de comando, registro y datos) al

controlador de la cámara

CAM_SPI_WRITE Envía un byte por SPI.

CAM_CONFIG

En la función se configuran los diferentes parámetros del módulo SPI y los pines

del PIC. También configura el puerto de entradas/salidas del controlador de la cámara.

Nota: la velocidad del SPI no debe superar los 8MHz.

PIN SPI PIN PIC SCK RC3

SDI RC5

SDO RC4

IRQ RB0

CSN RF2

CE RH4

Tabla 42. Configuración SPI puertos PIC

CAM_SEND_COM

Esta rutina envía un comando por SPI al controlador de la cámara. El formato del

comando consiste en tres bytes que especifican el tipo de comando (lectura o escritura),

el registro a leer o escribir, y los datos a escribir en dicho registro.

COMANDOS COMMAND_CAM COM_WR para escribir registro

COM_RD para leer registro

ADDRESS_CAM IODIR_ADD para configurar entradas/salidas del puerto del

controlador de la cámara.

OLAT_ADD para cambiar el estado de las salidas del puerto

del controlador de la cámara

Page 77: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 77 de 170

www.moway-robot.com

DATA_CAM Datos a escribir en el registro especificado en

ADDRESS_CAM

CAM_ON

Esta rutina envía por SPI el comando de activación de la cámara al controlador. Es

un comando de escritura en el registro de las salidas del puerto del controlador. Los tres

bytes a enviar son:

BYTES COMMAND_CAM COM_WR

ADDRESS_CAM OLAT_ADD

DATA_CAM 0x22

CAM_OFF

Esta rutina envía por SPI el comando de desactivación de la cámara al

controlador. Es un comando de escritura en el registro de las salidas del puerto del

controlador. Los tres bytes a enviar son:

BYTES COMMAND_CAM COM_WR

ADDRESS_CAM OLAT_ADD

DATA_CAM 0x00

CAM_CHN_SEL

Esta rutina envía por SPI el comando de cambio de canal de transmisión al

controlador. Es un comando de escritura en el registro de configuración de

entrada/salida del puerto del controlador.

Variables de entrada CAM_CHANNEL Canal en el que transmitirá la cámara. Debe ser un valor entre 1 y

4.

BYTES COMMAND_CAM COM_WR

ADDRESS_CAM IODIR_ADD

DATA_CAM Canal 1: 0xD8

Canal 2: 0xD4

Canal 3: 0xCC

Canal 4: 0xDC

Page 78: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 78 de 170

www.moway-robot.com

Ejemplo de activación de la cámara:

; Configuración de la cámara

call CAM_CONFIG

; Se selecciona el canal 1

movlw .1

movwf CAM_CHANNEL

call CAM_CHN_SEL

; Encender cámara

call CAM_ON

CAM_SPI_WRITE

Realiza las operaciones de lectura y escritura del puerto SPI del microcontrolador

en una sola función. Primero envía un byte al puerto SPI del microcontrolador. Después

lee el buffer SPI del microcontrolador si se ha recibido algún dato.

Variables de entrada BYTE_OUT Byte a enviar por SPI

Variables de salida BYTE_IN Byte leído por SPI

Page 79: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 79 de 170

www.moway-robot.com

6. Programación C

C18, de MPLAB, es un compilador que se sirve para la familia de

microcontrolador PIC18. Existe una evaluación de este compilador que se puede

descargar gratuitamente desde la página web de Microchip.

En la web de mOway y en el pack de instalación encontrará librerías para el

manejo de los sensores, motores y módulo RF escritas para el compilador.

La gran ventaja que tiene es que el lenguaje que compila es C. El manejo de

variables numéricas (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 programación (I2C, SPI). Sin embargo, los programas

generados son más grandes en cuanto a tamaño que en ensamblador.

En resumen:

Muy interesante para comenzar a trabajar con mOway rápidamente.

Muy interesante para realizar tareas sencillas o de complejidad media.

No recomendable si el tiempo de respuesta es crítico.

6.1 Creación de un proyecto

Para crear el primer proyecto utilizaremos el Project Wizard de MPLAB IDE que

permite crear proyectos rápidamente. Antes de empezar con la creación del proyecto, el

usuario tiene que tener instalado todos los elementos del compilador C18. Estos

elementos se integran a la hora de la instalación con MPLAB. Hay que destacar que el

ejemplo ha sido creado con la versión 8.4 de MPLAB.

Imagen 47. Project Wizard

Page 80: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 80 de 170

www.moway-robot.com

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

Imagen 48. Selección del PIC

2. A continuación se elige la herramienta MPLAB C18 C Compiler.

Imagen 49. Selección de herramienta

Page 81: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 81 de 170

www.moway-robot.com

3. En el paso tres se debe indicar la ubicación del proyecto a crear.

Imagen 50. Elección de carpeta

4. En el siguiente paso se añaden al proyecto las librerías de mOway que controlan

diferentes aspectos del robot. Esas librerías deben ser copiadas (manualmente o

indicándolo en el Wizard) en la carpeta del proyecto sino MPLAB utilizará las

librerías elegidas en la ubicación elegida.

Imagen 51. Elección de librerías mOway con copia

Page 82: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 82 de 170

www.moway-robot.com

5. Siguiendo estos pasos el proyecto se creará, pero faltará todavía la creación del

fichero .C donde se inserta el código fuente.

Imagen 52. Finalización Wizard

6. El siguiente paso es abrir el proyecto y crear un nuevo archivo (New File)

guardándolo en la misma carpeta del proyecto como Main.c. Éste será nuestro

fichero fuente.

Imagen 53. Creación de .c

Page 83: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 83 de 170

www.moway-robot.com

7. Se añade el fichero fuente al proyecto accediendo a Project/Add Files to Project…

Del mismo modo se añade también el script linker de mOway. Este fichero indica al

LINKER donde puede meter el programa en la memoria. Este script está disponible

en el pack de mOway y en los proyectos ejemplo.

Imagen 54. Proyecto con .C

6.2 Primer programa en C18

Para hacer el primer programa es necesario haber creado un proyecto (capítulo

anterior). Este primer programa básico hará que mOway evite los obstáculos. Es

necesario para realizar un proyecto redefinir los vectores de reset e interrupción.

1. Añadir redefinición de vectores. Este código es necesario para que los

programas se graben correctamente en la memoria de programa del robot.

Page 84: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 84 de 170

www.moway-robot.com

Imagen 55. Header de proyecto en C18

2. Se añade la función SEN_CONFIG habilitar al PIC en el uso de los sensores.

3. Se añade el parpadeo de uno de los LEDs.

4. Probar el programa y comprobar que se enciende el LED verde. La grabación se

realiza mediante MowayWorld (Grabar fichero .hex).

Page 85: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 85 de 170

www.moway-robot.com

Imagen 56. Primer programa: configuración y parpadeo de led

5. Para detectar obstáculos se llama a la función SEN_OBS_DIG() con el

parámetro OBS_CENTER_L para indicarle que chequee el sensor central

izquierdo.

6. Si encuentra obstáculo enciende los LED delantero.

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

detectan un obstáculo.

Page 86: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 86 de 170

www.moway-robot.com

Imagen 57. Primer programa: detección de obstáculo

8. Añadimos movimiento al robot: comando recto indefinidamente hasta que

encuentra un obstáculo.

9. Cuando encuentra obstáculo se manda un comando para que realice una rotación

de 180º. El robot esperará hasta que el comando termine y continuará en un

movimiento recto.

Page 87: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 87 de 170

www.moway-robot.com

Imagen 58. Primer programa: movimiento con detección

Este proyecto se suministra en el pack de mOway.

6.3 Librerías

6.3.2 Librería sensores mOway en C para C18

Esta librería en C18 puede ser incluida en cualquier proyecto de mOway que

permite al usuario controlar los sensores.

6.3.2.1 Descripción La librería 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.

Page 88: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 88 de 170

www.moway-robot.com

6.3.2.2 Funciones En la librería lib_sen_moway existen una serie de funciones que están orientadas

al control de los sensores y de los diodos LED de mOway.

Tabla 43. Resumen de funciones en C

A continuación se dará una breve descripción de cada una de ellas.

void SEN_CONFIG(void)

Esta función configura las entradas y salidas para poder manejar los sensores e

inicializa las variables.

Nombre Constantes

entrada

Descripción

void SEN_CONFIGURAR(void) - Configura para utilizar los sensores

unsigned char SEN_LIGHT(void) - Lee el valor del sensor de luz

unsigned char SEN_BATTERY(void) - Lee el porcentaje de la batería

unsigned char SEN_TEMPERATURE (void) - Lee la temperatura del interior del robot

unsigned char SEN_MIC_ANALOG (void) - Lee el valor analógico del micrófono

unsigned char SEN_MIC_DIG (void) - Lee el valor digital del micrófono

unsigned char SEN_SPEAKER(unsigned char,

unsigned char, unsigned char)

SPEAKER_OFF

SPEAKER_ON

SPEAKER_TIME

Controla el speaker.

unsigned char SEN_ACCE_XYZ_READ(unsigned char) ACCE_CHECK_X ACCE_CHECK_Y

ACCE_CHECK_Z

Indica las aceleraciones que sufre el robot

unsigned char SEN_ACCE_CHECK_TAP(void) - Comprueba si ha habido golpe

unsigned char SEN_OBS_DIG(unsigned char) OBS_SIDE_L OBS_CENTER_L

OBS_CENTER_R

OBS_SIDE_R

Detecta la presencia de obstáculos

unsigned char SEN_OBS_ANALOG(unsigned char) OBS_SIDE_L OBS_CENTER_L

OBS_CENTER_R

OBS_SIDE_R

Detecta distancia a obstáculos

unsigned char SEN_LINE_DIG(unsigned char) LINE_R LINE_L

Detecta zona oscura (línea negra)

unsigned char SEN_LINE_ANALOG (unsigned char) LINE_R

LINE_L

Detecta tonalidades en la superficie

void LED_FRONT_ON(void) - Encendido LED frontal

void LED_BRAKE_ON(void) - Encendido LED de freno

void LED_TOP_RED_ON(void) - Encendido LED superior rojo

void LED_TOP_GREEN_ON(void) - Encendido LED superior verde

void LED_FRONT _OFF(void) - Apagado LED frontal

void LED_BRAKE_OFF(void) - Apagado LED de freno

void LED_TOP_RED_OFF(void) - Apagado LED superior rojo

void LED_TOP_GREEN_OFF(void) - Apagado LED superior verde

void LED_FRONT _ON_OFF(void) - Parpadeo LED frontal

void LED_BRAKE_ON_OFF(void) - Parpadeo LED de freno

void LED_TOP_RED_ON_OFF(void) - Parpadeo LED superior rojo

void LED_TOP_GREEN_ON_OFF(void) - Parpadeo LED superior verde

Page 89: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 89 de 170

www.moway-robot.com

Tabla 44. Conexiones PIC-sensores

Pin PIC I/O Sensor PORTA

RA0 I Luz

RA1 I Receptor central infrarrojo izquierdo

RA2 I Receptor sensor línea derecho

RA3 I Receptor lateral infrarrojo izquierdo

RA5 I Receptor sensor línea izquierdo

PORTB

RB1 I Interrupción 1 del acelerómetro

RB2 I Interrupción 2 del acelerómetro

RB3 O Altavoz

RB5 O LED superior rojo

RB6 O LED superior verde

PORTC

RC7 O LED frontal

PORTD

RD1 O Transmisor infrarrojo de línea

RD4 I Señal SDO para la comunicación SPI del acelerómetro

RD5 O Señal SDI para la comunicación SPI del acelerómetro

RD6 O Señal de reloj para la comunicación SPI del acelerómetro

RD7 I Chip Select para la comunicación SPI del acelerómetro

PORTE

RE5 O LED de freno

PORTF

RF5 I Receptor lateral infrarrojo derecho

RF6 I Receptor central infrarrojo derecho

PORTH

RH5 I Sensor de temperatura

RH6 I Medidor de batería

RH7 I Micrófono

PORTJ

RJ6 O Transmisor infrarrojo

RJ7 I/O Pad libre

unsigned char SEN_LIGHT(void)

Salida Porcentaje de la luz incidente.

La función SEN_LIGHT captura el valor analógico dependiente de la luz

incidente en el fototransistor. Para ello se deben seguir los siguientes pasos:

Activar el ADC.

Esperar el tiempo de adquisición de datos (100us).

Leer el valor analógico.

Con el voltaje analógico medido se calcula el porcentaje de la luz incidente.

Retorna el porcentaje de luz incidente.

Page 90: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 90 de 170

www.moway-robot.com

unsigned char SEN_BATTERY(void)

Salida Porcentaje del nivel de batería

La función SEN_BATTERY captura el valor analógico que proviene de la

batería21

. Para ello se deben seguir los siguientes pasos:

Activar el ADC.

Esperar el tiempo de adquisición de datos (100us).

Leer el valor analógico.

Con el voltaje analógico medido se calcula el porcentaje del nivel de batería.

Retorna el porcentaje de batería.

unsigned char SEN_TEMPERATURE(void)

Salida Temperatura en ºC

La función SEN_TEMPERATURE captura el valor analógico dependiente de la

temperatura que recoge el termistor22

. Para ello se deben seguir los siguientes pasos:

Activar el ADC.

Esperar el tiempo de adquisición de datos (100us).

Leer el valor analógico.

Con el voltaje analógico 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 función SEN_MIC_ANALOG captura el valor analógico dependiente de la

intensidad del sonido procedente del micrófono. Para ello se deben seguir los siguientes

pasos:

Activar el ADC.

Esperar el tiempo de adquisición de datos (100us).

Leer el valor analógico.

21

El porcentaje puede diferir del dato proporcionado por MowayWorld porque hay diferencias en

la lectura cuando la batería se está cargando o se está utilizando. 22

La temperatura indicada por este sensor difiere de la de fuera en unos 5ºC porque recoge la

temperatura interna del robot.

Page 91: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 91 de 170

www.moway-robot.com

Con el voltaje analógico medido se calcula la intensidad de la señal de audio.

Retorna el valor del micrófono amplificado.

unsigned char SEN_MIC_DIG(void)

Salida Indica si existe o no sonido

La función SEN_MIC indica si hay sonido o no. Para ello se deben seguir los

siguientes pasos:

Se comprueba si se presenta alguna señal en el micrófono.

Retorna un 1 si hay sonido y un 0 si no lo hay.

void SEN_SPEAKER(unsigned char SEN_SPEAKER_FREQ, unsigned char

SEN_SPEAKER_TIME, unsigned char SEN_SPEAKER_ON_OFF)

Variables de entrada SEN_SPEAKER_FREQ Frecuencia generadora del tono.

SEN_SPEAKER_TIME Tiempo que dura el tono en intervalos de 100ms

SEN_SPEAKER_ON_OFF Encender, apagar o encender un tiempo determinado

La función SEN_SPEAKER genera un tono de una frecuencia comprendida entre

250 Hz y 65 KHz. Dependiendo del valor de SEN_SPEAKER_ON_OFF esta función

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 función es de tiempo, esperar el tiempo indicado por

SEN_SPEAKER_TIME.

Si la función es de tiempo apagar el módulo de PWM del microcontrolador.

Tabla 45. Valores admitidos para SEN_SPEAKER_ON_OFF

Define Valor

SPEAKER_OFF 0

SPEAKER_ON 1

SPEAKER_TIME 2

Tabla 46. Equivalencia valor SEN_SPEAKER_FREQ y frecuencia aplicada a zumbador

SEN_SPEAKER_FREQ

Frecuencia aplicada a zumbador Hz

0 0,0000000

10 5681,8181818

Page 92: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 92 de 170

www.moway-robot.com

20 2976,1904762

30 2016,1290323

40 1524,3902439

50 1225,4901961

60 1024,5901639

70 880,2816901

80 771,6049383

90 686,8131868

100 618,8118812

110 563,0630631

120 516,5289256

130 477,0992366

140 443,2624113

150 413,9072848

160 388,1987578

170 365,4970760

180 345,3038674

190 327,2251309

200 310,9452736

210 296,2085308

220 282,8054299

230 270,5627706

240 259,3360996

250, 249,0039841

255 244,1406250

unsigned char SEN_OBS_DIG(unsigned char SEN_CHECK_OBS)

Variables de entrada SEN_CHECK_OBS Indica que sensor se quiere leer

Salida Indica si existe o no objeto en el sensor deseado

Esta función indica si un obstáculo en la parte del sensor que se le indique a través

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 ningún valor

válido de la variable la función 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 detección del obstáculo. Si hay algún

obstáculo la luz rebotará y esta señal será captada por el receptor infrarrojo.

Page 93: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 93 de 170

www.moway-robot.com

Se comprueba si se presenta alguna señal 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 señal interferente.

Tabla 47. Valores de la variable de entrada SEN_CHECK_OBS

Define Valor

OBS_CENTER_L 0

OBS_SIDE_L 1

OBS_CENTER_R 2

OBS_SIDE_R 3

unsigned char SEN_OBS_ANALOG(unsigned char SEN_CHECK_OBS)

Variables de entrada SEN_CHECK_OBS Indica que sensor se quiere leer

Salida Indica el valor analógico del sensor

Esta función indica si un obstáculo en la parte del sensor que se le indique a través

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 ningún valor

válido de la variable la función 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 detección del obstáculo.

Se activa el ADC.

Se comprueba si se presenta alguna señal en los cuatro receptores IR.

Se copia el valor del receptor analógico en las variables de salida. Cuanto mayor

sea este valor más cerca se encontrará el obstáculo.

Se desactiva LED infrarrojo.

Se comprueba que no haya ninguna señal interferente.

Tabla 48. Valores de la variable de entrada SEN_CHECK_OBS

Define Valor

OBS_CENTER_L 0

OBS_SIDE_L 1

OBS_CENTER_R 2

OBS_SIDE_R 3

Page 94: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 94 de 170

www.moway-robot.com

unsigned char SEN_ACCE_XYZ_READ(unsigned char SEN_CHECK_ACCE)

Variables de entrada SEN_CHECK_ACCE Indica que eje se quiere leer

Salida Aceleración que sufre el robot en el eje indicado

La función SEN_ACCE_XYZ_READ devuelve la aceleración sufrida por el robot

en los 3 ejes. El sensor presenta una resolución de ±0.0156G/bit. Esto es, 0 se

corresponde a un valor de -2G y 255 a un valor de 2G.

Imagen 59. Posición de los ejes del robot

El microcontrolador se comunica con el sensor a través 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 acelerómetro se pasa a modo “detección de golpes”.

Tabla 49. Valores de la variable de entrada SEN_CHECK_ACCE

Define Valor

ACCE_CHECK_X 0

ACCE_CHECK_Y 1

ACCE_CHECK_Z 2

unsigned char SEN_ACCE_CHECK_TAP(void)

Variables de salida SEN_ACCE_TAP Indica si se ha detectado uno o dos toques

Salida 1: Un toque

2: Dos toques

El acelerómetro tiene la opción de detectar golpes o doble golpes.

El microcontrolador se comunica con el sensor a través de la interface SPI.

Le pregunta si ha habido interrupción por golpe.

Si no ha habido toque se retorna un 0.

Page 95: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 95 de 170

www.moway-robot.com

unsigned char SEN_LINE_DIG(unsigned char SEN_CHECK_LINE)

Variables de entrada SEN_CHECK_LINE Indica que sensor se quiere leer

Salida Indica el valor digital del sensor

La función SEN_LINE_DIG indica si los sensores están 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 ningún valor

válido de la variable la función termina con un 0.

Se manda pulso de luz infrarroja para la detección de la línea. Si se detecta, la

luz rebotará y esta señal será captada por el receptor infrarrojo.

Esperar el tiempo de adquisición de datos (900us).

Se lee el sensor requerido.

.Si la superficie es oscura (la luz no se refleja) obtendremos un ‘1’ en la salida.

Tabla 50. Valores de la variable de entrada SEN_CHECK_LINE

Define Valor

LINE_L 0

LINE_R 1

unsigned char SEN_LINE_ANALOG(unsigned char SEN_CHECK_LINE)

Variables de entrada SEN_CHECK_LINE Indica que sensor se quiere leer

Salida Indica el valor digital del sensor

La función 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 ningún valor

válido de la variable la función termina con un 0.

Se manda pulso de luz infrarroja para la detección de la línea. Si se detecta, la

luz rebotará y esta señal será captada por el receptor infrarrojo.

Esperar el tiempo de adquisición de datos (900us).

Se activa el ADC.

Se lee el sensor requerido.

Mover ese dato a la variable SEN_LINE. Cuanto más alto sea este valor más

oscura será la superficie.

23

El valor del sensor analógico variará de un sensor a otro debido a la tolerancia del componente

electrónico.

Page 96: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 96 de 170

www.moway-robot.com

Tabla 51. Valores de la variable de entrada SEN_CHECK_LINE

Define Valor

LINE_L 0

LINE_R 1

void LED_BRAKE_ON(void)

Enciende el diodo LED de freno.

void LED_FRONT_ON(void)

Enciende el diodo LED frontal.

void LED_TOP_RED_ON(void)

Enciende el diodo LED superior rojo.

void LED_TOP_GREEN_ON(void)

Enciende el diodo LED superior verde.

void LED_BRAKE_OFF(void)

Apaga el diodo LED de freno.

void LED_FRONT_OFF(void)

Apaga el diodo LED frontal.

void LED_TOP_RED_OFF(void)

Apaga el diodo LED superior rojo.

void LED_TOP_GREEN_OFF(void)

Apaga el diodo LED superior verde.

void LED_BRAKE_ON_OFF(void)

Parpadeo del diodo LED de freno.

void LED_FRONT_ON_OFF(void)

Parpadeo del diodo LED frontal.

Page 97: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 97 de 170

www.moway-robot.com

void LED_TOP_RED_ON_OFF(void)

Parpadeo del diodo LED superior rojo.

void LED_TOP_GREEN_ON_OFF(void)

Parpadeo del diodo LED superior verde.

6.4 Librería motores mOway C18

6.4.2.1 Descripción

La librería 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 comunicación con el módulo 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 duración de 350us.

S

T

A

R

T

MOT_DIRMOT_

COMAND

T

Y

P

E

R

LMOT_VEL

S

E

N

T_DIST_ANG

S

T

O

P

_

W

Imagen 60. Formato de comandos: MOT_STR, MOT_CHA_VEL

S

T

A

R

T

MOT_

COMAND

T

Y

P

E

R

LMOT_VEL

S

E

N

RAD/

CENWHEEL

S

T

O

P

T_DIST_ANGMOT_DIR_

W

Imagen 61. Formato de comandos: MOT_CUR, MOT_ROT

S

T

A

R

T

S

T

O

P

COM_STOP/

RST_COMMOT_DIR

_

W

Imagen 62. Formato de comandos: MOT_STOP, MOT_RST

S

T

A

R

T

S

T

O

P

MOT_STATUS_DATA_

0MOT_DIR R

MOT_STATUS_DATA_

1

Imagen 63. Formato de comando: MOT_FDBCK

Page 98: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 98 de 170

www.moway-robot.com

6.4.2.2 Funciones

En la librería lib_mot_moway existen una serie de funciones que están orientadas

al control del sistema de motores de mOway.

A continuación se dará una breve descripción de cada una de ellas.

Tabla 52. Resumen de funciones en ensamblador de lib_mot_moway

Nombre Entrada Retorno Descripción

void MOT_CONFIG(void) - - Configuración para la

comunicación con los

motores

unsigned char MOT_STR(

unsigned char, unsigned char, unsigned char, unsigned char)

MOT_VEL FWDBACK

COMTYPE

MOT_T_DIST

0: Envío correcto 1: Envío incorrecto

2: Datos incorrectos

Comando para movimiento en línea recta

unsigned char MOT_CHA_VEL(

unsigned char, unsigned char, unsigned char, unsigned char,

unsigned char)

MOT_VEL

FWDBACK

RL COMTYPE

MOT_T_DIST

0: Envío correcto

1: Envío 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: Envío correcto 1: Envío incorrecto

2: Datos incorrectos

Comando para realizar la rotación 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: Envío correcto 1: Envío incorrecto

2: Datos incorrectos

Comando para realizar una curva

unsigned char MOT_STOP(void) 0:Envío correcto

1: Envío incorrecto

Comando para detener el

robot

unsigned char MOT_RST(

unsigned char)

RST_COM 0: Envío correcto 1: Envío incorrecto

Comando para resetear las variables temporales de

tiempo y distancia

unsigned char*

MOT_FDBCK(void)

0: Envío correcto

1: Envío incorrecto

Comando para ver el estado

de los motores

void MOT_CONFIG(void)

Esta función configura las entradas y salidas para que el microcontrolador pueda

comunicarse con el Sistema Motriz.

Tabla 53. Conexiones PIC-motores

Pin PIC I/O Sensor PORTE

RE7 I Indica cuándo el motor termina el comando

RE0 O SCL del protocolo I2C

RE1 O SDA del protocolo I2C

Page 99: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 99 de 170

www.moway-robot.com

El puerto RE7 nos indica la finalización de un comando. Este puerto tiene la

etiqueta MOT_END en la librería.

Ejemplo:

//Recto adelante al 100% de velocidad 10 segundos (100ms x 100)

MOT_STR(100, FWD, TIME, 100);

//Hasta que el comando no termine no se hace nada

while(!input(MOT_END)){}

unsigned char MOT_STR(unsigned char MOT_VEL,unsigned char

FWDBACK,unsigned char COMTYPE, unsigned char MOT_T_DIST)

Entrada MOT_VEL Velocidad deseada 0 100

FWDBACK Sentido de la marcha 1-FWD 0-BACK

COMTYPE Tipo de comando 1-TIME 0-DIST

MOT_T_DIST El valor de Tiempo

Distancia

0

0

255

255

Salida 0: Envío correcto 1: Envío incorrecto

2: Datos incorrectos

Comando para desplazamiento en línea recta. Es necesario especificar velocidad,

sentido, tipo de comando y el tiempo o la distancia a recorrer. El tiempo tiene una

resolución 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 atrás al 15% de velocidad 100mm (1mm x 100)

MOT_STR(15, BACK, DISTANCE, 100);

unsigned char MOT_CHA_VEL(unsigned char MOT_VEL,unsigned char

FWDBACK,unsigned char RL,unsigned char COMTYPE,unsigned char

MOT_T_DIST)

Entrada MOT_VEL Velocidad deseada 0 100

FWDBACK Sentido de la marcha 1-FWD 0-BACK

RL Izquierda o derecha 1-RIGHT 0-LEFT

COMTYPE Tipo de comando 1-TIME 0-DIST

MOT_T_DIST El valor de Tiempo

Distancia

0

0

255

255

Salida 0: Envío correcto 1: Envío incorrecto 2: Datos incorrectos

Page 100: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 100 de 170

www.moway-robot.com

Comando para cambiar la velocidad a uno de los dos motores. Es necesario

especificar velocidad, sentido, el motor, tipo de comando y el tiempo o la distancia a

recorrer. El tiempo tiene una resolución 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% atrás) al motor izquierdo y hacer una distancia de 100

//mm (1mm x 100)

MOT_CHA_VEL(20, BACK, LEFT, DISTANCE, 100) ;

unsigned char MOT_ROT(unsigned char MOT_VEL,unsigned char

FWDBACK,unsigned char MOT_CENWHEEL,unsigned char RL,unsigned char

COMTYPE,unsigned char MOT_T_ANG)

Entrada MOT_VEL Velocidad deseada 0 100

FWDBACK Sentido de la marcha 1-FWD 0-BACK

MOT_CENWHEEL Sobre centro o rueda 1-CENT 0-WHEEL

RL Derecha o izquierda 1-RIGHT 0-LEFT

COMTYPE Tipo de comando 1-TIME 0-ANG

MOT_T_ANG El valor de Tiempo

Ángulo

0

0

255

100

Salida 0: Envío correcto 1: Envío incorrecto

2: Datos incorrectos

Comando para hacer rotar a mOway. Es necesario especificar velocidad, sentido,

tipo de rotación, el motor, tipo de comando y el tiempo o el ángulo a rotar. El tiempo

tiene una resolución 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 rotación deseado. Si la rotación se produce

sobre una de las ruedas se obtiene más resolución. Por otro lado, hay que tener en

cuenta la inercia mecánica por lo que se aconseja reducir la velocidad para conseguir

una mayor precisión e iniciar el movimiento con el robot parado.

Ecuación 4. MOT_T_ANG en rotación sobre el centro

º12

33.3º__

ÁnguloroundANGTMOT

Page 101: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 101 de 170

www.moway-robot.com

Ejemplo:

//Rotación respecto al centro a la derecha al 80% de velocidad durante 10

// segundos (100ms x 100)

MOT_ROT(80, FWD, CENTER, RIGHT, TIME, 100) ;

//Rotación respecto la rueda izquierda al 20% de velocidad 180º

MOT_ROT(20, BACK, WHEEL, LEFT, ANGLE, 50) ;

unsigned char MOT_CUR(unsigned char MOT_VEL,unsigned char

FWDBACK,unsigned char MOT_RAD,unsigned char RL,unsigned char

COMTYPE, unsigned char MOT_T_DIST)

Entrada MOT_VEL Velocidad deseada 0 100

FWDBACK Sentido de la marcha 1-FWD 0-BACK

MOT_RAD Radio 0 100

RL Derecha o izquierda 1-RIGHT 0-LEFT

COMTYPE Tipo de comando 1-TIME 0-DIST

MOT_T_DIST El valor de Tiempo

Distancia

0

0

255

255

Salida 0: Envío correcto 1: Envío incorrecto

2: Datos incorrectos

Comando para dar una curva. Es necesario especificar velocidad, sentido, radio,

dirección, 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 restricción:

Ecuación 5. Condición 1 MOT_RAD

100__0 RADMOTVELMOT

Ecuación 6. Condición 2 MOT_RAD

100__0 RADMOTVELMOT

El tiempo tiene una resolución 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

Page 102: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 102 de 170

www.moway-robot.com

//(1mm x 100)

//VEL_I=95

//VEL_D=65

MOT_CUR(80, BACK, 15, LEFT, DISTANCE, 100) ;

unsigned char MOT_STOP(void)

Salida 0: Envío correcto 1: Envío incorrecto

Comando para parar el robot.

Ejemplo:

//Parar mOway

MOT_STOP() ;

unsigned char MOT_RST(unsigned char RST_COM)

Entrada MOT_RST_COM El parámetro que se desea resetear RST_T

RST_DIST

RST_KM

Salida 0: Envío correcto 1: Envío incorrecto

Resetea las variables temporales internas de tiempo, distancia y cuentakilómetros

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 parámetro que se desea consultar STATUS_T

STATUS_A

STATUS_V_R

STATUS_V_L

STATUS_D_R

STATUS_D_L

STATUS_KM

Page 103: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 103 de 170

www.moway-robot.com

Salida Puntero a vector de dos bytes.

Comando para conocer diversos parámetros del sistema motriz. Podemos

consultar el tiempo transcurrido, el ángulo (sólo en el comando MOT_ROT), velocidad

de los dos motores, distancia recorrida por cada motor y el cuentakilómetros.

Esta función 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 línea mientras el robot la sigue.

Tabla 54. Resolución de los datos del motor

Parámetro Resolución STATUS_T 100ms/bit STATUS_A 3.6º/bit STATUS_V_R 1%/bit STATUS_V_L 1%/bit STATUS_D_R 1mm/bit STATUS_D_L 1mm/bit STATUS_KM 1mm/bit

Ejemplo:

//Petición 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 válido

//Petición de distancia recorrida por el motor derecho desde el último comando

char mOway_km[2];

mOway_km[0]= MOT_FDBCK(STATUS_KM)[0];

mOway_km[1]= MOT_FDBCK(STATUS_KM)[1];

byte 1 byte 0

0x01 0x08

0000 0001 0000 0100

264

Page 104: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 104 de 170

www.moway-robot.com

//Ej. Salida:

// mOway_km[0]=0x08

// mOway_km[1]=0x01;

6.4.3 Librería para el módulo BZI-RF2GH4 en C18

6.4.3.1 Descripción Con esta librería es posible realizar fácilmente una comunicación entre el robot y

el módulo BZI-RF2GH4.

6.4.3.2 Funciones La librería consta de nueve funciones que facilitarán bastante el trabajo a la hora

de desarrollar una aplicación de comunicación con los módulos BZI-RF2GH4. A

continuación se dará una breve descripción de cada una de ellas.

Nombre Entrada Retorno Descripción

void RF_CONFIG_SPI(void) - - Configura las entradas y

salidas del microcontrolador

así como parámetros

necesarios para utilizar el bus SPI.

void RF_INT_EN(void) - - Esta rutina habilita en el

microcontrolador la interrupción externa para el

módulo de radio.

unsigned char RF_CONFIG(unsigned

char , unsigned char)

CHANNEL

ADDRESS

1: Configuración

correcta 0: No configurado

Configura las entradas y

salidas del microcontrolador así como parámetros del

módulo de radio.

unsigned char RF_ON(void)

- 0: No conectado

1: Conectado

Activa el módulo de

radiofrecuencia en modo escucha.

unsigned char RF_OFF(void) - 0: No desconectado

1: Desconectado

Desactiva el módulo de

radiofrecuencia y lo deja en modo de bajo consumo

unsigned char RF_SEND(unsigned

char, unsigned char )

RF_DIR_OUT

RF_DATA_OUT[]

0:Envío correcto

1:Ack no recibido

2: No enviado

Envía una trama de datos (8

Bytes) a la dirección

indicada.

unsigned char

RF_RECEIVE(unsigned char*,

unsigned char*)

RF_DIR_IN

RF_DATA_IN[]

0: Recepción correcta

y única

1: Recepción correcta y múltiple

2:No recepción

Comprueba si se ha

producido una recepción y

de ser así, recoge la trama.

Tabla 55. Resumen de las funciones en C18.

Distancia: 264*1mm

264mm

Page 105: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 105 de 170

www.moway-robot.com

void RF_CONFIG_SPI(void)

La velocidad del SPI no debe superar los 8 Mhz. En la función se configuran los

diferentes parámetros del módulo SPI y los pines del PIC.

PIN RF PIN PIC SCK RC3

SDI RC5

SDO RC4

Tabla 56. Configuración SPI puertos PIC

Ejemplo:

//Configurar módulos SPI del PIC

RF_CONFIG_SPI();

unsigned char RF_CONFIG(unsigned char CHANNEL unsigned char

ADDRESS)

Variables de entrada CHANNEL Canal a utilizar en la comunicación. Debe ser un valor entre 0x00

y 0x7F (128 canales).

ADDRESS Dirección del dispositivo. Debe ser un valor entre 0x01 y 0xFE.

Salida 0: No configurado

1:Configurado correctamente

Esta función configura el transceptor habilitando su propia dirección de escucha y

la dirección de ‘broadcast’. A su vez configura otros parámetros como pines del PIC, el

canal, la velocidad de transmisión, la potencia de emisión, la longitud de la dirección, la

longitud del código CRC, etc.

PIN RF PIN PIC IRQ RB0

CSN RF2

CE RH4

Tabla 57. Configuración módulo RF puertos PIC

El canal debe ser común a todos los módulos que van a participar en la

comunicación. El usuario puede elegir cualquier canal de los 128 disponibles. Sin

embargo, si en el entorno existe más de una comunicación entre módulos en diferentes

canales, hay que dejar un espaciamiento de 2 entre los canales a utilizar para evitar

interferencias dejando así 32 canales útiles. Otra cuestión a tener en cuenta es la

existencia de otras tecnologías que utilizan la banda ISM 2.4GHz (Wifi, Bluetooth,etc.)

y que también pueden causar interferencias en alguno de los canales.

Page 106: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 106 de 170

www.moway-robot.com

2.4Ghz 2.401Ghz 2.402Ghz 2.403Ghz

……...

2.405Ghz2.404Ghz 2.525Ghz

Canal

0x01

Canal

0x04

Imagen 64 Canales RF

La dirección que se asigna a cada dispositivo debe ser unívoca dentro de cada

canal.

Si la comunicación SPI del PIC está mal configurada, el conexionado se ha

realizado incorrectamente o en ausencia del módulo, la salida de la función será 0.

Ejemplo:

//Configurar módulo RF (canal y dirección)

if(RF_CONFIG(0x40,0x01)==0){

//Módulo no configurado

}

unsigned char RF_ON(void)

Salida 0: No configurado

1:Configurado correctamente

Esta rutina activa el módulo de radio en modo escucha para poder recibir datos

y/o realizar envíos de datos.

Es importante tener en cuenta que tras la llamada a esta rutina el módulo necesita

2,5ms para estar listo.

Si la comunicación SPI del PIC está mal configurada, el conexionado se ha

realizado incorrectamente o en ausencia del módulo, la salida será 0.

Ejemplo:

//Activar el módulo RF

if(RF_ON()==0){

//Módulo no inicializado

}

unsigned char RF_OFF(void)

Salida 0: No configurado

1:Configurado correctamente

Page 107: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 107 de 170

www.moway-robot.com

Esta rutina desactiva el módulo de radio dejándolo en modo de bajo consumo. No

borra la configuración establecida.

Si la comunicación SPI del PIC está mal configurada, el conexionado se ha

realizado incorrectamente o en ausencia del módulo, la salida será 0.

unsigned char RF_SEND(unsigned char RF_DIR_OUT, unsigned char

RF_DATA_OUT[])

Variables de entrada RF_DIR_OUT Dirección a la que se quiere enviar los datos (1 byte).

RF_DATA_OUT[] Variables que van a ser transmitidas (8 bytes).

Variables de salida 0:Envío correcto

1:Ack no recibido

2: No enviado

Esta función envía 8 Bytes de datos a la dirección indicada informando de la

correcta recepción en el destinatario. Tras su ejecución el dispositivo volverá al modo

de escucha.

Si un mensaje es enviado a la dirección 0x00, este será recibido por todos los

módulos que se encuentren en el mismo canal. Se debe tomar en cuenta que el módulo

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

}

//------------------------------------------------------------------------------------

Page 108: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 108 de 170

www.moway-robot.com

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

RF_DATA_IN)

Variables de salida RF_DIR_IN* Dirección de quien ha enviado la trama

RF_DATA_IN* Trama recibida desde la dirección indicada.

0: Recepción correcta y única

1: Recepción correcta y múltiple

2: No recepción

Esta rutina se encarga de comprobar si se ha producido una recepción y de ser así,

devuelve los datos recibidos. Asimismo, informa si quedan datos sin leer en la FIFO de

recepción del módulo.

Si se tiene una recepción múltiple se debe llamar a la función 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 función recibir antes de que se llene la pila, el dispositivo no podrá recibir

más datos.

Es recomendable utilizar esta función con interrupción. Para evitar la pérdida de

datos el usuario puede hacer que los emisores reenvíen la misma trama hasta que la

comunicación haya sido correcta, pero en entornos con mucho tráfico las colisiones

crecen exponencialmente aumentando considerablemente los tiempos de envío.

Ejemplo:

char data_in[8];

char data_in_dir;

//--------------[Rutina de recepción con interrupción]--------------------------

#pragma interrupt YourHighPriorityISRCode

void YourHighPriorityISRCode() {

RF_RECEIVE(&data_in_dir,&data_in[0]);

} //---------------------------------------------------------------------------------------

//--------------[Rutina de recepción sin interrupción]--------------------------

//Interrupción del módulo RF

while(1){

while(RF_RECEIVE(&data_in_dir,&data_in[0])!=2){

// Sustituir por código necesario para tratar los datos

}

}

//----------------------------------------------------------------------------------------

Page 109: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 109 de 170

www.moway-robot.com

void RF_INT_EN(void)

Esta rutina se encarga de habilitar la interrupción externa del microcontrolador

(RB0) que utiliza el módulo de RF en la recepción de datos. Para ello se configura como

entrada el pin RB0. Aunque se puede manejar el módulo sin interrupciones no se

garantiza el mínimo tiempo de respuesta.

Ejemplo:

//-----------[Rutina de configuración y activación con interrupción]----------

//Habilitar interrupciones

RF_INT_EN();

6.4.3.3 Diagrama de flujo para envío y recepción de

datos

Retorno

RF_SEND()

Definir

RF_DIR

Definir

RF_DATA

0

Envio realizado y

AKC recibido

Envio realizado y

AKC no recibido

Envio no realizado

y AKC no recibido

1

2

Diagrama 4. Envio de datos en C

RF_RECEIVE()

Interrupción ext

Retorno

Tratar datos

1

Salir interrupción

Diagrama 5. Recepción con

interrupción en C

Tratar datos

0

2

Page 110: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 110 de 170

www.moway-robot.com

Retorno

Tratar datos

1

Salir recepción

Diagrama 6. Recepción sin

interrupción en C

Tratar datos

0

2

RF_RECEIVE()

Page 111: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 111 de 170

www.moway-robot.com

6.4.4 Librería para el módulo de cámara en C18

6.4.4.1 Descripción

Con esta librería es posible realizar el control del módulo de cámara.

6.4.4.2 Funciones

La librería incluye las funciones necesarias para manejar el módulo de cámara. A

continuación se dará una breve descripción de cada una de ellas.

Nombre Entrada Retorno Descripción

void CAM_CONFIG(void) - - Configura los parámetros del

módulo SPI y los pines del

PIC, así como el controlador de la cámara.

void CAM_SEND_COM (unsigned

char, unsigned char, unsigned char)

COMMAND

ADDRESS

DATA

- Envía un comando por SPI al

controlador de la cámara. Se

compone de 3 bytes.

void CAM_ON (void) - - Activa la cámara.

void CAM_OFF (void) - - Desactiva la cámara.

void CAM_CHN_SEL (unsigned char) CHANNEL - Envía por SPI el comando de

cambio de canal de transmisión al controlador.

void CAM _SPI_WRITE (unsigned

char)

DATA - Envía un byte por el puerto

SPI del microcontrolador.

Tabla 58. Resumen de las funciones en C18.

CAM_CONFIG

En la función se configuran los diferentes parámetros del módulo SPI y los pines

del PIC. También configura el puerto de entradas/salidas del controlador de la cámara.

Nota: la velocidad del SPI no debe superar los 8MHz.

PIN SPI PIN PIC SCK RC3

SDI RC5

SDO RC4

IRQ RB0

CSN RF2

CE RH4

Tabla 59. Configuración SPI puertos PIC

Page 112: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 112 de 170

www.moway-robot.com

CAM_SEND_COM

Esta rutina envía un comando por SPI al controlador de la cámara. El formato del

comando consiste en tres bytes que especifican el tipo de comando (lectura o escritura),

el registro a leer o escribir, y los datos a escribir en dicho registro.

COMANDOS COMMAND_CAM COM_WR para escribir registro

COM_RD para leer registro

ADDRESS_CAM IODIR_ADD para configurar entradas/salidas del puerto del

controlador de la cámara.

OLAT_ADD para cambiar el estado de las salidas del puerto

del controlador de la cámara

DATA_CAM Datos a escribir en el registro especificado en

ADDRESS_CAM

CAM_ON

Esta rutina envía por SPI el comando de activación de la cámara al controlador. Es

un comando de escritura en el registro de las salidas del puerto del controlador. Los tres

bytes a enviar son:

BYTES COMMAND_CAM COM_WR

ADDRESS_CAM OLAT_ADD

DATA_CAM 0x22

CAM_OFF

Esta rutina envía por SPI el comando de desactivación de la cámara al

controlador. Es un comando de escritura en el registro de las salidas del puerto del

controlador. Los tres bytes a enviar son:

BYTES COMMAND_CAM COM_WR

ADDRESS_CAM OLAT_ADD

DATA_CAM 0x00

CAM_CHN_SEL

Esta rutina envía por SPI el comando de cambio de canal de transmisión al

controlador. Es un comando de escritura en el registro de configuración de

entrada/salida del puerto del controlador.

Page 113: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 113 de 170

www.moway-robot.com

Variables de entrada CAM_CHANNEL Canal en el que transmitirá la cámara. Debe ser un valor entre 1 y

4.

BYTES COMMAND_CAM COM_WR

ADDRESS_CAM IODIR_ADD

DATA_CAM Canal 1: 0xD8

Canal 2: 0xD4

Canal 3: 0xCC

Canal 4: 0xDC

Ejemplo de activación de la cámara:

// Configurar módulo de cámara

CAM_CONFIG();

// Seleccionar canal 1 de transmisión

CAM_CHN_SEL(1);

// Encender cámara

CAM_ON();

CAM_SPI_WRITE

Envía un byte por SPI desde el microcontrolador.

Variables de entrada DATA Byte a enviar por SPI

Page 114: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 114 de 170

www.moway-robot.com

7. Programación MowayWorld

La aplicación MowayWorld permite diseñar programas por medio de diagramas

de flujo, con lo que se consigue programar el robot mOway de forma muy intuitiva.

Diferentes bloques o módulos representan las funciones que controlan los sensores y

actuadores del robot. Estos módulos son conectados mediante flechas para crear así el

programa deseado.

La máxima ventaja es que no se necesita ninguna noción de programación para

crear una aplicación.

En resumen:

La mejor manera para comenzar a trabajar con mOway rápidamente.

La mejor manera para realizar tareas sencillas o de complejidad media.

Código generado optimizado en espacio y rendimiento.

7.1 Espacio de trabajo de MowayWorld

A continuación se describe las diferentes zonas que componen el espacio de

trabajo del programa MowayWorld.

7.1.1 Barra de herramientas

La barra de tareas permite crear un nuevo proyecto, guardar el proyecto actual,

editar el diagrama de flujo, crear subrutinas y variables, programar el robot mOway,

cambiar el idioma de MowayWorld, etc.

Imagen 65. Barra de herramientas

7.1.2 Editor de diagramas de flujo

El editor de diagramas de flujo es el espacio en el que el programador coloca los

bloques que forman el programa y las flechas que los unen.

Page 115: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 115 de 170

www.moway-robot.com

Imagen 66. Editor de diagramas de flujo

7.1.3 Acciones

El menú de Acciones permite elegir el módulo para insertar en el diagrama de

flujo. Están clasificados por el tipo de función que realizan.

Imagen 67. Menú de Acciones

Para insertar un módulo en el diagrama, simplemente hay que arrastrarlo hasta el

editor de diagramas y configurar dicho módulo para que realice la función deseada. Los

menús con una flecha en la parte derecha incluyen submenús con más módulos.

Page 116: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 116 de 170

www.moway-robot.com

7.1.4 Propiedades

Cuando se selecciona un bloque del diagrama, aparecerá en la zona derecha del

espacio de trabajo una ventana de propiedades, que nos permitirá cambiar la

configuración de dicho módulo de forma rápida.

Imagen 68. Propiedades del módulo “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 más de un diagrama). Un diagrama

con errores no se programará en el robot.

Imagen 69. Ventana de errores

Page 117: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 117 de 170

www.moway-robot.com

7.1.6 Flechas

El orden de ejecución de los diferentes módulos 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.

Después se pincha sobre una de las marcas del bloque siguiente.

Imagen 70. Trazado de flechas

Para mayor facilidad a la hora de colocar las flechas es posible utilizar la

herramienta “Conector” de la barra de tareas.

NOTA: Con la herramienta “Conector” no es posible seleccionar los elementos

del diagrama. Para seleccionarlos, es necesario volver a la herramienta por defecto

“Cursor”.

Imagen 71. Iconos de las herramientas Cursor y Conector

Todos los bloques del diagrama tienen que tener al menos una flecha de entrada.

Además 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 condición del bloque es verdadera, y la

otra será el camino del programa cuando la condición del bloque sea falsa.

Al trazar las dos flechas de salida, la primera de ellas será automáticamente el

camino de la condición verdadera (marca verde). La flecha restante será el camino de la

condición falsa (marca roja).

Page 118: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 118 de 170

www.moway-robot.com

Si se quisiera crear un bucle, el proceso sería similar al anteriormente descrito,

pero pinchando la flecha en una marca del mismo bloque.

Imagen 72. Trazado de flechas para un bucle

El trazado de las flechas puede ser modificado arrastrando los puntos que

aparecen al situar el cursor sobre ellas.

Imagen 73. Modificar trazado

7.1.7 Cambio de idioma y actualizaciones

El idioma de MowayWorld puede ser cambiado mediante la barra de

herramientas, en “Language”.

Así mismo, se puede comprobar si el software puede ser actualizado por medio de

la opción “Ayuda – Comprobar actualizaciones”.

Page 119: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 119 de 170

www.moway-robot.com

7.2 Primer programa en MowayWorld

Este primer programa básico hará que mOway evite los obstáculos. 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 añadiendo un retardo de

dos segundos. Basta con arrastrar el módulo de Pausa en el editor de diagramas,

seleccionando un valor constante de 2 segundos.

2. Se añade el parpadeo del LED verde, por medio del bloque “Luces”. A

continuación se muestra la configuración de los dos bloques:

Imagen 74. Configuración Pausa y Luces

3. Se añade el final de programa (módulo “Fin”).

4. Se graba en el robot por medio del botón de “Programar mOway” de la barra de

herramientas, indicado con un círculo rojo en la imagen siguiente.

5. Probar el programa y comprobar que después de esperar 2 segundos se enciende

el LED verde.

Page 120: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 120 de 170

www.moway-robot.com

Imagen 75. Diagrama de flujo y botón “Programar mOway”

6. Para detectar obstáculos se inserta cuatro módulos “Sensores – Obstáculo” y se

configuran para que cada uno compruebe uno de los cuatro sensores.

Imagen 76. Configuración Chequear obstáculos

7. Los módulos de condición tienen una salida verdadera y otra falsa. Si se detecta

el obstáculo, la condición es verdadera (marca verde) y el LED correspondiente

debe encenderse. Si no hay obstáculo, la condición es falsa (marca roja) el LED

se apagaría. El encendido y apagado debe realizarse con los módulos “Luces”.

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

detecta un obstáculo.

Page 121: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 121 de 170

www.moway-robot.com

Imagen 77. Primer programa en MowayWorld: detección de obstáculos

9. Añadimos movimiento al robot con módulos “Acciones de mOway –

Movimiento – Recta”, para que el robot avance recto indefinidamente hasta que

encuentre un obstáculo.

10. Cuando encuentra obstáculo se manda un comando para que realice una rotación

de 180º (“Acciones de mOway – Movimiento – Rotación”). El robot continuará

el movimiento recto cuando la rotación termine.

Page 122: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 122 de 170

www.moway-robot.com

Imagen 78. Configuración de Movimiento y Rotación

Imagen 79. Final de primer programa en MowayWorld

Page 123: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 123 de 170

www.moway-robot.com

7.3 Módulos Los módulos son las acciones o funciones que puede realizar el robot mOway:

moverse, leer los sensores, encender los LEDs, transmitir mensajes por radiofrecuencia,

etc. Estos módulos están agrupados dependiendo del tipo de función que realizan y

pueden ser configurados de diversas formas.

A continuación se describe cada uno de los módulos 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 módulos disponen de la opción “Esperar límite de

tiempo/distancia para continuar con el diagrama”. Esta opción hace que se esté

ejecutando el comando actual (el programa no continúa su ejecución) hasta que la dicho

comando termina (bien por tiempo o por distancia). Si esta opción no es seleccionada, el

comando seguirá ejecutándose indefinidamente hasta que otra función 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 línea recta, pudiendo elegir su velocidad.

Imagen 80. Ventana de configuración de Movimiento – Recto

Page 124: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 124 de 170

www.moway-robot.com

Movimiento – Libre

El movimiento libre es similar al anterior, con la diferencia de que

permite controlar las velocidades individuales de cada motor.

Imagen 81. Ventana de configuración de Movimiento – Libre

Movimiento – Curva

Con el módulo de giro, el programa calculará la velocidad de los

motores para poder describir una curva señalando la velocidad y la curvatura

de giro.

También podemos hacer uso de las limitaciones en tiempo y distancia.

Page 125: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 125 de 170

www.moway-robot.com

Imagen 82. Ventana de configuración de Movimiento – Curva

Movimiento – Rotación

El módulo de rotación 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 rotación.

Imagen 83. Ventana de configuración de Movimiento – Rotación

Movimiento – Parar

El módulo de parar movimiento detiene los motores de mOway.

Sonido – Empezar

Esta función 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.

Page 126: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 126 de 170

www.moway-robot.com

Imagen 84. Ventana de configuración de Sonido - Empezar

Sonido – Parar

Detiene el sonido del altavoz

Luces

Este módulo 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 simultánea.

Imagen 85. Ventana de configuración de Luces

Page 127: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 127 de 170

www.moway-robot.com

7.3.2 Lectura de sensores

Este grupo de funciones permiten obtener el valor de los sensores integrados en el

robot mOway. Son bloques condicionales, los cuales tienen dos posibles caminos de

salida: si la condición impuesta en el bloque se cumple, el resultado es “verdadero”. Si

la condición 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.

Obstáculos

Este módulo comprueba el valor digital de los sensores de obstáculo. Cada sensor

permite cumplir alguna de las tres condiciones siguientes:

o detección de un obstáculo

o no detección de obstáculo

o no lectura de sensor

Por otra parte, se puede elegir entre realizar una operación AND u OR con las

condiciones anteriores. Si se elige la opción AND se deben cumplir todas las

condiciones seleccionadas para que la salida del bloque condicional sea verdadera. Por

el contrario, si se elige la opción OR, es suficiente con que una sola condición se

cumpla para tener una salida verdadera.

Imagen 86. Ventana de configuración de Lectura de sensores – Obstáculos

Page 128: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 128 de 170

www.moway-robot.com

Línea

Este módulo comprueba el valor digital de los sensores de línea. Esta función se

emplea para hacer que mOway siga una línea (negra o blanca) en el suelo, detectar

límites de terreno, etc.

Cada sensor permite cumplir alguna de las tres condiciones siguientes:

o detección de línea negra

o detección de línea blanca

o no lectura de sensor

Del mismo modo que el bloque anterior (Lectura de sensores de obstáculos),

permite las opciones AND y OR.

Imagen 87. Ventana de configuración de Lectura de sensores – Línea

Ruido

Este módulo tiene un resultado verdadero si detecta un sonido

fuerte. No tiene ventana de configuración.

Golpe

Este módulo tiene un resultado verdadero si detecta un golpe sobre

mOway. No tiene ventana de configuración.

Page 129: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 129 de 170

www.moway-robot.com

7.3.3 Datos

Con este grupo de funciones es posible leer, escribir y modificar los datos que

proporciona el robot mOway. Estos datos pueden provenir de la lectura de los sensores

o de variables creadas por el usuario y almacenadas en la memoria de mOway.

Estos datos se almacenan en variables, las cuales son definidas por el usuario.

Para crear una nueva variable, se elige el menú “Variables” de la barra de herramientas

y se selecciona “Nueva variable”. Se asigna un nombre y un valor inicial para ella.

Algunos de los bloques permiten crear estas variables directamente desde su

ventana de configuración, 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 mínimo a 255 como máximo.

Calcular

Se emplea para realizar operaciones aritméticas de sumar (+=) o

restar (-=) sobre una variable. El primer parámetro debe ser siempre una

variable y en él se almacenará el resultado de la operación. El segundo

operando puede ser una constante o una variable.

Reiniciar Datos de mOway

Este módulo pone a cero los contadores almacenados de tiempo y

distancia. Permite seleccionar qué datos en concreto queremos reiniciar.

Asignar variable

Este grupo de módulos permiten asignar un valor a una variable creada por el

usuario. Este valor puede ser constante o bien el valor analógico 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 décimas 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 máxima).

o Distancia: asigna a la variable la distancia recorrida por el

robot. El valor tiene un rango de 0 a 255 centímetros.

o Ángulo: asigna a la variable el valor del ángulo girado por el

robot. El valor tiene un rango de 0 (correspondiente a 0

Page 130: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 130 de 170

www.moway-robot.com

grados) a 100 (correspondiente a 360 grados).

o Luminosidad: asigna a la variable el valor del sensor de luz.

El valor tiene un rango de 0 (oscuridad) a 100 (luz).

o Línea: asigna a la variable el valor de uno de los sensores de

línea. El valor tiene un rango de 0 (correspondiente a blanco)

a 100 (correspondiente a negro).

o Obstáculo: asigna a la variable el valor de uno de los

sensores de obstáculo. El valor tiene un rango de 0 (no

detección) a 100 (obstáculo muy cercano).

o Acelerómetro: asigna a la variable el valor de uno de los ejes

del acelerómetro. El valor tiene un rango de 0 (aceleración

límite negativa) a 255 (aceleración límite positiva). Para una

aceleración nula, el valor es de 127 (la mitad del rango de

valores).

o Ruido: asigna a la variable el valor del micrófono 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 0ºC a 255ºC.

o Batería: asigna a la variable el valor del nivel de batería del

robot. El valor tiene un rango de 0 a 100%.

Comparar

Este grupo de módulos 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 comparación 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

máxima).

o Distancia: compara el valor de la distancia recorrida por el

robot. El rango es de 0 a 255 centímetros.

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

Page 131: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 131 de 170

www.moway-robot.com

rango es de 0 a 360 grados.

o Luminosidad: compara el valor del sensor de luz. El rango

es de 0 (oscuridad) a 100 (luz).

o Línea: compara el valor de uno de los sensores de línea. El

rango es de 0 (correspondiente a blanco) a 100

(correspondiente a negro).

o Obstáculo: compara el valor de uno de los sensores de

obstáculo. El rango es de 0 (no detección) a 100 (obstáculo

muy cercano).

o Acelerómetro: asigna a la variable el valor de uno de los

ejes del acelerómetro. El valor tiene un rango de -2g

(aceleración límite negativa) a 2g (aceleración límite

positiva). Para una aceleración nula, el valor es de 0. (NOTA:

El valor g equivale a un valor de 9.81m/s2).

o Ruido: compara el valor del micrófono 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 0ºC a 255ºC.

o Batería: compara el nivel de batería 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 duración múltiplo

de 0,05 segundos. El parámetro de pausa puede ser una constante o una

variable.

Llamada a función

Este módulo permite usar una función o subrutina creada por el

usuario. Ver capítulo “Subrutinas” de este manual.

Fin

Este módulo determina el final del programa. Los programas que consisten

en un bucle que se repite indefinidamente no necesitan emplear este módulo.

Page 132: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 132 de 170

www.moway-robot.com

7.3.5 Expansión

Este grupo de funciones permiten usar el conector de expansión de mOway, bien

sea para usar el módulo RF u otros módulos de expansión.

¡ATENCIÓN!

Sólo los usuarios avanzados pueden usar la configuración del módulo IO. La

incorrecta conexión de elementos electrónicos en el conector de expansión puede causar

daños irreversibles en el robot.

Módulo IO – Configurar

Este módulo configura los terminales del conector de expansión

como entradas (Input) o salidas (Output), y les asigna un valor inicial en

caso de que sean salidas.

Imagen 88. Ventana de configuración de Módulo IO – Configurar

Módulo IO – Salida

Este módulo activa (On), desactiva (Off) o conmuta los terminales configurados

como salidas del conector de expansión.

¡ATENCIÓN!

Sólo se puede asignar un valor a los terminales configurados como

salida. Si se asignase un valor a los terminales configurados como

entradas, el circuito electrónico podría dañarse.

Page 133: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 133 de 170

www.moway-robot.com

Imagen 89. Ventana de configuración de Módulo IO – Salida

Módulo IO – Entrada

Este módulo comprueba el valor digital de uno de los 6 terminales

de entrada del conector de expansión. Compara si el estado de dicho

terminal es igual (==) o diferente (<>) a “encendido” (1) o “apagado” (0).

Cámara – Activar

Este módulo activa la cámara de mOway y permite seleccionar el

canal de transmisión. Este canal debe ser el mismo que el del receptor

de vídeo.

Cámara – Detener

Este módulo apaga la cámara.

Comunicación – Empezar

Este módulo configura el robot para establecer una comunicación

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 configuración es correcta, la salida de este módulo es “verdadera”. En la

imagen del lateral se muestra cómo colocar las flechas en este módulo en el diagrama.

Page 134: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 134 de 170

www.moway-robot.com

Imagen 90. Ventana de configuración de Comunicación – Empezar

Comunicación – Parar

Este módulo detiene la comunicación por RF. No tiene ventana de

configuración.

Comunicación – Enviar

Con este módulo se puede transmitir una trama a una dirección

concreta. En la trama hay que indicar la dirección 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

módulo “Comunicación - Empezar”. Los robots participantes en la comunicación RF

tienen que tener el mismo canal y direcciones diferentes.

Page 135: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 135 de 170

www.moway-robot.com

Imagen 91. Ventana de configuración de Comunicación – Enviar

Comunicación – Recibir

Con este módulo se puede recibir una trama desde una dirección

concreta. Hay que indicar por lo menos dos variables: una para recoger la

dirección 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

módulo “Comunicación - Empezar”. Los robots participantes en la comunicación RF

tienen que tener el mismo canal y direcciones diferentes.

Page 136: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 136 de 170

www.moway-robot.com

Imagen 92. Ventana de configuración de Comunicación – Recibir

Page 137: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 137 de 170

www.moway-robot.com

7.4 Variables

Una variable contiene un valor que puede cambiar a lo largo del programa, y es

almacenada en la memoria interna de mOway. Las variables permiten manejar datos del

programa, lo cual proporciona una mayor flexibilidad a la hora de desarrollar el

programa. Estos datos pueden ser los valores de los sensores del robot, mensajes

recibidos por radiofrecuencia, etc.

Estas variables pueden ser creadas desde ciertos módulos, o también 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 más de 14 caracteres.

Imagen 93. Creación de una nueva variable

Imagen 94. Creación de una variable desde un módulo

Page 138: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 138 de 170

www.moway-robot.com

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

Variables”.

Imagen 95. Ventana de Variables

7.5 Funciones / Subrutinas

Una función o subrutina es un programa, normalmente un diagrama pequeño, que

puede ser usado (llamado) por otro programa, por ejemplo, desde el diagrama principal.

A continuación 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 Función, puede ser llamado desde el

diagrama principal. Para crear una función 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 pestaña “MyFunction”.

Imagen 96. Creación de una función

Page 139: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 139 de 170

www.moway-robot.com

El funcionamiento del LED explicado anteriormente se define en esta función de

usuario.

Imagen 97. Diagrama de “MyFunction”

Para regresar al diagrama principal, se pulsa sobre la pestaña “Principal”. Desde

este diagrama se puede llamar a la función “MyFunction” con el módulo “Control de

Flujo – Llamada a Función”. En este módulo se selecciona la función “MyFunction”

En este ejemplo, la función se llama tres veces desde el diagrama principal. Por

tanto, el LED frontal parpadeará tres veces.

Imagen 98. Llamada a función 3 veces desde el diagrama principal

Page 140: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 140 de 170

www.moway-robot.com

8. Aplicaciones

8.1 Ventana de comunicaciones

La ventana de comunicaciones permite enviar y recibir comandos RF utilizando el

RFUSB conectado al ordenador. Para lanzar esta ventana hay que pulsar el icono

“Comunicaciones”.

Imagen 99. Icono “Comunicaciones”

La ventana de Comunicaciones aparecerá en el lado derecho del espacio de

trabajo. Para empezar la comunicación RF del dispositivo RFUSB, se configura el

RFUSB con dirección y canal (en este ejemplo “2” y “0”), y se pulsa el botón Iniciar.

Imagen 100. Ventana “Comunicaciones”

Page 141: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 141 de 170

www.moway-robot.com

Para enviar un mensaje desde el ordenador a mOway, se selecciona la dirección

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 botón Enviar. Si se selecciona “0” en la

“Dirección 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 número entre paréntesis es la dirección del robot que ha enviado el

mensaje.

El resto de números son los datos enviados por el robot, ordenados desde

el Dato 7 hasta el Dato 0.

8.2 MowayCam

La aplicación MowayCam permite mostrar en el PC las imágenes enviadas por el

módulo de cámara Moway Camera Board y guardar capturas de dichas imágenes en

cualquier dispositivo de almacenamiento conectado al PC. Esta aplicación se lanza

desde la pestaña “Ver -> mOway Cam” o desde el icono indicado:

Imagen 101. Acceso a MowayCam

Page 142: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 142 de 170

www.moway-robot.com

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

Imagen 102. Panel de MowayCam

En esta ventana se muestra las imágenes de la cámara. También permite habilitar

y deshabilitar la capturadora de vídeo y guardar dichas imágenes en el dispositivo de

almacenamiento que elija el usuario.

Botón Actualizar: recarga en la lista los dispositivos de vídeo conectados

al ordenador. Dependiendo de la versión del driver, el receptor de vídeo de

Moway puede identificarse como “Moway Videocap”, “STK1160

Grabber” o “USB2.0 ATV”.

Botón Iniciar: activa el receptor de vídeo Moway Camera Board.

Botón Detener: desactiva el receptor de vídeo Moway Camera Board.

Botón Capturar: guarda la imagen actual de la cámara en la ubicación

especificada y con el nombre indicado.

IMPORTANTE: Una vez activada la captura de vídeo, NO DESCONECTAR el

receptor de vídeo Moway Camera Board del puerto USB del ordenador. Si se

desconectase mientras el receptor está activado, el ordenador podría reiniciarse. Para

desconectarlo, pulsar el botón Detener o cerrar el panel MowayCam.

Page 143: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 143 de 170

www.moway-robot.com

8.3 MowayRC

MowayRC es una aplicación 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 módulos 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 aplicación transmite comandos

por USB al RFUSB y ésta los transmite a mOway, que previamente ha sido grabado con

un programa que interpreta esos comandos (mOway_RC_Client incluido en mOway

Pack).

Moway

RFUsb

MOT_DIRPC R

F

USB

Moway_RC

Center.exe

Moway_RC

_Client .hex

Imagen 103. Diagrama mOway RC

Esta aplicación se lanza desde la pestaña “MowayRC -> Abrir” o desde el icono

indicado:

Imagen 104. Acceso a Moway RC Center

Una vez iniciado el proceso, se preguntará al usuario si quiere programar el

“mOway_RC_Client” en el robot y la aplicación mOwayRC comenzará. A continuación

se describen las diferentes partes del programa.

Page 144: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 144 de 170

www.moway-robot.com

Imagen 105. Aplicación mOway RC

8.3.1 Configuración En esta parte se configura el módulo RFUSB de mOway con la dirección 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 botón Cambiar canal. Para realizar el cambio de canal el

robot tiene que estar encendido y comunicándose 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 botón 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). También 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

botón Resetear distancia.

Page 145: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 145 de 170

www.moway-robot.com

8.3.3 Luces En este apartado se controla el encendido y apagado de los cuatro LEDs de

mOway.

8.3.4 Sonido En este apartado se puede encender, apagar el speaker del robot a una

determinada frecuencia, así como realizar un pitido. También es posible reproducir

notas musicales.

8.3.5 Estado de sensores

Sensores de línea: mayor valor cuanto más oscura es la superficie.

Ambiente de mOway: lecturas de luminosidad, temperatura y ruido detectados

por mOway.

Obstáculos: mayor valor cuanto más cerca está el objeto.

Aceleración: lecturas de la aceleración sobre los tres ejes de mOway.

8.3.6 Cámara Permite activar la cámara de mOway en el canal seleccionado durante un máximo

de 15 segundos. Durante el tiempo de activación de la cámara se detiene la

comunicación con mOway, para evitar interferencias. Una vez finalizado este tiempo, la

comunicación se restablece automáticamente.

Para ver las imágenes de la cámara es necesario lanzar el panel de “Cámara”.

8.4 MowayServer

Gracias a esta aplicación, el robot Moway puede ser controlado desde un teléfono

móvil, una tableta o un ordenador, a través de comunicación WiFi. Estos dispositivos

pueden conectarse a la red creada por el robot Moway, al que previamente se ha

conectado el Módulo Wifi24

. Una vez conectados, el robot puede ser controlado desde

el explorador web del dispositivo.

La aplicación se lanza desde la barra de herramientas.

24

Disponible según pack

Page 146: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 146 de 170

www.moway-robot.com

Imagen 106. Acceso a Moway Web Server

Aparece el panel lateral de Moway Server.

Imagen 107. Panel lateral de Moway Web Server

El procedimiento para poder comunicarse con el servidor web es el siguiente:

1) Seleccionar una IP (sólo es modificable el último campo) y pulsar el botón

Programar web server.

2) Después de unos segundos, el robot creará una red Wifi adhoc con nombre

MowayNet***, siendo *** el número seleccionado para la IP en el paso

anterior.

3) Si se está usando el ordenador para acceder al servidor web, pulsar el botón

Page 147: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 147 de 170

www.moway-robot.com

Moway web server para abrir el explorador web con la IP seleccionada. Si se

está usando otro dispositivo, abrir el explorador web e introducir la IP

seleccionada.

Una vez realizados los pasos anteriores, aparecerá una pantalla como la mostrada

en la imagen siguiente, desde la cual se puede controlar el movimiento y luces de

mOway, así como leer ciertos sensores.

Imagen 108. Servidor web de mOway

NOTA: Dependiendo de la conexión wifi y del explorador web, tanto la conexión

a la red como el mostrado del servidor pueden tardar un tiempo.

Page 148: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 148 de 170

www.moway-robot.com

9. Simulador

9.1 Introducción 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 rápidamente.

El simulador se abre desde la barra de herramientas:

Imagen 109. Acceso al simulador

Al activar el simulador aparecerá en el panel lateral:

Imagen 110. Panel lateral del simulador

Page 149: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 149 de 170

www.moway-robot.com

Las acciones disponibles en simulador son las siguientes:

Ejecutar: En el modo “Ejecutar”, el simulador ejecuta el programa en

“tiempo real”, es decir, a la velocidad en la que el programa se ejecutaría en

el robot.

Animar: En el modo “Animar”, el simulador ejecuta el programa paso a

paso, deteniéndose 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 simulación en el bloque actual.

Reiniciar: Al pulsar el botón de reinicio, la simulación vuelve al estado

inicial, es decir, al principio del programa. También se reinicia el valor de

las variables.

Paso a paso con funciones: En este modo, el simulador avanza por el

programa paso a paso, deteniéndose en cada bloque. Además, avanza

también 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, deteniéndose 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

cómo esto afecta al funcionamiento del robot, en función del programa que esté siendo

simulado.

Los apartados del robot que pueden visualizarse y controlarse en la simulación

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.

También 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.

Page 150: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 150 de 170

www.moway-robot.com

Sensores de línea y obstáculos: permite simular la variación del valor de

los sensores de línea y obstáculos. El valor de los sensores del simulador

está definido según el valor analógico de los sensores reales del robot. Por

tanto, los valores de los sensores simulados son los siguientes:

Sensores de línea

Línea a

simular

Valor del

sensor

Blanca De 0 a 20

Gris De 21 a 229

Negra De 230 a 255

Sensores de obstáculos

Obstáculo a

simular

Valor del

sensor

Obstáculo no

detectado

De 0 a 127

Obstáculo

detectado

De 128 a 255

Page 151: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 151 de 170

www.moway-robot.com

Entorno: permite simular la variación del valor de los sensores de luz,

temperatura y el micrófono.

Acelerómetro: permite simular la variación del valor del acelerómetro, en

sus 3 ejes. El valor del acelerómetro varía entre -2g y +2g, siendo “g” la

aceleración de la gravedad (9,81m/s2). Por ejemplo, si queremos simular

que mOway se encuentra sobre una superficie plana, los valores serían los

siguientes:

Sensor de luz

Entorno a simular Valor del sensor

Oscuridad total 0

Luminosidad intensa 100

Sensor de ruido

Entorno a simular Valor del sensor

Silencio 0

Ruido intenso 100

Acelerómetro

Eje del acelerómetro Valor del

acelerómetro (g)

Eje X 0

Eje Y 0

Eje Z 1.00

Page 152: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 152 de 170

www.moway-robot.com

Comunicaciones: permite simular el envío de datos por radiofrecuencia al

robot mOway, así como simular la recepción de datos enviados por

mOway. En el apartado “Datos del emisor” se simula el envío 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.

Page 153: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 153 de 170

www.moway-robot.com

9.3 Ejemplo de simulación En el siguiente ejemplo se muestra la simulación de un programa en el que el

robot avanza recto durante 12 cm y después enciende el LED frontal. Pulsando el botón

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 dirección de giro de

las ruedas y se va incrementando la distancia recorrida.

Page 154: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 154 de 170

www.moway-robot.com

Una vez que el bloque “Recta” ha terminado (el robot habría recorrido 12 cm), el

simulador ejecuta el bloque “Luces”, en el que se enciende el LED frontal. Una vez

hecho esto, el simulador termina.

Page 155: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 155 de 170

www.moway-robot.com

10. mOway Scratch

10.1 Introducción

Ahora mOway es también compatible con Scratch. La comunicación 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 aplicación “mOway Scratch” actúa de pasarela de datos entre

Scratch y mOway.

La conexión entre mOway y Scratch se realiza a través de los módulos de

radiofrecuencia mOway y el módulo RFUSB conectado al ordenador. Es por tanto

necesario tener el módulo de radiofrecuencia colocado en la ranura de expansión

mOway y el módulo RFUSB conectado a un puerto USB del ordenador.

10.2 Funcionamiento La comunicación mOway – Scratch se activa por medio de la aplicación “mOway

Scratch”.

Scratch

mOway Scratch

Robot mOway

Page 156: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 156 de 170

www.moway-robot.com

El botón “Programar” descarga el firmware necesario en mOway para que la

conexión con Scratch sea correcta. Para ello el robot mOway debe estar conectado a

través del puerto USB. El firmware se grabará para funcionar en el canal seleccionado

en la caja “canal”.

Para iniciar la comunicación se pulsa el botón “Conectar al canal …”. El robot

mOway deberá tener el firmware de Scratch previamente grabado, el módulo RFUSB

deberá estar conectado y Scratch abierto con alguno de los programas de ejemplo de

mOway.

Una vez establecida la conexión 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 módulo RF al conector de expansión del robot mOway.

2. Conectar el RFUSB al ordenador.

3. Conectar el robot mOway al ordenador.

4. Abrir la aplicación “mOwayScratch”:

Page 157: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 157 de 170

www.moway-robot.com

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

(en este caso, Español):

6. Pulsar el botón “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 través del menú “Inicio -> Todos los programas ->

mOway Pack v3 -> mOway Scratch projects”. Por ejemplo, abrir el

proyecto “moway_RC.sb”.

Page 158: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 158 de 170

www.moway-robot.com

9. Pulsar “OK”.

10. Una vez abierto el proyecto en Scratch, pulsar el botón “Conectar al

canal…” en la aplicación. El estado del panel de la aplicación será el

siguiente:

11. Volviendo a la ventana de Scratch se verá cómo varían los valores de los

sensores de mOway. Al pulsar los cursores del teclado (flechas), el robot

mOway se desplazará.

Page 159: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 159 de 170

www.moway-robot.com

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 conexión con Scratch se ha iniciado, pulsar el botón “Desconectar”.

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

Page 160: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 160 de 170

www.moway-robot.com

3. Reprogramar el robot pulsando en botón “Programar”.

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

ordenador y encender el robot.

5. Pulsar el botón “Conectar al canal…”.

10.4 Comandos y Sensores A continuación se presenta la relación de acciones disponibles para ejecutar desde el

entorno Scratch y las variables que configuran cada acción. El envío de comandos a

mOway se realiza empleando el bloque de control “enviar a todos”. Por ejemplo, el

mensaje “giro(izquierda)” realizaría un giro hacia la izquierda:

Comando Descripción Variables

empleadas

adelante mOway avanaza recto de forma indefinida,

con una velocidad del 50%. -

atras mOway retrocede recto de forma indefinida,

con una velocidad del 50%. -

izquierda mOway realiza un giro de 90º hacia la

izquierda. -

derecha mOway realiza un giro de 90º hacia la

derecha. -

mediavuelta mOway gira media vuelta. -

parar mOway se detiene. -

reset(distancia) Resetea el contador de distancia total de los

motores. -

adelante(recto)

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 idéntico a “adelante”, pero en sentido

contrario.

Page 161: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 161 de 170

www.moway-robot.com

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.

adelante(derecha)

mOway avanza en una curva hacia la derecha.

Idéntico pero en dirección opuesta a

“adelante(izquierda)”.

atras(izquierda)

mOway retrocede en una curva hacia la

izquierda. Idéntico pero en sentido opuesto a

“adelante(izquierda)”.

atras(derecha)

mOway retrocede en una curva hacia la

derecha. Idéntico pero en sentido opuesto a

“atras(izquierda)”.

giro(izquierda)

mOway realiza una rotación a una velocidad

determinada de un ángulo determinado hacia

la izquierda, sobre su eje o sobre una rueda. Si

el ángulo (“rotación”) es igual a cero, la

rotación se realiza de manera indefinida.

giro(derecha)

mOway realiza una rotación hacia la derecha.

Idéntico a “giro(izquierda)”, pero en dirección

opuesta.

ledfrontal(on) Activa el LED frontal. -

ledfrontal(off) Desactiva el LED frontal. -

ledfrontal(parpadeo) Parpadea el LED frontal. -

ledfreno(on) Activa el LED de freno -

ledfreno(off) Desactiva el LED de freno -

ledfreno(parpadeo) Parpadea el LED de freno. -

ledverde(on) Activa el LED verde superior -

ledverde(off) Desactiva el LED verde inferior -

ledverde(parpadeo) Parpadea el LED verde. -

ledrojo(on) Activa el LED rojo superior -

ledrojo(off) Desactiva el LED rojo superior -

ledrojo(parpadeo) Parpadea el LED rojo superior. -

leds(on) Activa todos los LEDs. -

leds(off) Desactiva todos los LEDs. -

leds(parpadeo) Parpadea todos los LEDs. -

Page 162: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 162 de 170

www.moway-robot.com

sonido(on) Activa el altavoz con un sonido a una

frecuencia determinada. sonido(off) Desactiva el altavoz. -

encerrado

Subprograma para que mOway se quede

encerrado dentro de un círculo negro. Avanza

cuando está sobre una superficie blanca y

cuando llega a una línea negra, da la vuelta.

-

empujar Subprograma para detectar objetos. mOway

busca los objetos y los empuja. -

defensor

Subprograma para que mOway expulse

objetos dentro de un círculo negro. Combina

los subprogramas “encerrado” y “empujar”.

-

seguirlinea(izquierda) Subprograma para seguir una línea negra por

el lado izquierdo. -

seguirlinea(derecha) Subprograma para seguir una línea negra por

el lado derecho. -

En la siguiente tabla se muestran la relación de variables con los valores que pueden

tomar para la correcta ejecución de los comandos:

Variable Descripción Rango de Valores

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

frecuencia Frecuencia de la señal del altavoz 0 – 16000 Hz

radio Radio de curvatura 0- 100 (radio + velocidad < 100)

rotacion Ángulo de rotación en grados 0 – 360 º

eje-rotacion Eje de rotación Wheel – Sobre rueda

Cualquier valor – Sobre centro

velocidad Velocidad de movimiento 30 -100 %

tiempo Tiempo de movimiento en

décimas de segundos

0 – 255 (0 - 25,5 segundos)

Page 163: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 163 de 170

www.moway-robot.com

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 indicaría el valor del

sensor de línea derecho del robot:

Variable Descripción Rango de Valores

Obstaculos lateral

izquierdo

Sensor de obstáculos izquierdo lateral 0 (sin obstáculo)

100 (obstáculo muy cerca)

Obstaculos central

izquierdo

Sensor de obstáculos izquierdo

central

0 (sin obstáculo)

100 (obstáculo muy cerca)

Obstaculos central

derecho

Sensor de obstáculos derecho central 0 (sin obstáculo)

100 (obstáculo muy cerca)

Obstaculos lateral

derecho

Sensor de obstáculos derecho lateral 0 (sin obstáculo)

100 (obstáculo muy cerca)

Linea izquierdo Sensor de línea izquierdo 0 (blanco) – 100 (negro)

Linea derecho Sensor de línea derecho 0 (blanco) – 100 (negro)

Luz(R) Sensor de luz ambiente 0 – 100%

Distancia Contador de km en mm -

Microfono Nivel de ruido ambiental 0- 100%

Eje-X g Aceleración en g en el eje X -2.0 – 2.0 g

Eje-Y g Aceleración en g en el eje Y -2.0 – 2.0 g

Eje-Z g Aceleración en g en el eje Z -2.0 – 2.0 g

Motor Fin Sensor que se activa cuando el último

comando enviado al motor ha

finalizado

0 - 1

Page 164: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 164 de 170

www.moway-robot.com

10.5 Prácticas Para entender mejor la integración con mOway, dentro del instalador

MowayWorld se incluyen cinco prácticas de ejemplo. Por defecto se encuentran en la

siguiente carpeta: “Archivos de Programa -> mOwayPack v3 -> mOway Robot ->

mOway Scratch projects”. También puede accederse desde el menú “Inicio -> Todos

los programas -> mOway Pack v3 -> mOway Scratch projects”.

10.5.1 Figuras geométricas El siguiente programa de Scratch reproduce formas geométricas. Los ejemplos

pueden encontrarse en la carpeta de los proyectos Scratch de mOway Pack, con el

nombre “moway_cuadrado.sb” y “moway_triangulo.sb”.

La figura geométrica se determina variando el número de iteraciones (lados del

polígono), “rotacion” (ángulos de rotación de mOway) y “distancia” (longitud del lado).

La misma figura geométrica que se reproduce en Scratch la reproducirá mOway en el

mundo real.

Page 165: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 165 de 170

www.moway-robot.com

El resultado que se obtiene es que el robot traza un cuadrado. Se observa que el

cuentakilómetros de mOway marca aproximadamente (con un cierto margen de error)

los 200 mm x 4 lados recorridos por mOway.

Si se modifican la variable de rotación a 120º y el número de iteraciones del

bloque “repetir” a 3, el resultado obtenido será un triángulo equilátero.

Page 166: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 166 de 170

www.moway-robot.com

10.5.2 Encerrado El objetivo de esta práctica es que mOway avance hasta que se encuentre con una

línea negra. El programa de la práctica está en la carpeta de los proyectos Scratch de

mOway Pack, con el nombre “moway_encerrado.sb”.

Cuando en alguno de los dos sensores de línea detecta una línea negra, mOway

retrocederá un poco, dará la vuelta y continuará avanzando. De este modo mOway

quedará encerrado dentro de un contorno negro sobre un fondo blanco.

A su vez la detección también tendrá su reflejo en Scratch. Cada vez que mOway

detecte una línea negra, el objeto rotará y avisará de que ha detectado una línea.

Page 167: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 167 de 170

www.moway-robot.com

10.5.3 MowayRC

La siguiente práctica actúa como un radiocontrol de mOway empleando Scratch.

El programa puede encontrarse en la carpeta de los proyectos Scratch de mOway Pack,

con el nombre “moway_RC_ES.sb”.

Con las teclas de dirección controlamos el movimiento de mOway y con algunas

teclas adicionales activamos el LED frontal o el zumbador.

En el escenario observaremos los valores de los sensores de mOway en tiempo real.

Page 168: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 168 de 170

www.moway-robot.com

10.5.4 Acelerómetro En este práctica mOway actuará como si fuera un mando de una consola de

videojuegos, empleando el acelerómetro. El programa puede encontrarse en la carpeta

de los proyectos Scratch de mOway Pack, con el nombre “moway_acel.sb”.

El objetivo es mantener a mOway dentro del cuadrado de la pantalla de Scratch.

Inclinando el mOway, el objeto de Scratch se desplazará por la pantalla. En el caso de

que el objeto toque el borde, el robot mOway activará el zumbador y el LED frontal.

Page 169: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 169 de 170

www.moway-robot.com

Podemos modificar la práctica añadiendo más obstáculos y más dificultad.

Page 170: Manual Usuario mOway V3.1

Título: Manual Usuario Rev: v3.1.0 – Febrero 2013 Página: 170 de 170

www.moway-robot.com