Está en la página 1de 8

TERMOMETRO DIGITAL USANDO ESP8266 Y LM35

IOT

IoT Digital Thermometer using NodeMCU ESP-12 and LM35


El NodeMCU podemos programarlo utilizando Arduino IDE. Como saben, NodeMCU tiene un chip Wi-
Fi en su interior, por lo que también puede conectarse a Internet. Es muy útil para construir proyectos.

LM35 Temperature Sensor:


LM35 es un sensor de temperatura lineal analógico. Su salida es proporcional a la temperatura (en grados
Celsius). El rango de temperatura de funcionamiento es de -55 ° C a 150 ° C. La tensión de salida varía en
10 mV en respuesta a cada aumento o disminución de la temperatura de oC. Puede operarse desde una
fuente de alimentación de 5 V y de 3,3 V, y la corriente de reserva es inferior a 60 uA.
Tenga en cuenta que LM35 está disponible en 3 series de variaciones, a saber, las
series LM35A, LM35C y LM35D. La principal diferencia está en su rango de mediciones
de temperatura. La serie LM35D está diseñada para medir de 0 a 100 grados Celsius,
mientras que la serie LM35A está diseñada para medir un rango más amplio de -55 a
155 grados Celsius. La serie LM35C está diseñada para medir de -40 a 110 grados
Celsius. Ya hemos usado LM35 con muchos otros microcontroladores para medir la
temperatura:

Conexión LM35 a NodeMCU:

LM35 es un sensor analógico, así que tenemos que convertir esta salida analógica a digital. Para esto
usamos el pin ADC de NodeMCU que se define como A0. Conectaremos la salida de LM35 a A0.
Tenemos 3.3 V como voltaje de salida en los pines de NodeMCU. Entonces, usaremos 3.3V como Vcc
para LM35.
Explicación del Código:
Debemos incluir la biblioteca ESP8266wifi para acceder a las funciones de Wi-Fi.

#include <ESP8266WiFi.h>

Luego ingrese su nombre y contraseña de Wi-Fi en el campo ssid y contraseña. También


se inicializaron las variables e iniciar el servidor en el puerto 80 con una velocidad de
baudios 115200.

const char* ssid = "*********"; // Your ssid

const char* password = "***********"; // Your Password

float temp_celsius = 0;

float temp_fahrenheit = 0;

WiFiServer server(80);

void setup() {

Serial.begin(115200);

La conexión de Wi-Fi se establece llamando a estas funciones.

Serial.println();

Serial.println();

Serial.print("Connecting to ");

Serial.println(ssid);

WiFi.begin(ssid, password);
La conexión puede tardar unos segundos en establecerse, así que siga mostrando "..."
hasta que la conexión no se establezca. Entonces el sistema seguirá esperando y
buscando un cliente para conectarse ...

while (WiFi.status() != WL_CONNECTED) {

delay(500);

Serial.print(".");

Serial.println("");

Serial.println("WiFi is connected");

server.begin();

Serial.println("Server started");

Serial.println(WiFi.localIP());

En la sección de bucle, lea los valores de los sensores y conviértalos a grados Celsius
y Fahrenheit y muestre estos valores en el monitor serie.

void loop() {

temp_celsius = (analogRead(A0) * 330.0) / 1023.0; // To convert analog valu


es to Celsius We have 3.3 V on our board and we know that output voltage of L
M35 varies by 10 mV to every degree Celsius rise/fall. So , (A0*3300/10)/1023
= celsius

temp_fahrenheit = celsius * 1.8 + 32.0;

Serial.print(" Temperature = ");

Serial.print(temp_celsius);

Serial.print(" Celsius, ");


Código HTML para mostrar la temperatura en la página web:

Estamos mostrando la temperatura en una página web para que pueda ser accesible
desde cualquier parte del mundo a través de Internet. El código HTML es muy simple;
solo tenemos que usar la función client.println para repetir cada línea del código HTML,
de modo que el navegador pueda ejecutarlo. Esta parte muestra el código HTML para
crear una página web que muestra el valor de la temperatura.

WiFiClient client = server.available();

client.println("HTTP/1.1 200 OK");

client.println("Content-Type: text/html");

client.println("Connection: close"); // the connection will be closed after c


ompletion of the response

client.println("Refresh: 10"); // update the page after 10 sec

client.println();

client.println("<!DOCTYPE HTML>");

client.println("<html>");

client.print("<p style='text-align: center;'><span style='font-size: x-large;


'><strong>Digital Thermometer</strong></span></p>");

client.print("<p style='text-align: center;'><span style='color: #0000ff;'><s


trong style='font-size: large;'>Temperature (*C)= ");

client.println(temp_celsius);

client.print("<p style='text-align: center;'><span style='color: #0000ff;'><s


trong style='font-size: large;'>Temperature (F) = ");

client.println(temp_fahrenheit);

client.print("</p>");

client.println("</html>");

delay(5000);

}
Trabajando:

Después de cargar el código con Arduino IDE, abra el monitor serie y presione el botón
Restablecer en NodeMCU.

Ahora, puede ver que la placa está conectada a la red Wi-Fi que ha definido en su código
y también tiene la IP. Copia esta IP y pégala en cualquier navegador web. Asegúrese
de que su sistema en el que está ejecutando el navegador web esté conectado a la
misma red.

Su termómetro digital está listo y la temperatura se actualizará automáticamente en el


navegador web cada 10 segundos. Para poder acceder a esta página web desde
Internet, solo necesita configurar el reenvío de puertos en su enrutador / módem.
Verifique el código completo y el video a continuación.

Code
#include <ESP8266WiFi.h>
const char* ssid = "*********"; // Your ssid
const char* password = "***********"; // Your Password
float temp_celsius = 0;
float temp_fahrenheit = 0;
WiFiServer server(80);
void setup() {
Serial.begin(115200);
pinMode(A0, INPUT);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi is connected");
server.begin();
Serial.println("Server started");
Serial.println(WiFi.localIP());
}
void loop() {
temp_celsius = (analogRead(A0) * 330.0) / 1023.0; // To convert analog values to Celsius We
have 3.3 V on our board and we know that output voltage of LM35 varies by 10 mV to every
degree Celsius rise/fall. So , (A0*3300/10)/1023 = celsius
temp_fahrenheit = celsius * 1.8 + 32.0;
Serial.print(" Temperature = ");
Serial.print(temp_celsius);
Serial.print(" Celsius, ");
Serial.print(temp_fahrenheit);
Serial.println(" Fahrenheit");
WiFiClient client = server.available();
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close"); // the connection will be closed after completion of the
response
client.println("Refresh: 10"); // update the page after 10 sec
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.print("<p style='text-align: center;'><span style='font-size: x-large;'><strong>Digital
Thermometer</strong></span></p>");
client.print("<p style='text-align: center;'><span style='color: #0000ff;'><strong style='font-size:
large;'>Temperature (*C)= ");
client.println(temp_celsius);
client.print("<p style='text-align: center;'><span style='color: #0000ff;'><strong style='font-size:
large;'>Temperature (F) = ");
client.println(temp_fahrenheit);
client.print("</p>");
client.println("</html>");
delay(5000);
}

También podría gustarte