INTRODUCCIÓN
En el mundo del Internet de las Cosas, hay que tener en cuenta un punto muy importante, como lo es la elección de la plataforma a la cual se enviarán los datos medidos. Existen muchísimas opciones en la web, y en esta oportunidad veremos la conexión a Cayenne MyDevices, una plataforma SaaS para IoT definida para el envío y recepción de datos.
Cayenne MyDevices es una plataforma de prototipado de dispositivos del IoT. Una de la mayores ventajas que tiene es que es una solución visual, arrastrar y soltar es decir, nos permite configurar el sistema sin programar. Si desea conocer más sobre la plataforma mencionada, puede visitar el siguiente sitio web: https://programarfacil.com/blog/arduino-blog/cayenne-mydevices-arduino-sensores-iot/
En esta oportunidad, se realizará un circuito sencillo, y con las credenciales necesarias, podremos hacer una conexión hacia Cayenne MyDevices para enviar los datos de nuestro sensor DHT11, cuya medición es de temperatura y humedad.
MOMENTO DE REALIZAR EL CIRCUITO
Para la realización de este proyecto, vamos a necesitar los siguientes componentes:
- ESP32 DevKit V1
- Sensor de Temperatura y Humedad DHT11
- Cable USB-Micro USB
- Cables Jumper Male-Male
- Protoboard
Ahora, procedemos a revisar el diagrama de PinOut del ESP32 DevKit v1 y del sensor DHT11 para realizar las conexiones.
- ESP32 DevKit V1
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2021/10/SMELPRO-ESP32-PINOUT.jpg?resize=705%2C591&ssl=1)
- Sensor DHT11 Temperatura y Humedad Relativa
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2021/10/DHT11-PINOUT-1024x858.jpg?resize=512%2C429&ssl=1)
Entendido ya que pines poseen ambos componentes, realizamos el siguiente circuito.
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2021/10/ESP32-UBIDOTSDHT11_bb-1024x573.png?resize=768%2C430&ssl=1)
Procedemos a realizar las siguientes conexiones entre los dispositivos:
ESP32 DEVKIT V1 | SENSOR DHT11 |
PIN 3.3V | VCC |
PIN GND | GND |
PIN DIGITAL 23 | DATA |
ANTES DE PROGRAMAR…
Tenemos que tener instalado la librería para usar el sensor DHT11, y la librería para hacer la conexión hacia la plataforma Cayenne.
Instalamos primero, la librería del sensor DHT11.
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2021/10/LIBRERIA-DHT11-SMELPRO-1.jpg?resize=785%2C440&ssl=1)
Ahora, procedemos a instalar la librería de CayenneMQTT a usar con el ESP32 DevKit, para realizar el envío de datos.
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/cayennelibCOPIA-1024x574.png?resize=768%2C431&ssl=1)
Ahora, pasamos a crear una cuenta en la plataforma Cayenne MyDevices, utilizando el siguiente enlace: https://developers.mydevices.com/cayenne/features/
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/cay1-1024x496.png?resize=1024%2C496&ssl=1)
Una vez creada la cuenta, procedemos a agregar un nuevo dispositivo. Seleccionamos “All Devices”
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/allldcopia-1024x495.png?resize=1024%2C495&ssl=1)
Seleccionamos el dispositivo denominado “Generic ESP8266”
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/espdevcopia-1024x490.png?resize=1024%2C490&ssl=1)
Nos aparecerá la siguiente ventana. Como tal, procedemos a copiar las 3 credenciales que se nos entregan: MQTT USERNAME, MQTT PASSWORD, y CLIENT ID. Estos los usaremos en nuestro código. Si se requiere, se puede además poner un nombre al dispositivo.
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/keysdevcopia-1024x485.png?resize=1024%2C485&ssl=1)
Una vez que se cargue el código, la interfaz cambiará de la última ventana a un Dashboard.
REALIZAMOS NUESTRO CÓDIGO
Para realizar la programación del microcontrolador, usaremos el Arduino IDE, por la facilidad y lo sencillo que es programar con dicho programa.
El código a cargar en ESP32 DevKit es el siguiente:
/*
* El ejemplo de esta semana es una conexión hacia la plataforma Cayenne para proyectos
* de Internet de las Cosas (IoT)
* Realizado por: Sebastian Carranza - Equipo TodoMaker
* Propiedad y Derechos: Equipo TodoMaker
* Para esta semana, necesitamos lo siguiente:
* ESP32 Dev Kit
* Sensor DHT11
* Cables Jumper Male - Female
* Cable USB a MicroUSB
* Una red WiFi existente en nuestro hogar, lugar de trabajo, etc.
*
* No habrá una conexión física con algún componente extra.
*/
/*Incluimos primero las librerías*/
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP32.h>
#include "DHT.h"
/*Definimos que el Pin de Datos del sensor estará conectado al pin 23 del ESP32 DevKit*/
#define DHTPIN 23
/*Definimos que el tipo de sensor que estamos utilizando es un DHT11*/
#define DHTTYPE DHT11 // DHT 11
/*Se actualizan algunos parámetros del DHT11 con los puntos definidos anteriormente*/
DHT dht(DHTPIN, DHTTYPE);
/*Definimos el nombre y contraseña de la Red WiFi a utilizar*/
char ssid[] = "SSID_WIFI";
char wifiPassword[] = "PASSWORD_WIFI";
/*Definimos 3 variables char, donde están puestas las claves de conexión a la plataforma*/
char username[] = "USERNAME_KEY";
char password[] = "PASSWORD_KEY";
char clientID[] = "CLIENT_KEY";
/*Iniciamos la función Setup()*/
void setup() {
/*Iniciamos nuestro terminal Serial*/
Serial.begin(115200);
/*Iniciamos la conexión a la plataforma, usando las credenciales necesarias; además, inciamos el sensor DHT*/
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
dht.begin();
}
/*Iniciamos la función Loop()*/
void loop() {
/*Iniciamos la función Loop de la conexión a la plataforma*/
Cayenne.loop();
/*Hacemos la medición de la Temperatura y Humedad del sensor*/
float h = dht.readHumidity(); // Lectura de humedad
float t = dht.readTemperature(); // Lectura de temperatura
/*Definimos una condicional que, si no se detecta el sensor, se procede a imprimir una frase relacionada al fallo del sensor*/
if (isnan(h) || isnan(t)) {
Serial.println(F("Fallo la lectura del sensor!"));
return;
}
/*Imprimimos en el terminal Serial los valores obtenidos del sensor*/
Serial.print(F("Humedad: "));
Serial.print(h);
Serial.print(F("% Temperatura: "));
Serial.print(t);
Serial.println(F("°C "));
/*Realizamos el envío de Temperatura y Humedad del sensor a la plataforma, utilizando los siguientes comandos*/
Cayenne.virtualWrite(0, t);
Cayenne.virtualWrite(1, h);
}
/*Se incluyen funciones en el ejemplo de la librería, pero no serán usadas en este ejercicio*/
CAYENNE_OUT_DEFAULT(){}
CAYENNE_IN_DEFAULT(){}
La explicación del código se muestra a continuación:
- Como primer paso (y muy importante, por cierto), debemos llamar a las librerías WiFi.h, CayenneMQTTESP32.h y DHT.h, que fueron instaladas en los incisos anteriores.
/*Incluimos primero las librerías*/
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP32.h>
#include "DHT.h"
- Ahora definimos que el pin de Datos del sensor estará conectado al pin digital 23 del ESP32 DevKit V1, y que además, estamos usando el sensor DHT11.
/*Definimos que el Pin de Datos del sensor estará conectado al pin 2 del Arduino UNO*/
#define DHTPIN 23
/*Definimos que el tipo de sensor que estamos utilizando es un DHT11*/
#define DHTTYPE DHT11 // DHT 11
/*Se actualizan algunos parámetros del DHT11 con los puntos definidos anteriormente*/
DHT dht(DHTPIN, DHTTYPE);
/*Definimos el nombre y contraseña de la Red WiFi a utilizar*/
char ssid[] = "SSID_WIFI";
char wifiPassword[] = "PASSWORD_WIFI";
/*Definimos 3 variables char, donde están puestas las claves de conexión a la plataforma*/
char username[] = "USERNAME_KEY";
char password[] = "PASSWORD_KEY";
char clientID[] = "CLIENT_KEY";
- Iniciamos la función Setup() y nuestro terminal Serial a 115200. Además, iniciamos la conexión a la plataforma utilizando las credenciales definidas líneas arriba. Iniciamos también el encendido del sensor DHT.
/*Iniciamos la función Setup()*/
void setup() {
/*Iniciamos nuestro terminal Serial*/
Serial.begin(115200);
/*Iniciamos la conexión a la plataforma, usando las credenciales necesarias; además, inciamos el sensor DHT*/
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
dht.begin();
}
- En la función Loop(), iniciamos el bucle definido por la librería Cayenne, para la conexión a la plataforma.
/*Iniciamos la función Loop()*/
void loop() {
/*Iniciamos la función Loop de la conexión a la plataforma*/
Cayenne.loop();
- Como tal, procedemos a hacer la lectura de los valores de Temperatura y Humedad del sensor.
/*Hacemos la medición de la Temperatura y Humedad del sensor*/
float h = dht.readHumidity(); // Lectura de humedad
float t = dht.readTemperature(); // Lectura de temperatura
- Se define una condicional donde, si es que no se detecta el sensor, se procede a avisar al usuario mediante el uso de una frase impresa en el terminal Serial.
/*Definimos una condicional que, si no se detecta el sensor, se procede a imprimir una frase relacionada al fallo del sensor*/
if (isnan(h) || isnan(t)) {
Serial.println(F("Fallo la lectura del sensor!"));
return;
}
- Una vez realizado la medición de los valores del sensor, pasamos a imprimirlos en el terminal Serial.
/*Imprimimos en el terminal Serial los valores obtennidos del sensor*/
Serial.print(F("Humedad: "));
Serial.print(h);
Serial.print(F("% Temperatura: "));
Serial.print(t);
Serial.println(F("°C "));
- Como tal, procedemos a enviar los valores de Temperatura y Humedad del sensor, a los campos 0 y 1 de la plataforma. Es aquí donde finaliza el código y se reinicia el bucle.
/*Realizamos el envío de Temperatura y Humedad del sensor a la plataforma, utilizando los siguientes comandos*/
Cayenne.virtualWrite(0, t);
Cayenne.virtualWrite(1, h);
}
- Como este ejercicio se basó en el uso de un ejemplo de la la librería, se incluyen funciones adicionales pero por motivos del ejercicio, no serán utilizados.
/*Se incluyen funciones en el ejemplo de la librería, pero no serán usadas en este ejercicio*/
CAYENNE_OUT_DEFAULT(){}
CAYENNE_IN_DEFAULT(){}
HORA DE PROBAR EL CIRCUITO
Se muestra a continuación imágenes del código en el IDE de Arduino, como del circuito realizado.
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/CODIGOS-1024x531.png?resize=1024%2C531&ssl=1)
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/ESP32COPPIA2-1-1024x858.png?resize=768%2C644&ssl=1)
HORA DE REALIZAR EL PROYECTO
Una vez hecho el circuito y subido nuestro código, obtendremos los siguientes resultados.
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/serial-2.png?resize=691%2C510&ssl=1)
Se nos redirigirá a la siguiente ventana en la plataforma, en la cual pasaremos a agregar al Dashboard, dando clic a la opción “Add to Dashboard”
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/adddashcopia-1024x485.png?resize=1024%2C485&ssl=1)
Una vez agregados ambos al dashboard, podemos cambiar el nombre y el ícono a los canales de la interfaz. Damos clic a “Settings” y procedemos a hacer los cambios.
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/EDICIONCOPIA-1024x498.png?resize=1024%2C498&ssl=1)
Una vez hecho los cambios y ajustes, el Dashboard se vería de la siguiente manera:
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/01/dashb-1024x485.png?resize=1024%2C485&ssl=1)
CONCLUSIONES
Una vez finalizado el ejercicio y con el envío de datos realizándose de forma continua a la plataforma, podemos llegar a la conclusión de que el envío de datos es un ejercicio bastante interesante y práctico, por lo que a manera de que vayamos realizando más ejercicios y el uso constante de plataformas, el panorama para proyectos y ejercicios se ampliará ,obtendremos experiencia en la elección y uso de la plataforma al momento de desarrollar un MVP, un ejercicio, etc.
![](https://i0.wp.com/todomaker.com/wp-content/uploads/2022/09/introduccion-al-esp32-portada-1024x576.jpg?resize=1024%2C576&ssl=1)
Te invitamos a tomar el curso de Introducción al ESP32: Introducción al ESP32 | TodoMaker’s School