Node MCU es una plataforma para el desarrollo de proyectos IoT que integra el famoso chip ESP8266, el cual se ha extendido enormemente debido a su facilidad para desarrollar proyectos open source que pueden ademas pueden involucrar el IoT. Esta placa destaca porque integra capacidades de comunicación via WiFi , conteniendo en su interior un microprocesador que puede ser programado fácilmente usando el conocido lenguaje de programación Lua o bien vía Arduino IDE.
Obviamente ante todo no podemos perder de vista su bajisimo precio comparados con otras opciones mucho mas potentes como el ESP32 ( que es su sucesor y mejora en todo excepto en el precio a esta), pero en todo caso para muchos proyectos de IOT es mas qeu suficinete, pues no debemos olvidar que incluye el modulo wifi integrado y un bus GPIO para conectar dispositivos de E/S. Ademas se puede programar con el sistema Arduino lo cual nos aporta un fantástico IDE y un sinfin de manuales y ejemplos de desarrollo.
![esp8266](https://images-na.ssl-images-amazon.com/images/I/71eaqO0PJhL._SL1200_.jpg)
Este modulo es Ideal como una solución independiente en lugar de Arduino además de Wi-Fi integrado siendo fácil de programar a través del IDE de Arduino (como vamos a ver ) , al igual que un Arduino.
Todos los periféricos con bus I2C puede unirse,por ejemplo Pantallas OLED, pantallas LCD, temperatura, presión, sensores de humedad pueden ser conectados en paralelo. También se puede conectar múltiples DS18B20
Sin embargo, sólo hay una entrada analógica y salida y por ejemplo algunas pantallas táctiles no se pueden conectar con ella.
¿Se pregunta cómo empezar a desarrollar código con su económico ESP8266 ?
Los pasos a seguir para conectar un ESP8266 son los siguientes:
- Instalación del IDE de Arduino.Si aun no lo tiene instalado ,se puede hacer desde aqui
- Instalación del paquete de la placa ESP8266 en Arduino IDE siguiendo las instrucciones del sitio : https://github.com/esp8266/Arduino
![libreria-arduino-esp8266](https://soloelectronicos.files.wordpress.com/2017/12/esp.png?w=640)
- Instalación de los controladores USB
Es necesario instalar el controlador USB requerido en su ordenador para que pueda programar el ESP8266. Independientemente de la opción de firmware que elijamos, primero necesitamos comunicarnos con la placa de desarrollo ESP-12E utilizando la interfaz USB de la computadora.
El módulo USB a Serial UART incluido en la placa es Silicon Labs ‘CP2012, para lo cual generalmente necesitamos instalar los controladores de puerto COM virtual (VCP) fácilmente disponibles para su sistema operativo específico.Una vez instalado, debemos verificar que el CP2102 sea reconocido por su ordenador
Una vez que el controlador está instalado, podemos conectar el cable USB al puerto USB de la computadora y la placa. Después de hacerlo, deberíamos ver el mensaje: software del controlador del dispositivo instalado correctamente.
Además, podemos verificar manualmente que todo funcione correctamente siguiendo estos pasos:
Abra el Administrador de dispositivos (disponible a través del Panel de control → Sistema y seguridad → Administrador de dispositivos en la sección Sistema)
Debajo de la entrada Puertos (COM & LPT), debe haber un puerto abierto llamado USB-SERIAL CP2102 (COM) donde hay un número típicamente mayor o igual a 3.
Ahora que estamos listos para comunicarnos con nuestro ESP8266 a través del CP2102, podemos explorar algunas de las diferentes opciones de firmware disponibles.
- Conecte un cable usb de datos al ESP8266
- Seleccione Herramientas –>ESP8266 y ahi la placa que haya comprado. En caso de haberla comprado en Amazon aqui seleccione NodeMCU 1.0 (ESP-12EModule).
![configuracion-arduino-ide-con-esp8266](https://soloelectronicos.files.wordpress.com/2017/12/node.png)
- En el IDE de Arduino, vaya al menú de herramientas, seleccionada su placa y elija el puerto al que está conectado su ESP8266.En el ejemplo es el COM11
![configuracuion-puerto-esp8266](https://soloelectronicos.files.wordpress.com/2017/12/puerto.png)
- Ahora copie el siguiente código para probar que puede subir y ejecutar código código en la placa :
/*
ESP8266 Led Parapadeante
*/
void setup(){
pinMode(LED_BUILTIN, OUTPUT);// Initializa el pin de LED_BUILTIN como salida
}
void loop() { // la función de bucle se repite una y otra vez para siempre
digitalWrite(LED_BUILTIN, LOW);// encienda el LED
delay(1000); //Espera de 1 segundo
digitalWrite(LED_BUILTIN, HIGH);// Apague el LED haciendo que el voltaje sea ALTO
delay(2000); // Espere dos segundos para dejar apagado LED
}
El LED azul en el módulo ESP – 01 está conectado a GPIO 1, (que también es el pin TXD, por lo que no podemos usar Serial.print () al mismo tiempo)
Tenga en cuenta que el nivel de voltaje es BAJO pero en realidad el LED está encendido, porque es bajo en el ESP – 01
En este código se usa LED_BUILTIN para encontrar el pin con el LED interno de modo
Como puede apreciar , el código ejecuta un bucle infinito en el que pone el estado bajo un segundo (encendiendo el led) para posteriormente forzar a nivel alto dos segundos(apagando el led ) y así indefinidamente gracias al bucle que se repite indefinidamente
Envio de datos a la nube de Cayenne
- Agregue la biblioteca de Cayenne MQTT a Arduino IDE desde aqui como un fuchero zip
- Instale la biblioteca zip descargada en el paso anterior desde Programa -> Incluir biblioteca -> Añadir libreria ZIP. y seleccionar ahora el fichero descargado con anterioridad Cayenne-MQTT-ESP-master.zip
- Ya puede crear una cuenta Starter en cayenne ( si aun no la tiene ya creada)
- Una vez ya validado vaya a la esquina superior izquierda y pulse sobre el botón verde add new
![interfaz-cayenne](https://soloelectronicos.files.wordpress.com/2017/12/addnew.png?w=520&h=246" alt="addnew.png)
- Ahora seleccione Generic ESP8266 como la placa y tome nota ahora de los siguintes paraetros ofrecidos por la pagina:
- MQTT USERNAME:
- MQTT PASSWORD:
- CLIENT ID:
- MQTT SERVER:
- MQTT PORT:
- NAME YOUR DEVICE (optional):
- Abra el boceto de ejemplo incluido desde Archivo -> Ejemplos -> Cayenne-MQTT-ESP. Modifique el boceto incluido con su información de red y la información de autenticación de Cayenne que recibió al agregar su dispositivo.
Ejemplo de envio temperatura TMP102
Normalmente se adquiere un placa auxiliar para el pequeño sensor de temperatura digital TMP102. El TMP102 es un sensor digital (también conocido como I2C TWI), tiene una resolución de 0,0625 ° C, y tiene una precisión de hasta 0,5 ° C, lo cual lo convierte es un sensor muy práctico pues requiere una muy baja corriente.
La comunicación con el TMP102 se logra a través de una interfaz serie de dos hilos. No existe regulador de tensión de a bordo, por lo que el voltaje suministrado debe estar entre 1,4 a 3.6VDC.
En estas placas los condensadores de filtrado y resistencias de pull-up se incluyen.
![tmp102](https://soloelectronicos.files.wordpress.com/2018/01/tmp102.png)
En el código siguiente o muestra cómo enviar datos de temperatura a un sensor TMP102 en Cayenne Dashboard.Obviamente se requiere la Biblioteca de Cayenne para ejecutar este programa (si aún no lo ha hecho, puede instalarlo desde Arduino IDE Library Manager).
![conexiones-tmp102-esp8266](https://media.springernature.com/lw685/springer-static/image/chp%3A10.1007%2F978-1-4842-5070-9_6/MediaObjects/474664_1_En_6_Fig16_HTML.jpg)
Las conexiones como vemos en la iamgen del TMP102 al ESP8266 on la siguintes:
TMP102 ESP8266
- [VCC] ————- [3V3]
- [GND] ————- [GND]
- [ADD0] ———– [GND]
- [SDA] ————- [Pin analógico 4] (El SDA puede ser diferente en algunos dispositivos, por ejemplo, para Arduino Mega, el pin SDA es Pin digital 20)
- [SCL] ———— [Pin analógico 5] (El SCL puede ser diferente en algunos dispositivos, por ejemplo, para Arduino Mega, el pin SCL es Pin digital 21)
Y este esl codigo que subiremos a nuestro ESP8266:
#define CAYENNE_PRINT Serial // Comment this out to disable prints and save space
#include <CayenneTMP102.h>
#include <CayenneEthernet.h> // Change this to use a different communication device. See Communications examples.
// Cayenne authentication token. This should be obtained from the Cayenne Dashboard.
char token[] = "AuthenticationToken";
// Virtual Pin of the TMP102 widget.
#define VIRTUAL_PIN V1
// Address used to read from the TMP102. This is determined by the ADD0 pin on the TMP102.
// Connecting it to ground means the sensor will use 0x48 for the address. See the TMP102 datasheet for more info.
const int tmp102Address = 0x48;
TMP102 tmpSensor(tmp102Address);
void setup()
{
Serial.begin(9600);
Wire.begin();
Cayenne.begin(token);
}
void loop()
{
Cayenne.run();
}
// This function is called when the Cayenne widget requests data for the Virtual Pin.
CAYENNE_OUT(VIRTUAL_PIN)
{
// This command writes the temperature in Celsius to the Virtual Pin.
Cayenne.celsiusWrite(VIRTUAL_PIN, tmpSensor.getCelsius());
// To send the temperature in Fahrenheit or Kelvin use the corresponding code below.
//Cayenne.fahrenheitWrite(VIRTUAL_PIN, tmpSensor.getFahrenheit());
//Cayenne.kelvinWrite(VIRTUAL_PIN, tmpSensor.getKelvin());
}
Estos son los pasos resumidos que haremos en el interfaz de Cayenne:
1. En Cayenne Dashboard, agregue un nuevo widget TMP102.
2. Configure el widget en Visualización de valor.
3. Seleccione Virtual Pins y un número de pin virtual.
4. Establezca VIRTUAL_PIN en el número de pin que seleccionó.
5. Adjunte un TMP102 a su ESP8266.
- Establezca la variable tmp102Address para que coincida con ADD0. ADD0 conectado a GND corresponde a una dirección de 0x48.
- Establezca la variable del token para que coincida con el token de Arduino desde el Tablero.
- Compile y cargue este boceto.
- Una vez que el Arduino se conecta al Tablero, debe actualizar automáticamente el widget TMP102 con datos.