NodeMCU en español
NodeMCU - Juan Antonio Villalpando
-- Tutorial de NodeMCU en español --
Volver al índice del tutorial NodeMCU
____________________________
68.- NodeMCU, sensor de presión y temperatura BMP180. Pantalla LCD. WiFi.
- Vamos a adaptar el código anterior al ESP8266 para poder enviar los datos mediante WiFi, es parecido a lo que vimos en el tutorial:
65.- NodeMCU, sensor de temperatura y humedad. Web Server. WiFi. Pantalla LCD.
___________________________________________________
1.- Conexionado del NodeMCU al sensor de temperatura y presión BMP 180 y a la pantalla LCD.
WiFi.
- Realizamos esta conexión.
- Si conectamos el NodeMCU por USB al ordenador, tendremos en el terminal VV, una tensión de 5V, que son los que necesita el módulo DHT11.
- Fíjate en el NodeMCU el bus I2C los componen los terminales D1 que es el SCL y el D2 que es el SDA. A este bus está conectado la pantalla LCD y el módulo del sensor.
- Los valores de la pantalla se actualizarán cuando entre algún cliente desde la página web.
- Es conveniente tener una pantalla LCD, pero si no la tienes puedes comprobar el funcionamiento en el Serial Monitor
___________________________________________________
2.- Librerías.
- Es muy importante buscar y encontrar las librerías apropiadas ya que de ellas resultará el funcionamiento o no del montaje.
- Aquí he puesto las librería que he utilizado con el IDE 1.8.2 de Arduino. Además de las librerías del DHT11, Adafruit_Unified_Sensor, ESP8288 y Liquid_Crystal_LCD.
Varias_libraries.zip
Librería del sensor de presión y temperatura: SFE.zip
___________________________________________________
3.- Código para pantalla el sensor de presión y temperatura BMP 180 y la pantalla LCD.
Código
Nodemcu_presion_lcd_wifi.ino |
// Adaptado y modificado por Juan A. Villalpando.
// KIO4.com
// Convierte al NodeMCU en un Servidor Web y capta temperatura y presión con el sensor BMP180.
// Presenta temperatura y presión a clientes WiFi.
// Los datos también se ve en una pantalla LCD.
#include <ESP8266WiFi.h>
#include <DHT.h> // Necesita las librerías DHT y Adafruit_Unified_Sensor
#define DHTTYPE DHT11
// Pantalla LCD
#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 <SFE_BMP180.h> // Sensor de presión.
SFE_BMP180 bmp180;
// Configuración de tu red.
const char* ssid = "Tu_nombre_de_red_wifi";
const char* password = "La_clave_de_tu_red_wifi";// Servidor Web, puerto 80
WiFiServer server(80);
// Variables de tipo char.
static char char_temperatura[6];
static char char_presion[6];
void setup() {
// Consulta el Serial Monitor para ver
// la IP asignada y las conexiones.
Serial.begin(115200);
delay(50);
bmp180.begin(); // Inicio del Sensor.
lcd.begin(16,2);// Columnas y filas de LCD
// Conexión WiFi
Serial.println();
Serial.print("Conectando con ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi conectada.");
// Arranque del Servidor Web
server.begin();
Serial.println("Servidor Web funcionando. Espera para ver tu IP...");
delay(10000);
// IP obtenida.
Serial.println(WiFi.localIP());
}
void loop() {
// Escucha a los nuevos clientes que quieren conectar con Servidor Web.
WiFiClient client = server.available();
if (client) {
Serial.println("Nuevo cliente.");
boolean blank_line = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == '\n' && blank_line) {
// LECTURA DE TEMPERATURA Y HUMEDAD BMP180
//////////////////////////////////////////////////////////////////
char status;
double T,P;
status = bmp180.startTemperature();
if (status != 0)
{
delay(status);
status = bmp180.getTemperature(T);
if (status != 0)
{
status = bmp180.startPressure(3);
if (status != 0)
{
delay(status);
status = bmp180.getPressure(P,T);
if (status != 0)
{
dtostrf(T, 5, 1, char_temperatura);
dtostrf(P, 5, 1, char_presion);
}}}}
Serial.print("Humedad: ");
Serial.print(char_presion);
Serial.print(" %\t Temperatura: ");
Serial.print(char_temperatura);
Serial.print(" *C");
////////////////////////////////////////////////////////////////////
// CREACIÓN DE LA PÁGINA WEB.
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<head><meta charset=utf-8></head>");
client.println("<body><font face='Arial'><h1>ESP8266 - Temperatura y Presión.</h1>");
client.println("<h2><font color='#009900'>KIO4.COM - Juan A. Villalpando</font></h2><h3>Temperatura: ");
client.println(char_temperatura);
client.println("°C</h3><h3>Presión: ");
client.println(char_presion);
client.println("%</h3><h3></font>");
client.println("</body></html>");
break;
}
if (c == '\n') {
// Lectura de nueva línea.
blank_line = true;
}
else if (c != '\r') {
// Fin de caracter de esa línea.
blank_line = false;
}
}
}
// Cerrar la conexión con ese cliente.
delay(1);
client.stop();
Serial.println("Cliente desconectado.");
}
/// Muestra en la pantalla LCD.
lcd.clear(); // Borra pantalla
lcd.setCursor(0,0); // Inicio del cursor
lcd.print("Temper. = ");
lcd.print(char_temperatura);
lcd.setCursor(0,1); // Siguiente renglón.
lcd.print("Presion = ");
lcd.print(char_presion);
delay(200);
} |
___________________________________________________
4.- Serial Monitor.
________________________________
|