Tutorial del Internet de las Cosas y Bluetooth con el ESP8266
Juan Antonio Villalpando
Volver al índice del tutorial
____________________________
308.- ESP8266 D1 R32 ESP32. Temperatura cocina.
- La temperatura de una Cocina puede varias desde 0 a 100 grados.
- Si vale menos de 60, están apagados los LED4 y LED5
- Si vale entre 60 y 80, se enciende LED4 y apaga LED5
- Si vale más de 80, se encienden LED4 y LED5.
- LED4 tiene lógica negativa, es el que está cerda del ESP8366. LED5 está en el centro de la tarjeta.
esp8266_cocina.ino |
// Juan A. Villalpando.
// KIO4.COM
// Cocina.
#include <ESP8266WiFi.h>
const char* ssid = "Nombre";
const char* password = "Clave";
WiFiServer server(80);
#define LED4 D4
#define LED5 D5
String estado = "";
int temperatura = 0;
void setup() {
Serial.begin(115200);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
delay(10);
// Conecta a la red wifi.
Serial.println();
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("Conectado con WiFi.");
// Inicio del Servidor web.
server.begin();
Serial.println("Servidor web iniciado.");
// Esta es la IP
Serial.print("Esta es la IP para conectar: ");
Serial.print("http://");
Serial.print(WiFi.localIP());
Serial.println("/");
}
void loop() {
// Consulta si se ha conectado algún cliente.
delay(2000);
WiFiClient client = server.available();
if (!client) {
consultar();
return;
}
// Espera hasta que el cliente envíe datos.
Serial.println("Nuevo cliente.");
while(!client.available()){
delay(1);
}
/////////////////////////////////////////////////////
// Lee la información enviada por el cliente.
String req = client.readStringUntil('\r');
Serial.println(req);
consultar();
//////////////////////////////////////////////
// Página WEB. ////////////////////////////
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // Comillas importantes.
client.println(estado);
Serial.println("Cliente desconectado.");
client.flush();
// client.stop();
}
void consultar() {
// Consulta temperatura.
temperatura = random(0,100);
if (temperatura < 60) {digitalWrite(LED4, HIGH); digitalWrite(LED5, LOW);}
if (temperatura >= 60 && temperatura < 80) {digitalWrite(LED4, LOW); digitalWrite(LED5, LOW);}
if (temperatura >= 80 ) {digitalWrite(LED4, LOW); digitalWrite(LED5, HIGH);}
delay(10);
estado ="";
if (digitalRead(LED4) == LOW) {estado = "on4,";} else {estado = "off4,";}
if (digitalRead(LED5) == HIGH) {estado = estado + "on5,";} else {estado = estado + "off5,";}
estado = estado + (String) temperatura;
Serial.println(estado);
}
|
_________________________________
- App Inventor.

- El intervalo del Reloj en 3000.
- Si el Reloj no está activado, continua realizando los chequeos y mostrándolos en el Monitor Serie.
- Si activa el Reloj, además de en el Monitor Serie se presentará en la aplicación mediante WiFi.
---------------------------------------------------------------------------------
- Versión con IP estática.
esp8266_cocina_estatica.ino |
// Juan A. Villalpando.
// KIO4.COM
// Cocina.
/////////////// IP Fija 192.168.1.115 ////////////
#include <ESP8266WiFi.h>
const char* ssid = "nnnnnnnn";
const char* password = "nnnnnnnnn";
// Configuración de la IP estática.
IPAddress local_IP(192, 168, 1, 115);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
WiFiServer server(80);
#define LED3 D3
#define LED5 D5
String estado = "";
int limite = 0;
int sensor = 0;
String compara = "";
void setup() {
Serial.begin(115200);
pinMode(LED3, OUTPUT);
pinMode(LED5, OUTPUT);
delay(10);
// Establecimiento de la IP estática.
WiFi.config(local_IP, gateway, subnet);
// Conecta a la red 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("Conectado con WiFi.");
// Inicio del Servidor web.
server.begin();
Serial.println("Servidor web iniciado.");
// Esta es la IP
Serial.print("Esta es la IP para conectar: ");
Serial.print("http://");
Serial.println(WiFi.localIP());
}
void loop() {
// Consulta si se ha conectado algún cliente.
delay(1000);
WiFiClient client = server.available();
if (!client) {
consultar();
return;
}
// Espera hasta que el cliente envíe datos.
Serial.println("Nuevo cliente.");
while(!client.available()){
delay(1);
}
/////////////////////////////////////////////////////
// Lee la información enviada por el cliente.
String req = client.readStringUntil('\r');
Serial.println(req);
// Realiza la petición del cliente.
if (req.indexOf("rele1_on") != -1) {digitalWrite(LED3, HIGH);}
if (req.indexOf("rele1_off") != -1){digitalWrite(LED3, LOW);}
if (req.indexOf("rele2_on") != -1) {digitalWrite(LED5, HIGH);}
if (req.indexOf("rele2_off") != -1){digitalWrite(LED5, LOW);}
if (req.indexOf("limite") != -1){limite = req.substring(12).toInt(); Serial.println(limite);}
if (req.indexOf("sensor") != -1){sensor = req.substring(12).toInt(); Serial.println(sensor);}
if (req.indexOf("consultar") != -1){consultar();}
req="";
consultar();
//////////////////////////////////////////////
// Página WEB. ////////////////////////////
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // Comillas importantes.
client.println(estado);
Serial.println("Cliente desconectado.");
//client.flush();
// client.stop();
}
//////////////////////////////////////////////////////////////
void consultar() {
delay(10);
estado ="";
if (digitalRead(LED3) == HIGH) {estado = "on3,";} else {estado = "off3,";}
if (digitalRead(LED5) == HIGH) {estado = estado + "on5,";} else {estado = estado + "off5,";}
if (sensor >= limite) {compara = "Temperatura SENSOR mayor o igual que Temperatura Limite";}
else {compara = "Temperatura SENSOR menor que Temperatura Limite";}
estado = estado + (String) sensor + "..." + (String) limite + "..." + compara;
Serial.println(estado);
}
|
------------------------------------------------------------------------------------------
- Versión con Punto de Acceso.
p62C_nodemecu_cocina_5.aia
_____________________________________
- Diseño.

_____________________________________
- Bloques.

______________________________________
- Código.
esp8266_cocina_p_acceso.ino |
// Juan A. Villalpando.
// KIO4.COM
// Cocina.
#include <ESP8266WiFi.h>
const char* ssid = "Cocina";
const char* password = "123456789";
WiFiServer server(80);
#define LED3 D3
#define LED5 D5
String estado = "";
int limite = 0;
int sensor = 0;
String compara = "";
void setup() {
Serial.begin(115200);
pinMode(LED3, OUTPUT);
pinMode(LED5, OUTPUT);
delay(10);
// Configuración del Punto de Acceso.
Serial.println();
//Serial.print("Configurando IP Estática: ");
//Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Establecida IP estática" : "Error IP");
Serial.print("Configurando Punto de Acceso: ");
Serial.println(WiFi.softAP(ssid, password) ? ssid : "Error creación P.A.");
// Esta es la IP
Serial.print("Esta es la IP para conectar: ");
Serial.print("http://");
Serial.println(WiFi.softAPIP());
// Inicio del Servidor web.
server.begin();
Serial.println("Servidor web iniciado.");
}
void loop() {
// Consulta si se ha conectado algún cliente.
delay(1000);
WiFiClient client = server.available();
if (!client) {
consultar();
return;
}
// Espera hasta que el cliente envíe datos.
Serial.println("Nuevo cliente.");
while(!client.available()){
delay(1);
}
/////////////////////////////////////////////////////
// Lee la información enviada por el cliente.
String req = client.readStringUntil('\r');
Serial.println(req);
// Realiza la petición del cliente.
if (req.indexOf("rele1_on") != -1) {digitalWrite(LED3, HIGH);}
if (req.indexOf("rele1_off") != -1){digitalWrite(LED3, LOW);}
if (req.indexOf("rele2_on") != -1) {digitalWrite(LED5, HIGH);}
if (req.indexOf("rele2_off") != -1){digitalWrite(LED5, LOW);}
if (req.indexOf("limite") != -1){limite = req.substring(12).toInt(); Serial.println(limite);}
if (req.indexOf("sensor") != -1){sensor = req.substring(12).toInt(); Serial.println(sensor);}
if (req.indexOf("consultar") != -1){consultar();}
req="";
consultar();
//////////////////////////////////////////////
// Página WEB. ////////////////////////////
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println(""); // Comillas importantes.
client.println(estado);
Serial.println("Cliente desconectado.");
//client.flush();
// client.stop();
}
//////////////////////////////////////////////////////////////
void consultar() {
delay(10);
estado ="";
if (digitalRead(LED3) == HIGH) {estado = "on3,";} else {estado = "off3,";}
if (digitalRead(LED5) == HIGH) {estado = estado + "on5,";} else {estado = estado + "off5,";}
if (sensor >= limite) {compara = "Temperatura SENSOR mayor o igual que Temperatura Limite";}
else {compara = "Temperatura SENSOR menor que Temperatura Limite";}
estado = estado + (String) sensor + "..." + (String) limite + "..." + compara;
Serial.println(estado);
}
|
_______________________________
|