▷ Practica 4 #2PEM100A: Mostrar Datos via web desde una red creada

⭐⭐⭐⭐⭐ Practica 4 #2PEM100A: Mostrar Datos via web desde una red creada

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: 


Procedimiento #2: Configurar Credenciales y Subir codigo


/*
********** 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);
}
view raw Practia4.ino hosted with ❤ by GitHub
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.

Una vez realizado esto procedemos a subir el codigo.


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 a conectarnos a la red Wifi creada. con la contraseña configurada.



Procedemos abrir el navegador en un dispositivo que se encuentre en la misma red WiFi, y escribimos direccion antes mostrada en el terminal Serial.


Read related topics

Comentarios

Popular Posts

▷ #ESP32 - REAL-TIME CLOCK #RTC INTERNO

▷ Especificaciones del módulo ESP32

▷ #ESP32 - SINCRONIZAR RTC INTERNO CON SERVIDOR NTP

▷ #ESP32 - Over-The-Air programming #OTA

▷ #ESP32 - Display OLED 128x64

▷ #EMG signal classification with Machine Learning #ML using #Matlab

▷ SOLUCIÓN EVALUACIÓN SISTEMAS DIGITALES 1, 2do Parcial (2021 PAE)

▷ SISTEMAS EMBEBIDOS, PROYECTOS PROPUESTOS (2021 PAO1)

▷ (Práctica 1) DESARROLLO DE APLICACIONES CON MÓDULOS #ARDUINO #Atmega328p

▷ Newsletter: #FPGA (Field Programmable Gate Arrays)