
NodoVibracionesSMD
Mario-dango/VibraNet
Proyecto de investigación sobre una red de nodos receptores de vibraciones mediante wifi

Proyecto de investigación sobre una red de nodos receptores de vibraciones mediante wifi
NodoVibraciones is an open-source printed circuit board by Mario-dango, from the Mario-dango/VibraNet repository on GitHub, published under the MIT licence. It is a 2-layer board of 60.2 × 39.9 mm with 33 parts on 24 nets, routed with 144 tracks and 6 vias.
It is built around the ESP-07 and AMS1117-3.3. Its parts include 11 resistors, 5 capacitors, 5 diodes, 3 ICs and 3 connectors. It belongs with the radio and wireless boards and the ESP8266 boards of this library.
Monitoreo de vibraciones/sismos en edificación universitaria con nodos ESP8266 + MPU6050, backend Node-RED/Mosquitto/MySQL en Ubuntu Server.
Objetivo general: validar la factibilidad y el error objetivo (≤10%) mediante prototipado, pruebas y calibración.
flowchart LR
%% IDs simples (A–Z, 0–9, _), solo ASCII. Sin <br/> ni comillas curvas.
subgraph Capa_Nodos_4_10
A1["ESP8266 / ESP-01\nMPU6050 (GY-521)"] -->|MQTT QoS1| BRK[(Mosquitto)]
A2["ESP8266 / ESP-01\nMPU6050 (GY-521)"] -->|MQTT QoS1| BRK
end
BRK --> NR["Node-RED\nFlows + Dashboards"]
NR --> DB[(MySQL)]
NR --> A[Alertas / Notificaciones]
%% Estilo básico para infra
classDef infra fill:#eeeeee,stroke:#333333,stroke-width:1px;
class BRK,DB infra;Notas:
.
├─ firmware/ # Código ESP8266 (ESP-01) + MPU6050
├─ src/
└─ include/
├─ design/ # 3D models
│ ├─ Acoples/
│ ├─ Accesorios/
│ └─ Impresiones 3D/
├─ PCB/
│ └─ Diseño de módulo
├─ docs/
│ ├─ arquitectura.md
│ ├─ calibracion.md
│ └─ o&m.md
└─ README.mdIntención: lectura de aceleraciones/giroscopio, timestamp NTP, buffer local, MQTT QoS1 con reconexión y LWT, watchdog, empaquetado JSON/CBOR.
Supuestos de diseño:
Esqueleto de payload (JSON):
{
"node_id": "FACMED-03",
"ts_unix_ms": 1733345678901,
"ax": -0.0123, "ay": 0.0045, "az": 1.0012,
"gx": 0.12, "gy": -0.05, "gz": 0.02,
"vbat": 3.94, "temp": 28.4, "seq": 15231
}Tópicos MQTT:
sismo/nodo/<node_id>/datos (QoS1, no retenido)
sismo/nodo/<node_id>/estado (QoS1, retenido) # heartbeats
sismo/nodo/<node_id>/lwt (QoS1, retenido) # Last Will
sismo/cmd/<node_id> (QoS1) # controlCriterios de prueba rápida:
Intención: broker central con TLS, usuarios/ACL y LWT.
# deploy/mqtt/mosquitto.conf (resumen)
listener 8883
cafile /etc/mosquitto/certs/ca.crt
certfile /etc/mosquitto/certs/server.crt
keyfile /etc/mosquitto/certs/server.key
require_certificate false
allow_anonymous false
password_file /etc/mosquitto/passwd
acl_file /etc/mosquitto/acl
persistence true
persistence_location /var/lib/mosquitto/ACL mínimo de ejemplo:
user nodo01
topic write sismo/nodo/nodo01/#
topic read sismo/cmd/nodo01
user nodered
topic read sismo/nodo/+/datos
topic read sismo/nodo/+/estado
topic read sismo/nodo/+/lwt
topic write sismo/cmd/+Intención: ingestión MQTT, cálculo de KPIs (PGA/PGV), alarmas y dashboard.
KPIs sugeridos: PGA, PGV, espectros de respuesta 5% amort.
Entrega: flujos exportables en backend/nodered/flows/*.json.
Intención: persistencia de series temporales y metadatos.
-- backend/db/schema.sql (resumen)
CREATE TABLE nodes (
id VARCHAR(32) PRIMARY KEY,
alias VARCHAR(64),
location VARCHAR(128),
installed_at DATETIME,
active TINYINT DEFAULT 1
);
CREATE TABLE samples (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
node_id VARCHAR(32) NOT NULL,
ts_unix_ms BIGINT NOT NULL,
ax FLOAT NOT NULL, ay FLOAT NOT NULL, az FLOAT NOT NULL,
gx FLOAT, gy FLOAT, gz FLOAT,
vbat FLOAT, temp FLOAT, seq BIGINT,
KEY k_node_ts (node_id, ts_unix_ms),
CONSTRAINT fk_samples_node FOREIGN KEY (node_id) REFERENCES nodes(id)
);
CREATE TABLE events (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
started_at DATETIME NOT NULL,
ended_at DATETIME,
max_pga FLOAT, max_pgv FLOAT, note VARCHAR(255)
);Criterios de prueba rápida:
# deploy/docker-compose.yml
version: "3.9"
services:
mosquitto:
image: eclipse-mosquitto:2
ports: ["1883:1883", "8883:8883"]
volumes:
- ./mqtt/mosquitto.conf:/mosquitto/config/mosquitto.conf:ro
- ./mqtt/certs:/etc/mosquitto/certs:ro
- mosq_data:/var/lib/mosquitto
nodered:
image: nodered/node-red:latest
ports: ["1880:1880"]
environment:
- TZ=America/Argentina/Mendoza
volumes:
- ./nodered/data:/data
mysql:
image: mysql:8
environment:
- MYSQL_ROOT_PASSWORD=changeme
- MYSQL_DATABASE=sismo
ports: ["3306:3306"]
volumes: [ "mysql_data:/var/lib/mysql" ]
volumes: { mosq_data: {}, mysql_data: {} }nodo, nodered, ops.Licencia MIT.
sequenceDiagram
autonumber
participant MPU as MPU6050
participant MCU as ESP8266 (ESP-01)
participant BRK as Mosquitto
participant NR as Node-RED
participant DB as MySQL
MPU->>MCU: Lectura ax,ay,az,gx,gy,gz @fs
MCU->>MCU: Timestamp NTP + empaquetado JSON
MCU->>BRK: PUBLISH sismo/nodo/<id>/datos (QoS1)
BRK-->>NR: FORWARD mensaje
NR->>DB: INSERT muestras
NR-->>NR: KPIs (PGA/PGV) + alarmasCómo usar este README
- Adaptá el
docker-compose.ymla tu servidor.- Importá los flujos Node-RED y conectá al broker y DB.
- Flasheá el firmware del ESP-01 con tus credenciales WiFi/MQTT.
- Corré pruebas de red, ingestión y calibración hasta cumplir el ≤10% de error.
Medical References:
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R2, R4, R7, R11 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | LED | LED_THT:LED_D5.0mm | D1, D3, D4 |
| 2 | 102 | Capacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mm | C2, C3 |
| 2 | 10uf | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C1, C5 |
| 2 | 4k7 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R9, R10 |
| 1 | 100k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R8 |
| 1 | 10k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R3 |
| 1 | 10uF | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C4 |
| 1 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D5 |
| 1 | 1N5817 | Diode_THT:D_DO-41_SOD81_P10.16mm_Horizontal | D2 |
| 1 | 1k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R5 |
| 1 | 330k | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R6 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U3 |
| 1 | ESP-07 | RF_Module:ESP-07 | U1 |
| 1 | Jumper_Boot | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP1 |
| 1 | MPU6050 | Connector_PinSocket_2.54mm:PinSocket_1x08_P2.54mm_Vertical | J4 |
| 1 | SW_Push | Button_Switch_THT:SW_PUSH_6mm_H4.3mm | SW2 |
| 1 | UART | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J2 |
| 1 | batería | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Horizontal | J1 |
| 1 | module_mpu6050 | USINI_sensors:module_mpu6050 | U2 |

Mario-dango/VibraNet
Proyecto de investigación sobre una red de nodos receptores de vibraciones mediante wifi


ezcGman/tiny-power-meter
A very tiny 3-phase power meter to measure your homes power consumption and report to Home Assistant!


Solderingironspb/ModbusRTU_Master_MQTT_Gateway
Данное устройство выступает мастером сети ModbusRTU. Обменивается данными с подчиненными устройствами (до 247 устройств на линии RS485).

morynicz/WaterLevelDetector
PCB for detection of remaining rainwater for garden watering.

kwiecinski/BMS-and-offgrid-photovoltaic-management-system
Project contains BMS for lead-acid batteries and ESP-based board used to pull information from EASUN offgrid inverter, energy meters and sensors.

GonzaCerv/noah-hardware
This repo contains all the hardware description for the Noah project. Here lies 3D models, electronics PCB and Firmware software of the robot.
It measures 60.2 × 39.9 mm and has 2 copper layers, 1.6 mm thick.
33 parts, built around the ESP-07 and AMS1117-3.3. 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 Mario-dango/VibraNet repository on GitHub, at the commit this page was made from: the board is PCB/NodoVibraciones/NodoVibraciones.kicad_pcb and its schematic PCB/NodoVibraciones/NodoVibraciones.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).