Skip to the content
2 layers128 × 58.8 mmSensor energia bl0940, the printed circuit board in 3D

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

Size
128 × 58.8 mm
Copper layers
2
Thickness
1.6 mm
Parts
44
Nets
47
Pads
129
Tracks, vias
212, 39
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
14 Jul 2024
Updated
17 Jul 2025

Overview

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.

Main components

5

README

README.md

FCEIA_ProyectoFinal

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.

Imagen del gabinete prototipo

Imagen de los prototipos

Configuración del ESP8266

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:

  1. 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.

  2. 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.

  3. Seleccionar el módulo ESP8266 que se esté utilizando. En este caso, seleccionar NodeMCU 1.0 (ESP-12E Module).

  4. Dirigirse a Herramientas -> Puerto y selecciona el puerto correspondiente al dispositivo.

Instalación de librerías

Es necesario instalar las siguientes librerías en el IDE de Arduino:

  • LittleFS
  • WiFiUdp
  • ESPAsyncWebServer
  • ESPAsyncTCP
  • PubSubClient
  • NTPClient
  • ArduinoJson

LittleFS

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.

Filesystem Uploader

Antes de continuar, es necesario tener instalado el complemento ESP8266 Uploader Plugin en el IDE de Arduino.

Raspberry Pi Model 3 B+

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 MQTT Broker

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

text
sudo apt-get update && sudo apt-get upgrade

2) Instalar el broker Mosquitto

text
sudo apt install -y mosquitto mosquitto-clients

3) Ejecutar el sigiuente comando para abrir el archivo mosquitto.conf

text
sudo nano /etc/mosquitto/mosquitto.conf

4) Ir al final del archivo utilizando las flechas del teclado y pegar las siguientes dos líneas

text
listener 1883
allow_anonymous true

Esto 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):

text
sudo systemctl enable mosquitto.service

Mosquitto también puede ejecutarse en segundo plano. Esto debe hacerse cada vez que se enciende la Raspberry Pi.

text
mosquitto -d

Se puede comprobar que todo funciona correctamente creando un publicador y un suscriptor en terminales separadas:

text
mosquitto_sub -d -t testTopic
text
mosquitto_pub -d -t testTopic -m "Hello world!"

SQLite

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:

text
sudo apt-get install sqlite3

2) Crear una base de datos en el directorio actual

text
sqlite3 
sqlite> .save nombre_de_la_base_de_datos.db
sqlite> .quit

Tablas utilizadas:

db_raw_data
ColumnTypeDescription
idINTEGERPrimary key, auto-incrementing
datetimeTEXTTimestamp of the data (YYYY-MM-DD hh:mm:ss)
voltage_rmsNUMERICRoot Mean Square (RMS) voltage
current_rmsNUMERICRoot Mean Square (RMS) current
active_powerNUMERICActive power measurement
active_energyNUMERICCumulative active energy
power_factorNUMERICPower factor
db_alarm_settings
ColumnTypeDescription
keyTEXTPrimary key, unique setting identifier
valueFLOATNumeric value for the setting (e.g., threshold)
stateINTEGERCurrent state of the alarm (e.g., 0 for off, 1 for on)
db_alarm_historic
ColumnTypeDescription
idINTEGERPrimary key, auto-incrementing
datetimeTEXTTimestamp when the alarm occurred
alarmtypeTEXTType or name of the triggered alarm
valueFLOATValue that triggered the alarm
thresholdFLOATThe threshold value that was exceeded
db_mailing_list
ColumnTypeDescription
idINTEGERPrimary key, auto-incrementing
usernameTEXTUser's name
emailTEXTUser's email address

Node Red

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

text
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:

text
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:

text
sudo systemctl start nodered.service
sudo systemctl status nodered.service

Para 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:

text
sudo systemctl enable nodered.service

Ingresar 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:

text
npm install node-red-dashboard

Para 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:

text
npm install node-red-node-sqlite

4) Instalar las dependencias necesarias siguiendo los pasos:

  1. Abrir la interfaz web de Node-RED desde el navegador
  2. Hacer clic en el menú (las tres barras horizontales) en la esquina superior derecha.
  3. Seleccionar Manage palette (Gestionar paleta).
  4. Dirigirse a la pestaña Install (Instalar).
  5. En el cuadro de búsqueda, escribir el nombre de cada paquete y presiona Enter.
  6. Para cada paquete que aparece en la lista, hacer clic en el botón Install (Instalar) para agregarlo a tu Node-RED.

Los paquetes a instalar son:

  • node-red-contrib-cx-alarm-log (versión ~1.1.2)
  • node-red-contrib-ui-led (versión ~0.4.11)
  • node-red-dashboard (versión ~3.6.5)
  • node-red-node-email (versión ~3.0.2)
  • node-red-node-sqlite (versión ~1.1.0)
  • node-red-node-ui-table (versión ~0.4.3)
  • node-threshold-control (versión ~0.0.8)

Docker

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.

https://github.com/alejomancinelli/energyMeterDocker

Parts

44
QtyValueFootprintReferences
6TestPointTestPoint:TestPoint_Pad_D2.0mmTP1, TP2, TP3, TP4, TP5, TP6
520KResistor_SMD:R_1206_3216MetricR5, R6, R7, R8, R9
41.0KResistor_SMD:R_0805_2012MetricR2, R4, R10, R12
410KResistor_SMD:R_0603_1608MetricR13, R14, R16, R17
433nFCapacitor_SMD:C_0805_2012MetricC3, C4, C5, C6
2100Resistor_SMD:R_1206_3216MetricR1, R15
2LEDLED_THT:LED_D3.0mmD1, D2
10.1uF/275VACCapacitor_THT:C_Rect_L24.0mm_W10.1mm_P22.50mm_MKTC1
110-30mHInductor_THT:L_CommonMode_Toroid_Vertical_L19.3mm_W10.8mm_Px6.35mm_Py15.24mm_Bourns_8100L1
1100nFCapacitor_SMD:C_0402_1005MetricC8
1100uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC2
110uFCapacitor_SMD:C_0402_1005MetricC7
11A/250VACFuse:Fuseholder_Clip-5x20mm_Bel_FC-203-22_Lateral_P17.80x5.00mm_D1.17mm_HorizontalF1
124.9KResistor_SMD:R_1206_3216MetricR11
13.3KResistor_SMD:R_0805_2012MetricR3
1560VVaristor:RV_Disc_D12mm_W5mm_P7.5mmRV1
1BL0940Package_SO:TSSOP-14_4.4x5mm_P0.65mmU2
1Config_SWButton_Switch_SMD:SW_SPST_B3SL-1022PSW1
1Conn_01x06_SocketConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ3
1ESP-12FRF_Module:ESP-12EU1
1HLK-5M03Converter_ACDC:Converter_ACDC_Hi-Link_HLK-5MxxPS1
1PJ-102Adigikey-footprints:Barrel_Jack_5.5mmODx2.1mmID_PJ-102AJ2
1Screw_Terminal_01x021_Custom_Library:1x2P_5.00_Screw_Terminal_BlockJ1
1ZMPT107-11_Custom_Library:ZMPT107-1TR1

More from alejomancinelli/FCEIA_ProyectoFinal

6
  • 2 layers55 × 31.5 mmAdaptador bl0940, the printed circuit board in 3D

    Adaptador bl0940

    alejomancinelli/FCEIA_ProyectoFinal

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

    22 parts
  • 2 layers32 × 50.5 mmLoad Tester, the printed circuit board in 3D

    Load Tester

    alejomancinelli/FCEIA_ProyectoFinal

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

    21 parts
  • 2 layers42.2 × 18 mmCP2102 programmer, the printed circuit board in 3D

    CP2102 programmer

    alejomancinelli/FCEIA_ProyectoFinal

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

    20 parts
  • 2 layers65 × 40 mmESP8266 adapter, the printed circuit board in 3D

    ESP8266 adapter

    alejomancinelli/FCEIA_ProyectoFinal

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

    10 parts
  • 2 layers95 × 30 mmAC220vtoDC3v3, the printed circuit board in 3D

    AC220vtoDC3v3

    alejomancinelli/FCEIA_ProyectoFinal

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

    8 parts
  • 2 layersEsp8266 12f, the printed circuit board in 3D

    Esp8266 12f

    alejomancinelli/FCEIA_ProyectoFinal

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

    3 parts

Similar boards

  • 2 layers125.5 × 79 mmPeterThePowerMeter, the printed circuit board in 3D

    PeterThePowerMeter

    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).

    79 parts1MIT
  • 4 layers50 × 87 mmEnergyMe Home, the printed circuit board in 3D

    EnergyMe Home

    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)

    87 parts288GPL-3.0
  • 4 layers67 × 86 mmEnergymeter, the printed circuit board in 3D

    Energymeter

    jimmyw/energymeter

    122 parts5
  • 2 layers100.9 × 82 mmMashMachine V2.0, the printed circuit board in 3D

    MashMachine V2.0

    xrayer2000/MashMachine

    My own built brewing system for making wonderful beer at home

    62 parts1
  • 2 layers100 × 69.5 mmPanoboard2, the printed circuit board in 3D

    Panoboard2

    CapnKernel/panoboard2

    A new controller board for Panasonic bread makers

    76 parts
  • 2 layers65 × 50 mmMainsFrequencyMonitor, the printed circuit board in 3D

    MainsFrequencyMonitor

    Qeteshpony/MainsFrequencyMonitor

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

    38 partsBSD-2-Clause
  • 2 layers61 × 93 mmFreeDS P, the printed circuit board in 3D

    FreeDS P

    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

    21 parts108
  • 2 layers57.5 × 54.5 mmFuente, the printed circuit board in 3D

    Fuente

    scortua/DIIN_PROJECT

    Proyecto de cnc para vivero

    4 parts

Questions

How big is the Sensor energia bl0940 PCB?

It measures 128 × 58.8 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Sensor energia bl0940 use?

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.

Where can I download the Sensor energia bl0940 KiCad files?

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.

Can I use the Sensor energia bl0940 design in my own project?

Its repository states no licence, so its author keeps all rights: ask alejomancinelli before reusing the design.