
Adaptador bl0940
alejomancinelli/FCEIA_ProyectoFinal
Proyecto Final de Ing. Electrónica: Sistema de monitoreo de red eléctrica doméstica y/o industrial

Proyecto Final de Ing. Electrónica: Sistema de monitoreo de red eléctrica doméstica y/o industrial
Sensor energia bl0940 is an open-source printed circuit board by alejomancinelli, from the alejomancinelli/FCEIA_ProyectoFinal repository on GitHub. It is a 2-layer board of 128 × 58.8 mm with 44 parts on 47 nets, routed with 212 tracks and 39 vias.
It is built around the ESP-12F, HLK-5M03 and BL0940, with the PJ-102A and ZMPT107-1 among its other parts. Its parts include 17 resistors, 8 capacitors, 3 connectors, 2 ICs and 2 diodes. It belongs with the sensors and measurement boards and the ESP8266 boards of this library.
Proyecto Final de Ing. Electrónica: Sistema de monitoreo de red eléctrica doméstica y/o industrial.
En este repositorio se encuentran los distintos progamas utilizados, así como diversos tests de prueba. Para correr el sistema en conjunto, se deben modificar las rutas de archivo según corresponda, o utilizar la versión con Docker.


La placa ESP8266 NodeMCU v3 es utilizada para el prototipo. Para conectarse, es necesario instalar el controlador CH340G siguiendo las instrucciones en este tutorial.
Además de esto, se debe agregar los kits de desarrollo ESP8266 al IDE de Arduino siguiendo los isguiente pasos:
Abrir el IDE de Arduino, seleccionar Archivo -> Preferencias y escribir http://arduino.esp8266.com/stable/package_esp8266com_index.json en el campo de URLs adicionales del Gestor de Placas. Se pueden agregar múltiples URLs separándolas con comas.
Abrir el Gestor de Placas desde Tools -> Board -> Boards Manager e instalar la plataforma esp8266. Para encontrarla fácilmente, buscar "ESP8266" en la barra de búsqueda.
Seleccionar el módulo ESP8266 que se esté utilizando. En este caso, seleccionar NodeMCU 1.0 (ESP-12E Module).
Dirigirse a Herramientas -> Puerto y selecciona el puerto correspondiente al dispositivo.
Es necesario instalar las siguientes librerías en el IDE de Arduino:
LittleFS es un sistema de archivos liviano creado para microcontroladores que permite acceder a la memoria flash como se haría en un sistema de archivos estándar en la computadora, pero es más simple y limitado. Es posible leer, escribir, cerrar y eliminar archivos y carpetas.
Antes de continuar, es necesario tener instalado el complemento ESP8266 Uploader Plugin en el IDE de Arduino.
La Raspberry Pi Model 3 B+ es una computadora de placa reducida con conectividad WiFi y Ethernet que se utilizará como servidor en este proyecto. Se utiliza la versión Raspbian 11 (bullseye), la cual debe cargarse en una tarjeta microSD mediante la herramienta Raspberry Pi Imager.
Mosquitto es un broker MQTT liviano y de código abierto que se utiliza para la comunicación entre dispositivos mediante el protocolo MQTT.
1) Actualizar el sistema
sudo apt-get update && sudo apt-get upgrade2) Instalar el broker Mosquitto
sudo apt install -y mosquitto mosquitto-clients3) Ejecutar el sigiuente comando para abrir el archivo mosquitto.conf
sudo nano /etc/mosquitto/mosquitto.conf4) Ir al final del archivo utilizando las flechas del teclado y pegar las siguientes dos líneas
listener 1883
allow_anonymous trueEsto permite la conexión de dispostivos remotos en el puerto 1883
5) Para que Mosquitto se inicie automáticamente cuando arranca la Raspberry Pi, se debe ejecutar el siguiente comando (esto significa que el broker Mosquitto se iniciará automáticamente al encender la Raspberry Pi):
sudo systemctl enable mosquitto.serviceMosquitto también puede ejecutarse en segundo plano. Esto debe hacerse cada vez que se enciende la Raspberry Pi.
mosquitto -dSe puede comprobar que todo funciona correctamente creando un publicador y un suscriptor en terminales separadas:
mosquitto_sub -d -t testTopicmosquitto_pub -d -t testTopic -m "Hello world!"SQLite es un sistema de gestión de bases de datos ligero y autónomo que no requiere configuración ni servidor. Es ideal para proyectos embebidos como este, ya que permite almacenar y consultar datos de forma local en la Raspberry Pi de manera eficiente y con bajo consumo de recursos.
1) Instalar SQLite utilizando el siguiente comando:
sudo apt-get install sqlite32) Crear una base de datos en el directorio actual
sqlite3
sqlite> .save nombre_de_la_base_de_datos.db
sqlite> .quitTablas utilizadas:
| Column | Type | Description |
|---|---|---|
| id | INTEGER | Primary key, auto-incrementing |
| datetime | TEXT | Timestamp of the data (YYYY-MM-DD hh:mm:ss) |
| voltage_rms | NUMERIC | Root Mean Square (RMS) voltage |
| current_rms | NUMERIC | Root Mean Square (RMS) current |
| active_power | NUMERIC | Active power measurement |
| active_energy | NUMERIC | Cumulative active energy |
| power_factor | NUMERIC | Power factor |
| Column | Type | Description |
|---|---|---|
| key | TEXT | Primary key, unique setting identifier |
| value | FLOAT | Numeric value for the setting (e.g., threshold) |
| state | INTEGER | Current state of the alarm (e.g., 0 for off, 1 for on) |
| Column | Type | Description |
|---|---|---|
| id | INTEGER | Primary key, auto-incrementing |
| datetime | TEXT | Timestamp when the alarm occurred |
| alarmtype | TEXT | Type or name of the triggered alarm |
| value | FLOAT | Value that triggered the alarm |
| threshold | FLOAT | The threshold value that was exceeded |
| Column | Type | Description |
|---|---|---|
| id | INTEGER | Primary key, auto-incrementing |
| username | TEXT | User's name |
| TEXT | User's email address |
Node-RED es una herramienta de desarrollo basada en flujo que permite programar visualmente aplicaciones. Se utilizará para crear la interfaz de usuario e integrar las distintas etapas del proyecto.
1) Instalar Node-RED utilizando el siguiente comando
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)Para ejectuar Node-Red mediante SSH utilizar el siguiente comando:
nohup node-red &Usar solo el comando node-red vincula el proceso con la conexión SSH. Si la conexión se termina, el proceso se finalizará. Utilizar nohup evita esto.
Otra forma es iniciar Node-RED como un servicio con:
sudo systemctl start nodered.service
sudo systemctl status nodered.servicePara evitar tener que iniciar el servicio cada vez que se prende la Raspberry Pi, se puede configurar para que se ejecute automáticamente al encenderse con el siguiente comando:
sudo systemctl enable nodered.serviceIngresar la dirección raspberrypi.local:1880 en la URL de un navegador para acceder a Node-RED. Cambiar raspberrypi por el nombre que corresponda.
2) Instalar el node-red-dashboard:
npm install node-red-dashboardPara visualizar el dashboard, ingresar a raspberrypi.local:1880/ui. Cambiar raspberrypi por el nombre que corresponda.
3) Instalar node-red-node-sqlite, que puede tardar entre 15 a 20 min:
npm install node-red-node-sqlite4) Instalar las dependencias necesarias siguiendo los pasos:
Los paquetes a instalar son:
Docker es una plataforma que permite crear, distribuir y ejecutar aplicaciones dentro de contenedores ligeros y portables. Estos contenedores incluyen todo lo necesario para que una aplicación funcione, lo que facilita su despliegue y ejecución en diferentes entornos sin conflictos.
Para instalar Docker, seguir los pasos del siguiente tutorial.
Se creó un repositorio con todos los archivos necesarios para correr el proyecto con Docker.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 6 | TestPoint | TestPoint:TestPoint_Pad_D2.0mm | TP1, TP2, TP3, TP4, TP5, TP6 |
| 5 | 20K | Resistor_SMD:R_1206_3216Metric | R5, R6, R7, R8, R9 |
| 4 | 1.0K | Resistor_SMD:R_0805_2012Metric | R2, R4, R10, R12 |
| 4 | 10K | Resistor_SMD:R_0603_1608Metric | R13, R14, R16, R17 |
| 4 | 33nF | Capacitor_SMD:C_0805_2012Metric | C3, C4, C5, C6 |
| 2 | 100 | Resistor_SMD:R_1206_3216Metric | R1, R15 |
| 2 | LED | LED_THT:LED_D3.0mm | D1, D2 |
| 1 | 0.1uF/275VAC | Capacitor_THT:C_Rect_L24.0mm_W10.1mm_P22.50mm_MKT | C1 |
| 1 | 10-30mH | Inductor_THT:L_CommonMode_Toroid_Vertical_L19.3mm_W10.8mm_Px6.35mm_Py15.24mm_Bourns_8100 | L1 |
| 1 | 100nF | Capacitor_SMD:C_0402_1005Metric | C8 |
| 1 | 100uF | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C2 |
| 1 | 10uF | Capacitor_SMD:C_0402_1005Metric | C7 |
| 1 | 1A/250VAC | Fuse:Fuseholder_Clip-5x20mm_Bel_FC-203-22_Lateral_P17.80x5.00mm_D1.17mm_Horizontal | F1 |
| 1 | 24.9K | Resistor_SMD:R_1206_3216Metric | R11 |
| 1 | 3.3K | Resistor_SMD:R_0805_2012Metric | R3 |
| 1 | 560V | Varistor:RV_Disc_D12mm_W5mm_P7.5mm | RV1 |
| 1 | BL0940 | Package_SO:TSSOP-14_4.4x5mm_P0.65mm | U2 |
| 1 | Config_SW | Button_Switch_SMD:SW_SPST_B3SL-1022P | SW1 |
| 1 | Conn_01x06_Socket | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J3 |
| 1 | ESP-12F | RF_Module:ESP-12E | U1 |
| 1 | HLK-5M03 | Converter_ACDC:Converter_ACDC_Hi-Link_HLK-5Mxx | PS1 |
| 1 | PJ-102A | digikey-footprints:Barrel_Jack_5.5mmODx2.1mmID_PJ-102A | J2 |
| 1 | Screw_Terminal_01x02 | 1_Custom_Library:1x2P_5.00_Screw_Terminal_Block | J1 |
| 1 | ZMPT107-1 | 1_Custom_Library:ZMPT107-1 | TR1 |

alejomancinelli/FCEIA_ProyectoFinal
Proyecto Final de Ing. Electrónica: Sistema de monitoreo de red eléctrica doméstica y/o industrial

alejomancinelli/FCEIA_ProyectoFinal
Proyecto Final de Ing. Electrónica: Sistema de monitoreo de red eléctrica doméstica y/o industrial

alejomancinelli/FCEIA_ProyectoFinal
Proyecto Final de Ing. Electrónica: Sistema de monitoreo de red eléctrica doméstica y/o industrial

alejomancinelli/FCEIA_ProyectoFinal
Proyecto Final de Ing. Electrónica: Sistema de monitoreo de red eléctrica doméstica y/o industrial

alejomancinelli/FCEIA_ProyectoFinal
Proyecto Final de Ing. Electrónica: Sistema de monitoreo de red eléctrica doméstica y/o industrial

alejomancinelli/FCEIA_ProyectoFinal
Proyecto Final de Ing. Electrónica: Sistema de monitoreo de red eléctrica doméstica y/o industrial

CtrlAltJon/PeterThePowerMeter
IoT Power Meter for real-time energy monitoring. Includes a local color display, acoustic alarms, and a web interface for smart home integration (Home Assistant/MQTT).

jibrilsharafi/EnergyMe-Home
Smart energy meter capable of monitoring up to 16 channels. Supports MQTT, REST API, Modbus TCP, InfluxDB, AWS IoT Core. Friendly UI and fully open source (PCB, schematics, components, source code)


xrayer2000/MashMachine
My own built brewing system for making wonderful beer at home


Qeteshpony/MainsFrequencyMonitor
Single board solution to power an ESP32 and use it to measure the mains frequency through an optoisolator

pablozg/freeds
Derivador de energía solar excedente creado por Pablo Zerón, Diseño PCB por Amcalo, Tester original por Aeizoon, Wiki por Zoilo Mora

It measures 128 × 58.8 mm and has 2 copper layers, 1.6 mm thick.
44 parts, built around the ESP-12F, HLK-5M03, BL0940 and PJ-102A. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the alejomancinelli/FCEIA_ProyectoFinal repository on GitHub, at the commit this page was made from: the board is KiCad/sensor_energia_bl0940_v1/sensor_energia_bl0940.kicad_pcb and its schematic KiCad/AC220vtoDC3v3/AC220vtoDC3v3.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask alejomancinelli before reusing the design.