El ESP8266 es un módulo WiFi de bajo costo construido por Espressif Systems. Su popularidad ha ido creciendo entre la comunidad de hardware gracias a sus buenas características y estabilidad, hasta el punto de que se puede programar fácilmente utilizando tu Arduino IDE.
Siguiendo esta guía podrás PUBLICAR y SUBSCRIBIR datos a/desde Ubidots utilizando el ESP8266 como módulo independiente en solo un par de minutos!
Requisitos
Un Arduino UNO, UARTbee o cualquier dispositivo UART a USB.
Arduino IDE. Versión 1.6.6 o superior.
Cables de conexión
Paso a Paso
1. Configuración de hardware
2. Configuración del Arduino IDE
3. Enviando (PUBLICAR) datos a Ubidots
4. Recibiendo (SUBSCRIBIR) datos de Ubidots
5. Resumen
1. Configuración de hardware
Para poder programar el ESP8266 como módulo independiente necesitarás cualquier dispositivo UART a USB como el UARTbee, o puedes programar el módulo a través de cualquier placa Arduino configurando el Arduino RST a GND.
1. Para comenzar, establece la conexión entre el dispositivo utilizado para programar el ESP8266 siguiendo la tabla a continuación. Primero, identifiquemos el pin out del ESP8266 para evitar cualquier problema de hardware futuro.
NOTA IMPORTANTE: Si estás utilizando un Arduino UNO para acceder al ESP8266, necesitarás configurar el Arduino RST a GND. Ten cuidado con el VCC del ESP8266, funciona solo con una alimentación de 3.3V.
Preguntas Frecuentes y Solución de Problemas
Uno de los errores más comunes con el ESP8266 es el espcom_sync_failed:
Si recibes este error cuando el RST no está configurado a GND. Para corregir este error, verifica:
si el cable de conexión está correctamente conectado y utiliza la tabla de Pinout anterior;
confirma que el RST de Arduino está configurado a GND;
confirma que la placa: Módulo Genérico ESP8266 está seleccionada en el Arduino IDE. Para asistencia adicional al seleccionar la placa, consulta el paso 2 en la configuración del Arduino IDE a continuación.
2. Configuración del Arduino IDE
1. Para poder trabajar con la plataforma ESP8266 en el Arduino IDE, necesitarás instalar la placa ESP8266 utilizando el Administrador de Placas preconfigurado de Arduino. Si no estás familiarizado con la adición de una placa en el Arduino IDE, consulta este artículo para obtener orientación adicional.
2. Con la plataforma ESP8266 instalada, selecciona el dispositivo ESP8266 con el que estás trabajando. En este caso, estamos trabajando con un “Módulo Genérico ESP8266”. Para seleccionar tu placa desde el Arduino IDE, selecciona Herramientas > Placa “Módulo Genérico ESP8266”.
3. Descarga e instala el UbidotsMQTTESP8266. Para una explicación detallada de cómo instalar bibliotecas utilizando el Arduino IDE, consulta esta guía.
3. Enviando (PUBLICAR) datos a Ubidots
Con el siguiente código de ejemplo podrás publicar las lecturas tomadas de los pines GPIO del ESP8266.
1. Para publicar tu primer valor en Ubidots, abre el Arduino IDE y pega el código de ejemplo a continuación. Una vez que hayas pegado el código, necesitarás asignar tu único TOKEN de Ubidots, SSID (Nombre de WiFi) y Contraseña de la red disponible.
/**************************************** * Incluir Bibliotecas ****************************************/#include "UbidotsESPMQTT.h"/**************************************** * Definir Constantes ****************************************/#define TOKEN "....." // Tu TOKEN de Ubidots#define WIFINAME "...." //Tu SSID#define WIFIPASS "....." // Tu Contraseña de WifiUbidots client(TOKEN);/**************************************** * Funciones Auxiliares ****************************************/void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Mensaje recibido ["); Serial.print(topic); Serial.print("] "); for (int i=0;i<length;i++) { Serial.print((char)payload[i]); } Serial.println();}/**************************************** * Funciones Principales ****************************************/void setup() { // pon tu código de configuración aquí, para ejecutarse una vez: //client.ubidotsSetBroker("industrial.api.ubidots.com"); // Configura el broker correctamente para la cuenta empresarial client.setDebug(true); // Pasa un valor bool verdadero o falso para activar mensajes de depuración Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); }void loop() { // pon tu código principal aquí, para ejecutarse repetidamente: if(!client.connected()){ client.reconnect(); } float value1 = analogRead(0); //float value2 = analogRead(2) client.add("temperature", value1); //client.add("status", value2); client.ubidotsPublish("my-new-device"); client.loop();}
2. Verifica tu código dentro del Arduino IDE. Para hacer esto, en la esquina superior izquierda de nuestro Arduino IDE verás el icono de "Marca de Verificación"; presiónalo para verificar tu código.
3. Sube el código a tu “Módulo Genérico ESP8266”. Para hacer esto, elige el icono de "flecha derecha" al lado del icono de "marca de verificación".
4. Para verificar la conectividad del dispositivo y los datos enviados, abre el monitor serial seleccionando el icono de "lupa" en la esquina superior derecha del Arduino IDE para ver los registros de conectividad.
NOTA: Si no se ve ninguna respuesta, intenta desconectar el dispositivo UART a USB y luego volver a conectarlo. Asegúrate de que la velocidad de baudios del monitor serial esté configurada a la misma que se especifica en tu código 115200
.
5. Confirma tus datos en Ubidots. Ahora deberías ver los datos publicados en tu cuenta de Ubidots, ubicados en el dispositivo llamado "my-new-device".
NOTA: Para cambiar el ID de nombre del dispositivo que se está actualizando en Ubidots, reemplaza la cadena asignada en la siguiente línea de tu código:
client.ubidotsPublish("my-new-device");
4. Recibiendo (SUBSCRIBIR) datos de Ubidots
Con el siguiente código de ejemplo podrás suscribirte a un valor de Ubidots para comenzar a controlar cualquier activo que desees.
1. Para comenzar a recibir valores de Ubidots, abre el Arduino IDE y pega el código de ejemplo a continuación. Una vez que hayas pegado el código, asegúrate de asignar los siguientes parámetros:
SSID (Nombre de WiFi) & Contraseña de la conexión de red disponible.
Etiqueta del Dispositivo del dispositivo que contiene la variable que deseas OBTENER.
Etiqueta de la Variable de la variable que deseas OBTENER
/**************************************** * Incluir Bibliotecas ****************************************/#include "UbidotsESPMQTT.h"/**************************************** * Definir Constantes ****************************************/#define TOKEN "....." // Tu TOKEN de Ubidots#define WIFINAME "....." //Tu SSID#define WIFIPASS "....." // Tu Contraseña de Wifi#define DEVICE_LABEL "..." // Pon aquí la etiqueta de tu dispositivo Ubidots#define VARIABLE_LABEL "..." // Pon aquí la etiqueta de tu variable Ubidots Ubidots client(TOKEN);/**************************************** * Funciones Auxiliares ****************************************/void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Mensaje recibido ["); Serial.print(topic); Serial.print("] "); for (int i=0;i<length;i++) { Serial.print((char)payload[i]); } Serial.println();}/**************************************** * Funciones Principales ****************************************/void setup() { // pon tu código de configuración aquí, para ejecutarse una vez: client.ubidotsSetBroker("industrial.api.ubidots.com"); // Configura el broker correctamente para la cuenta empresarial client.setDebug(false); // Pasa un valor bool verdadero o falso para activar mensajes de depuración Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); client.ubidotsSubscribe(DEVICE_LABEL, VARIABLE_LABEL); //Inserta las Etiquetas de dataSource y Variable }void loop() { // pon tu código principal aquí, para ejecutarse repetidamente: if(!client.connected()){ client.reconnect(); client.ubidotsSubscribe(DEVICE_LABEL, VARIABLE_LABEL); //Inserta las Etiquetas de dataSource y Variable } client.loop(); }
2. Verifica & Sube el código a la placa siguiendo los mismos pasos proporcionados en el paso de PUBLICAR anterior.
3. Para verificar la conectividad del dispositivo y los datos que se están recibiendo, abre el monitor serial seleccionando el icono de "lupa" en la esquina superior derecha del Arduino IDE para ver los registros de conectividad.
NOTA: Si no se ve ninguna respuesta, intenta desconectar el dispositivo UART a USB y luego volver a conectarlo. Asegúrate de que la velocidad de baudios del monitor serial esté configurada a la misma que se especifica en tu código 115200
.
4. En el monitor serial, podrás ver el último valor recibido en Ubidots de la variable especificada en el firmware.
5. Resumen
Con este simple tutorial puedes PUBLICAR y SUBSCRIBIR datos a/desde Ubidots con la facilidad del Arduino IDE y un ESP8266 como módulo independiente. Si deseas encontrar más ejemplos para manejar valores de contexto o timestamp en tu solicitud, consulta la documentación de Ubidots con el ESP8266 haciendo clic aquí.
¡Ahora es el momento de crear Dashboards de Ubidots para visualizar tus datos y desplegar tu solución IoT! ¡Feliz Hackeo! :)
Otros lectores también han encontrado útil...