▷ Practica 4 #2PEM100A: Mostrar Datos via web desde una red creada
⭐⭐⭐⭐⭐ Practica 4 #2PEM100A: Mostrar Datos via web desde una red creada
- ▷ #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.
- Crear una red WiFi.
- Mostrar mediciones en una interfaz web.
Repositorio:
- https://github.com/Medidor-Consumo-Bifasico/Curso_Simulacion_Sistemas_Electricos
Materiales:
- Medidor de Consumo Energético
Introducción:
En la práctica pasada logramos conectar nuestro dispositivo a una red Wifi y monitorear los datos vía web. Esto nos permite tener una información inalámbrica desde cualquier dispositivo. Aunque resulto útil, esta solución depende de una red Wifi activa, limitando los lugares en los que podemos conectarlo.
Para abarcar estos escenarios, tenemos la posibilidad de crear nuestro propio punto inalámbrico, haciendo nuestro ESP32 como un router, en el que uno o más dispositivos podrá conectarse a él. Y de esta manera monitorear los datos vía Web.
Procedimiento #1: Descargar e Instalar Librerias necesarias
Para esta practica utilizaremos las mismas librerias de la practica #3, si no las tiene 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
/* | |
********** 2pem100a *********** | |
Autor: Vidal Bazurto (avbazurt@espol.edu.ec) | |
Reviewed: vasanza | |
GitHub: https://github.com/Medidor-Consumo-Bifasico/Curso_Simulacion_Sistemas_Electricos | |
More information: https://2pem100a.blogspot.com/ | |
Practica #4 - Mostrar Datos via web desde una red creada | |
*/ | |
#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,0x20); | |
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 CreateWifi() { | |
WiFi.mode(WIFI_AP); | |
WiFi.softAP(ssid, password); | |
} | |
void setup() { | |
delay(5000); | |
//ACTIVAMOS EL PUERTO SERIAL | |
Serial.begin(115200); | |
Serial.println(WiFi.macAddress()); | |
//Conectamos el WIFI | |
CreateWifi(); | |
//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() { | |
IPAddress IP = WiFi.softAPIP(); | |
Serial.println("AP IP address: "); | |
Serial.println(IP); | |
Serial.println(" "); | |
delay(5000); | |
} |
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.
Dicha IP es la que utilizaremos para monitorear las mediciones, procedemos a conectarnos a la red Wifi creada. con la contraseña configurada.
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