Sensor temperatura con LM35 con esp8266 y monitoreo remoto en www.iottweet.com
Sensor temperatura con LM35 con esp8266 y monitoreo remoto en www.iottweet.com
Para realizar una práctica con el sensor de temperatura LM35 conectado al ESP8266 y monitorear los datos de temperatura de manera remota a través de la plataforma IoTtweet (www.iottweet.com), sigue estos pasos. La idea es leer la temperatura utilizando el sensor LM35, enviar los datos al servidor de IoTtweet, y luego visualizar la temperatura en tiempo real desde cualquier dispositivo conectado a Internet.
Materiales:
- ESP8266 (NodeMCU o similar)
- Sensor de temperatura LM35
- Resistencias (opcional para el divisor de tensión si es necesario)
- Protoboard y cables de conexión
Configuración del sensor LM35:
El LM35 es un sensor de temperatura analógico que entrega una señal de salida proporcional a la temperatura en °C. La salida es de 10 mV por grado Celsius. Para conectar el LM35 al ESP8266:
- Conecta el pin de alimentación del LM35 a 3.3V del ESP8266.
- Conecta el pin de tierra del LM35 a GND.
- Conecta el pin de salida del LM35 al pin A0 del ESP8266 (pin ADC).
Preparación de la cuenta en IoTtweet:
- Crear una cuenta en IoTtweet.
- Crear un nuevo Widget en el Dashboard para visualizar la temperatura.
- Obtén tu KEY API de IoTtweet, que usarás para enviar los datos desde el ESP8266.
Código para ESP8266:
El siguiente código se encarga de leer los datos del sensor LM35 y enviar los datos de temperatura a IoTtweet utilizando su API.
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
// Configuración WiFi
const char* ssid = «Tu_SSID»; // Nombre de tu red WiFi
const char* password = «Tu_PASSWORD»; // Contraseña de tu red WiFi
// Configuración IoTtweet
String apiKey = «TU_API_KEY»; // API Key de IoTtweet obtenida en el dashboard
// Definir el pin donde conectamos el LM35
#define LM35_PIN A0
// URL del servidor de IoTtweet para enviar los datos
const char* server = «http://iottweet.com/»;
void setup() {
Serial.begin(115200);
// Conectar a la red WiFi
WiFi.begin(ssid, password);
Serial.print(«Conectando a «);
Serial.println(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(«.»);
}
Serial.println();
Serial.println(«Conectado a la red WiFi»);
Serial.println(«IP Address: «);
Serial.println(WiFi.localIP());
}
void loop() {
// Leer el valor del sensor LM35
int lm35Value = analogRead(LM35_PIN);
// Convertir el valor de voltaje a temperatura en grados Celsius
float voltage = (lm35Value / 1024.0) * 3.3; // Convertir el valor ADC a voltios (3.3V)
float temperature = voltage * 100.0; // El LM35 entrega 10 mV/°C
Serial.print(«Temperatura: «);
Serial.print(temperature);
Serial.println(» °C»);
// Enviar los datos a IoTtweet
if(WiFi.status() == WL_CONNECTED) {
HTTPClient http;
// Construir la URL para enviar los datos
String url = server;
url += «iottweet/apiv2/send.php?userid=YOUR_USER_ID&key=» + apiKey;
url += «&1=» + String(temperature); // Asigna el valor de la temperatura al Widget 1
http.begin(url); // Comenzar la conexión HTTP
int httpCode = http.GET(); // Enviar la solicitud GET
// Verificar la respuesta del servidor
if(httpCode > 0) {
String payload = http.getString();
Serial.println(«Datos enviados con éxito»);
Serial.println(payload);
} else {
Serial.println(«Error en la conexión»);
}
http.end(); // Finalizar la conexión HTTP
}
delay(5000); // Esperar 5 segundos antes de enviar los datos nuevamente
}
Explicación del código:
- Conexión WiFi: El ESP8266 se conecta a la red WiFi usando el nombre de la red (
ssid) y la contraseña (password) que configures en el código. - Lectura del LM35: El ESP8266 lee el valor analógico del sensor de temperatura LM35 conectado al pin A0. Luego, convierte el valor ADC en voltaje y de allí en grados Celsius.
- Envío de datos a IoTtweet: Se utiliza el método HTTP GET para enviar los datos de temperatura a la plataforma IoTtweet. La URL incluye el User ID y la API Key que obtuviste al registrarte en IoTtweet. El valor de la temperatura se asigna al primer widget (
&1=). - Visualización remota: Los datos de temperatura se envían cada 5 segundos a IoTtweet, y podrás ver la temperatura en tiempo real en tu dashboard.
Pasos para monitorear la temperatura en IoTtweet:
- Accede a tu cuenta en IoTtweet.
- Ve a tu Dashboard y configura un widget para visualizar el valor de la temperatura que envía el ESP8266.
- Asegúrate de asociar el Widget 1 con el valor de la temperatura, ya que el ESP8266 está enviando los datos al primer canal (
&1=).
Notas:
- Asegúrate de haber ingresado correctamente tu User ID y API Key en el código.
- Si la lectura de temperatura no es precisa, puedes ajustar la fórmula dependiendo de la resolución de tu ADC y el voltaje de referencia.
- Puedes personalizar la frecuencia de actualización modificando el
delay(5000)en elloop().
Esta práctica te permitirá monitorear la temperatura de manera remota a través de una interfaz amigable, accesible desde cualquier lugar con conexión a Internet.
Otro código
const int sensor = A0; // ESP8266 Analog Pin ADC0 = A0
#include <ESP8266WiFi.h>
#include <IoTtweet.h>
#include "ArduinoJson.h"
const char *userid = "id"; //IoTtweet account user ID (6 digits, included zero pre-fix)
const char *key = "key"; //IoTtweet registered device key in "MY IOT Garage"
const char *ssid = "WiFi"; //Your-WiFi-router-SSID
const char *password = ""; //Your-WiFi-password
int tempd;
float data0, data1, data2, data3; //Your sending data variable.
String private_tweet = "Hello World"; //Your private tweet meassage to dashboard
String public_tweet = "I am Internet of Things"; //Your public tweet message to dashboard
IoTtweet myiot; //naming your devices
void setup() {
Serial.begin(115200);
//Get IoTtweet Library version
String libvers = myiot.getVersion();
Serial.println("IoTtweet Library vesion : " + String(libvers));
//Connect WiFi
Serial.println("nConnect wifi...");
bool conn = myiot.begin(ssid,password);
if(!conn)
{
Serial.println("WiFi connection failed.");
}else
{
Serial.println("WiFi connected !");
}
}
void loop() {
//Example data generating
tempd=analogRead(sensor);
data0=(5.0*tempd*100.0)/1023.0; // temperatura
data1 = random(30,70);
data2 = random(40,60);
data3 = random(50,55);
//Send data from your iot to Dashboard
String response = myiot.WriteDashboard(userid,key,data0,data1,data2,data3,private_tweet,public_tweet);
Serial.println(response); //Show response JSON from www.iottweet.com
//Waiting storage data on IoTtweet cloud 15 sec.
delay(15000);
}
