Cómo conectar nuestros proyectos a internet usando sensor TempHum DHT11 ARDUINO IDE ADAFRUIT IO y el ESP8266 + WIFI


Adafruit IO es una plataforma en la nube que permite interactuar desde un panel virtual con las tarjetas de desarrollo a través de la conexión a internet. 
Este sistema permite el intercambio de datos a través de TCP/IP usando el protocolo MQTT, con una integración muy simple gracias a las librerías y la documentación proporcionada por Adafruit.

Esta grandiosa herramienta es muy simple de implementar en placas muy baratas basadas en los famosos microcontroladores ESP8266 y ESP32 entre otras.

La seguridad de este servicio está garantizada y es recomendable usar una red Wifi segura para evitar ataques a nuestro dispositivo. El protocolo MQTT es muy liviano y el tráfico de datos en un proyecto de este tipo es muy pequeño y económico si usas un modem Wifi inalámbrico conectado a 3G o 4G. 

Reto:
Vamos a medir temperatura y la humedad relativa del ambiente con el módulo sensor DHT11 cada 5 segundos. Los datos obtenidos los enviamos por el puerto serial hacia el PC y hacia el servidor de Adafruit a través del Wifi de nuestra casa. Accederemos a las lecturas desde internet en un panel de instrumentación muy amigable usando un servicio gratuito y seguro.

Materiales:
Un punto de acceso Wifi
NodeMCU o cualquier otra placa programable basada en ESP8266 como la Wemos D1 mini o el módulo ESP01
Sensor DHT11 o módulo. Revisar las conexiones marcadas en la placa
Cables para puentes
Cable USB
PC portátil o de escritorio (S.O: Windows, Linux, Mac)
Tener instalado Arduino IDE
Instalar soporte para ESP8266 al Arduino IDE
Banco de poder o fuente de 5v (Usaremos el cable USB para alimentar            la placa, así es más seguro si eres principiante)

Servicio en la nube

Debes crear una cuenta en io.adafruit.com totalmente gratis, solo necesitas un correo y llenar los campos, es muy fácil con el correo.

Sensor DHT11

Es un sensor de humedad relativa y temperatura ambiente con una precisión de 1 °C para temperatura y 1% para humedad, se consigue a bajo precio en el mercado. 

La salida suministrada es de tipo digital utilizando solamente 1 pin de datos y tiene su propio protocolo de comunicación. Para este proyecto vamos a usar una librería para facilitar la lectura de los datos ambientales.

Conectando el hardware

El circuito es muy simple solo hay que agregar una resistencia de pull-up en caso de usar solo el sensor. 



Hay que tener en cuenta que existen muchos módulos y sus conexiones pueden tener un orden diferente, por lo general viene marcado en la placa.


Prepara Arduino IDE

Debes instalar el soporte para ESP8266, con esto vas a poder programar  casi cualquier tarjeta basada en este microcontrolador aquí el tutorial 

Instalarla las librerías con sus dependencias, eso si todo disponible desde el menú Herramientas – Administrar bibliotecas. Cuando abras el gestor de bibliotecas en el recuadro de búsqueda verificas que esté instalada “DHT” si no le das clic en instalar, buscas “adafruit io” e instalas.
Este es el sencillo esquema en caso de que uses cualquier versión de modulo o solo el sensor DHT11

El programa 

En el video les dejo la explicación de cómo funciona, es muy simple y está basado en el ejemplo más básico  de la librería adafruit io.

Puedes descargar el proyecto en este link

Aquí les dejo el código .ino:
#include "DHT.h"

/************************** Config. comunicacion ***********************************/

#include "config.h"

/************************ Example Starts Here *******************************/

#define DHTPIN D1
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);

AdafruitIO_Feed *temperatura = io.feed("temperatura");
AdafruitIO_Feed *humedad = io.feed("humedad");

void setup() {
  
  Serial.begin(115200);
  while(! Serial);
  Serial.print("Conectando a Adafruit IO");
  io.connect();
  while(io.status() < AIO_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.println(io.statusText());
  
  dht.begin();
}

void loop() {
  delay(5000);
  io.run();
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  Serial.print("temperatura: ");
  Serial.print(t);
  Serial.print(" humedad: ");
  Serial.println(h);
  temperatura->save(t);
  humedad->save(h); 
 
}

Aquí les dejo el código config.h que va por separado y ahí se deben escribir las credenciales:
/************************ Adafruit IO Config *******************************/

#define IO_USERNAME "usuario"
#define IO_KEY "llave"

/******************************* WIFI **************************************/

#define WIFI_SSID "tu-red-wifi"
#define WIFI_PASS "clave"

#include "AdafruitIO_WiFi.h"

AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);


Espero que sea de ayuda déjenme sus comentarios.

Este proyecto fue patrocinado por NextPCB. Aprovechemos estos descuentos para llevar nuestros proyectos a otro nivel: 

Regístrate y obtén un cupón de $5 dólares 

Fabricación confiable de placas de circuito multicapa:

10 placas de circuito impreso de 4 capas por solo $12 dolares:

20% de descuento en pedidos de PCB y 15 % en SMT:  


Publicar un comentario

1 Comentarios

  1. Amigo se ponen en el config.h para que quede más ordenado el código, si quieres puedes pasar lo del config.h al inicio del programa principal.

    ResponderEliminar