Trabajando con Platformio
Last updated
Last updated
Es una cross-platform, cross-architecture, multiple framework que permite el desarrollo de aplicaciones para sistemas embebidos. La mayor ventaja de esto es que la herramienta permite que el programador pueda trabajar con diferentes plataformas (arduino, esp8266, ESP32, rPi, etc.) usando el mismo IDE siguiendo el siguiente ciclo de desarrollo:
Seleccionar la board(s) de interés en el archivo platformio.ini (Project Configuration File).
Basado en la lista de boards, PlatformIO descargará las toolchains y las instalará automaticamente.
Programar, compilar, preparar y subir la aplicación a las boards de interés.
Existe muy buena documentación sobre cómo llevar a cabo la instalación de platformio la cual se encuentra en https://platformio.org/install. Por lo tanto esta sección lo único que hicimos fue dedicarnos a copiar y pegar lo que allí se explica.
Descargar el Microsoft Visual Studio Code pues el PlatformIO IDE está construido sobre este.
Abrir el VSCode Package Manager
Buscar la extensión oficial del platformio ide
Instalar el PlatformIO IDE.
En el siguiente enlace se muestra una guía rápida para trabajar con platformio. Como esta guia esta enfocada en el arduino, vamos a seguir el tutorial Quick start with NodeMCU v3 (ESP8266) , Arduino ecosystem and PlatformIO IDE (enlace) en el cual se explica cómo programar el NodeMCU usando platformio. Veamos los pasos a continuación:
Ubicarse en el home de platformio:
Crear un nuevo proyecto (New project) y configurarlo, para el caso:
Name: blink
Board: NodeMCU 1.0 (ESP-12E Module)
Framework: Arduino.
Luego de esto se da click en finish.
Nota: Si lo que se desea es usar otra localización diferente a la que viene por defecto, se puede deseleccionar la casilla de Location que define esto y se procede a seleccionar la ruta.
Una vez se da finish, si todo está bien se descargan las dependencias y se construye la estructura del proyecto. Dentro de los archivos generados se encuentra el archivo de configuración del proyecto platformio.ini (para más información sobre puede consultar el siguiente enlace). A continuación se muestra el archivo de configuración, generado para nuestro ejemplo:
Otro archivo de importancia generado es el archivo main.cpp
(esta se encuentra en el directorio src
) el cual contiene la plantilla del código fuente que modificaremos para definir la lógica de nuestra aplicación:
Para el caso, lo que deseamos hacer que parpadee el led que viene integrado con la tarjeta del NodeMCU con un periodo de un segundo. A continuación, se muestran los pines del NodeMCU. Para el caso, el pin asociado al led integrado en la tarjeta es el GPIO2.
De este modo, el programa a subir a la tarjeta será el siguiente:
Así el código modificado quedará:
Finalmente, solo resta hacer el build y el upload empleando los botones destinados para ello. La siguiente figura muestra como hacer el build (CTRL + ALT + b
):
La siguiente figura muestra como hacer el upload (CTRL + ALT + u
):
Si el proceso de upload (carga del programa en la plataforma) está bien, saldrá en la terminal algo como lo siguiente:
A continuación, se analizarán dos casos que son muy comunes en muchas de las aplicaciones que se harán a lo largo del curso:
Uso del puerto serial.
Uso del wifi.
Para tratar este caso, partamos del siguiente problema.
Problema: Hacer una aplicación en arduino que permita prender y apagar el led integrado a la tarjeta NodeMCU mediante las instrucciones mostradas en la siguiente tabla:
h
Enciende el led
l
Apaga el led
La codificación del procedimiento es similar a la realizada en el ejemplo anterior, pero, en este caso el código fuente a codificar se muestra a continuación, se muestra a continuación:
Es buena práctica que una vez codificado el código, este sea construido (CTRL + ALT + b
en linux) antes de que sea subido a la plataforma.
La importancia de este problema radica en que se va a hacer uso del puerto serial, por lo que es necesario agregar las líneas para configurar el puerto serial en el archivo platformio.ini. Inicialmente, es bueno verificar cual es el puerto serial al que quedó asignado el NodeMCU una vez que este fue conectado lo cual depende del sistema operativo (link).
El puerto USB que aparezca al realizar la verificación, es aquel que está conectado el NodeMCU (supongamos que el resultado dio ttyUSB0).
Inicialmente si abrimos el archivo platformio.ini tendremos algo como lo siguiente:
Teniendo en cuenta que el puerto de trabajo será el ttyUSB0
(para este ejemplo) y la velocidad serial será de 9800 bps. Se agregaron las siguientes líneas en el archivo de configuración (para más información de como configurar el monitor serial puede consultar el enlace Monitor Options):
De este modo el archivo platformio.ini queda así:
Una vez hecho esto, el paso siguiente consistirá en subir el código al NodeMCU (CTRL + ALT + u
en linux).
De este modo solo resta probar en el monitor serial, para ello se da click en el botón resaltado (o se ejecuta la combinación de teclas CTRL + ALT + s
) en la siguiente figura:
Finalmente, una vez llamado el monitor serial, se hace un reset del NodeMCU y se ejecuta la aplicación de acuerdo a la lógica programada:
Cuando culmine la prueba con la combinación de letras CTRL + C
puede salir del monitor serial.
El otro caso que es necesario analizar es la conexión por Wifi, esto debido al gran número de aplicaciones de IoT que se conectan inalámbricamente usando esta tecnología. Como en muchos casos, Wifi es una librería externa por lo que la clave, está en instalar y usar esta y otras librerías en el proyecto. Para más información puede consultar el enlace Library Manager.
Para nuestro caso vamos a adaptar el ejemplo descrito en la segunda parte del tutorial: Quick start with NodeMCU v3 (ESP8266), Arduino ecosystem and PlatformIO IDE.
Inicialmente, tal y como se ha realizado anteriormente, procedemos a crear un proyecto. El cual para el caso llamaremos wifi-test. Tal y como sucede inicialmente, el archivo platformio.ini tiene la siguiente configuración basica:
Como nuestro proyecto va a hacer uso de Wifi, es necesario agregar esta librería, de modo que lo primero que se debe hacer es ir al gestor de librerías y descargarla. Para ello primero cargamos el home del platformio:
Una vez aparezca el home se presiona el botón del gestor de librerías:
Para buscar la librería vamos al gestor de librerías y en el campo para la búsqueda digitamos la librería o palabra clave de nuestro interés (cuadro amarillo). Como resultado aparecerá una lista de librerías, donde para nuestro caso procedimos a instalar la librería WifiManager tal y como se muestra en la siguiente figura:
Para instalarla damos click en esta librería (cuadro naranja) lo que hace que como resultado aparezca la siguiente pestaña. De modo que para instalar la librería procedemos a dar click en el botón Install:
Luego podemos verificar que la libreria está instalada dando click en la pestaña Installed tal y como se muestra a continuación:
El siguiente paso consiste en agregar la librería recién instalada en el archivo de configuración. Damos click en el nombre de la librería (WifiManager):
Como se puede notar, aparecerá información relevante relacionada con esta librería la cual está desplegada a lo largo de las pestañas (examples, installation, etc). Como lo que deseamos es instalar esta librería para poder usar sus funciones en nuestro proyecto damos click en la pestaña installation:
Una vez allí, se procede a copiar la parte relacionada con lib_deps en el archivo de configuración (platformio.ini):
El archivo platformio.ini queda de la siguiente manera hasta el momento:
Con lo anterior ya es posible usar las funciones propias de esta libreria, asi que procedemos a codificar nuestro código fuente ejemplo en el archivo main.cpp
(no olvidar adaptar el ssid y el password de su red local):
Como se podrá notar, se está haciendo uso del monitor serial por lo que es necesario agregar en el archivo de configuración (platformio.ini) las líneas necesarias para configurar el monitor serial:
Una vez hecho esto ya es posible verificar (CTRL +ALT + b
) y subir el codigo (CTRL +ALT + u
) de modo que si todo está bien aparecera algo como lo que se muestra en la siguiente figura:
Finalmente se llama al monitor serial (CTRL + ALT + s
) y se procede a dar un reset a la placa NodeMCU:
Ya lo que resta es cacharrear y adaptar esto a su proyecto en cuestión.