Envío de datos a la nube de Azure desde ESP8266 usando DHT11 o DHT22

 DHT11 y  DHT22 son dos modelos de una misma familia de sensores, que permiten realizar la medición simultánea de temperatura y humedad usando ademas un único  hilo para comunicar los datos vía serie, para lo cual  ambos  disponen de un procesador interno que realiza el proceso de medición, proporcionando la medición mediante una señal digital, por lo que resulta muy sencillo obtener la medición desde un microprocesador como Arduino o ESP8266.

Ambos son similares ( DHT11 presenta una carcasa azul  , mientras que el sensor DHT22  es blanco)  compartiendo además los mismos pines  disponiendo de  4 patillas, de las cuales usaremos sólo 3: Vcc, Output y GND.  Como peculiaridad ,la  salida la conectaremos a una entrada digital  , pero necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.

El  DHT11  puede medir temperaturas entre 0 a 50, con una precisión de 2ºC, humedad entre 20 a 80%, con precisión del 5% y con una a frecuencia de muestreo de 1 muestras por segundo (1 Hz)

En clara superioridad  con el dHT11 , el modelo DHT22 tiene unas características mucho más profesionales.
  • Medición de temperatura entre -40 a 125, con una precisión de 0.5ºC
  • Medición de humedad entre 0 a 100%, con precisión del 2-5%.
  • Frecuencia de muestreo de 2 muestras por segundo (2 Hz)

Destacar que este tipo de  sensores de temperatura  ( y, aún más, los sensores de humedad) , son sensores con elevada inercia y tiempos de respuesta elevados. Es decir, al “lentos” para reflejar los cambios en la medición.

 

Conectar el DHT11   o el DHT22  a  un Arduino o ESP82366  es sencillo, simplemente alimentamos desde Arduino al sensor a través de los pines GND y Vcc del mismo. Por otro lado, conectamos la salida Output a una entrada digital de Arduino. Necesitaremos poner una resistencia de 10K entre Vcc y el Pin Output.

El esquema eléctrico queda como la siguiente imagen

Los sensores DHT11 y DHT22 usan su propio sistema de comunicación bidireccional mediante un único hilo , empleando señales temporizadas por lo que en general, lo normal es que empleemos una librería existente para simplificar el proceso.Por ejemplo podemos usar la librería de Adafruit disponible en este enlace.

Una vez  descargada e instalada  la librería  por ejemplo podemos capturar la información de un sensor DHT11  con este código :

#include «DHT.h»
#define DHTTYPE DHT11   // DHT 11
const int DHTPin = 5;     // conexion del pin digital
 
DHT dht(DHTPin, DHTTYPE);
 
void setup() {
   Serial.begin(9600);
   Serial.println(«DHTxx test!»);
 
   dht.begin();
}
 
void loop() {
   //esperar unos 2000ms
   delay(2000);
 
   // Leyendo temperatura  o humedad  toma  sobre unos 250 ms
   float h = dht.readHumidity();
   float t = dht.readTemperature();
 
   if (isnan(h) || isnan(t)) {
      Serial.println(«Fallo al leer el sensor DHT «);
      return;
   }
  
   Serial.print(«Humedad: «);
   Serial.print(h);
   Serial.print(» %\t»);
   Serial.print(«Temperatura: «);
   Serial.print(t);
   Serial.print(» *C «);
}

 

 

Conexión de un DHTXX a un  ESP8266 

Para resultados mas profesionales puede usar un DHT22 ( es el usado en el ejemplo ) , pero  como hemos comentado el DHT11  para fines experimentales  es también aceptable .

Las  simples conexiones  la puede utilizar  una  placa de pruebas, y  cables de puente o directamente con cablecillos  para realizar las conexiones de la siguiente manera:

referencia de conexiones

 

Para los pines  del sensor, usaremos el siguiente cableado:

Start (Sensor) Fin (Junta) Color del cable
VDD (Pin 27F) 3V (Pin 8A) cable rojo
DATOS (Pin 28F) GPIO 2 (Pin 9A) Cable blanco
GND (Pin 30F) GND (Pin 7J) Cable negro

 

  • Esta modelo de placa , como vemos,   no necesita  resistencia entra la salida binaria y vcc
  • Para obtener más información de esta placa , consulte: configuración del sensor DHT22 y especificación Sparkfun ESP8266 Thing Dev

 

Por  ultimo utilice un cable USB Micro USB a Tipo A para conectar Sparkfun ESP8266 Thing Dev a su ordenador 

Crear un centro de IoT

  1. Inicie sesión en el portal de Azure .
  2. Seleccione Crear un recurso > Internet de las cosas > IoT Hub .Captura de pantalla de la navegación del portal Azure al centro de IoT
  3. En el panel de hub de IoT , ingrese la siguiente información para su hub de IoT:
    • Nombre : crea un nombre para tu hub de IoT. Si el nombre que ingresa es válido, aparece una marca de verificación verde.

     

    • Nivel de precios y escala : para este tutorial, seleccione el nivel F1 – Gratuito .
    • Grupo de recursos : cree un grupo de recursos para alojar el concentrador de IoT o use uno existente.
    • Ubicación : Seleccione la ubicación más cercana para usted.
    • Fijar al tablero : marque esta opción para acceder fácilmente a su hub de IoT desde el tablero.Ventana del concentrador IoT
  4. Haga clic en Crear . Su hub de IoT puede tardar unos minutos en crearse. Puede controlar el progreso en el panel de notificaciones .

Ahora que ha creado un concentrador de IoT, ubique la información importante que usa para conectar dispositivos y aplicaciones a su hub de IoT.

  1. Después de crear su concentrador de IoT, haga clic en él en el tablero. Tome nota del nombre de host y luego haga clic en Directivas de acceso compartido .Obtenga el nombre de host de su centro de IoT
  2. En el panel Políticas de acceso compartido , haga clic en la política iothubowner , y luego copie y anote la cadena de conexión de su centro IoT.

Obtenga su cadena de conexión del hub de IoT

Registre un dispositivo en el hub de IoT para su dispositivo

  1. En el portal de Azure , abra su concentrador de IoT.
  2. Haga clic en Explorador de dispositivos  .
  3. En el panel Explorador de dispositivos, haga clic en Agregar para agregar un dispositivo a su centro de IdC. 
  4. Luego ingrese la ID del nuevo dispositivo en:ID del dispositivo ( Debe saber que los  ID de dispositivo son sensibles a mayúsculas y minúsculas)
  5. Tipo de autenticación : Seleccione la clave simétrica 
  6. Generar claves automáticamente : seleccione esta casilla de verificación.
  7. Conecte el dispositivo al Hub de IoT : haga clic en Habilitar .Agregue un dispositivo en el Explorador de dispositivos de su centro de IoT
  8. Haga clic en Guardar .
  9. Después de que se crea el dispositivo, abra el dispositivo en el panel Explorador de dispositivos .
  10. Tome nota de la clave principal de la cadena de conexión.Obtener la cadena de conexión del dispositivo

 

Reúna los datos del sensor y envíelos a su centro de IoT

En el ejemplo  se  implementa y ejecuta una aplicación de muestra en Sparkfun ESP8266 Thing Dev. La aplicación parpadea el LED en Sparkfun ESP8266 Thing Dev y envía los datos de temperatura y humedad recopilados del sensor DHT22 a su hub de IoT.

Obtenga la aplicación de muestra de GitHub

La aplicación de ejemplo está alojada en GitHub. Clone el repositorio de muestras que contiene la aplicación de muestra de GitHub. Para clonar el repositorio de muestras, siga estos pasos:

  1. Descargue e instale el programa Git ,por ejemplo desde https://gitforwindows.org/git
  2. Abra un símbolo del sistema o una ventana de terminal.
  3. Vaya a una carpeta donde desea que se almacene la aplicación de muestra.
  4. Ejecute el  Git
  5. Ahora desde el interfaz del Git en modo comando ejecute
    git clone https://github.com/Azure-Samples/iot-hub-SparkFun-ThingDev-client-app.gitclonado.PNG

 

Instale ahora el paquete para  el ESP8266 en Arduino IDE:

  1. Abra la carpeta donde se almacena la aplicación de muestra que descargo desde el comando git clone.
  2. Abra el archivo app.ino en la carpeta de la aplicación en Arduino IDE.
  3. En el IDE de Arduino, haga clic en Archivo > Preferencias .
  4. En el cuadro de diálogo Preferencias , haga clic en el icono que se encuentra junto al cuadro de texto Direcciones URL del administrador de tarjetas adicionales .
  5. En la ventana emergente, ingrese la siguiente URL http://arduino.esp8266.com/stable/package_esp8266com_index.json                                    señalar a un paquete url en arduino ide
  6. Haga  luego haga clic en Aceptar .
  7. En el cuadro de diálogo Preferencias , haga clic en Aceptar .
  8. Haga clic en Herramientas > Placa > Administrador de placas , y luego busque esp8266. Se debe instalar ESP8266 con una versión de 2.2.0 o posterior.En caso del ESP12E DEVKIT V2, seleccione NodeMCU 1.0(ESP-12E Module)

Instalación de  las bibliotecas necesarias

  1. En el IDE de Arduino, haga clic en Programa > Incluir libreria> Gestionar librerias .
  2. Busque los siguientes nombres de biblioteca una por una:
    • AzureIoTHub
    • AzureIoTUtility
    • AzureIoTProtocol_MQTT
    • ArduinoJson
    • DHT sensor library 
    • Adafruit Unified Sensor
  3. Para cada una de las bibliotecas que encuentre, haga clic en Instalar .

Implementar la aplicación de muestra  para ESP8266 

  1. En el IDE de Arduino, haga clic en Herramienta > Puerto , y luego haga clic en el puerto serie que le presente el interfaz de Arduino  para el  ESP8266(por ejemplo «COM3» )
  2. Haga clic en Programa > Subir para crear e implementar la aplicación de muestra en  ESP8266 .

Ingrese sus credenciales

Después de que la carga se complete con éxito, siga los pasos para ingresar sus credenciales:

  1. En el IDE de Arduino, haga clic en Herramientas > Monitor en serie .
  2. En la ventana del monitor de serie, observe las dos listas desplegables en la esquina inferior derecha.
  3. Seleccione Sin final de línea para la lista desplegable de la izquierda.
  4. Seleccione 115200 baudios para la lista desplegable de la derecha.
  5. En el cuadro de entrada ubicado en la parte superior de la ventana del monitor serie, ingrese la siguiente información si se le solicita que los proporcione y luego haga clic en Enviar .
    • Wi-Fi SSID
    • Contraseña de wifi
    • Cadena de conexión del dispositivo

 Nota:La información de credenciales se almacena en la EEPROM del ESP8266 Si hace clic en el botón de reinicio en la placa ESP8266 , la aplicación de muestra le pregunta si desea borrar la información. Ingrese Y para borrar la información y se le pedirá que proporcione la información nuevamente.

Verifique que la aplicación de muestra se esté ejecutando correctamente

Si ve la siguiente salida de la ventana del monitor serie y el LED parpadeante en  la placa ESP8266  la aplicación de muestra se está ejecutando correctamente.

com33.png

 

 

Nota:Si está utilizando otras placas ESP8266, puede seguir estos pasos para conectarlo a su hub de IoT. Según la placa ESP8266 que esté utilizando, es posible que necesite reconfigurar el LED_PIN . Por ejemplo, si está usando ESP8266 de AI-Thinker, puede cambiarlo de 0 a 2 .

 

 

 

Fuente  https://docs.microsoft.com/en-gb/azure/iot-hub/iot-hub-sparkfun-esp8266-thing-dev-get-started