▷ Practica 3 #2PEM100A: Mostrar Datos via Internet
⭐⭐⭐⭐⭐ Practica 3 #2PEM100A: Mostrar Datos via Internet
- ▷ #2PEM100A #MyDataLab #ESP32 #Arduino #EnergyMeter
- When using this resource, please cite the original publication:
Objetivo general:
- Aprender sobre visualizacion de datos inalambricamente.
Objetivos específicos:
- Realizar mediciones con el sensor PZEM004T.
- Conectar ESP32 a una Red WiFi.
- Mostrar mediciones en una interfaz web.
Repositorio:
Materiales:
- Medidor de Consumo Energético
- Punto Acceso WiFi
Introducción:
Hasta ahora hemos logrado obtenido las mediciones de nuestro
sensor PZEM004T y mediante cable conectado a la PC visualizar los datos en la
terminal y guardar los datos en un Excel. Estas opciones son muy buenas, sin
embargo, presentan un inconveniente, se requiere siempre de un PC donde
conectar el ESP32, provocando que se limite el lugar donde se puede instalar el
equipo. Ante esta problemática utilizaremos una de la característica que tiene
nuestro ESP32, que es la conexión a Wifi. Mediante su antena incorporada vamos
a poder conectarnos un punto de red Wifi con la finalidad de mostrar los datos
en el navegador de manera inalámbrica desde cualquier dispositivo conectado a
la red.
Procedimiento #1: Descargar e Instalar Librerias necesarias
Para esta practica utilizaremos un par de librerias que pueden ser descargadas de los siguientes link:
AsynCTP:
ESPAsyncWebServer:
Procedimiento #2: Configurar Credenciales y Subir codigo
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
Autor: Vidal Bazurto (avbazurt@espol.edu.ec) | |
GitHub: https://github.com/avbazurt/Simulacion_Sistemas_Electricos | |
Practica 1: Introduccion Sensor PZEM004TV30 | |
*/ | |
#include <WiFi.h> | |
#include <AsyncTCP.h> | |
#include <ESPAsyncWebServer.h> | |
#include <PZEM004Tv30.h> | |
#define ssid "TU_SIID" | |
#define password "TU_CONTRASEÑA" | |
//Definimos los pines de comunicacion PZEM004T | |
#define PZEM_RX_PIN 16 | |
#define PZEM_TX_PIN 17 | |
//Creamos un objeto PZEM004Tv30 con los pines | |
PZEM004Tv30 pzem(Serial2, PZEM_RX_PIN, PZEM_TX_PIN); | |
struct Sensor | |
{ float voltaje; // Nombre del modelo | |
float corriente; // Numero de pines digitales | |
float potencia; // Numero de pines digitales | |
float energia; // Numero de pines digitales | |
float frecuencia; // Numero de pines digitales | |
float fp; // Numero de pines digitales | |
} ; | |
Sensor DatosSensor = {0,0,0,0,0,0}; | |
void MedicionSensor() { | |
DatosSensor.voltaje = pzem.voltage(); | |
if (isnan(DatosSensor.voltaje)) {// Validamos los datos del sensor | |
DatosSensor.voltaje = -1; | |
} | |
DatosSensor.corriente = pzem.current(); | |
if (isnan(DatosSensor.corriente)) { | |
DatosSensor.corriente = -1; | |
} | |
DatosSensor.potencia = pzem.power(); | |
if (isnan(DatosSensor.potencia)) { | |
DatosSensor.potencia = -1; | |
} | |
DatosSensor.energia = pzem.energy(); | |
if (isnan(DatosSensor.energia)) { | |
DatosSensor.energia = -1; | |
} | |
DatosSensor.frecuencia = pzem.frequency(); | |
if (isnan(DatosSensor.frecuencia)) { | |
DatosSensor.frecuencia = -1; | |
} | |
DatosSensor.fp = pzem.pf(); | |
if (isnan(DatosSensor.fp)) { | |
DatosSensor.fp = -1; | |
} | |
} | |
//WEB SERVER | |
AsyncWebServer server(80); | |
char* formato_html = | |
"<!DOCTYPE html>" | |
"<html lang=\"en\">" | |
"<head>" | |
" <meta charset=\"UTF-8\">" | |
" <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">" | |
" <META HTTP-EQUIV='Refresh' CONTENT='1'>" | |
" <title>ESP32 WebServer</title>" | |
" <style> body { background-color: #fffff; font-family: Arial, Helvetica, Sans-Serif; Color: #000000; }</style>" | |
"</head>" | |
"<body>" | |
" <h2>SENSOR CONSUMO ENERGETICO</h2>" | |
" <h3>Voltaje: %f [V]</h3>" | |
" <h3>Corriente: %f [A]</h3>" | |
" <h3>Potencia: %f [W]</h3>" | |
" <h3>Energia: %f [KwH]</h3>" | |
" <h3>Frecuencia: %f [Hz]</h3>" | |
" <h3>Factor Potencia: %f</h3>" | |
"</body>" | |
"</html>"; | |
char buffer_html[1000]; | |
void notFound(AsyncWebServerRequest *request) { | |
request->send(404, "text/plain", "Not found"); | |
} | |
void connectToWifi() { | |
WiFi.enableSTA(true); | |
delay(2000); | |
WiFi.begin(ssid, password); | |
while (WiFi.status() != WL_CONNECTED) { | |
delay(500); | |
Serial.print("."); | |
} | |
Serial.println(""); | |
Serial.println("WiFi connected"); | |
} | |
void setup() { | |
delay(5000); | |
//ACTIVAMOS EL PUERTO SERIAL | |
Serial.begin(115200); | |
Serial.println(WiFi.macAddress()); | |
//Conectamos el WIFI | |
connectToWifi(); | |
//Configuramos el Web Server | |
server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) { | |
MedicionSensor(); | |
//Mostramos los datos | |
sprintf(buffer_html, | |
formato_html, | |
DatosSensor.voltaje, | |
DatosSensor.corriente, | |
DatosSensor.potencia, | |
DatosSensor.energia, | |
DatosSensor.frecuencia, | |
DatosSensor.fp); | |
request->send_P(200, "text/html", buffer_html); | |
}); | |
server.onNotFound(notFound); | |
server.begin(); | |
} | |
void loop() { | |
Serial.println("IP address: "); | |
Serial.println(WiFi.localIP()); | |
Serial.println(""); | |
delay(4000); | |
} |
Pegamos el codigo en nuestro Arduino IDE.
A continuacion debemos colocar las credenciales de nuestra Red WiFi, recordar que debe ser exacatamente igual el nombre y la contraseña, caso contrario nunca se conectara.
Procedimiento #3: Visualizar datos
Procedemos a abrir la termial serial, para corroborar que la conexion fue exitosa y ver la IP a la que fue asociada el dispositivo.
En caso de ser necesario cambiamos los baudios a 115200, si ya estaba en dicha velocidad nos saltamos este paso.
Y si todo salio bien, nos saldran la IP del dispositivo.
Dicha IP es la que utilizaremos para monitorear las mediciones, procedemos abrir el navegador en un dispositivo que se encuentre en la misma red WiFi, y escribimos dicha direccion.
Con eso nosotros podremos visualizar los datos en tiempo real de manera inalambrica. Lo mejor de esto es que puede ser desde cualquier dispositivo. En nuestro celular procedemos a escribir la direccion en el navegador para comprobar.
Read related topics
- ⭐ Medidor de Consumo energético
- Practice 0: Installation of support programming #ESP32
- Practice 1: Introduccion Sensor PZEM004T
- Practice 2: Storage of measurements in Excel file
- Practice 3: Mostrar Datos via Internet
- ✅ #ESP32 - Internal #RTC + NTP Server
- ✅ #ESP32 - Internal #RTC
- ✅ #ESP32 - Overview
- ✅ #ESP32 - Display OLED 128x64
- ✅ #ESP32 - #MQTT (Introduction)
- ✅ #ESP32 - Over-The-Air programming #OTA
- ✅ Instalación #ESP-IDF #ESPRESSIF
- ✅ #Raspberry Pi Pico
- ✅ #ESP8266 Module
- TSC-LAB
Comentarios
Publicar un comentario