Your SlideShare is downloading. ×
0
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Aplicación de un Sistema Operativo de Tiempo Real (RTOS) en un robot Arduino
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

1,048

Published on

Trabajo Final para la cátedra Diseño de Sistemas de Tiempo Real. En este trabajo se muestra desde cómo armar el robot con las piezas compradas hasta cómo modificar y adaptar RTuinOS (un SO de Tiempo …

Trabajo Final para la cátedra Diseño de Sistemas de Tiempo Real. En este trabajo se muestra desde cómo armar el robot con las piezas compradas hasta cómo modificar y adaptar RTuinOS (un SO de Tiempo Real) para que funcione en nuestro Arduino.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,048
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×