Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conecta tu ESP32 a Ubidots mediante HTTP, TCP o UDP
Conecta tu ESP32 a Ubidots mediante HTTP, TCP o UDP

Aprende cómo conectar el ESP32 a la Plataforma de Habilitación de Aplicaciones de Ubidots.

David Sepúlveda avatar
Escrito por David Sepúlveda
Actualizado hace más de una semana

El ESP32, sucesor del ESP8266, es un microcontrolador SoC (Sistema en un Chip) de bajo costo (menos de $15), de bajo consumo de energía, con Wi-Fi integrado y Bluetooth de doble modo. La serie ESP32 emplea un microprocesador Tensilica Xtensa LX6 en variaciones de núcleo dual y único. El ESP32 fue creado y desarrollado por Espressif Systems, una empresa china con sede en Shanghái con un historial probado de producción y distribución de microcontroladores de calidad.

Para aprender más sobre el ESP32, consulta la documentación del dispositivo aquí.

¡Siguiendo esta guía, podrás hacer POST y GET de datos hacia/desde Ubidots utilizando el ESP32 en solo un par de minutos!

Requisitos

1. Configurar Arduino IDE

Los siguientes pasos asumen que ya tienes instalado el Arduino IDE. Si aún no lo has hecho, por favor visita la fuente correspondiente:

  1. Inicia Arduino

  2. Ve a Archivo > Preferencias y copia la siguiente URL en el campo de URL adicional de gestores de placas, como se muestra en la imagen a continuación:

    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

  3. Haz clic en el icono del Gestor de Placas y busca "esp32". Asegúrate de instalar la versión esp32 por Espressif Systems versión 3.0.0 o superior:

  4. Finalmente, necesitarás seleccionar tu placa desde Herramientas > Placa y seleccionar el Puerto COM correcto:

  5. Lanza un navegador web y descarga la biblioteca Ubidots en formato zip. Guárdala en una ubicación conocida:

  6. En el IDE de Arduino, ve a Sketch > Incluir Librería > Añadir .ZIP Library... y selecciona el archivo .zip descargado en el paso anterior:

¡Eso es todo para la configuración! ¡Puedes proceder ahora a codificar!

2. POST valores a Ubidots

El siguiente código de ejemplo hará POST a Ubidots de 3 valores aleatorios a 3 variables separadas desde el ESP32, a saber:

  • Variable_Name_1

  • Variable_Name_2

  • Variable_Name_3

Copia y pega el siguiente fragmento de código en el editor de código de tu IDE, pero primero asegúrate de cambiar las siguientes variables:

  • UBIDOTS_TOKEN: Configura esta variable con un token de Ubidots válido

  • WIFI_SSID: Configura esto con el SSID de tu WiFi

  • WIFI_PASS: Configura esto con la contraseña de tu WiFi.

  • UBI_HTTP (Opcional): Puedes cambiar este parámetro en el constructor de la clase Ubidots para cambiar el protocolo usado. Los valores posibles son:

    • UBI_HTTP

    • UBI_TCP

    • UBI_UDP

// This example sends data to multiple variables to
// Ubidots through HTTP protocol.

/****************************************
* Include Libraries
****************************************/

#include "Ubidots.h"

/****************************************
* Define Instances and Constants
****************************************/

const char* UBIDOTS_TOKEN = "..."; // Put here your Ubidots TOKEN
const char* WIFI_SSID = "..."; // Put here your Wi-Fi SSID
const char* WIFI_PASS = "..."; // Put here your Wi-Fi password

// Create a pointer to a instance of the Ubidots class to use it globally
Ubidots* ubidots{nullptr};

/****************************************
* Auxiliar Functions
****************************************/

// Put here your auxiliar functions

/****************************************
* Main Functions
****************************************/
void setup() {
Serial.begin(115200);
Ubidots::wifiConnect(WIFI_SSID, WIFI_PASS);
ubidots = new Ubidots(UBIDOTS_TOKEN, UBI_HTTP);
//ubidots->setDebug(true); // Uncomment this line for printing debug messages
}


void loop() {
float value1 = random(0, 9) * 10;
float value2 = random(0, 9) * 100;
float value3 = random(0, 9) * 1000;
ubidots->add("Variable_Name_One", value1); // Change for your variable name
ubidots->add("Variable_Name_Two", value2);
ubidots->add("Variable_Name_Three", value3);

bool bufferSent = false;
bufferSent = ubidots->send(); // Will send data to a device label that matches the device Id

if (bufferSent) {
// Do something if values were sent properly
Serial.println("Values sent by the device");
}

delay(5000);
}

Después de esto, solo tienes que flashear el firmware al ESP32. Siguiendo los pasos anteriores, deberías ver un nuevo Dispositivo en tu cuenta de Ubidots nombrado con la dirección MAC de tu ESP32.

3. GET valores desde Ubidots

El siguiente código de ejemplo hará un GET del último valor de una variable de un dispositivo seleccionado desde Ubidots. Copia y pégalo en el editor de código de tu IDE, pero primero asegúrate de cambiar las siguientes variables:

  • UBIDOTS_TOKEN: Configura esta variable con un token de Ubidots válido

  • WIFI_SSID: Configura esto con el SSID de tu WiFi

  • WIFI_PASS: Configura esto con la contraseña de tu WiFi.

  • DEVICE_LABEL_TO_RETRIEVE_VALUES_FROM: Esta es la etiqueta del dispositivo que contiene la variable de la cual deseas obtener su valor.

  • VARIABLE_LABEL_TO_RETRIEVE_VALUES_FROM: Esta es la etiqueta de la variable de la cual deseas obtener su valor.

  • UBI_HTTP (Opcional): Puedes cambiar este parámetro en el constructor de la clase Ubidots para cambiar el protocolo usado. Los valores posibles son:

    • UBI_HTTP

    • UBI_TCP

    • UBI_UDP

// This example retrieves last value of a variable from the Ubidots API
// using HTTP protocol.

/****************************************
* Include Libraries
****************************************/

#include "Ubidots.h"

/****************************************
* Define Constants
****************************************/

const char* UBIDOTS_TOKEN = "..."; // Put here your Ubidots TOKEN
const char* WIFI_SSID = "..."; // Put here your Wi-Fi SSID
const char* WIFI_PASS = "..."; // Put here your Wi-Fi password
const char* DEVICE_LABEL_TO_RETRIEVE_VALUES_FROM = "weather-station"; // Replace with your device label
const char* VARIABLE_LABEL_TO_RETRIEVE_VALUES_FROM = "humidity"; // Replace with your variable label

// Create a pointer to a instance of the Ubidots class to use it globally
Ubidots* ubidots{nullptr};

/****************************************
* Auxiliar Functions
****************************************/

// Put here your auxiliar functions

/****************************************
* Main Functions
****************************************/

void setup() {
Serial.begin(115200);
Ubidots::wifiConnect(WIFI_SSID, WIFI_PASS);
ubidots = new Ubidots(UBIDOTS_TOKEN, UBI_HTTP);
//ubidots->setDebug(true); //Uncomment this line for printing debug messages
}

void loop() {
/* Obtain last value from a variable as float using HTTP */
float value = ubidots->get(DEVICE_LABEL_TO_RETRIEVE_VALUES_FROM, VARIABLE_LABEL_TO_RETRIEVE_VALUES_FROM);

// Evaluates the results obtained
if (value != ERROR_VALUE) {
Serial.print("Value:");
Serial.println(value);
}
delay(5000);
}

Después de esto, solo tienes que flashear el firmware al ESP32.

Una vez que hayas flasheado el firmware, lanza el Terminal Serial en tu IDE y podrás ver el valor obtenido siendo impreso.

4. Información adicional

Para ejemplos adicionales que muestran cómo incluir una marca de tiempo o contexto a tus datos, consulta la carpeta de Ejemplos de la biblioteca de ESP32 de Ubidots.

¿Ha quedado contestada tu pregunta?