
ECG
JuanIDK201/emg-deeplearning-bci-controller
Biomedical EMG/ECG Acquisition Circuit, Keras Deep Learning Classifier, and Wireless Robotic Actuation

Biomedical EMG/ECG Acquisition Circuit, Keras Deep Learning Classifier, and Wireless Robotic Actuation
EMG is an open-source printed circuit board by JuanIDK201, from the JuanIDK201/emg-deeplearning-bci-controller repository on GitHub, published under the MIT licence. It is a 2-layer board of 209.5 × 204.7 mm with 144 parts on 31 nets, routed with 1,088 tracks and 0 vias.
It is built around the TL082 and TL084. Its parts include 48 resistors, 24 capacitors, 12 ICs, 8 diodes and 8 connectors.
EMG Deep Learning BCI Controller is an end-to-end biomedical engineering and Human-Machine Interface (HMI / BCI) system. It acquires biological biopotential signals (Electromyography - EMG and Electrocardiography - ECG), processes and extracts spectral harmonic features, performs real-time neural network classification using TensorFlow / Keras, and wirelessly triggers robotic actuators and mobile vehicles.
The system encompasses custom analog hardware design in KiCad (instrumentation amplification, bandpass filtering, 60 Hz notch filtering, and envelope detection), ESP32 firmware streaming digitized ADC data via WebSockets and Zeroconf (mDNS), and a sleek CustomTkinter dark-mode operator console.
graph TD
A["Surface Electrodes (Ag/AgCl)"] --> B["Analog Front-End PCB (INA + Active Filters + Notch 60Hz + Envelope)"]
B --> C["ESP32 Dual-Channel ADC (12-bit, DMA/ISR Sampling)"]
C -->|"WebSockets / mDNS Zeroconf (_esp32emgdual._tcp.local)"| D["Python Desktop Host (CustomTkinter)"]
D --> E["Feature Extraction (FFT Fundamental + H2/H3/H4 Harmonics + Envelope)"]
E --> F["TensorFlow / Keras Neural Network (.keras Model)"]
F -->|"Class: Inactive / Forearm Active / Gastrocnemius Active"| G{"Intention Decision Engine"}
G -->|"Actuation Packets over Wi-Fi"| H["ESP32 Motor Driver Node / Robotic Car"]
D --> I["Real-time Signal Visualization & CSV Data Logger"]modelo_emg.keras, modelo_emg_con_pin.keras) classifying muscle activation states in 50 ms sliding inference windows.ESP32-Carrito).| Component | Technologies |
|---|---|
| AI & Software | Python 3.9+, TensorFlow 2.x, Keras, CustomTkinter, NumPy, Pandas, SciPy, Zeroconf, WebSocket-Client |
| Firmware & IoT | ESP32, Arduino C++, FreeRTOS, WebSockets Server, mDNS |
| Electronics (EDA) | KiCad (EMG/ECG Schematic & 2-Layer PCB Layout, Gerber exports) |
emg-deeplearning-bci-controller/
src/
gui/ # Desktop interfaces
emg_controller_motor_app.py # Main CustomTkinter UI + TF inference + motor control
emg_gui_app.py # Standalone monitoring GUI
emg_gui_con_pines.py # Pin-specific acquisition GUI
deep_learning/ # Neural network models and inference
inference_keras_model.py
threshold_classifier.py
modelo_emg.keras
modelo_emg_con_pin.keras
signal_processing/ # Data logging and exploration
emg_signal_logger.py
emg_data_exploration.ipynb
firmware/
esp32_emg_acquisition/ # ESP32 EMG sampling firmware (Single/Dual channel)
esp32_robotic_car/ # ESP32 motor receiver firmware
hardware/
kicad_emg/ # Complete KiCad project for EMG analog front-end
kicad_ecg/ # Complete KiCad project for ECG front-end
schematics/ # PDF electrical schematics (V2.pdf)
docs/ # Lab presentation and biomedical documentation
requirements.txt
.gitignore
LICENSE
README.mdgit clone https://github.com/JuanIDK201/emg-deeplearning-bci-controller.git
cd emg-deeplearning-bci-controller
python -m venv venv
venv\Scripts\activate
pip install -r requirements.txtpython src/gui/emg_controller_motor_app.pyJuan Garzón
Biomedical & Embedded Systems Engineer
This project is licensed under the MIT License - see the LICENSE file for details.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 48 | R_Small | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P15.24mm_Horizontal | R1, R1, R1, R1, R10, R10, R10, R10, R11, R11, R11, R11, R12, R12, R12, R12 +32 |
| 24 | MountingHole_Pad | MountingHole:MountingHole_2.2mm_M2_DIN965_Pad | H1, H1, H1, H1, H2, H2, H2, H2, H3, H3, H3, H3, H4, H4, H4, H4 +8 |
| 16 | C_Small | Capacitor_THT:C_Axial_L5.1mm_D3.1mm_P7.50mm_Horizontal | C1, C1, C1, C1, C2, C2, C2, C2, C3, C3, C3, C3, C4, C4, C4, C4 |
| 8 | 1N4148 | Diode_THT:D_DO-35_SOD27_P7.62mm_Horizontal | D1, D1, D1, D1, D2, D2, D2, D2 |
| 8 | C_Polarized | Capacitor_THT:CP_Radial_D6.3mm_P2.50mm | C5, C5, C5, C5, C6, C6, C6, C6 |
| 8 | R_Potentiometer | Potentiometer_THT:Potentiometer_Bourns_3296W_Vertical | RV1, RV1, RV1, RV1, RV2, RV2, RV2, RV2 |
| 4 | AD620 | Package_DIP:DIP-8_W7.62mm_LongPads | U1, U1, U1, U1 |
| 4 | AudioJack3 | Connector_Audio:Jack_3.5mm_CUI_SJ1-3513N_Horizontal | J1, J1, J1, J1 |
| 4 | Jumper_2_Bridged | TestPoint:TestPoint_2Pads_Pitch5.08mm_Drill1.3mm | JP1, JP1, JP1, JP1 |
| 4 | Screw_Terminal_01x03 | TerminalBlock_Philmore:TerminalBlock_Philmore_TB133_1x03_P5.00mm_Horizontal | J2, J2, J2, J2 |
| 4 | TL082 | Package_DIP:DIP-8_W7.62mm_LongPads | U3, U3, U3, U3 |
| 4 | TL084 | Package_DIP:DIP-14_W7.62mm_Socket_LongPads | U2, U2, U2, U2 |
| 4 | TestPoint_2Pole | TestPoint:TestPoint_2Pads_Pitch5.08mm_Drill1.3mm | TP1, TP1, TP1, TP1 |
| 4 | TestPoint_2Pole | TestPoint:TestPoint_Bridge_Pitch5.08mm_Drill0.7mm | TP2, TP2, TP2, TP2 |

JuanIDK201/emg-deeplearning-bci-controller
Biomedical EMG/ECG Acquisition Circuit, Keras Deep Learning Classifier, and Wireless Robotic Actuation



fmirandabonomi/pcb_antena_vlf
# Antena VLF, Laboratorio de Telecomunicaciones FACET UNT



lpires211002/CHIDORI_Proyecto_final_de_carrera
Repositorio de Chidori, medidor de bioimpedancia como PFC.


It measures 209.5 × 204.7 mm and has 2 copper layers, 1.6 mm thick.
144 parts, built around the TL082 and TL084. 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 JuanIDK201/emg-deeplearning-bci-controller repository on GitHub, at the commit this page was made from: the board is hardware/kicad_emg/EMG.kicad_pcb and its schematic hardware/kicad_ecg/ECG.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).