ENVÍO DE DATOS A CAYENNE MYDEVICES USANDO ESP32

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
  • Sensor DHT11 Temperatura y Humedad Relativa

Entendido ya que pines poseen ambos componentes, realizamos el siguiente circuito.

Procedemos a realizar las siguientes conexiones entre los dispositivos:

ESP32 DEVKIT V1SENSOR DHT11
PIN 3.3VVCC
PIN GNDGND
PIN DIGITAL 23DATA

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.

Ahora, procedemos a instalar la librería de CayenneMQTT a usar con el ESP32 DevKit, para realizar el envío de datos.

Ahora, pasamos a crear una cuenta en la plataforma Cayenne MyDevices, utilizando el siguiente enlace: https://developers.mydevices.com/cayenne/features/

Una vez creada la cuenta, procedemos a agregar un nuevo dispositivo. Seleccionamos “All Devices”

Seleccionamos el dispositivo denominado “Generic ESP8266”

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.

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 como constantes char nuestras credenciales de la red WiFi a la cual se conectará la tarjeta ESP32 DevKit V1.
  • /*Definimos el nombre y contraseña de la Red WiFi a utilizar*/
    char ssid[] = "SSID_WIFI";
    char wifiPassword[] = "PASSWORD_WIFI";

  • Definimos como constantes char nuestras credenciales de la plataforma Cayenne MyDevices. Dichas credenciales las obtuvimos en pasos anteriores.
  • /*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.

    HORA DE REALIZAR EL PROYECTO

    Una vez hecho el circuito y subido nuestro código, obtendremos los siguientes resultados.

    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”

    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.

    Una vez hecho los cambios y ajustes, el Dashboard se vería de la siguiente manera:

    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.

    Te invitamos a tomar el curso de Introducción al ESP32: Introducción al ESP32 | TodoMaker’s School

    Previous Post
    Next Post