SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Aplicaci´n de un Sistema Operativo de Tiempo
o
Real (RTOS) en un robot Arduino
Charnelli, Mar´ Emilia
ıa
C´tedra: Dise˜o de Sistemas de Tiempo Real // Facultad de Inform´tica - UNLP
a
n
a

13 de noviembre de 2013
¿Qu´ es Arduino?
e

Arduino es una plataforma electr´nica abierta y libre para la
o
creaci´n de prototipos basada en software y hardware flexibles y
o
f´ciles de usar.
a
El hardware consiste en una placa con un microcontrolador
Atmel AVR y puertos de E/S.
Los microcontroladores m´s usados son el
a
Atmega168,328,1280,8 por su sencillez y su bajo costo.
El microcontrolador en la placa Arduino se programa
mediante el lenguaje de programaci´n Arduino (basado en
o
Wiring) y el entorno de desarrollo Arduino (basado en
Processing).
El Lenguaje de programaci´n Arduino se basa en C/C++.
o
Piezas del robot adquiridas
El kit de piezas utilizadas para armar nuestro robot fue el 2WD
Ultrasonic Smart Car Kits.
Piezas del robot adquiridas
´
Este kit tra´ las siguientes piezas:
ıa
2 x Motores
2 x Ruedas
1 x Rueda omni-direccional
1 x L298N motor driver
1 x Atmega328
1 x Funduino Keyes Duemilanove
1 x M´dulo ultras´nico. Sensor de Distancia HC-SR04
o
o
1 x Mini protoboard
1 x Soporte para bater´ ( AA y de 9V)
ıa
1 x Cable USB
Fuera del kit, se compr´ una placa JY-MCU Bluetooth Wireless
o
Serial
Funduino Keyes Duemilanove
clon del Arduino Duemilanove
basada en el ATmega168 o el ATmega328
14 pines con E/S digitales (6 pueden ser salidas PWM)
6 entradas anal´gicas
o
un cristal oscilador a 16Mhz
una cabecera ISCP
Se puede conectar a una computadora a trav´s del cable USB o
e
aliment´ndolo con un transformador o una bater´
a
ıa.
Funduino Keyes Duemilanove
Memorias

ATmega328 tiene 32KB (el ATmega168 tiene 16 KB) de
memoria flash
ATmega328 tiene 2 KB (Atmega168 1 KB) de memoria
SRAM
ATmega328 tiene 1KB (ATmega168 512 bytes) de EEPROM
Funduino Keyes Duemilanove
Entradas y Salidas

14 pines digitales como entradas o como salidas usando las
funciones pinMode(), digitalWrite(), y digitalRead()
Las E/S operan a 5 voltios
Cada pin puede proporcionar o recibir una intensidad m´xima
a
de 40mA y tiene una resistencia interna (desconectada por
defecto)de 20-50kOhms
Funduino Keyes Duemilanove
Entradas y Salidas

Adem´s, algunos pines tienen funciones especializadas:
a
Serie: 0 (RX) y 1 (TX). Usado para recibir (RX) y transmitir
(TX) datos a trav´s de puerto serie TTL.
e
Interrupciones Externas: 2 y 3. Estos pines se pueden
configurar para lanzar una interrupci´n en un valor LOW(0V),
o
en flancos de subida o bajada, o en cambios de valor.
PWM: 3, 5, 6, 9, 10, y 11. Proporciona una salida PWM
(Pulse Wave Modulation, modulaci´n de onda por pulsos) de
o
8 bits de resoluci´n (valores de 0 a 255).
o
LED: 13.
ATmega328
El ATmega328 es un chip microprocesador creado por Atmel y que
forma parte de la serie megaAVR.

Conjunto reducido de instrucciones (RISC)
Bus de datos de 8 bits.
Basado en la arquitectura AVR
Microcontrolador simple, de baja potencia y bajo costo.
ATmega328
Componentes principales

32 KB de memoria flash ISP con capacidades de lectura y
escritura,
Una memoria no vol´til EEPROM de un 1KB,
a
Una memoria vol´til SRAM de 2KB,
a
23 l´
ıneas de E/S de prop´sito general,
o
32 registros de prop´sito general,
o
Tres temporizadoradores/contadores,
Interrupciones internas y externas,
Un m´dulo USART que recibe y transmite datos por el puerto
o
serie,
Una interfaz serie de 2 cables (TWI) orientada a bytes,
Un puerto serie SPI,
Un conversor A/D de 10 bits,
Un timer programable con oscilador interno.
M´dulo ultras´nico. Sensor de Distancia HC-SR04
o
o
Mide las distancias de alg´n objeto cercano desde 2cm hasta
u
450cm.
Angulo eficaz del sensor: no mas de 15o grados
Precisi´n: cerca de los 2mm
o
M´dulo de muy bajo costo
o
Compatible con Arduino y otras plataformas de
microcontroladores.
Pin trig (emite el pulso de ultrasonido)
Pin echo (captura el pulso reflejado por el objeto)
M´dulo JY-MCU Bluetooth Wireless Serial Port
o

Dispositivo puerto serie bluetooth inal´mbrico
a
Distancia m´xima de transmisi´n: 10 metros
a
o
Velocidad de transmisi´n: 9600bps (standard)
o
Barato y f´cil de usar.
a
C´mo armar el Robot con las piezas compradas
o

Armar el robot con las piezas compradas requiere un poco de
ingenio, ya que el kit comprado no trae un manual para armarlo.
Algunas problem´ticas encontradas fueron:
a
Conjunto de piezas que no encastraban.
Tornillos que no alcanzaban.
Cables dupont que s´lo eran hembra-hembra.
o
En internet se pueden ver diferentes estrategias de armado.
Implementaci´n de las funcionalidades del robot
o

Dise˜o orientado a objetos.
n
Clase Brillo representa al robot.
Compuesto por un Sensor, una instancia de SoftwareSerial y
dos instancias Motor
Provee m´todos de inicializaci´n y manipulaci´n del robot
e
o
o

Clase Sensor
Utiliza la librer´ Servo para controlar el rotor del sensor.
ıa
Utiliza la librer´ NewPing que permite la medici´n de
ıa
o
distancias
Implementaci´n de las funcionalidades del robot
o

Figura : Diagrama de Clases
Instalar un SO de Tiempo Real. RTuinOS
¿Qu´ es RTuinOS?
e

RTuinOS es un peque˜o Sistema de Tiempo Real (RTOS en
n
ingl´s) para Arduino.
e
El funcionamiento del Arduino tradicional tiene dos puntos de
entrada:
funci´n de configuraci´n, que es el lugar para poner el
o
o
c´digo de inicializaci´n necesario para ejecutar el programa
o
o
bucle de la funci´n, que se llama peri´dicamente. La
o
o
frecuencia del bucle no es determinista sino que depende del
tiempo de ejecuci´n del c´digo dentro del bucle.
o
o
Usando RTuinOS, las dos funciones mencionadas arriba siguen
existiendo y siguen teniendo el mismo significado. Sin embargo,
como parte de la configuraci´n se pueden definir una serie de
o
tareas que tengan propiedades distintas.
Instalar un SO de Tiempo Real. RTuinOS

Las tareas se ejecutan de forma semiparalela
RTuinOS brinda primitivas de sincronizaci´n y exclusi´n
o
o
mutua.
Las tareas se ejecutan repetidamente dentro del bucle de la
funci´n principal.
o
La funci´n loop() se convierte en la tarea ociosa de RTOS.
o
Las tareas pueden ser:
comunes
controladas por tiempo
controladas por eventos
pueden tener diferentes prioridades

El scheduling puede ser preemptive o cooperativo, utilizando
slices de tiempo y/o un patr´n round robin.
o
Instalar un SO de Tiempo Real. RTuinOS

Por defecto, la distribuci´n se compila para Arduino 1.0.1, y solo
o
soporta el AtMega 2560. De forma que funcione en otros
microprocesadores se debe adaptar el c´digo, tal como
o
mostraremos en las siguientes diapositivas.
Este SO se puede descargar desde de
https://github.com/PeterVranken/RTuinOS
Instalar un SO de Tiempo Real. RTuinOS
Tareas de Tiempo Real

una tarea est´ representada por un objeto task
a
los objetos task se alocan est´ticamente, no hay creaci´n o
a
o
eliminaci´n din´mica
o
a
los objetos se configuran en la funci´n setup de Arduino.
o
las prioridades de las tareas se determinan en tiempo de
compilaci´n de la aplicaci´n.
o
o
Instalar un SO de Tiempo Real. RTuinOS
Implementaci´n de un Aplicaci´n RTuinOS
o
o

Para crear una aplicaci´n RTuinOS se debe crear una carpeta
o
vac´ en la carpeta /src/applications.
ıa
B´sicamente se tendr´n dos archivos:
a
a
programa.c que definir´ funciones:
a
setup,
loop,
y las tareas

Archivo rtos.config.c con las configuraci´nes de RTuinOS.
o

Se podr´n definir todas las clases que sean necesarias.
a
Instalar un SO de Tiempo Real. RTuinOS
Configuraci´n de RTuinOS
o

La creaci´n de una aplicaci´n RTuinOS comienza con la
o
o
configuraci´n del sistema.
o
Copiar plantilla rtos.config.template.h y cambiar el nombre a
rtos.config.h
Definir no de tareas (adem´s de la tarea ociosa)
a
Definir el no de clases de prioridad
Habilitar o no la estrategia round robin (por defecto
desactivada)
Establecer la resoluci´n del temporizador del sistema
o
Definir eventos
etc
Instalar un SO de Tiempo Real. RTuinOS
Inicializaci´n de RTuinOS: setup
o

La aplicaci´n RTuinOS comienza con una llamada a la funci´n
o
o
setup().
funci´n invocada desde el c´digo de inicio Arduino (y tambi´n
o
o
e
desde el c´digo de inicializaci´n de RTuinOS)
o
o
sin esta funci´n no se podr´ construir el ejecutable
o
a
definir´ todo el c´digo de inicializaci´n de las tareas.
a
o
o
por cada tarea definida se deber´ llamar a la funci´n
a
o
rtos initializeTask()
funci´n que especifica las propiedades de una tarea
o
no retorna nada.
recibe el conjunto de eventos por los que la tarea esperar´ para
a
ejecutarse la primera vez.
Instalar un SO de Tiempo Real. RTuinOS
La tarea de inactividad: loop

La tarea de inactividad de RTuinOS consiste en invocar
repetidamente a la funci´n void loop.
o
la ejecuci´n de ´ste c´digo se realiza solo si ninguna otra
o
e
o
tarea requiere utilizar la CPU.
tipicamente, contiene c´digo que no tiene restricciones de
o
tiempo real.
un uso t´
ıpico es la de realizar tareas diagn´sticas.
o
si no se requiere una tarea de inactividad, o no hay tiempo
inactivo simplemente se puede dejar la funci´n loop con un
o
cuerpo vac´
ıo.
Instalar un SO de Tiempo Real. RTuinOS
Compilar una aplicaci´n RTuinOS
o

El Makefile provisto por RTuinOS est´ realizado para Windows,
a
por lo que para poder compilarlo en Linux -distribuci´n utilizadao
se utiliz´ Inotool. Para ello, se debe:
o
Crear una carpeta vac´ e inicializar un proyecto ino (ino init)
ıa
Copiar en esta carpeta nuestra aplicaci´n ubicada en
o
RTuinOS/code/applications en la carpeta /src
Copiar en esta carpeta textbfRTuinOS/code/RTOS
Cambiar los path relativos
Cambiar los archivos con extensi´n .c por .cpp
o
Borrar sketch.ino, ya que los m´todos setup y loop est´n en el
e
a
programa realizado utilizando RTuinOS.
Tener en cuenta que cuando se trabaja con Linux ´ste es
e
case-sensitive
Instalar un SO de Tiempo Real. RTuinOS
Brillo. Caso de Estudio

Para que funcione para el ATmega328 se debieron hacer algunas
modificaciones:
Modificaci´n en la interface global de RTuinOS: rtos.c Lo que
o
var´ entre ambos microprocesadores es el manejo de las pilas,
ıa
ya que el atmega328p utiliza 8 bits y no 16 bits como el
ATmega2560. Esto se puede verificar viendo las hojas de
datos de ambas arquitecturas en la p´gina oficial de Atmel.
a
Por lo tanto se debe modificar la macro que prepara el ´rea de
a
la pila todav´ no utilizada de una nueva tarea.
ıa
Instalar un SO de Tiempo Real. RTuinOS
Brillo. Caso de Estudio

static void Ta reaMovil idad ( uint16_t initCondition )

1
2

{

3

do
{
switch ( estado ) {
case NORMAL :
b . setVelocidad (4) ;
break ;
case CUIDADO :
b . setVelocidad (0) ;
break ;
case FIN_BARRIDO :
if ( muestras [0] < muestras [2]) {
b . doblarDerecha () ;
} else {
b . d ob la rI z qu ie rd a () ;
}
estado = NORMAL ;
break ;
}
} while ( r t o s _ s u s p e n d T a s k T i l l T i m e ( TIME_IN_MS (100) ) ) ;
}

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Instalar un SO de Tiempo Real. RTuinOS
Brillo. Caso de Estudio

static void TareaSensor ( uint16_t initCondition )

1
2

{
do {
switch ( estado ) {
case NORMAL :
if ( b . sensar (90) < m i n D i s t a n c i a F r e n t e ) {
estado = CUIDADO ;
}
break ;
case CUIDADO :
barrido () ;
estado = FIN_BARRIDO ;
break ;
}
} while ( r t o s _ s u s p e n d T a s k T i l l T i m e ( TIME_IN_MS (50) ) ) ;

3
4
5
6
7
8
9
10
11
12
13
14
15
16

}
Instalar un SO de Tiempo Real. RTuinOS
Brillo. Caso de Estudio

void setup ( void )

1
2

{
(...)
/* I n i c i a l i z a c i n de las tareas */
r t o s _ i n i t i a l i z e T a s k ( /* idxTask */
, /* taskFunction */
Tare aMovilid ad
, /* prioClass */
, /* pStackArea */
_ ta sk St a ck 00 _C 0 [0]
, /* stackSize */
_ ta sk St a ck 00 _C 0 )
, /* star tEventMa sk */
RTOS_EVT_DELAY_TIMER
, /* s t a r t B y A l l E ve n t s */
, /* startTimeout */
);

3
4
5
6
7
8
9
10
11
12
13
14
15

}

0

1
&
sizeof (

false
1
Instalar un SO de Tiempo Real. RTuinOS
Brillo. Caso de Estudio

void loop ( void )

1
2

{
switch ( estado )
{
case NORMAL :
b . es c r i b i r B l u e t o o t h ( " estado normal " ) ;
break ;
case CUIDADO :
b . es c r i b i r B l u e t o o t h ( " hay objetos cercanos " ) ;
break ;
case FIN_BARRIDO :
b . e s c r i b i r B l u e t o o t h ( " fin de barrido " ) ;
break ;
}

3
4
5
6
7
8
9
10
11
12
13
14
15

}
Documentaci´n
o

Toda la documentaci´n de ´ste trabajo se encuentra en:
o
e
https://drive.google.com/folderview?id=0B_
4zu6280L9fV0VpZzBuNHg4eHM&usp=sharing
Se encuentra el informe completo de ´ste trabajo, las
e
implementaciones, fotos con todo el armado del robot, y un video
que muestra su funcionamiento.

Mais conteúdo relacionado

Mais procurados

Presentación final
Presentación finalPresentación final
Presentación final
itueii
 
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CMANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
Luis Zurita
 
Comunicación Serial Asíncrona con el Stellaris
Comunicación Serial Asíncrona con el Stellaris Comunicación Serial Asíncrona con el Stellaris
Comunicación Serial Asíncrona con el Stellaris
Alejandro Zaraos Vázquez
 

Mais procurados (18)

Ejercicios de arduino_resueltos
Ejercicios de arduino_resueltosEjercicios de arduino_resueltos
Ejercicios de arduino_resueltos
 
Presentación Taller ROS - Robotic Operating System
Presentación Taller ROS - Robotic Operating SystemPresentación Taller ROS - Robotic Operating System
Presentación Taller ROS - Robotic Operating System
 
Curso basico de pic 16 f877
Curso basico de pic 16 f877Curso basico de pic 16 f877
Curso basico de pic 16 f877
 
Ejercicios de arduino_resueltos
Ejercicios de arduino_resueltosEjercicios de arduino_resueltos
Ejercicios de arduino_resueltos
 
Microprocesador
Microprocesador Microprocesador
Microprocesador
 
Presentación final
Presentación finalPresentación final
Presentación final
 
Estructura programa arduino
Estructura programa arduinoEstructura programa arduino
Estructura programa arduino
 
AIX Administration Knowledge Share
AIX Administration Knowledge ShareAIX Administration Knowledge Share
AIX Administration Knowledge Share
 
Curso de plc cap 2
Curso de plc cap 2Curso de plc cap 2
Curso de plc cap 2
 
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN CMANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
MANEJO DE PERIFERICOS PARA MICROCONTROLADORES EN C
 
Curso de pic
Curso de picCurso de pic
Curso de pic
 
Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2
 
Manual programacion arduino
Manual programacion arduinoManual programacion arduino
Manual programacion arduino
 
Cpu
CpuCpu
Cpu
 
Monitorización
MonitorizaciónMonitorización
Monitorización
 
Comunicación Serial Asíncrona con el Stellaris
Comunicación Serial Asíncrona con el Stellaris Comunicación Serial Asíncrona con el Stellaris
Comunicación Serial Asíncrona con el Stellaris
 
programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84programacion con microcontrolador pic 16f84
programacion con microcontrolador pic 16f84
 
Microprosedador
MicroprosedadorMicroprosedador
Microprosedador
 

Destaque

Destaque (20)

Audio con Arduino
Audio con ArduinoAudio con Arduino
Audio con Arduino
 
Máquinas de vectores de soporte
Máquinas de vectores de soporteMáquinas de vectores de soporte
Máquinas de vectores de soporte
 
Dispositivos y técnicas
Dispositivos y técnicasDispositivos y técnicas
Dispositivos y técnicas
 
Control remoto IR
Control remoto IRControl remoto IR
Control remoto IR
 
Hard disk encoder
Hard disk encoderHard disk encoder
Hard disk encoder
 
Electrónica 1 – fundamentos 1
Electrónica 1 – fundamentos 1Electrónica 1 – fundamentos 1
Electrónica 1 – fundamentos 1
 
Microcontroladores 3 – conversor A/D; DSP
Microcontroladores 3 – conversor A/D; DSPMicrocontroladores 3 – conversor A/D; DSP
Microcontroladores 3 – conversor A/D; DSP
 
Electrónica 5 – electrónica digital
Electrónica 5 – electrónica digitalElectrónica 5 – electrónica digital
Electrónica 5 – electrónica digital
 
Usando el Attiny85
Usando el Attiny85Usando el Attiny85
Usando el Attiny85
 
Microcontroladores 6 – interrupciones
Microcontroladores 6 – interrupcionesMicrocontroladores 6 – interrupciones
Microcontroladores 6 – interrupciones
 
Electrónica 3 – componentes activos y semiconductores
Electrónica 3 – componentes activos y semiconductoresElectrónica 3 – componentes activos y semiconductores
Electrónica 3 – componentes activos y semiconductores
 
Microcontroladores 1 – arquitectura
Microcontroladores 1 – arquitecturaMicrocontroladores 1 – arquitectura
Microcontroladores 1 – arquitectura
 
Óhmetro con Arduino
Óhmetro con Arduino  Óhmetro con Arduino
Óhmetro con Arduino
 
Dimmer de 230V AC con Arduino
Dimmer de 230V AC con ArduinoDimmer de 230V AC con Arduino
Dimmer de 230V AC con Arduino
 
Electrónica 4 – fuentes y baterías
Electrónica 4 – fuentes y bateríasElectrónica 4 – fuentes y baterías
Electrónica 4 – fuentes y baterías
 
Fuente conmutada con Arduino
Fuente conmutada con ArduinoFuente conmutada con Arduino
Fuente conmutada con Arduino
 
Microcontroladores 5 – comunicación (SPI & I2C)
Microcontroladores 5 – comunicación (SPI & I2C)Microcontroladores 5 – comunicación (SPI & I2C)
Microcontroladores 5 – comunicación (SPI & I2C)
 
Microcontroladores 2 – GPIO y PWM
Microcontroladores 2 – GPIO y PWMMicrocontroladores 2 – GPIO y PWM
Microcontroladores 2 – GPIO y PWM
 
Microcontroladores 4 – comunicación (uart)
Microcontroladores 4 – comunicación (uart)Microcontroladores 4 – comunicación (uart)
Microcontroladores 4 – comunicación (uart)
 
Electrónica 2 – fundamentos 2; componentes pasivos
Electrónica 2 – fundamentos 2; componentes pasivosElectrónica 2 – fundamentos 2; componentes pasivos
Electrónica 2 – fundamentos 2; componentes pasivos
 

Semelhante a Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino (20)

Arduino 1
Arduino 1Arduino 1
Arduino 1
 
03-arduino.pdf
03-arduino.pdf03-arduino.pdf
03-arduino.pdf
 
Programación básica de Arduino
Programación básica de Arduino Programación básica de Arduino
Programación básica de Arduino
 
Arduino
ArduinoArduino
Arduino
 
Basicos arduino
Basicos arduinoBasicos arduino
Basicos arduino
 
Básicos arduino
Básicos arduinoBásicos arduino
Básicos arduino
 
arduino
arduinoarduino
arduino
 
ARDUINO 11.pptx
ARDUINO 11.pptxARDUINO 11.pptx
ARDUINO 11.pptx
 
Arduino: programación básica de Arduino
Arduino: programación básica de ArduinoArduino: programación básica de Arduino
Arduino: programación básica de Arduino
 
Hack x crack_cuaderno_arduino
Hack x crack_cuaderno_arduinoHack x crack_cuaderno_arduino
Hack x crack_cuaderno_arduino
 
Cuaderno_Arduino.pdf
Cuaderno_Arduino.pdfCuaderno_Arduino.pdf
Cuaderno_Arduino.pdf
 
Cuaderno_Arduino.pdf
Cuaderno_Arduino.pdfCuaderno_Arduino.pdf
Cuaderno_Arduino.pdf
 
Cuaderno_Arduino.pdf
Cuaderno_Arduino.pdfCuaderno_Arduino.pdf
Cuaderno_Arduino.pdf
 
Arduino
ArduinoArduino
Arduino
 
Manual basico arduino
Manual basico arduinoManual basico arduino
Manual basico arduino
 
Tarjeta arduino
Tarjeta arduinoTarjeta arduino
Tarjeta arduino
 
Arduino
ArduinoArduino
Arduino
 
Arduino
ArduinoArduino
Arduino
 
ejercicios de arduino miercoles 1.pdf
ejercicios de arduino miercoles 1.pdfejercicios de arduino miercoles 1.pdf
ejercicios de arduino miercoles 1.pdf
 
Arduino
ArduinoArduino
Arduino
 

Último

TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 

Último (20)

Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
Lecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigosLecciones 06 Esc. Sabática. Los dos testigos
Lecciones 06 Esc. Sabática. Los dos testigos
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docx
 
activ4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdfactiv4-bloque4 transversal doctorado.pdf
activ4-bloque4 transversal doctorado.pdf
 
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).pptPINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
PINTURA DEL RENACIMIENTO EN ESPAÑA (SIGLO XVI).ppt
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024Interpretación de cortes geológicos 2024
Interpretación de cortes geológicos 2024
 
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIASISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
SISTEMA RESPIRATORIO PARA NIÑOS PRIMARIA
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptxPLAN LECTOR 2024  integrado nivel inicial-miercoles 10.pptx
PLAN LECTOR 2024 integrado nivel inicial-miercoles 10.pptx
 
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdfFICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
FICHA PROYECTO COIL- GLOBAL CLASSROOM.docx.pdf
 
Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
Revista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdfRevista Apuntes de Historia. Mayo 2024.pdf
Revista Apuntes de Historia. Mayo 2024.pdf
 
Power Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptxPower Point E. S.: Los dos testigos.pptx
Power Point E. S.: Los dos testigos.pptx
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 

Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino

  • 1. Aplicaci´n de un Sistema Operativo de Tiempo o Real (RTOS) en un robot Arduino Charnelli, Mar´ Emilia ıa C´tedra: Dise˜o de Sistemas de Tiempo Real // Facultad de Inform´tica - UNLP a n a 13 de noviembre de 2013
  • 2. ¿Qu´ es Arduino? e Arduino es una plataforma electr´nica abierta y libre para la o creaci´n de prototipos basada en software y hardware flexibles y o f´ciles de usar. a El hardware consiste en una placa con un microcontrolador Atmel AVR y puertos de E/S. Los microcontroladores m´s usados son el a Atmega168,328,1280,8 por su sencillez y su bajo costo. El microcontrolador en la placa Arduino se programa mediante el lenguaje de programaci´n Arduino (basado en o Wiring) y el entorno de desarrollo Arduino (basado en Processing). El Lenguaje de programaci´n Arduino se basa en C/C++. o
  • 3. Piezas del robot adquiridas El kit de piezas utilizadas para armar nuestro robot fue el 2WD Ultrasonic Smart Car Kits.
  • 4. Piezas del robot adquiridas ´ Este kit tra´ las siguientes piezas: ıa 2 x Motores 2 x Ruedas 1 x Rueda omni-direccional 1 x L298N motor driver 1 x Atmega328 1 x Funduino Keyes Duemilanove 1 x M´dulo ultras´nico. Sensor de Distancia HC-SR04 o o 1 x Mini protoboard 1 x Soporte para bater´ ( AA y de 9V) ıa 1 x Cable USB Fuera del kit, se compr´ una placa JY-MCU Bluetooth Wireless o Serial
  • 5. Funduino Keyes Duemilanove clon del Arduino Duemilanove basada en el ATmega168 o el ATmega328 14 pines con E/S digitales (6 pueden ser salidas PWM) 6 entradas anal´gicas o un cristal oscilador a 16Mhz una cabecera ISCP Se puede conectar a una computadora a trav´s del cable USB o e aliment´ndolo con un transformador o una bater´ a ıa.
  • 6. Funduino Keyes Duemilanove Memorias ATmega328 tiene 32KB (el ATmega168 tiene 16 KB) de memoria flash ATmega328 tiene 2 KB (Atmega168 1 KB) de memoria SRAM ATmega328 tiene 1KB (ATmega168 512 bytes) de EEPROM
  • 7. Funduino Keyes Duemilanove Entradas y Salidas 14 pines digitales como entradas o como salidas usando las funciones pinMode(), digitalWrite(), y digitalRead() Las E/S operan a 5 voltios Cada pin puede proporcionar o recibir una intensidad m´xima a de 40mA y tiene una resistencia interna (desconectada por defecto)de 20-50kOhms
  • 8. Funduino Keyes Duemilanove Entradas y Salidas Adem´s, algunos pines tienen funciones especializadas: a Serie: 0 (RX) y 1 (TX). Usado para recibir (RX) y transmitir (TX) datos a trav´s de puerto serie TTL. e Interrupciones Externas: 2 y 3. Estos pines se pueden configurar para lanzar una interrupci´n en un valor LOW(0V), o en flancos de subida o bajada, o en cambios de valor. PWM: 3, 5, 6, 9, 10, y 11. Proporciona una salida PWM (Pulse Wave Modulation, modulaci´n de onda por pulsos) de o 8 bits de resoluci´n (valores de 0 a 255). o LED: 13.
  • 9. ATmega328 El ATmega328 es un chip microprocesador creado por Atmel y que forma parte de la serie megaAVR. Conjunto reducido de instrucciones (RISC) Bus de datos de 8 bits. Basado en la arquitectura AVR Microcontrolador simple, de baja potencia y bajo costo.
  • 10. ATmega328 Componentes principales 32 KB de memoria flash ISP con capacidades de lectura y escritura, Una memoria no vol´til EEPROM de un 1KB, a Una memoria vol´til SRAM de 2KB, a 23 l´ ıneas de E/S de prop´sito general, o 32 registros de prop´sito general, o Tres temporizadoradores/contadores, Interrupciones internas y externas, Un m´dulo USART que recibe y transmite datos por el puerto o serie, Una interfaz serie de 2 cables (TWI) orientada a bytes, Un puerto serie SPI, Un conversor A/D de 10 bits, Un timer programable con oscilador interno.
  • 11. M´dulo ultras´nico. Sensor de Distancia HC-SR04 o o Mide las distancias de alg´n objeto cercano desde 2cm hasta u 450cm. Angulo eficaz del sensor: no mas de 15o grados Precisi´n: cerca de los 2mm o M´dulo de muy bajo costo o Compatible con Arduino y otras plataformas de microcontroladores. Pin trig (emite el pulso de ultrasonido) Pin echo (captura el pulso reflejado por el objeto)
  • 12. M´dulo JY-MCU Bluetooth Wireless Serial Port o Dispositivo puerto serie bluetooth inal´mbrico a Distancia m´xima de transmisi´n: 10 metros a o Velocidad de transmisi´n: 9600bps (standard) o Barato y f´cil de usar. a
  • 13. C´mo armar el Robot con las piezas compradas o Armar el robot con las piezas compradas requiere un poco de ingenio, ya que el kit comprado no trae un manual para armarlo. Algunas problem´ticas encontradas fueron: a Conjunto de piezas que no encastraban. Tornillos que no alcanzaban. Cables dupont que s´lo eran hembra-hembra. o En internet se pueden ver diferentes estrategias de armado.
  • 14. Implementaci´n de las funcionalidades del robot o Dise˜o orientado a objetos. n Clase Brillo representa al robot. Compuesto por un Sensor, una instancia de SoftwareSerial y dos instancias Motor Provee m´todos de inicializaci´n y manipulaci´n del robot e o o Clase Sensor Utiliza la librer´ Servo para controlar el rotor del sensor. ıa Utiliza la librer´ NewPing que permite la medici´n de ıa o distancias
  • 15. Implementaci´n de las funcionalidades del robot o Figura : Diagrama de Clases
  • 16. Instalar un SO de Tiempo Real. RTuinOS ¿Qu´ es RTuinOS? e RTuinOS es un peque˜o Sistema de Tiempo Real (RTOS en n ingl´s) para Arduino. e El funcionamiento del Arduino tradicional tiene dos puntos de entrada: funci´n de configuraci´n, que es el lugar para poner el o o c´digo de inicializaci´n necesario para ejecutar el programa o o bucle de la funci´n, que se llama peri´dicamente. La o o frecuencia del bucle no es determinista sino que depende del tiempo de ejecuci´n del c´digo dentro del bucle. o o Usando RTuinOS, las dos funciones mencionadas arriba siguen existiendo y siguen teniendo el mismo significado. Sin embargo, como parte de la configuraci´n se pueden definir una serie de o tareas que tengan propiedades distintas.
  • 17. Instalar un SO de Tiempo Real. RTuinOS Las tareas se ejecutan de forma semiparalela RTuinOS brinda primitivas de sincronizaci´n y exclusi´n o o mutua. Las tareas se ejecutan repetidamente dentro del bucle de la funci´n principal. o La funci´n loop() se convierte en la tarea ociosa de RTOS. o Las tareas pueden ser: comunes controladas por tiempo controladas por eventos pueden tener diferentes prioridades El scheduling puede ser preemptive o cooperativo, utilizando slices de tiempo y/o un patr´n round robin. o
  • 18. Instalar un SO de Tiempo Real. RTuinOS Por defecto, la distribuci´n se compila para Arduino 1.0.1, y solo o soporta el AtMega 2560. De forma que funcione en otros microprocesadores se debe adaptar el c´digo, tal como o mostraremos en las siguientes diapositivas. Este SO se puede descargar desde de https://github.com/PeterVranken/RTuinOS
  • 19. Instalar un SO de Tiempo Real. RTuinOS Tareas de Tiempo Real una tarea est´ representada por un objeto task a los objetos task se alocan est´ticamente, no hay creaci´n o a o eliminaci´n din´mica o a los objetos se configuran en la funci´n setup de Arduino. o las prioridades de las tareas se determinan en tiempo de compilaci´n de la aplicaci´n. o o
  • 20. Instalar un SO de Tiempo Real. RTuinOS Implementaci´n de un Aplicaci´n RTuinOS o o Para crear una aplicaci´n RTuinOS se debe crear una carpeta o vac´ en la carpeta /src/applications. ıa B´sicamente se tendr´n dos archivos: a a programa.c que definir´ funciones: a setup, loop, y las tareas Archivo rtos.config.c con las configuraci´nes de RTuinOS. o Se podr´n definir todas las clases que sean necesarias. a
  • 21. Instalar un SO de Tiempo Real. RTuinOS Configuraci´n de RTuinOS o La creaci´n de una aplicaci´n RTuinOS comienza con la o o configuraci´n del sistema. o Copiar plantilla rtos.config.template.h y cambiar el nombre a rtos.config.h Definir no de tareas (adem´s de la tarea ociosa) a Definir el no de clases de prioridad Habilitar o no la estrategia round robin (por defecto desactivada) Establecer la resoluci´n del temporizador del sistema o Definir eventos etc
  • 22. Instalar un SO de Tiempo Real. RTuinOS Inicializaci´n de RTuinOS: setup o La aplicaci´n RTuinOS comienza con una llamada a la funci´n o o setup(). funci´n invocada desde el c´digo de inicio Arduino (y tambi´n o o e desde el c´digo de inicializaci´n de RTuinOS) o o sin esta funci´n no se podr´ construir el ejecutable o a definir´ todo el c´digo de inicializaci´n de las tareas. a o o por cada tarea definida se deber´ llamar a la funci´n a o rtos initializeTask() funci´n que especifica las propiedades de una tarea o no retorna nada. recibe el conjunto de eventos por los que la tarea esperar´ para a ejecutarse la primera vez.
  • 23. Instalar un SO de Tiempo Real. RTuinOS La tarea de inactividad: loop La tarea de inactividad de RTuinOS consiste en invocar repetidamente a la funci´n void loop. o la ejecuci´n de ´ste c´digo se realiza solo si ninguna otra o e o tarea requiere utilizar la CPU. tipicamente, contiene c´digo que no tiene restricciones de o tiempo real. un uso t´ ıpico es la de realizar tareas diagn´sticas. o si no se requiere una tarea de inactividad, o no hay tiempo inactivo simplemente se puede dejar la funci´n loop con un o cuerpo vac´ ıo.
  • 24. Instalar un SO de Tiempo Real. RTuinOS Compilar una aplicaci´n RTuinOS o El Makefile provisto por RTuinOS est´ realizado para Windows, a por lo que para poder compilarlo en Linux -distribuci´n utilizadao se utiliz´ Inotool. Para ello, se debe: o Crear una carpeta vac´ e inicializar un proyecto ino (ino init) ıa Copiar en esta carpeta nuestra aplicaci´n ubicada en o RTuinOS/code/applications en la carpeta /src Copiar en esta carpeta textbfRTuinOS/code/RTOS Cambiar los path relativos Cambiar los archivos con extensi´n .c por .cpp o Borrar sketch.ino, ya que los m´todos setup y loop est´n en el e a programa realizado utilizando RTuinOS. Tener en cuenta que cuando se trabaja con Linux ´ste es e case-sensitive
  • 25. Instalar un SO de Tiempo Real. RTuinOS Brillo. Caso de Estudio Para que funcione para el ATmega328 se debieron hacer algunas modificaciones: Modificaci´n en la interface global de RTuinOS: rtos.c Lo que o var´ entre ambos microprocesadores es el manejo de las pilas, ıa ya que el atmega328p utiliza 8 bits y no 16 bits como el ATmega2560. Esto se puede verificar viendo las hojas de datos de ambas arquitecturas en la p´gina oficial de Atmel. a Por lo tanto se debe modificar la macro que prepara el ´rea de a la pila todav´ no utilizada de una nueva tarea. ıa
  • 26. Instalar un SO de Tiempo Real. RTuinOS Brillo. Caso de Estudio static void Ta reaMovil idad ( uint16_t initCondition ) 1 2 { 3 do { switch ( estado ) { case NORMAL : b . setVelocidad (4) ; break ; case CUIDADO : b . setVelocidad (0) ; break ; case FIN_BARRIDO : if ( muestras [0] < muestras [2]) { b . doblarDerecha () ; } else { b . d ob la rI z qu ie rd a () ; } estado = NORMAL ; break ; } } while ( r t o s _ s u s p e n d T a s k T i l l T i m e ( TIME_IN_MS (100) ) ) ; } 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
  • 27. Instalar un SO de Tiempo Real. RTuinOS Brillo. Caso de Estudio static void TareaSensor ( uint16_t initCondition ) 1 2 { do { switch ( estado ) { case NORMAL : if ( b . sensar (90) < m i n D i s t a n c i a F r e n t e ) { estado = CUIDADO ; } break ; case CUIDADO : barrido () ; estado = FIN_BARRIDO ; break ; } } while ( r t o s _ s u s p e n d T a s k T i l l T i m e ( TIME_IN_MS (50) ) ) ; 3 4 5 6 7 8 9 10 11 12 13 14 15 16 }
  • 28. Instalar un SO de Tiempo Real. RTuinOS Brillo. Caso de Estudio void setup ( void ) 1 2 { (...) /* I n i c i a l i z a c i n de las tareas */ r t o s _ i n i t i a l i z e T a s k ( /* idxTask */ , /* taskFunction */ Tare aMovilid ad , /* prioClass */ , /* pStackArea */ _ ta sk St a ck 00 _C 0 [0] , /* stackSize */ _ ta sk St a ck 00 _C 0 ) , /* star tEventMa sk */ RTOS_EVT_DELAY_TIMER , /* s t a r t B y A l l E ve n t s */ , /* startTimeout */ ); 3 4 5 6 7 8 9 10 11 12 13 14 15 } 0 1 & sizeof ( false 1
  • 29. Instalar un SO de Tiempo Real. RTuinOS Brillo. Caso de Estudio void loop ( void ) 1 2 { switch ( estado ) { case NORMAL : b . es c r i b i r B l u e t o o t h ( " estado normal " ) ; break ; case CUIDADO : b . es c r i b i r B l u e t o o t h ( " hay objetos cercanos " ) ; break ; case FIN_BARRIDO : b . e s c r i b i r B l u e t o o t h ( " fin de barrido " ) ; break ; } 3 4 5 6 7 8 9 10 11 12 13 14 15 }
  • 30. Documentaci´n o Toda la documentaci´n de ´ste trabajo se encuentra en: o e https://drive.google.com/folderview?id=0B_ 4zu6280L9fV0VpZzBuNHg4eHM&usp=sharing Se encuentra el informe completo de ´ste trabajo, las e implementaciones, fotos con todo el armado del robot, y un video que muestra su funcionamiento.