ESP8266 para novatos

ESP8266 para novatos

Lo primero decir que yo también soy un novato en esto de la electrónica y el internet of things, pero como me gusta cacharrear con todo lo que se pueda programar y me habían hablado muy bien de este módulo me compré uno para ver que podía hacer con el y empezar a domotizar mi casa. El ESP8266 lo descubrí gracias a la charla de Sergio Casero sobre Android Things, muy buena y recomendable si quieres ver todo lo que se puede hacer con ello. Si quieres conocerlo en detalle sólo tienes que seguir leyendo.

El módulo ESP8266 es un micro controlador que incorpora wifi y que la primera comparación que se nos viene a la cabeza cuando oímos hablar de el es con Arduino. Los principales motivos que en mi opinión han hecho que sea tan conocido y que en muchos casos sea mejor que una placa Arduino son:

  • Su pequeño tamaño, 2 o 3 cm por cada lado los modelos más pequeños.
  • Que tiene wifi.
  • Su reducido precio, de 2 a 8€ dependiendo del modelo.
  • Su bajo consumo, menor de 10 mW en reposo.

Por todas estas características en un micro controlador perfecto para tener domotizada nuestra casa a un precio bajo y sin necesidad de tirar cables por toda gracias a que se puede comunicar vía wifi.

Lo primero que me vino a la cabeza cuando me puse a buscar ESP8266 en Aliexpress fue que era una locura y que mejor me fuese a programar en Android que es lo que se me da bien. Yo no tenía ni idea y en la web podía encontrar más de 10 modelos diferentes cada uno con diferente nombre y características. Después de investigar y leer por varias webs vi que lo que cambiaba no era el micro controlador, sino la placa sobre la que va montado y el número de entradas y salidas que ofrece.

Si vosotros estáis en el mismo punto en el que estaba yo, os recomiendo la placa NodeMCU 1.0 con el modelo ESP8266 12E sobre ella tal y como me recomendó mi compañero Fernando. Es de las más grandes que te puedes encontrar pero a cambio tienes todos los pines del ESP8266 disponibles en el exterior, la puedes colocar en una protoboard porque encaja perfectamente y dispone de un conector mini usb con el que podrás conectar la placa al PC y así programarlo de una manera mucho más cómoda. La puedes encontrar disponible en Amazon y en Aliexpress, un poco más barata en el segundo pero con un tiempo de entrega mayor.

Existen muchos más modelos disponibles en el mercado, si quieres saber más sobre ellos puedes leer este artículo en el que se explican y se muestran las diferencias.

Primer uso

Una vez que ya tenemos la placa en nuestra casa comienza lo divertido. Todo lo necesario para programarla es multiplataforma, con ello quiero decir que da igual que utilices Windows, Mac o Linux que funcionará sin problemas (yo estoy trabajando tanto en Windows como en Mac y no hay ningún problema, con Linux no lo he probado pero tampoco debería de haberlo).

Lo primero que tendremos que hacer será instalar la última versión del driver ya que al menos en Windows y Mac no la reconoce por defecto. En el caso de la placa que compré yo, debajo venía impreso el driver que tenía que instalar y lo encontré en esta web, está todo en chino salvo donde pone los sistemas operativos :). Una vez instalado el driver sólo tendremos que reiniciar nuestro ordenador y enchufar por usb (uno de un móvil te sirve) la placa al pc para que lo reconozca.

Desarrollo con PlatformIO

Algo que no he dicho todavía pero que está genial es que el micro controlador se puede programar como si de un Arduino se tratase, por lo que si ya tienes ese conocimiento no necesitarás aprender nada nuevo. Por ello podemos utilizar como entorno de desarrollo el IDE de Arduino. En mi caso estoy acostumbrado a entornos de desarrollo mucho más potentes que el de Arduino y gracias a la recomendación de mi compañero Fernando descubrí PlatformIO.

PlatformIO es un entorno de desarrollo open source gratuito basado en Atom que está totalmente pensado para dispositivos IoT. Con el podemos desarrollar para diferentes sistemas al mismo tiempo de una manera cómoda y sencilla. También dispone de un gestor de dependencias y descarga de librerías mucho más cómodo que el IDE de Arduino. Para mi ha sido todo un descubrimiento y recomiendo totalmente su uso.

Si quieres instalarlo sólo tendrás que seguir estas instrucciones. Básicamente es instalar Atom y a continuación instalar el plugin de PlatformIO por lo que es muy rápido.

Ejemplo básico

Vamos a empezar por un Hello Word que nos permitirá aprender lo básico del entorno de desarrollo, programar nuestro primer código y ejecutarlo en la placa sin necesitar ningún otro componente hardware. Lo primero será crear un nuevo proyecto pulsando sobre New project en la pantalla de inicio de PlatformIO.

A continuación deberás de seleccionar las placas para las cuales quieres desarrollar y la carpeta donde quieres que se guarde tu proyecto. En el caso del modelo que os he comentado antes tenemos que seleccionar NodeMCU 1.0 (ESP-12E Module). Una vez pulsemos en aceptar, el IDE comenzará a descargarse las dependencias necesarias y cuando termine ya tendremos nuestro proyecto listo para empezar a programar.

Para este ejemplo básico sólo vamos a necesitar un fichero y lo crearemos haciendo click derecho sobre la carpeta src y seleccionando Nuevo fichero. En mi caso lo he llamado main.cpp pero realmente puedes utilizar otro siempre y cuando mantengas la extensión del fichero.

Lo único que vamos a hacer en este primer ejemplo es que el micro controlador imprima por consola Hello world! cada segundo. Para ello sólo sera necesario este código. Como puedes ver es idéntico al código que se usaría en un Arduino. Tenemos dos métodos obligatorios, el setup que se ejecutará una sola vez para hacer la configuración inicial y el método loop que se ejecutará en bucle infinitamente. Como ves es realmente simple y se entiende muy fácil.

#include <Arduino.h>

void setup() {
  Serial.begin(9600);
}

void loop() {
  delay(1000);
  Serial.println("Hello World!");
}

Para asegurarnos que todo está bien en nuestro código y que compila correctamente tendremos que pulsar sobre el primer botón que está en la columna de la izquierda y que si todo va bien nos mostrará un mensaje en verde.

A continuación tendremos que mandar nuestro código a la placa, para ello sólo tendremos que pulsar el segundo botón. Si todo ha ido bien nos deberá de aparecer otro mensaje de éxito en verde.

Por último, para poder ver la salida de la consola, deberemos de seleccionar en el menú superior de PlatformIO la opción Serial Monitor y en el diálogo que nos aparece elegir el usb de nuestra placa.

Al aceptar nos aparecerá una nueva ventana por la que podremos ver la salida de nuestro ESP8266, en este caso Hello world! cada segundo.

Espero que este ejemplo te haya servido para quitarte el miedo a utilizar una placa tan versátil como es la ESP8266. Puedes encontrar el ejemplo completo en mi GitHub y si tienes cualquier duda (o encuentras cualquier error en el post) no dudes en dejar un comentario.