Si bien existen muchos lenguajes de programación gráficos o de bloques para Arduino y los ESP, Nairda se destaca por la posibilidad de programar distintos modelos de placas empleando un teléfono móvil o tablet a través de un enlace Bluetooth, sin la necesidad de contar con una computadora. En este artículo haré una revisión de este desarrollo contándoles un poco sus principales características y aplicaciones.
Programación en bloques
La programación en bloques o programación gráfica es una excelente alternativa didáctica como punto de partida para que los mas pequeños (o no tanto) se inicien en el mundo de la programación, sobre todo cuando lo que se busca es que desarrollen habilidades de pensamiento computacional a través de la resolución de problemas empleando herramientas tecnológicas, sin entrar en las complejidades de la sintaxis de un lenguaje de código, como puede ser el C/C++ de Arduino o Micropython.
Existe una enorme variedad de programas que nos permiten programar placas como las Arduino o las ESP usando bloques pero en general comparten la característica de requerir de una computadora para diseñar el programa, la que se conecta a nuestra placa a través de un cable USB. Pero, ¿y si no contamos con una computadora? Los entornos educativos, tanto públicos como privados son muy heterogéneos y las realidades en distintos países pueden ser muy variables y en muchos casos no se cuenta con la suficiente cantidad de computadoras. En esta situación aparecen los dispositivos móviles, sobre todo los teléfonos de los mismos estudiantes, como una alternativa. Pero lamentablemente, la cantidad de opciones disponibles para programar desde el teléfono se reduce considerablemente a un puñado de aplicaciones, entre las que se destacan LOFI Blocks y Nairda, que veremos a continuación.
Nairda Robot Programming
Nairda es un desarrollo de origen mexicano llevado adelante por Adrián Álvarez, un joven Ingeniero en Ciencias de la Computación. Lleva varios años de trabajo en los que se han sucedido distintas versiones a lo largo de las cuales la aplicación ha ido madurando e incluyendo nuevas funciones y soporte para mas plataformas de hardware. El objetivo de Nairda es facilitar el desarrollo de robots o circuitos de computación física en general usando una serie de bloques para construir el programa de control sin la necesidad de contar con una computadora, ya que todo el programa se diseña y se hace funcionar desde un dispositivo móvil (teléfono o tablet) que cuente con conectividad Bluetooth.
En la actualidad Nairda se puede utilizar para programar dispositivos basados en distintos modelos de Arduino (UNO, Nano, Mega), ESP32 e incluso algunas placas STM32 como la Núcleo y Blue Pill. Las placas que no cuenten con soporte para Bluetooth incluido (como el ESP32) deben complementarse con un módulo adicional como los conocidos HC-05, HC-06, HC-08 y HM10, que son muy fáciles de conectar y configurar. Se pueden emplear dispositivos Android o iOS que usen Bluetooth 2.0 o Bluetooth 4.0, lo que permite utilizarlo con una amplia gama de equipos tanto de los mas modernos como algunos mas antiguos.
Una de las características fundamentales de Nairda, que exploraremos mas adelante es su flexibilidad. Nos permite agregar entradas y salidas en cualquier pin de nuestra placa, por lo que no está atado a ningún diseño de hardware en particular, como si ocurre con otras apps.
Y algo también muy importante, es completamente gratuito.
Instalación
Para utilizar Nairda debemos completar dos pasos: grabar un firmware en la placa que vamos a utilizar e instalar una app en el dispositivo móvil.
Grabación del firmware
El firmware (un código en lenguaje C) se puede descargar como una librería para Arduino IDE desde el repositorio de Nairda para luego instalarse como cualquier otra librería. Como se explica en el mismo repositorio, debemos seguir los siguientes pasos:
- Acceder al repositorio y descargar el código desde el botón Code – Download ZIP
- Descomprimir el archivo NairdaArduino Library-Master.zip descargado, que nos generará la carpeta NairdaArduinoLibrary-Master
- Renombrar la carpeta como NairdaArduinoLibrary (le borramos el “-Master”)
- Copiar la carpeta ya renombrada con el resto de las librerías de Arduino IDE (usualmente ubicado en Windows en /usuarios/usuario/Documentos/Arduino/libraries )
- Si todo funciona según lo esperado, al abrir el IDE de Arduino podemos encontrar el firmware en Archivo – Ejemplos – Nairda – nairda_firmware.
- Conectar la placa que vayamos a utilizar al puerto USB y copiarle el firmware con el botón Subir como con cualquier otro programa.
- Una vez terminada la grabación, la placa ya está lista para ser utilizada con Nairda.
Parámetro
El parámetro de la función nairdaBegin que se puede ver en el firmware de la imagen 3 es el identificador de dispositivo bluetooth que tendrá luego la placa.
Si se van a usar varias placas con ESP32, deberemos cambiar ese identificador para que cada placa tenga uno diferente.
Si en cambio usamos placas Arduino con un adaptador tipo HC-05 o HC-06, el identificador se programa en el adaptador y no en el firmware.
Problemas con Micropython
La primera vez que grabé el firmware en un ESP32 no funcionó. Esa placa había tenido antes el firmware de Micropython y aparentemente hay un problema cuando después se le graba el firmware de Nairda. Para que funcionara correctamente debí primero borrar completamente la memoria del ESP32 con la herramienta ESPTool y volver a grabar el firmware de Nairda, que de esa manera funcionó correctamente.
Instalación de la app
Luego de instalado el firmware en nuestra placa debemos bajar la app desde Play Store o App Store, según tengamos Android o iOS:
Programando con Nairda
Como dije antes, Nairda es muy flexible, adaptándose a cualquier disposición del hardware. Esta flexibilidad tiene su costo en cierta complejidad que puede confundir un poco al principio, pero que desaparece a poco de utilizarla y acostumbrarnos a su lógica de funcionamiento.
Cualquier programa hecho en Nairda tiene dos componentes separados: Los controles, que pueden ser botones o joysticks y los bloques de programa asociados a esos controles. Cada control genera dos eventos, uno al pulsarlo y otro al soltarlo y podemos asociar distintos bloques a esos eventos (quienes hayan utilizado Visual Basic seguro que estarán familiarizados con este funcionamiento).
Todo programa debe tener algún elemento de control, al menos un botón para que el mismo se inicie.
Veamos la metodología de diseño de un programa paso a paso sobre un ejemplo sencillo empleando un ESP32. Para empezar haremos algo muy simple: prenderemos un led al pulsar un botón y lo apagaremos al soltarlo. Usaré para el ejemplo una placa de ESP32 de 30 pines que tiene un led incorporado en el pin GPIO 2.
Lo primero que debemos hacer es crear un proyecto pulsando el símbolo “+” en la pantalla principal, seleccionar in ícono que lo represente y darle un nombre.
Luego abrimos el proyecto haciendo click sobre él y comenzamos con el agregado de los controles haciendo click sobre el símbolo del joystick. En este caso con sólo un botón alcanza, así que lo arrastramos hacia el centro de la pantalla (la zona de diseño se denomina lienzo)
Ahora debemos crear los bloques que asociaremos a los dos eventos del botón (Presionar y Soltar). Para ello pulsamos el ícono de bloques que aparece en la parte superior, al lado de Conectar y luego en el ícono de bloques en la esquina inferior derecha.
Como se puede ver hay varias categorías de bloques, según las funciones que debamos realizar. En este caso vamos a emplear un bloque de Salidas, así que pulsamos sobre Salidas.
Dentro de los bloques de Salidas tenemos la posibilidad de utilizar Servos, Motores (de corriente continua a través de un controlador o driver) y Digitales, para pines de salidas digitales como en nuestro caso. Pulsamos sobre Digitales y luego en AGREGAR SALIDA DIGITAL. En el diálogo que aparece debemos darle un nombre a la salida (Led por ejemplo), asignarle un número de pin (2 para esta placa), indicar que es Digital y pulsar en AGREGAR, con lo que el bloque aparecerá dentro de la zona de Salidas Digitales
Con el bloque ya creado, lo arrastramos al lienzo. Vamos a necesitar dos, así que lo hacemos dos veces. A uno de ellos le modificamos el valor de la intensidad a 100 (las salidas digitales toman los valores 0 para OFF y 100 para ON).
Ahora sólo queda asociar estos bloques con los eventos del botón, así que volvemos a la pantalla de los controles pulsando en la tecla de la esquina superior izquierda y luego en el botón para abrir su configuración. Veremos dos solapas, Presionar y Soltar. Elegimos Presionar y pulsamos en el lienzo donde dice Seleccionar bloque. Veremos los dos bloques de control del Led recién creados y pulsamos sobre el que pone el valor 100. Luego seleccionamos la solapa Soltar – Seleccionar bloque y presionamos el bloque que pone el valor 0.
Con esto ya completamos el diseño de nuestro programa. Solo queda conectar el teléfono con la placa pulsando Conectar en la parte superior, seleccionar el dispositivo de la lista (Si no lo cambiamos en el código del firmware será NairdaESP32) y luego de unos segundos pulsar sobre el ícono de Play en la esquina inferior izquierda para hacerlo correr. Si no hay ningún error, el led se debe prender al pulsar sobre el botón y apagar al soltarlo.
El procedimiento completo se puede apreciar en este video:
Este ha sido un ejemplo muy sencillo que pretende sólo mostrar algunas de las funciones de Nairda y la forma de utilizarlo.
Además de las Salidas digitales que vimos también podemos emplear Salidas Analógicas (controladas por PWN), conectar Servomotores y Motores de Corriente continua. Si necesitamos utilizar entradas, podemos elegir entre Entradas Digitales, Entradas Analógicas y Sensor de distancia ultrasónico. También tenemos la posibilidad de graficar los valores provenientes de las entradas y muchos otros bloques de Lógica (comparaciones y operaciones lógicas), Seguimiento (Repeticiones y Retardos de tiempo), Matemáticas (operaciones básicas y Mapeo de entradas) y Variables (para almacenar valores que se modifiquen durante el funcionamiento del programa).
Conclusiones
Nairda nos permite programar distintas placas usando un lenguaje de bloques de una manera fácil y sencilla, sin la necesidad de contar con una computadora, siendo posible diseñar el programa en su totalidad desde un dispositivo móvil como un teléfono. Tiene una variedad de bloques de control y de dispositivos de entrada salida para realizar interesantes proyectos de robótica o computación física. Es sumamente flexible permitiendo definir entradas y salidas en cualquier pin, aunque a veces se hace un poco compleja para quien la utiliza por primera vez. Soporta varias placas, como Arduino, ESP32 y STM32 y es completamente gratuita.
En conclusión es una herramienta muy valiosa para aprender a programar sin la complejidad de un lenguaje tradicional o de código.
En próximos artículos les compartiré otros proyectos realizados con Nairda, para mayor información pueden visitar la página web del proyecto.