Integración de un módulo NodeMCU ESP8266 con una aplicación Android en Kotlin — Parte I

NodeMCU es una placa de desarrollo que integra el chip ESP8266 WiFi. Este nombre designaba inicialmente un firmware para este chip para pasar a referirnos a un módulo que nos permite llevar a cabo nuestros primeros proyectos de IoT de forma económica.

Se trata de un componente hardware open-source, al igual que Arduino. Inicialmente, se programaba mediante el lenguaje de script Lua. No obstante, con el transcurso del tiempo el interés ha disminuido a causa de la tendencia de desarrollar proyectos mediante C++ con el entorno de desarrollo de Arduino que será el utilizado en este proyecto o mediante MicroPython.

Este proyecto tiene como objetivo comunicar el módulo ESP8266 con una aplicación para dispositivos Android desarrollada bajo el lenguaje Kotlin. El módulo ESP8266 se conectará a nuestra red local y mediante la aplicación móvil, podremos modificar el estado de componentes hardware conectados a nuestro módulo.

En esta primera parte se pretende únicamente comunicar ambos dispositivos y para mostrar dicha conexión, se encenderá un LED desde nuestro dispositivo móvil.

Componentes Hardware

Para este proyecto de comunicación del módulo NodeMCU con Android serán necesarios los siguientes componentes:

  • NodeMCU ESP8266 v1.0
  • LED RGB
  • Placa protoboard
  • Smartphone Android
  • Router WiFi

Desarrollo

Arquitectura

A continuación se muestra un esquema que ilustra la arquitectura del sistema que va a ser desarrollado.

Diagrama de la arquitectura de nuestro sistema

Hardware

Seguidamente, se detallará la estructura de nuestro sistema hardware. Como se ha expresado anteriormente, en este proyecto básico se pretende que mediante la aplicación software se pueda encender un LED.

En la siguiente ilustración se muestra un esquema del diseño de nuestro circuito en el que se dispone del LED y el módulo NodeMCU ESP8266 conectados a la placa protoboard. El LED está conectado al pin D7 de nuestro módulo.

Esquema del diseño del circuito

Software

En este apartado se detallará la implementación del código de nuestro sistema, tanto la parte de nuestra aplicación Android como la de nuestro módulo hardware. En primer lugar, se mostrará el desarrollo del código para nuestro módulo ESP8266. Para poder enviar el código desarrollado bajo tecnología C++ se ha utilizado el entorno de desarrollo de Arduino.

En el entorno de desarrollo de Arduino elegimos la siguiente configuración: placa NodeMCU 1.0, 80MHz, 4M (3M SPIFFS) y 115200 baudios.

Una vez compilado y enviado nuestro código al módulo hardware, si accedemos a la IP de nuestro módulo NodeMCU ESP8266 desde un navegador de un dispositivo conectado a la misma red WiFi, podremos encender y apagar el LED gracias a los dos botones que hemos introducido en el código HTML.

Interfaz en nuestro módulo NodeMCU para encender y apagar el componente

A continuación, se expone el desarrollo de nuestra aplicación sencilla en Kotlin para poder controlar nuestro módulo WiFi. En primer lugar, creamos un proyecto nuevo en Android Studio.

Modificamos el fichero AndroidManifest.xml para conceder permisos de Internet.

En segundo lugar, vamos a modificar el archivo activity_main.xml para insertar dos botones en nuestra aplicación. Un botón ON y un botón OFF.

A continuación vamos a crear una clase llamada ApiExample. Esta clase se comunicará con nuestro módulo NodeMCU mediante peticiones HTTP.

Posee un método para encender y apagar nuestro LED. Creamos un tarea que establece conexión con nuestro dispositivo NodeMCU. Para ello, utilizamos la clase AsyncTask, la cual permite programar tareas que se ejecutan en segundo plano y haremos uso del objeto HttpURLConnection. La URL que especificamos, es la dirección IP del módulo NodeMCU, con lo que al realizar la conexión, mandamos peticiones y especificamos mediante los parámetros de la función, que método será ejecutado.

Resultado

Like what you read? Give Sergio Belda a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.