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:
Comando | Efecto |
---|---|
| Enciende el led |
| 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.