sábado, 15 de febrero de 2020

IoT fácil con NodeMCU



¿Qué es NodeMCU? 

NodeMCU es una placa de desarrollo de código abierto basada en un chip de bajo coste que dispone de WIFI, ESP 8266, y que es ampliamente utilizado en IoT (The Internet Of Things, El Internet de las Cosas). Asociado a un sinfín de sensores, software, y tecnologías varias, nos permite interconectar todo tipo de dispositivos cotidianos o industriales. A través de una nube, los dispositivos físicos pueden recopilar e intercambiar información y crear un limbo donde es posible la comunicación entre las personas y las cosas.

El autor de este blog no aporta lo que ya hay a raudales en Internet, aporta la experiencia y el código que puede dejar aquí, que en este caso puede ser muy interesante, tanto a nivel didáctico como técnico.

En esta entrada os cuento la experiencia de conectar la placa NodeMCU a la plataforma de código abierto Thinger.io, y activar a través de ella y del móvil el LED de la placa, y desde la placa, pulsando un pulsador, verificar como se manifiesta el widget de la plataforma y del móvil al ser actuado.

Podemos comenzar instalando ARDUINO 1.8.10.

Para poder brindar soporte para el chip ESP8266 al entorno Arduino, permitiendo crear sketches utilizando funciones y bibliotecas conocidas por Arduino, tenemos que añadir desde la siguiente web de GitHub - esp8266 de Arduino, en Archivo --> Preferencias --> Ajustes, el enlace al archivo package_esp8266com_index.json

Copiamos desde:

Y pegamos en Archivo --> Preferencias --> Ajustes



Instalamos luego con el Gestor de tarjetas  del entorno IDE de Arduino el paquete ESP8266 Community versión 2.6.2





ESP8266 Community version 2.6.2




Seleccionamos luego la placa NodeMCU 1.0 (ESP-12E Module)


En Linux, si no se abren los puertos serie USB, es decir, no hay comunicación con la placa a través de ellos, debemos ejecutar el siguiente comando en el Terminal de root:

usermod -a -G dialout usuario
 


Podéis comprobar si vamos bien, verificando con el siguiente código que los LEDs de la placa y el de la salida digital D1 se apagan y encienden alternativamente; el LED azul de la placa está invertido.

int ledPin5 = 5;            //GPI005 - D1

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);     // GPI002 - D4
  pinMode(ledPin5, OUTPUT);
}

void loop() {

  digitalWrite(LED_BUILTIN, HIGH);
  digitalWrite(ledPin5, HIGH); 

  delay(1000);                       // Espera un segundo
 
  digitalWrite(LED_BUILTIN, LOW);   
  digitalWrite(ledPin5, LOW);

  delay(1000);                       // Espera un segundo
}