Utilizando un microcontrolador WiFi NodeMCU ESP8266, sensores DHT22 y BMP280, registra la temperatura, presión atmosférica y humedad ambiente, y las publica en twitter de manera automática, a través de un servidor del servicio 'Blynk'.
Mira el resultado al final de esta página.
- Descarga App Blynk Android: https://play.google.com/store/apps/details?id=cc.blynk&hl=es_AR
- Descarga App Blynk iOS: https://apps.apple.com/ar/app/blynk-iot-for-arduino-esp32/id808760481
- Documentación oficial de Blynk: http://docs.blynk.cc/
- 1 NodeMCU ESP8266 (yo utilizo la versión 2, pero puedes utilizar la que tengas).
- 1 Sensor DHT22, que mide temperatura y humedad ambiente.
- 1 Sensor BMP280, que mide temperatura y presión atmosférica.
- El objetivo de utilizar dos sensores diferentes que midan temperatura, es minimizar los errores y las diferencias.
- 1 resistencia de 10k ohms. Si no sabes diferenciarlas, cada resistencia trae un código de colores diferente, puedes buscar en Google.
- 9 cables de tipo jumper macho a macho.
- 1 protoboard plástico de tamaño medio (400 puntos aprox), como mínimo. Yo uso uno grande, de 830 puntos.
-
Blynk: https://github.com/blynkkk/blynk-library/releases
- Descargar la última version, descomprimir, y copiar el contenido de la carpeta 'libraries' dentro de la carpeta del mismo nombre, de Arduino (Generalmente ubicada en 'C:\Archivos de Programa\Arduino').
-
DHT22 by Adafruit: Instalable desde el gestor de librerías del IDE de Arduino.
- En el IDE de Arduino, ir a Herramientas > 'Administrar bibliotecas...', buscar 'DHT22', verificar que sea la distribuida por Adafruit, y darle al boton 'Instalar'.
-
BMP280 by Adafruit: Instalable desde el gestor de librerías del IDE de Arduino.
- En el IDE de Arduino, ir a Herramientas > 'Administrar bibliotecas...', buscar 'BMP280', verificar que sea la distribuida por Adafruit, y darle al boton 'Instalar'.
- Time by Michael Margolis: Está incluida en la librería de Blynk instalada anteriormente.
- Instala las librerias mencionadas en el apartado Librerías utilizadas.
- Abre el archivo WeatherStation.ino con el IDE de Arduino, descargable desde su web oficial.
- Añade las tarjetas ESP8266 al IDE de Arduino, yendo al menú Archivo > Preferencias, y pegando el link https://arduino.esp8266.com/stable/package_esp8266com_index.json donde dice 'Gestor de URLs adicionales de tarjetas'.
- También en el IDE de Arduino, en el menú Herramientas > Placa > Gestor de tarjetas, busca ESP8266, e instala la última versión disponible.
- Ahora en el menú Herramientas > Placa > ESP8266 Boards, deberás elegir la NodeMCU 1.0.
- En el menú Herramientas > Puerto, deberás seleccionar el puerto al cual está conectado el NodeMCU. No te preocupes, si no eliges la correcta, te darás cuenta al intentar subir el codigo, y solo tienes que cambiar la selección de este item.
- Descarga en tu telefono la aplicación de Blynk. Puedes buscarla en la tienda de aplicaciones, o utilizar los links que dejé en Links útiles.
- Crea un proyecto en Blynk.
- Abre la app de Blynk, y registrate.
- Selecciona 'New Project', dale un nombre a tu proyecto, y en 'Choose Device', selecciona 'NodeMCU'.
- A tu cuenta de correo electronico te habra llegado un codigo ('Auth Token'), lo vas a necesitar pronto, asi que no borres ese correo.
- Presiona el boton +, y añade los elementos 'Twitter', 'Notification', y 'Real-time clock'. Para el primero, te pedira los datos de la cuenta de Twitter desde la que quieras publicar.
Una vez cubiertos los Requerimientos previos, hay algunas cosas dentro del código de WeatherStation.ino que deberas personalizar.
char auth[] = "TU TOKEN DE BLYNK"; //Aqui, entre las comillas, deberás pegar el Auth Token que llegó a tu email al crear el proyecto.
char ssid[] = "EL NOMBRE DE TU RED WIFI"; //Aqui, entre las comillas, deberás introducir el nombre de tu red WiFi.
char pass[] = "LA CONTRASEÑA DE TU RED WIFI"; //Aqui, entre las comillas, deberás introducir la contraseña de tu red WiFi.
Comencemos viendo los pines que tiene la placa NodeMCU (Yo utilizo la v2, pero también sirven las demás versiones):
Deberás realizar las conexiones de la siguiente manera:
(Abrir imagen para ver correctamente los textos de los pines)
- Como se ve en la imagen, deberás conectar una resistencia de 10k en el sensor DHT22, entre los pines de 3.3v y el que va al pin D5 del NodeMCU.
- El sensor BMP280 en realidad tiene 2 pines mas (CSB y SDD), pero no los utilizamos para este proyecto.
- Con la conexion USB del NodeMCU deberia ser suficiente para alimentar tu proyecto. Si por alguna razon no alcanza, siempre puedes enviarle electricidad desde otro dispositivo (Como un Arduino UNO), a traves del pin de 5V de Arduino, al pin 'VIN' del NodeMCU y conectando también 'GND' de ambos controladores.
Deberia verse mas o menos, como el mio (puedes utilizar cables mas cortos, te va a quedar mejor presentado):
Una vez hechos los cambios en el codigo y conectados todos los cables a los sensores, solo queda subir el codigo al NodeMCU, desde el IDE de Arduino (Control + U), entrar a la app Blynk y darle Play ► al proyecto.
El resultado será, cada media hora, un tweet como este:
Si lo tienes conectado a la PC por USB irá además dando información sobre su funcionamiento a traves del Monitor Serie del IDE de Arduino (Control + Mayus + M).
Si lo vas a dejar al aire libre, desconectado de una PC, te recomiendo comentar la primer linea de código, y todas las que comiencen con Serial. anteponiendoles dos barras //:
#define BLYNK_PRINT Serial <- Esta es una linea sin comentar.
//#define BLYNK_PRINT Serial <-Esta es una linea comentada.
Serial.begin(9600); <- Esta es una linea sin comentar.
//Serial.begin(9600); <-Esta es una linea comentada.
¿Para qué comentar esto? Para que el controlador NodeMCU no esté intentando enviar información a través del puerto USB, ya que no está conectado a ninguna PC y puede provocar errores en su funcionamiento.
Si lograste hacerlo, ¡FELICITACIONES! Y si tenes algún tipo de problema, consulta o duda, puedes escribirme por Twitter (@bernapastorini), con gusto te voy a dar una mano.