Está en la página 1de 9

Ejemplo práctico para el ESP8266/ESP32

Lenguaje de programación

MC Xavier Sierra Canto

El ESP32/ESP8266 es un SoC que integra capacidades de conexión a internet mediante una


red inalámbrica y también conexión bluetooth en el caso del ESP32. Puede estar integrado en
diferentes tarjetas de desarrollo que hacen fácil la alimentación, conexión y programación del
integrado. Uno de los factores que ha hecho a este integrado un éxito, es la integración con las
herramientas de programación de Arduino. Ello nos permite utilizar programas y bibliotecas que
han sido desarrolladas para las tarjetas Arduino. Por otro lado, Arduino ha desarrollado una
plataforma de IoT conocida como IoT Cloud con la cual podemos desarrollar dispositivos (things)
con capacidad de conectarse a su servicio de nube para ser monitoreados y controlados desde
cualquier lugar del mundo. Con ello, podemos entonces, desarrollar termostatos, barómetros,
alarmas, lámparas, contactos, entre muchos otros, conectados, visualizados o controlados desde
cualquier lugar del mundo. Por si fuera poco, los mismos desarrolladores ofrecen una App para
teléfonos y dispositivos móviles con la cual se hace más sencilla la integración a la movilidad de
nuestros things.

En este ejemplo vamos a monitorear la temperatura y la presión atmosférica utilizando un


sensor BMP180. Además, podremos activar una alarma y un ventilador cuando la temperatura
alcance cierto valor, que será configurado desde la nube. Así mismo, el ventilador puede activarse
desde la nube sin importar la temperatura actual.

Para iniciar con la creación de nuestros dispositivos es necesario ingresar a la IoT Cloud de
Arduino, registrándonos para crear una cuenta. Eso nos permitirá almacenar nuestros programas y
desarrollos en los servidores y tener acceso a ellos desde cualquier computadora en cualquier
lugar del mundo siempre y cuando tengamos acceso a la red.
Una vez en nuestra cuenta, debemos de empezar con la creación de un thing, como se
muestra en la figura:

En la ventana podemos modificar el nombre de nuestro objeto e iniciar con la tarea de


configuración. La primera opción es configurar el dispositivo, posteriormente la red a la que
nuestro dispositivo se conectará y finalmente las variables que vamos a compartir en la nube.

Configuración de las variables

El orden entre la creación de las variables y la configuración del dispositivo puede


modificarse pues no afecta al proyecto en general. Vamos a iniciar con la creación de las variables.
En este ejemplo tendremos una variable de temperatura, una de presión atmosférica, un led de
alarma, una variable para determinar el límite de temperatura previo a la activación de un
ventilador y una variable para activar la ventilación de forma manual desde la red. Esto nos da un
total de 5 variables. La ventana de agregar variables nos permitirá nombrar la variable, el nombre
que elijamos será el que se utilizará dentro del programa así que es importante que tenga relación
con la función que va a realizar. Así mismo, debemos de indicar el tipo de variable: booleana, char,
entera o flotante. Nos mostrará la declaración dentro del programa. Además, debemos de
determinar si será una variable de lectura/escritura o de solo lectura. Cuando queremos controlar
el dispositivo desde la nube, es decir, desde la App o el navegador, debe de ser una variable de
lectura/escritura ya que esto permitirá que podamos mandar valores desde la nube hacia la
tarjeta. En caso contrario, bastará con declararla como de solo lectura, como, por ejemplo, el valor
de la temperatura que lee la tarjeta será un valor que únicamente visualizaremos desde la nube. El
último aspecto de configuración de la variable es la periodicidad con la que se actualizará el valor
en la nube. Puede ser de forma periódica cada determinado tiempo o cada vez que la variable
tenga un cambio en su valor cuyo tamaño podemos ajustar.

En nuestro ejemplo nuestras variables quedaran de la siguiente forma:


Nombre Tipo Permiso Actualización
temp float Lectura Periódica
presion float Lectura Periódica
alarma boolean Lectura Periódica
limite float Lectura/Escritura Cambio
manual boolean Lectura/Escritura Cambio

Configuración de la tarjeta

Elije la opción de Device para realizar la configuración de nuestra tarjeta. Como se muestra
en la figura, nos muestra los dispositivos que hemos configurado en nuestra cuenta, si es la
primera vez debemos de seleccionar la opción de configurar un nuevo dispositivo, también si lo
que haremos es utilizar una nueva tarjeta.
Arduino cuenta con tarjetas de desarrolla para aplicaciones IoT, pero podemos utilizar casi
cualquier tarjeta que esté basada en el ESP8266 y el ESP32. A la fecha de esta guía, el soporte para
los dispositivos basados en ESP32 aún se encontraba bajo pruebas, por lo que se utilizará una
Wemos D1 que tiene como procesados en ESP8266.

Posterior a esto nos permitirá nombrar al dispositivo para poder identificarlo entre
nuestro listado de tarjetas configuradas. Una vez hecho esto, se generan las claves para acceso del
dispositivo. Estos ID y claves le sirven a la nube de Arduino para identificar y permitir el acceso a
sus servidores como dispositivo legítimo, eso evita que dispositivos no configurados para su
servicio, haga uso de sus recursos. Debemos de almacenar el archivo con estos datos en caso de
que queramos hacer uso de nuestra tarjeta en otro proyecto dentro del mismo IoT Cloud de
Arduino.
Una vez almacenado, continuamos y se termina la configuración de la tarjeta por lo que
procedemos a configurar la red a la cual se conectará el dispositivo.

Configuración de la red

La opción de configuración de la red es sencilla, ya que únicamente debemos de proporcionar el


nombre de la red, la clave de la red y la clave secreta del dispositivo (la que guardamos) esto con la
intención de tener las credenciales necesarias para poder ingresar a los servicios de la nube de
Arduino.
Desarrollo del Sketch (programa)

Una vez hechas las configuraciones, entraremos a la pestaña de sketch. Si quitamos todos
los comentarios veremos que tenemos la estructura clásica de un programa para Arduino, con la
diferencia que de agrega un archivo de cabecera y algunas funciones de configuración y de
ejecución en el loop. El archivo de cabecera contendrá las configuraciones de nuestras variables
(por lo que no es necesario declarar), los datos de la red y las funciones para la conexión al servicio
de la nube. Las funciones de inicio están incluidas en la sección de configuración y la función de
actualización de la información está incluida en el loop principal.

Por otro lado, crea definiciones de funciones que se ejecutan cuando una variable está
declarada como lectura/escritura ya que cada vez que cambie la variable se debe ejecutar la
función.

Para empezar el programa, agregaremos las bibliotecas de BMP que sean necesarias, así como
crear el objeto que llamaremos sensor:

Dentro del setup debemos de iniciar nuestro objeto, así como las entradas y salidas físicas que
estaremos utilizando, ya sean sensores, botones o actuadores. En este caso, declaramos una salida
en la terminal 14, que previamente habíamos definido como venti ya que es la salida que activara
el ventilador para bajar la temperatura.
En el loop, lo que haremos será adquirir los valores de temperatura y presión utilizando la
biblioteca del BMP y el objeto que habíamos declarado para ello. Los valores debemos de
guardarlos en las variables que creamos desde la configuración de nuestro proyecto. De forma
automática, cada vez que en el loop llamemos a la función de actualización de la nube, los valores
leídos serán enviados a la nube, a una razón de un dato por segundo, ya que así quedaron
configuradas las variables. No es necesario declarar las variables ya que están incluidas en el
archivo de configuración.

Además, si la variable manual está en falso, debe de verificar si la temperatura es mayor al


límite para activar el ventilador. Si la variable manual es verdadera indica que debe de forzar el
ventilador a estado de encendido. Esto se logra anidando una seria de instrucciones IF como se
muestra a continuación:

Agregaremos una condición IF para mandar valor aun led virtual que nos mostrará el estado de
sobre temperatura que pudiera existir físicamente.
Construcción del tablero (dashboard)

El tablero de visualización se conoce como dashboard, será la interfaz donde podremos


ver los valores de nuestros sensores y también activar o cambiar valores que afecten dentro de
nuestro programa el funcionamiento de la tarjeta. Accedemos a la pestaña y luego la opción de
crear un nuevo dashboard. Usando la opción de agregar, debemos de agregar un widget del tipo
VALUE para mostrar ahí el valor de la temperatura. Modificamos los valores de visualización y lo
más importante, ligamos el Widget con la variable que queramos de las que hemos configurado
anteriormente.

Debemos tener cuidado de que nuestras variables sean compatibles con nuestros widgets para
que se pueda hacer el link en la nube. Finalmente, nuestro dashboard puede quedar de la
siguiente forma:
De acuerdo con nuestro programa, en el dashboard vamos a poder ver los valores de temperatura
y presión tanto de forma numérica como de forma gráfica. Las gráficas contienen pestañas que
nos permiten visualizar los datos actuales, los de una hora, un día, una semana o quince días
anteriores. Además, tenemos el slide para establecer el limite de la temperatura que tendríamos
para considerar una sobre temperatura. Lo podemos modificar desde cualquier lado del mundo.
Podemos también activar de forma manual la ventilación con el interruptor.

También podría gustarte