

Opentouch s3
A modern remake of the Bare Conductive Touch Board: 12 capacitive touch electrodes, MP3/WAV/MIDI audio, and now WiFi, Bluetooth LE, USB-C, a proper LiPo power path, a fuel gauge, line-in, MIDI out, Qwiic and an RGB LED.
- Size
- 100 × 90 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 185
- Nets
- 116
- Pads
- 649
- Tracks, vias
- 1,670, 361
- Pours
- 9
- Routed
- Yes
- KiCad
- KiCad 7 (file 20221018)
- Created
- 30 Sep 2026
- Updated
- 15 Oct 2026
Overview
Opentouch s3 is an open-source printed circuit board by JoeMighty, from the JoeMighty/opentouch-s3 repository on GitHub. It is a 4-layer board of 100 × 90 mm with 185 parts on 116 nets, routed with 1,670 tracks and 361 vias.
It is built around the SN74LV1T125DBVR-TP, ESP32-S3-WROOM-1-N16R8 and MPR121QR2, with the SRV05-4-P-T7, BQ24074RGTR and MAX17048G+T10 among its other parts. Its parts include 54 resistors, 44 capacitors, 15 connectors, 10 diodes and 9 ICs. It belongs with the radio and wireless and audio and music boards and the ESP32 boards of this library.
Main components
12SN74LV1T125DBVR-TP
SOT-23-5-40℃~+125℃ 1 1 1.6V~5.5V 1uA 2.7ns@5V,15pF 74LV 8mA 8mA Power-off isolation、Output enable、Level shifting Tri-State Unidirectional SOT-23-5 Buffers, Drivers, Receivers, Transceivers ROHSTECH PUBLICBuffers, Drivers, Receivers, TransceiversESP32-S3-WROOM-1-N16R8
SMD,25.5x18mm-103.5dBm -40℃~+65℃ 2.4GHz 20.5dBm 355mA 3V~3.6V 95mA ESP32-S3R8 On-board PCB Antenna UART、SPI、I2C、GPIO、I2S、USB SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesMPR121QR2
QFN-20(3x3)-40℃~+85℃ 1.71V~3.6V 12 29uA 2kV 3uA Capacitive Touch QFN-20(3x3) Touch Sensors ROHSNXP SemiconductorsTouch SensorsSRV05-4-P-T7
SOT-23-612V 1A@8/20us 3.5pF 500W@8/20us 5V 5uA 6V ESD Four channels IEC 61000-4-2、IEC 61000-4-5、IEC 61000-4-4 SOT-23-6 ESD and Surge Protection (TVS/ESD) ROHSPROTEKESD And Surge Protection (TVS/ESD)BQ24074RGTR
QFN-16-EP(3x3)-40℃~+125℃ 1 1.5A 4.2V 4.35V~10.2V 6.5uA Charging IC Lithium Battery Not supported Support QFN-16-EP(3x3) Battery Management ROHSTexas InstrumentsBattery ManagementMAX17048G+T10
DFN-8-EP(2x2)-40℃~+85℃ 1 2.5V~4.5V 3uA I2C Lithium Battery Not supported Not supported DFN-8-EP(2x2) Battery Management ROHSMaxim Integrated (Analog Devices)Battery ManagementCC0603KRX7R9BB104
0603100nF 50V X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSYAGEOMultilayer Ceramic Capacitors MLCC - SMD/SMTCL21A106KAYNNNE
080510uF 25V X5R ±10% 0805 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSSamsung Electro-MechanicsMultilayer Ceramic Capacitors MLCC - SMD/SMTESD9B5.0ST5G
SOD-923(0402)-55℃~+125℃ 1 10V 15pF 5V 8.4V 80W@8/20us 80nA 8A@8/20us Bidirectional ESD IEC 61000-4-2、IEC 61000-4-5 SOD-923(0402) ESD and Surge Protection (TVS/ESD) ROHSTECH PUBLICESD And Surge Protection (TVS/ESD)0603B103K500NT
060310nF 50V X7R ±10% 0603 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSGuangdong Fenghua Advanced Tech (FH)Multilayer Ceramic Capacitors MLCC - SMD/SMTKF350-3.5-3P
插件,P=3.5mm-40℃~+105℃ 0.75 1 10A 18~24 1x3P 3 3.5mm 300V 3P Green Through Hole 插件,P=3.5mm Screw Terminal Blocks ROHSCixi Kefa ElecScrew Terminal BlocksCL31A107MQHNNNE
1206100uF 6.3V X5R ±20% 1206 Multilayer Ceramic Capacitors MLCC - SMD/SMT ROHSSamsung Electro-MechanicsMultilayer Ceramic Capacitors MLCC - SMD/SMT
README
README.mdOpenTouch S3
Rev B1 · an open hardware remake of the Bare Conductive Touch Board
Project page · Schematic · Fab files · Order it
A modern remake of the Bare Conductive Touch Board: 12 capacitive touch electrodes, MP3/WAV/MIDI audio, and now WiFi, Bluetooth LE, USB-C, a proper LiPo power path, a fuel gauge, line-in, MIDI out, Qwiic and an RGB LED.
Based on the Bare Conductive Touch Board open hardware files (CC BY-SA 3.0, https://github.com/BareConductive/touch_board_cad_files). This is an independent adaptation, not affiliated with or endorsed by Bare Conductive, and released under the same licence (CC BY-SA 3.0).
Status: Rev B1, design complete, not yet fabricated or tested. Read "Before you order" below.
What's in this repository
| Path | What it is |
|---|---|
hardware/kicad/ | KiCad 7 project: hierarchical schematic (5 sheets), 4-layer PCB |
hardware/kicad/lib/ | Project symbols (VS1053B, MAX17048, electrode pad) and the edge electrode footprint |
hardware/fab/OpenTouch_S3_gerbers_JLCPCB.zip | Gerbers + drill files, upload this to JLCPCB |
hardware/fab/OpenTouch_S3_BOM_JLCPCB.csv | Assembly BOM with LCSC part numbers (57 lines, 145 placed parts) |
hardware/fab/OpenTouch_S3_CPL_JLCPCB.csv | Pick-and-place file (rotations pre-corrected for JLCPCB) |
hardware/fab/OpenTouch_S3_BOM_full.csv | Full BOM including hand-fit (DNP) parts and notes |
hardware/fab/OpenTouch_S3_schematic.pdf | Schematic / wiring diagram |
hardware/gen/ | Python scripts that generate the schematic and PCB from one netlist (design.py) |
docs/index.html | Project page for GitHub Pages |
docs/renders/ | Board renders: top, bottom, inner GND plane, inner 3V3 plane, routing |
Project page
To publish the project page: repo Settings > Pages > Source: Deploy from a branch > Branch: main, folder /docs > Save.
It will appear at https://<your-username>.github.io/opentouch-s3/.
Board summary
- 100 x 90 mm, 4 layers (signal / GND plane / 3V3 plane / signal), 1.6 mm, ENIG recommended (the electrode pads are exposed)
- MCU: ESP32-S3-WROOM-1-N16R8 (16 MB flash, 8 MB PSRAM), native USB (CDC + MIDI capable), WiFi, Bluetooth LE. The module is pre-certified for radio (FCC / CE-RED / UKCA), so the board needs no intentional-radiator certification of its own.
- Touch: NXP MPR121 at I2C 0x5C (same address as the Touch Board), 12 electrodes on crocodile-clip pads, 3.5 mm screw terminals and a 2.54 mm header. Every electrode has ESD protection (SRV05-4).
- Audio: VS1053B. Headphone out (AC coupled, safe into any amplifier), stereo line-in (record to SD), microSD, real-time MIDI synth mode.
- Power: USB-C sink (5.1 k CC resistors, works with C-to-C cables), BQ24074 power-path charger (input OVP to 10.5 V, 1 A input limit, 500 mA charge, cut JP1 for 250 mA), JST-PH LiPo input with reverse polarity MOSFET and PTC fuse, TPS63001 buck-boost 3.3 V (runs the board across the whole LiPo range), MAX17048 fuel gauge (I2C 0x36). The power switch turns the board off while charging continues. External 4.5-10 V input on the VIN header pin.
- I/O: Arduino R3 header pattern (3.3 V logic, do not feed 5 V into IO pins), Qwiic / STEMMA QT, MIDI OUT on a 3.5 mm TRS type A jack (tip = MIDI pin 5, ring = pin 4, MMA CA-033 3.3 V signalling), WS2812B-2020 RGB LED, BOOT and RESET buttons, test points on every rail.
ESP32-S3 pin map
| Function | GPIO | Header |
|---|---|---|
| I2C SDA / SCL (MPR121, MAX17048, Qwiic) | IO8 / IO9 | D2 / D3 |
| MPR121 IRQ | IO10 | D4 |
| SPI MOSI / SCK / MISO (VS1053 + microSD) | IO11 / IO12 / IO13 | D11 / D13 / D12 |
| microSD CS | IO14 | |
| VS1053 XCS / XDCS / DREQ / XRESET | IO15 / IO16 / IO17 / IO46 | |
| Serial MIDI into VS1053 (close JP5) | IO18 | |
| MIDI OUT (UART TX) | IO47 | |
| RGB LED (WS2812B) | IO48 | |
| L LED | IO45 | |
| USB power present (PGOOD, active low) | IO21 | |
| A0 A1 A2 A3 A4 A5 (ADC1, also ESP32 touch pins) | IO1 IO2 IO4 IO5 IO6 IO7 | A0-A5 |
| D0 RX / D1 TX | IO44 / IO43 | D0 / D1 |
| D5 D6 D7 D8 D9 D10 | IO3 IO41 IO42 IO38 IO39 IO40 | |
| BOOT button | IO0 |
Strapping pins are handled: IO0 has the BOOT button, IO45 drives an LED to ground (low at boot), IO46 holds the VS1053 in reset through a 100 k pull-down (low at boot), IO3 is only used as a plain digital pin.
Solder jumpers
| Jumper | Default | Change |
|---|---|---|
| JP1 | bridged: 500 mA charge | cut for 250 mA (small cells under 500 mAh) |
| JP2 | bridged: no battery thermistor | cut when you fit a 10 k NTC to J2 |
| JP3 | 1-2: power-save mode | 2-3: forced PWM, lowest audio noise, slightly higher idle current |
| JP4 | open | close to boot the VS1053 into real-time MIDI synth mode |
| JP5 | open | close to send serial MIDI from IO18 into the VS1053 |
Ordering at JLCPCB
- Upload
OpenTouch_S3_gerbers_JLCPCB.zip. Choose 4 layers, 1.6 mm, ENIG surface finish (for the touch pads), any mask colour. - Enable PCB Assembly, top side. Upload the BOM and CPL files.
- Check the part placement preview. Rotations were corrected for JLCPCB's conventions, but always confirm pin 1 on the ICs (U2, U3, U4, U5, U6, U10) and the connectors before confirming.
- The Arduino headers (J13-J16), the touch header (J9) and the NTC header (J2) are left unfitted on purpose. Solder them yourself if you want them.
- Stock note: the 12.288 MHz crystal (Y1, NX3225GA) has low stock at LCSC. Any 3.2 x 2.5 mm 12.288 MHz crystal with 8 pF load works (e.g. ABM8-12.288MHZ-8-D1X-T). With a different load capacitance change C18/C19 to 2 x (CL - 3 pF).
First power-up
- Before connecting anything, measure resistance from 3V3 (TP2) and VSYS (TP1) to GND (TP4). Both should read well above 100 ohms.
- Plug in USB-C with the switch ON: the green PWR LED lights, TP2 reads 3.3 V, TP1 about 4.4 V. With a battery attached the yellow CHG LED shows charging.
- The ESP32-S3 appears as a USB serial device. If it doesn't, hold BOOT, tap RESET, release BOOT.
Before you order
- Open it in KiCad and review the layout. The board was placed by script and routed with Freerouting plus scripted
repairs. KiCad's DRC reports 0 unconnected pads and 0 clearance, hole or edge errors, and the PCB, schematic and
design.pynetlist agree on all 609 pads. Some routes are longer than a hand layout would be, so it is worth a look, especially the 3.3 V buck-boost loop (U4, L1, C8-C10) and the USB D+/D- pair. - Remaining DRC warnings are cosmetic: silkscreen touching silkscreen or pads (pads are cleared automatically in the Gerbers), edge-connector outlines crossing the board edge, and courtyard overlaps between the interlocking screw terminals.
- Input current limit is about 1 A. From a laptop USB-A port (500 mA) with WiFi busy and a battery charging, the port may current-limit. Use a USB-C charger, or cut JP1 to halve the charge current.
- The
5Vheader pin is USB VBUS. Don't power the board through it; useVIN(4.5-10 V) instead. - Confirm which slide-switch position is ON with the green PWR LED; the silkscreen only says POWER.
Software
Arduino IDE with the Espressif ESP32 core (board: "ESP32S3 Dev Module", USB CDC On Boot enabled, PSRAM "OPI PSRAM", flash 16 MB). Libraries that work with this pin map:
- Touch: Bare Conductive MPR121 library or Adafruit_MPR121 (address 0x5C, IRQ on IO10).
- Audio: Adafruit_VS1053 with
Adafruit_VS1053_FilePlayer player(46, 15, 16, 17, 14);(reset, CS, DCS, DREQ, card CS). CallSPI.begin(12, 13, 11)first so the ESP32 uses this board's SPI pins. - Fuel gauge: SparkFun MAX1704x or Adafruit_MAX1704X.
- RGB LED: Adafruit_NeoPixel or FastLED on IO48.
- MIDI out: Arduino MIDI library on
Serial1with TX mapped to IO47 (31250 baud). - USB MIDI: the ESP32-S3 USB stack (TinyUSB) can present the board as a class-compliant USB MIDI device.
Touch Board sketches port mostly by changing pin numbers: the MPR121 address and electrode numbering are unchanged.
Regenerating the design
hardware/gen/design.py is the single source of truth (every part, value, LCSC number and pin-to-net mapping).
make_sch.py writes the schematic, make_pcb.py places the board, pipeline.sh runs autorouting and repairs,
export_fab.py writes the JLCPCB files. The scripts need KiCad 7's Python module, Java and Freerouting 1.9, and
use absolute paths from the machine they were written on, so adjust the paths at the top of each script first.
Licence
CC BY-SA 3.0, the same licence as the original Touch Board design. See LICENSE.md and NOTICE.md.
Parts
185| Qty | Value | Footprint | References |
|---|---|---|---|
| 19 | 100nF | C_0603_1608Metric | C3, C11, C12, C14, C16, C17, C22, C23, C24, C25, C26, C29, C30, C32, C41, C42 +3 |
| 18 | 100k | R_0603_1608Metric | R13, R22, R23, R24, R25, R26, R27, R28, R29, R31, R32, R33, R34, R41, R42, R48 +2 |
| 11 | 10k | R_0603_1608Metric | R7, R9, R10, R11, R15, R16, R19, R30, R39, R40, R49 |
| 7 | 10uF | C_0805_2012Metric | C6, C8, C9, C10, C27, C28, C40 |
| 7 | 1uF | C_0603_1608Metric | C15, C20, C21, C31, C38, C39, C44 |
| 6 | ESD9B5.0ST5G | D_SOD-923 | D6, D7, D8, D9, D10, D11 |
| 3 | 100 | R_0603_1608Metric | R12, R43, R44 |
| 3 | 10nF | C_0603_1608Metric | C35, C36, C37 |
| 3 | 1k | R_0603_1608Metric | R8, R14, R17 |
| 3 | 20 | R_0603_1608Metric | R36, R37, R38 |
| 3 | 47k | R_0603_1608Metric | R45, R46, R47 |
| 3 | Fiducial | Fiducial_1mm_Mask2mm | FID1, FID2, FID3 |
| 3 | KF350-3.5-3P | TerminalBlock_Phoenix_PT-1,5-3-3.5-H_1x03_P3.50mm_Horizontal | J4, J5, J6 |
| 3 | M3 | MountingHole_3.2mm_M3_Pad_Via | H1, H2, H3 |
| 3 | SRV05-4 | SOT-23-6 | U7, U8, U9 |
| 2 | 100uF | C_1206_3216Metric | C33, C34 |
| 2 | 10pF | C_0603_1608Metric | C18, C19 |
| 2 | 1M | R_0603_1608Metric | R3, R35 |
| 2 | 22uF | C_0805_2012Metric | C4, C13 |
| 2 | 3.6k | R_0603_1608Metric | R5, R6 |
| 2 | 33 | R_0603_1608Metric | R51, R54 |
| 2 | 4.7k | R_0603_1608Metric | R20, R21 |
| 2 | 5.1k | R_0603_1608Metric | R1, R2 |
| 2 | AO3401A | SOT-23 | Q1, Q2 |
| 2 | GND | ElectrodePad_Edge_5.6x7mm_D3.2mm | E13, E14 |
| 2 | KF350-3.5-2P | TerminalBlock_Phoenix_PT-1,5-2-3.5-H_1x02_P3.50mm_Horizontal | J7, J8 |
| 2 | SN74LV1T125DBVR | SOT-23-5 | U12, U13 |
| 2 | SS54 | D_SMA | D1, D2 |
| 1 | +1V8 | TestPoint_Pad_D1.5mm | TP7 |
| 1 | +3V3 | TestPoint_Pad_D1.5mm | TP2 |
| 1 | 1.1A | Fuse_1206_3216Metric | F1 |
| 1 | 1.5k | R_0603_1608Metric | R4 |
| 1 | 1.5uH | L_Changjiang_FNR4020S | L1 |
| 1 | 10 | R_0603_1608Metric | R50 |
| 1 | 12.288MHz | Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | 2N7002 | SOT-23 | Q3 |
| 1 | 4.7nF | C_0603_1608Metric | C1 |
| 1 | 4.7uF | C_0805_2012Metric | C2 |
| 1 | 600R@100MHz | L_0805_2012Metric | FB1 |
| 1 | 75k | R_0603_1608Metric | R18 |
| 1 | ANALOG | PinSocket_1x06_P2.54mm_Vertical | J14 |
| 1 | BOOT | SW_Push_1P1T_XKB_TS-1187A | SW3 |
| 1 | BQ24074RGTR | VQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm | U2 |
| 1 | CHG 500mA | SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP1 |
| 1 | D0-D7 | PinSocket_1x08_P2.54mm_Vertical | J15 |
| 1 | D8-D13 | PinSocket_1x10_P2.54mm_Vertical | J16 |
| 1 | E0 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E1 |
| 1 | E1 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E2 |
| 1 | E10 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E11 |
| 1 | E11 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E12 |
| 1 | E2 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E3 |
| 1 | E3 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E4 |
| 1 | E4 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E5 |
| 1 | E5 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E6 |
| 1 | E6 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E7 |
| 1 | E7 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E8 |
| 1 | E8 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E9 |
| 1 | E9 | ElectrodePad_Edge_5.6x7mm_D3.2mm | E10 |
| 1 | ESP32-S3-WROOM-1-N16R8 | ESP32-S3-WROOM-1 | U5 |
| 1 | FG_ALRT | TestPoint_Pad_D1.5mm | TP6 |
| 1 | GND | TestPoint_Pad_D1.5mm | TP4 |
| 1 | GREEN | LED_0603_1608Metric | D4 |
| 1 | HEADPHONE | Jack_3.5mm_CUI_SJ-3523-SMT_Horizontal | J10 |
| 1 | LED DOUT | TestPoint_Pad_D1.5mm | TP8 |
| 1 | LED VDD | TestPoint_Pad_D1.5mm | TP9 |
| 1 | LINE IN | Jack_3.5mm_CUI_SJ-3523-SMT_Horizontal | J11 |
| 1 | LiPo JST-PH | JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_Horizontal | J3 |
| 1 | MAX17048G+T10 | TDFN-8-1EP_2x2mm_P0.5mm_EP0.8x1.2mm | U3 |
| 1 | MIDI OUT | Jack_3.5mm_CUI_SJ-3523-SMT_Horizontal | J18 |
| 1 | MIDI>VS | SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP5 |
| 1 | MPR121QR2 | UQFN-20_3x3mm_P0.4mm | U6 |
| 1 | NO NTC | SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mm | JP2 |
| 1 | NTC 10k | PinHeader_1x02_P2.54mm_Vertical | J2 |
| 1 | POWER | PinSocket_1x08_P2.54mm_Vertical | J13 |
| 1 | POWER | SW_SPDT_PCM12 | SW1 |
| 1 | PS/PWM | SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm_NumberLabels | JP3 |
| 1 | Qwiic | JST_SH_SM04B-SRSS-TB_1x04-1MP_P1.00mm_Horizontal | J17 |
| 1 | RED | LED_0603_1608Metric | D5 |
| 1 | RESET | SW_Push_1P1T_XKB_TS-1187A | SW2 |
| 1 | RT-MIDI | SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP4 |
The 173 most common of 185 parts.
Similar boards
- 4 layers99 × 70 mm

- 2 layers42 × 54 mm

Click counter Q5
dudgeon/count-fidget
A lightweight, rechargeable two-key fidget that counts clicks, resets with a second key, and remembers its count while asleep or unpowered. Designed for a home-printed enclosure and professionally assembled electronics.
96 parts - 4 layers65 × 56 mm

Sensor HAT
Eniemooo/Sensor-HAT
Open-hardware indoor air sensor (CO2, VOC/NOx, T/RH, light, sound): HAT for Raspberry Pi or standalone with Seeed XIAO + ESPHome. KiCad 10.
112 parts - 4 layers44 × 48.1 mm

- 4 layers100 × 80 mm

- 4 layers94 × 52 mm

- 4 layers31.4 × 31 mm

Esp32c6 ble sensor
xmyoot/esp32c6-ble-sensor-coin-cell
Ultra-compact 4-layer circular BLE sensor pod with ESP32-C6, CR2032 coin-cell power and environmental sensors
71 parts - 2 layers100 × 100 mm

Hour meter board microfit can handroute
ilomon10/embedded-totalizer-hour-meter
ESP32 engine hour meter & totalizer: firmware, SensorFrame protocol, Node host tools, KiCad PCB and a Deno device simulator
152 parts
Questions
How big is the Opentouch s3 PCB?
It measures 100 × 90 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Opentouch s3 use?
185 parts, built around the SN74LV1T125DBVR-TP, ESP32-S3-WROOM-1-N16R8, MPR121QR2 and SRV05-4-P-T7. 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 Opentouch s3 KiCad files?
From the JoeMighty/opentouch-s3 repository on GitHub, at the commit this page was made from: the board is hardware/kicad/OpenTouch_S3.kicad_pcb and its schematic hardware/kicad/OpenTouch_S3.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Opentouch s3 design in my own project?
Its repository states no licence, so its author keeps all rights: ask JoeMighty before reusing the design.