NodeMCU en español
NodeMCU - Juan Antonio Villalpando
-- Tutorial de NodeMCU en español --
Volver al índice del tutorial NodeMCU
____________________________
90.- Nodemcu envía humedad y temperatura a Firebase por WiFi. En una página web se ve y actualiza en tiempo real.
- Mediante el sensor de humedad y temperatura DHT11 vamos a obtener esos datos, los presentamos en una LCD y los enviamos por WiFi a nuestra cuenta de Firebase.
- Firebase es una base de datos de Google en donde podemos subir datos y verlos en tiempo real en una página web sin necesidad de refrescarla, podemos ver la actualización de ese dato en esa página sin necesidad de refrescar la página.
IMPORTANTE: para seguir estos ejemplos es conveniente haber seguido anteriormente mis tutoriales de Firebase, se encuentran en una sección de App Inventor. |
- Aquí he puesto las librerías que he utilizado en estos tutoriales: Librerias.zip
___________________________________________________
1.- Conexiones.
- Los terminales D1 y D2 los necesita la pantalla LCD para funcionar con el bus I2C.
- El sensor DHT11 lo conectamos al terminal D5 del NodeMCU que es el GPIO14 del ESP8266-E12.
___________________________________________________
2.- Código para enviar los datos por WiFi a Firebase.
- Uno de los datos importantes es la clave de secreto de la base de datos.
- Esa es la clave que luego debemos poner en el código del NodeMCU:
#define FIREBASE_AUTH "S82--Secreto de la base de datos----6I"
Código
Nodemcu_Firebase_LCD_Humedad.ino |
// Juan Antonio Villalpando
// juana1991@yahoo.com
// KIO4.COM
// Envía humedad y temperatura a Firebase.
// Una web en tiempo real mostrará esos datos.
#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>
// Configuracion de Firebase y WiFi.
#define FIREBASE_HOST "kio4.firebaseio.com"
#define FIREBASE_AUTH "S82----Secreto de la base de datos----6I"
#define WIFI_SSID "Tu_nombre_de_red_wifi"
#define WIFI_PASSWORD "La_clave_de_tu_red_wifi"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
// LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
#include "DHT.h"
// Lo conectamos al D3 que es el GPIO14
DHT dht(14, DHT11);
void setup() {
lcd.begin(16,2); // Columnas y filas de LCD
dht.begin();
Serial.begin(9600);
// Conexión a WiFi.
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Conectando");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("Conectado: ");
Serial.println(WiFi.localIP());
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}
void loop(){
float humedad = dht.readHumidity();
float temperatura = dht.readTemperature();
lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("Temper. = ");
lcd.print(temperatura);
lcd.setCursor(0,1); // Siguiente renglón.
lcd.print("Humedad = ");
lcd.print(humedad);
delay(1000);
// Envío de información a Firebase:
Firebase.setFloat("/nodemecu/temperatura", temperatura);
Firebase.setFloat("/nodemecu/humedad", humedad);
// Posibles errores.
if (Firebase.failed()) {
Serial.print("Errores en la subida: ");
Serial.println(Firebase.error());
return;
}
} |
- Cada segundo se envía información de temperatura y humedad a Firebase. Si entramos en Firebase y consultamos esos valores veremos que cambian automáticamente en tiempo real.
___________________________________________________
3.- Página web para ver los datos actualizados en tiemp real, sin necesidad de refrescar la página.
Código de página web
Nodemcu_Firebase_LCD_Humedad.htm |
<html>
<head>
<script src='https://cdn.firebase.com/js/client/2.2.1/firebase.js'></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>
</head>
<body>
<font face="Arial" color="#009900" size="4"><div id='aqui'>Aquí se verán los datos.</div></font>
<script>
var Basededatos = new Firebase('https://kio4.firebaseio.com/');
Basededatos.on("child_changed", function(datos) {
var los_datos = datos.val();
$("#aqui").html("Temperatura: " + los_datos.temperatura + " Humedad: " + los_datos.humedad);
});
// Juan Antonio Villalpando.
// KIO4.COM
</script>
</body>
</html> |
- Esta página web no es necesaria subirla a un servidor web (aunque también se puede subir si queremos), la podemos ejecutar desde nuestro ordenador.
- Cada segundo el NodeMCU enviará temperatura y humedad por WiFi a Firebase.
- Cada vez que Firebase cambie uno de esos valores enviará a la página web el nuevo dato, sin necesidad de refrescar la página.
_________________
- Comentarios.
- Se puede modificar el código para que cuanto la temperatura o humedad alcancen un determinado valor, se encienda un LED.
- Es importante el delay en el código para la pantalla LCD, si se pone un delay rápido no le dará tiempo mostrar los datos.
https://www.youtube.com/watch?v=jS8GTbr16Gw
- Con esta librería podemos enviar a Firebase
Firebase.setFloat("/nodemecu/humedad", humedad);
Firebase.setInt("/nodemecu/humedad", entero);
Firebase.setString("/nodemecu/humedad", palabra);
________________________________
|