Skip to the content
PCBKitNew board
2 layers112 × 47.5 mmCircuito obrero-1, the printed circuit board in 3D

Circuito obrero-1

Sublevar/obrero-1

Secuenciador MIDI de pasos en Rust, con doble target: ESP32 (MIDI DIN por UART) y web (WASM + Web MIDI API). Toda la lógica vive en un core portable; las plataformas solo aportan tiempo e I/O.

Size
112 × 47.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
30
Nets
21
Pads
102
Tracks, vias
289, 0
Pours
41
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
23 Dec 2025
Updated
8 Oct 2026

Overview

Circuito obrero-1 is an open-source printed circuit board by Sublevar, from the Sublevar/obrero-1 repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 112 × 47.5 mm with 30 parts on 21 nets, routed with 289 tracks and 0 vias.

It is built around the 74HC165D. Its parts include 12 resistors and 2 ICs.

Main components

1

README

README.md

obrero-1

Secuenciador MIDI de pasos en Rust, con doble target: ESP32 (MIDI DIN por UART) y web (WASM + Web MIDI API). Toda la lógica vive en un core portable; las plataformas solo aportan tiempo e I/O.

Arquitectura

text
crates/obrero-core    Motor sans-io: parser MIDI, patrón, transporte, reloj 24 PPQN.
                      Sin threads ni I/O — la plataforma llama advance(now, lookahead)
                      y recibe eventos MIDI timestampeados. Testeable en host.
crates/obrero-wasm    Bindings wasm-bindgen del motor para el navegador.
web/                  UI TypeScript (vite): grilla de pasos, Web MIDI, scheduler
                      con lookahead de 100 ms y send timestampeado.
firmware/             Binario ESP32 (esp-idf-svc, toolchain xtensa propio).
                      Excluido del workspace raíz — se compila aparte.
  • Reloj interno (master, emite 0xF8/Start/Stop) o externo (esclavo de MIDI clock entrante).
  • Resolución interna 24 PPQN = MIDI clock; un paso de semicorchea = 6 ticks.
  • MIDI-DIN.md documenta el hardware DIN (6N137, UART2 a 31250 bps).

Workspace raíz (stable)

sh
# Tests del motor (host)
cargo test -p obrero-core

<<<<<<< HEAD
# Build WASM
cargo build -p obrero-wasm --target wasm32-unknown-unknown

Web

Requiere wasm-pack (cargo install wasm-pack) y Node.

sh
cd web
npm install
npm run wasm   # compila crates/obrero-wasm → web/src/pkg
npm run dev    # http://localhost:5173 (Web MIDI requiere Chrome/Edge)

Elegí una salida MIDI (sintetizador, DAW o loopback virtual) y dale Play. Para modo esclavo, seleccioná una entrada MIDI y reloj "Externo".

Firmware ESP32

Tiene su propio toolchain (esp, fork Xtensa — ver firmware/rust-toolchain.toml) y ESP-IDF v5.3.3 via embuild.

sh
# Setup (una vez)
cargo install espup && espup install
source ~/export-esp.sh   # agregar al perfil de shell
cargo install espflash

cd firmware
<<<<<<< HEAD
cargo build      # primera build descarga ESP-IDF en .embuild/ — tarda
./dev.sh         # build + flash + monitor serial
=======
# Build + flash + monitor serial (todo junto)
./dev.sh

======= cargo build # primera build descarga ESP-IDF en .embuild/ — tarda ./dev.sh # build + flash + monitor por el conector UART del devkit ./dev.sh -p /dev/ttyUSB1 # elegir puerto serie a mano ./dev.sh -m esp32 # flashear el binario de la board ESP32 clásica

text
`dev.sh -m` solo elige qué directorio de target flashear — el chip compilado lo define `.cargo/config.toml`.

### USB-MIDI + debug serial (dos cables)

El firmware S3 levanta TinyUSB (componente `espressif/esp_tinyusb`, ver
`Cargo.toml` y `CONFIG_TINYUSB_MIDI_COUNT` en `sdkconfig.defaults`) sobre el
puerto **USB nativo** (GPIO19/20), que enumera como dispositivo USB-MIDI.
Los logs y el flasheo van por el conector **UART** (bridge USB-UART → UART0),
así que conviene tener ambos cables conectados: `dev.sh` flashea y monitorea
solo por `/dev/ttyUSB*` y deja el `/dev/ttyACM*` (USB nativo) libre para MIDI.

Al usar USB-OTG se pierde el USB-Serial-JTAG del puerto nativo (comparten PHY);
el debug queda en el conector UART. TinyUSB no compila para el ESP32 clásico
(no tiene USB-OTG): para ese chip hay que comentar el bloque
`extra_components` en `firmware/Cargo.toml`.

>>>>>>> e3618c6 (fmt)
Flasheo manual según target activo:

```sh
# ESP32 (rev1)
espflash flash target/xtensa-esp32-espidf/debug/obrero-1 && espflash monitor

# ESP32-S3
espflash flash target/xtensa-esp32s3-espidf/debug/obrero-1 && espflash monitor
>>>>>>> 56ef925 (entorno esp32s3)

Entorno de testeo

Web MIDI Tester

Licencia

GPL-3.0-or-later — © 2026 Pablo Labarta pablitolabarta@gmail.com & Santiago Fernandez stfg.prof@gmail.com.

Parts

30
QtyValueFootprintReferences
1210kResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_HorizontalR1, R2, R3, R4, R5, R6, R7, R8, R9, R10, R11, R12
60Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontalpuente1, puente2, puente3, puente4, puente5, puente6
6Conn_01x05Connector_JST:JST_EH_B5B-EH-A_1x05_P2.50mm_VerticalJ_in_encoder1, J_in_encoder2, J_in_encoder3, J_in_encoder4, J_in1, J_out1
4MountingHoleMountingHole:MountingHole_3.2mm_M3_DIN965H1, H2, H3, H4
274HC165Package_DIP:CERDIP-16_W7.62mm_SideBrazed_LongPads_SocketU1, U2

Questions

How big is the Circuito obrero-1 PCB?

It measures 112 × 47.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Circuito obrero-1 use?

30 parts, built around the 74HC165D. 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 Circuito obrero-1 KiCad files?

From the Sublevar/obrero-1 repository on GitHub, at the commit this page was made from: the board is pcbs/pcb_encoders/circuito_obrero-1.kicad_pcb and its schematic pcbs/pcb_encoders/circuito_obrero-1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Circuito obrero-1 design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers181 × 97 mmOpenDeck r3.1.2, the printed circuit board in 3D

    OpenDeck r3.1.2

    shanteacontrols/OpenDeck

    A platform for building interactive control and sensing devices using MIDI and OSC built with Zephyr RTOS.

    262 parts960Apache-2.0
  • 2 layers245.1 × 160 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64x4-Home-Computer

    My DIY TTL home computer with VGA and PS/2 and 4x the processing power of a Commodore C64 or Apple II.

    139 parts326
  • 2 layers191.8 × 121.3 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-UART-Computer-1-2

    Legacy: Version 1 and 2 of my TTL-only CPU featuring UART I/O, an expansion port, 512KB SSD at up to 10MHz clock speed

    109 parts184
  • 2 layers135.9 × 87 mmPfm3 ctrl, the printed circuit board in 3D

    Pfm3 ctrl

    Ixox/preenfm3

    Official repo of the preenfm3 FM synth

    65 parts127
  • 2 layers171.5 × 106.7 mmSequencer, the printed circuit board in 3D

    Sequencer

    westlicht/performer-hardware

    PER|FORMER Eurorack Sequencer - Hardware Design Files

    435 parts110
  • 2 layers306.1 × 130.2 mm8-Bit CPU 32k, the printed circuit board in 3D

    8-Bit CPU 32k

    slu4coder/Minimal-64-Home-Computer

    Legacy: Full TTL-only home computer with VGA and PS/2 and twice the processing power of a Commodore 64

    132 parts94
  • 2 layers215.9 × 20.3 mmKeybed, the printed circuit board in 3D

    Keybed

    friggeri/keyboard

    28 parts69
  • 2 layers300 × 105 mmTR-808-Clone, the printed circuit board in 3D

    TR-808-Clone

    minisystem/880

    A Euroack drum machine

    1,078 parts67