Instalación de KleOS y tu primer sketch de tiempo real

Instalación de KleOS y tu primer sketch de tiempo real

KleOS es un fascinante proyecto para escribir aplicaciones de tiempo real en Arduino UNO, pero para utilizarlo primero hay que descargarlo, ¡y es muy fácil!

KleOS es una amalgama de los programas OpenSource Arduino, FreeRTOS y Arduino-mk para que escribas aplicaciones de tiempo real en Arduino, tanto en sketches como desde la línea de comandos (CLI). Debido a que tuve que modificar algunas partes del núcleo de Arduino no me es posible distribuir únicamente al sistema operativo en tiempo real FreeRTOS, sino que la distribución incluye a todo el paquete Arduino. Lo bueno es que podrás usarlo sin instalarlo para que no entre en conflicto con tu actual instalación.

En esta entrada te voy a mostrar cómo descargarlo y cómo utilizarlo para que programes sketches de tiempo real, y en una siguiente entrega te voy a mostrar cómo programar desde la CLI (es decir, desde una terminal).

Las instrucciones son las mismas para Linux y Windows; sin embargo, debes saber que solamente utilizo al primero y tengo poco acceso (y ganas de usar) al segundo, y si te lo platico es por aquello del soporte. En las pruebas que he hecho en ambos sistemas la instalación y uso es fácil y directo.

Podrás complementar las siguientes instrucciones con el video oficial (mudo) de la descarga y primer uso de KleOS.

Descarga

Descarga el paquete KleOS. SourceForge te mostrará el paquete que coincida con tu sistema operativo (LInux o Windows).

Una vez descargado, descomprímelo en una carpeta de tu preferencia y entra en ella.

Como te mencioné, puedes usarlo sin instalarlo, pero si quieres hacerlo (sólo para Linux por el momento), entonces busca la carpeta arduino-1.13 y da doble click en el archivo install.sh y sigue las instrucciones.

IMPORTANTE: Esta versión de Arduino no compila sketches regulares debido a dependencias con FreeRTOS.

Si aún así quieres utilizarlo para compilar sketches regulares, entonces deberás realizar dos pasos adicionales con cada sketch que te platico al final de este artículo.

Sketches

Entra a la carpeta /tu/ruta/de/instalación/KleOS-1.0-xxx/arduino-1.8.13 (xxx= Linux o Win), localiza al archivo arduino (o arduino.exe para Windows) y da doble click en él. La conocida IDE de Arduino comenzará a ejecutarse. Si tu sistema operativo te pregunta qué hacer dile “Ejecutar”.

En la IDE busca y abre uno de los dos sketches de ejemplo que incluí: en el menú principal ve a Archivo – Ejemplos – FreeRTOS – hello_world_sketch (o hello_world_sketch_static).

Luego compila el ejemplo con la opción del menú principal Sketch/Verify (o con el ícono de palomita (así le decimos en México), o con la combinación de teclas Ctrl-r).

Cuando el ejemplo se haya compilado podrás subirlo a cualquier tarjeta compatible con Arduino UNO (es decir, cualquier tarjeta original o clón que incluya al chip ATMEGA328). Asegúrate que tu tarjeta está conectada por USB y luego inicia el proceso con la opción del menú principal Sketch/Upload (o el ícono de flecha que apunta a la derecha, o con la combinación de teclas Ctrl-u).

El LED 13 de tu tarjeta deberá comenzar a parpadear una vez por segundo.

¡FELICIDADES, haz subido tu primer sketch de Arduino en tiempo real!

Archivos de configuración FreeRTOSConfig.h

Cada proyecto que use a FreeRTOS requiere un archivo de configuración llamado FreeRTOSConfig.h; los ejemplos incluídos ya lo traen. Pero cuando tú hagas tus propios sketches, deberás incluirlo también. Para hacerlo:

A tu nuevo sketch agrégale los encabezados <FreeRTOS.h> y <task.h>:

Edítalo y guárdalo. Arduino lo guarda en la carpeta /tu/ruta/home/Arduino/ (o similar en Windows) con el nombre del sketch:

Copia el archivo de configuración FreeRTOSConfig.h a la carpeta donde está tu sketch. Este archivo lo puedes encontrar en la carpeta: /tu/ruta/de/instalación/KleOS-1.0-xxx/arduino-1.8.13/libraries/FreeRTOS/examples/hello_world_sketch/:

Ahora en la carpeta de tu sketch tendrás dos archivos: tu_sketch.ino y FreeRTOSConfig.h. De ser necesario edita y adapta este archivo a tus necesidades:

Aquí podrás ver todas las opciones para el archivo de configuración (en inglés).

De regreso a la IDE, y ya con ambos archivos en la carpeta del sketch, compila y sube tu proyecto como de costumbre. ¡Y disfruta de tus aplicaciones en tiempo real!


Curso gratuito de Arduino en tiempo real

He creado un curso gratuito para que aprendas o recuerdes cómo programar utilizando al sistema operativo FreeRTOS. Puedes accesar a él desde aquí.


Compilando aplicaciones regulares en KleOS

KleOS está pensado para que los sketches y aplicaciones de la CLI utilicen a FreeRTOS, por lo cual sketches regulares no compilarán a la primera. Si aún así deseas utilizar a KleOS para compilar de manera regular deberás hacer casi lo mismo que si estuvieras creando sketches que lo utilizarán, aunque al final no vas a usar nada de FreeRTOS:

A tu sketch agrégale los encabezados <FreeRTOS.h> y <task.h>; el ejemplo blink incluído con Arduino se vería así:

// Agrega estos dos encabezados:
#include <FreeRTOS.h>
#include <task.h>

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);
  delay(1000);                    
  digitalWrite(LED_BUILTIN, LOW); 
  delay(1000);                    
}

Copia el archivo de configuración FreeRTOSConfig.h a la carpeta donde está tu sketch. Este archivo lo puedes encontrar en la carpeta: /tu/ruta/de/instalación/KleOs-1.0-xxx/arduino-1.8.13/libraries/FreeRTOS/examples/hello_world_sketch/.

Compila y sube tu sketch a la tarjeta como de costumbre.


Espero que estas instrucciones te hayan sido útiles y que comiences a programar aplicaciones en tiempo real.

¿Has considerado suscribirte al blog?


Fco. Javier Rodríguez
Written by:

Fco. Javier Rodríguez

Soy Ingeniero Electrónico con 20+ años de experiencia en el diseño y desarrollo de productos electrónicos de consumo y a medida, y 12+ años como profesor. Egresado de la UNAM, también tengo el grado de Maestro en Ingeniería por la misma universidad. Mi perfil completo lo puede encontrar en: https://www.linkedin.com/in/fjrg76-dot-com/

View All Posts

1 COMMENT