Skip to the content
2 layers30 × 110.5 mmKicad main, the printed circuit board in 3D

DOTS eurorack module pcb schematics and code ATMega328 based

Size
30 × 110.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
72
Nets
49
Pads
212
Tracks, vias
496, 179
Pours
333
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
29 Aug 2024
Updated
12 Aug 2026

Overview

Kicad main is an open-source printed circuit board by johannesstrueber, from the johannesstrueber/dots repository on GitHub. It is a 2-layer board of 30 × 110.5 mm with 72 parts on 49 nets, routed with 496 tracks and 179 vias.

It is built around the ATMEGA328P-AU, AMS1117-5.0 and BAT54S, with the 1N5819WS among its other parts. Its parts include 22 resistors, 17 diodes, 12 capacitors, 11 connectors and 2 ICs. It belongs with the audio and music boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

4

README

README.md

Overview

DOTS is a compact, 6-channel Eurorack module designed for generating triggers and gates. This open hardware project allows you to build the module yourself, with instructions and resources provided. Please visit the website for more info.

frontside backside pcb

Features

Watch a quick demo video here.

  • 6-Channel Trigger/Gate: Generate triggers and gates for your modular system.
  • Compact Size: Only 6hp wide, making it a handy addition to your setup.
  • Sync Capabilities: Includes a clock and reset input, allowing it to function as a master or slave.
  • Visual Feedback: Equipped with a screen and an UI.
  • Multiple Programs: The firmware features multiple programs for different trigger/gate patterns and functionalities.

Instructions

Check the website for detailed instructions on how to order, build and flash the module.

Resources

Technical Specifications

  • Width: 6HP
  • Depth: ~30mm
  • Clock Input: 0-5V triggers/gates
  • Reset Input: 0-5V triggers/gates
  • Outputs: 6x 0-5V triggers/gates
  • Display: 128x64 OLED
  • Microcontroller: ATmega328P
  • Memory: EEPROM storage for patterns and settings

Modes

  • Step Sequencer: Classic 16-step pattern programming with 8 pattern banks and visual step editing
  • Euclidean Sequencer: Generate complex polyrhythmic patterns using Euclidean algorithms with individual channel control
  • Clock Divider: Individual channel dividers (÷1 to ÷16) for creating polyrhythmic sequences and musical divisions
  • Random Trigger: Probability-based trigger generation with adjustable chance per channel
  • Configuration Menu: Comprehensive settings for BPM, clock modes, output types, and more

Development

Building from Source

  1. Prerequisites: Install PlatformIO and Git
  2. Clone: git clone https://github.com/johannesstrueber/dots.git
  3. Build: platformio run
  4. Flash: Use ./flash_module.sh for automated flashing with default patterns

Editing EEPROM Configuration

code/src/eeprom_config.cpp contains default settings and pattern configurations. It's a standalone, self-contained file (built as its own PlatformIO environment) — modify it directly to customize the initial state of your module.

Commit Conventions

Commit messages follow Conventional Commits (e.g. fix: correct rotation clamp). Running npm install once sets up a Husky pre-push hook that lints commit messages with commitlint before they leave your machine.

Continuous Integration

GitHub Actions builds every PlatformIO environment (program_via_AVRISPmkII, program_via_USBasp, eeprom_config_AVRISPmkII, eeprom_config_USBasp) on every push and pull request, and lints PR commit messages as a server-side backstop to the local Husky hook. Further improvements worth adding:

  • A Wokwi CI smoke-test job — the repo already ships diagram.json/wokwi.toml, but there's no scripted test scenario to assert against yet.
  • A flash/RAM usage regression check from pio run's size output, since this target already runs close to its 32KB flash limit.
  • Tagging a GitHub Release with the built .hex/.elf artifacts on version tags.

Repository Structure

  • /code/include/modes: One header per UI mode (step sequencer, Euclidean sequencer, random trigger, clock divider, config menu, main menu, instructions)
  • /code/include/utilities: Shared helpers (display drawing, encoder handling, bit/pattern math, trigger output, reset handling, startup/splash screens)
  • /code/include/State.h: Shared enums and global state declarations used across modes
  • /code/include/UiStrings.h: PROGMEM-stored UI text/labels
  • /code/src/modes: Implementation of each mode header above
  • /code/src/utilities: Implementation of the shared helpers above
  • /code/src/main.cpp: Main firmware entry point (setup()/loop())
  • /code/src/eeprom_config.cpp: Default settings and pattern configuration, built as its own PlatformIO environment
  • /kicad_frontpanel: Front panel PCB design files (KiCad)
  • /kicad_main: Main PCB design files (KiCad)
  • diagram.json: Hardware simulation (WOKWI)
  • platformio.ini: Build configuration (PlatformIO)
  • flash_module.sh: Automated flashing script with EEPROM configuration

Disclaimer

This is a personal project and not a commercial product. The creator is not liable for any damage caused by the module. Use at your own risk. The project is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

CC BY-NC-SA 4.0

If you have any questions, feel free to contact the creator. This is a hobby project, and the creator is a web developer, not a professional hardware embedded systems builder; some hardware design or code decisions may seem unconventional.

Special thanks to HAGIWO for providing foundational knowledge.

Happy Building!

Parts

72
QtyValueFootprintReferences
9R 470Resistor_SMD:R_0805_2012MetricR2, R4, R7, R8, R9, R13, R14, R15, R21
8AudioJack2Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHolesJ2, J3, J4, J5, J6, J7, J8, J9
8BAT54SPackage_TO_SOT_SMD:SOT-23D3, D4, D6, D7, D8, D12, D13, D14
6LEDLED_THT:LED_D2.0mm_W4.0mm_H2.8mm_FlatTopD9, D10, D11, D15, D16, D17
6R 33kResistor_SMD:R_0805_2012MetricR10, R11, R12, R16, R17, R18
5C 100nFCapacitor_SMD:C_0805_2012MetricC1, C2, C3, C4, C7
3MountingHole_2.2mm_M2MountingHole:MountingHole_2.2mm_M2MD1, MD2, MT1
2C 10nF Capacitor_SMD:C_0805_2012MetricC11, C12
2C 10ufCapacitor_SMD:CP_Elec_5x5.4C8, C9
2C 20pFCapacitor_SMD:C_0603_1608MetricC5, C6
2R 100kResistor_SMD:R_0805_2012MetricR3, R5
2R 3K3Resistor_SMD:R_0805_2012MetricR19, R20
11N5819WSDiode_SMD:D_SOD-323D1
1AMS1117-5.0Package_TO_SOT_SMD:SOT-223-3_TabPin2U2
1ATmega328P-AUPackage_QFP:TQFP-32_7x7mm_P0.8mmU1
1C 220pFCapacitor_SMD:C_0805_2012MetricC10
1Conn_01x04_PinDisplay:128x64OLEDJ11
1Conn_02x03_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ10
1Conn_02x05_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_VerticalJ1
1Crystal_GND24Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mmY1
1LEDLED_SMD:LED_0805_2012MetricD2
1LEDLED_THT:LED_D3.0mmD5
1R 10KResistor_SMD:R_0805_2012MetricR22
1R 1K5Resistor_SMD:R_0805_2012MetricR1
1R 470OhmResistor_SMD:R_0805_2012MetricR6
1R_Potentiometer_USConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalDELAY1
1RotaryEncoder_SwitchRotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mmSW2
1SW_TACTILEButton_Switch_THT:SW_PUSH_6mmSW1

The 71 most common of 72 parts.

Similar boards

  • 4 layers62 × 60.8 mmPcbcax, the printed circuit board in 3D

    Pcbcax

    7bwiiza/Robot-creation

    Uni project of a 3D model of a 5dof robot using Solidedge and motor control using KiCAD and MATLAB

    58 parts
  • 2 layers39 × 31 mmArm board, the printed circuit board in 3D

    Arm board

    elkel53930/robosweep_twilight

    A robosweeper "Twilight"

    42 parts2MIT
  • 2 layers84.3 × 64.5 mmTapeshnik proto, the printed circuit board in 3D

    Tapeshnik proto

    svofski/tapeshnik

    compact cassette data drive

    138 parts14
  • 2 layers100 × 100 mmPower supply, the printed circuit board in 3D

    Power supply

    gabrielfbdiniz/PFC-Boost-STM32

    Conversor estático de potência CA/CC com Correção Ativa do Fator de Potência (Active PFC) na topologia Boost, projetado para elevar a tensão da rede elétrica retificada (127V / 220V AC) para um barramento CC…

    89 parts
  • 2 layers80 × 60 mmSmart grid fault detector, the printed circuit board in 3D

    Smart grid fault detector

    shawnsony07/smart-grid-fault-detector

    An ATmega328P-based smart grid fault detector featuring high-side current sensing via INA180A1 and voltage monitoring.

    39 parts
  • 4 layers188 × 103 mmCAN DISPLAY, the printed circuit board in 3D

    CAN DISPLAY

    VladxIL/NMEA2000_0183_Display

    Display NMEA2000 and NMEA0183 on DWIN 7" Display

    130 partsGPL-3.0

Questions

How big is the Kicad main PCB?

It measures 30 × 110.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Kicad main use?

72 parts, built around the ATMEGA328P-AU, AMS1117-5.0, BAT54S and 1N5819WS. 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 Kicad main KiCad files?

From the johannesstrueber/dots repository on GitHub, at the commit this page was made from: the board is kicad_main/main.kicad_pcb and its schematic kicad_frontpanel/kicad_frontpanel.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Kicad main design in my own project?

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