

Kicad main
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
4ATMEGA328P-AU
TQFP-32(7x7)-40℃~+85℃ 1.8V~5.5V 10bit 1KB 20MHz 23 2KB 32KB 8 Bit AVR Built-in FLASH TQFP-32(7x7) Microcontrollers (MCU/MPU/SOC) ROHSMicrochip TechnologyMicrocontrollers (MCU/MPU/SOC)AMS1117-5.0
SOT-223-40℃~+125℃ 1 1.3V 15V 1A 5V 60dB Fixed Positive Short Circuit Protection、Thermal shutdown SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSAdvanced Monolithic SystemsVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsBAT54S
SOT-231 Pair Series Connection 1V@100mA 200mA 2uA@25V 30V 600mA SOT-23 Schottky Diodes ROHSMDDSchottky Diodes1N5819WS
SOD-3231 Independent 1A 25A 40V 500uA@40V 600mV@1A SOD-323 Schottky Diodes ROHSGuangdong HottechSchottky Diodes
README
README.mdOverview
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.
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
- Website: Main website for the project.
- Order Guide: Order your DOTS PCB and front panel.
- Build Guide: Detailed instructions and an interactive Bill of Materials.
- Installation Guide: Instructions for flashing the firmware to your DOTS module.
- Manual: Comprehensive manual for using the module.
- Firmware on GitHub: Download the latest firmware for the module.
- Modulargrid.net: Module page on Modulargrid.net.
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
- Prerequisites: Install PlatformIO and Git
- Clone:
git clone https://github.com/johannesstrueber/dots.git - Build:
platformio run - Flash: Use
./flash_module.shfor 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/.elfartifacts 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.
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| Qty | Value | Footprint | References |
|---|---|---|---|
| 9 | R 470 | Resistor_SMD:R_0805_2012Metric | R2, R4, R7, R8, R9, R13, R14, R15, R21 |
| 8 | AudioJack2 | Connector_Audio:Jack_3.5mm_QingPu_WQP-PJ398SM_Vertical_CircularHoles | J2, J3, J4, J5, J6, J7, J8, J9 |
| 8 | BAT54S | Package_TO_SOT_SMD:SOT-23 | D3, D4, D6, D7, D8, D12, D13, D14 |
| 6 | LED | LED_THT:LED_D2.0mm_W4.0mm_H2.8mm_FlatTop | D9, D10, D11, D15, D16, D17 |
| 6 | R 33k | Resistor_SMD:R_0805_2012Metric | R10, R11, R12, R16, R17, R18 |
| 5 | C 100nF | Capacitor_SMD:C_0805_2012Metric | C1, C2, C3, C4, C7 |
| 3 | MountingHole_2.2mm_M2 | MountingHole:MountingHole_2.2mm_M2 | MD1, MD2, MT1 |
| 2 | C 10nF | Capacitor_SMD:C_0805_2012Metric | C11, C12 |
| 2 | C 10uf | Capacitor_SMD:CP_Elec_5x5.4 | C8, C9 |
| 2 | C 20pF | Capacitor_SMD:C_0603_1608Metric | C5, C6 |
| 2 | R 100k | Resistor_SMD:R_0805_2012Metric | R3, R5 |
| 2 | R 3K3 | Resistor_SMD:R_0805_2012Metric | R19, R20 |
| 1 | 1N5819WS | Diode_SMD:D_SOD-323 | D1 |
| 1 | AMS1117-5.0 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | ATmega328P-AU | Package_QFP:TQFP-32_7x7mm_P0.8mm | U1 |
| 1 | C 220pF | Capacitor_SMD:C_0805_2012Metric | C10 |
| 1 | Conn_01x04_Pin | Display:128x64OLED | J11 |
| 1 | Conn_02x03_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J10 |
| 1 | Conn_02x05_Odd_Even | Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Vertical | J1 |
| 1 | Crystal_GND24 | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | LED | LED_SMD:LED_0805_2012Metric | D2 |
| 1 | LED | LED_THT:LED_D3.0mm | D5 |
| 1 | R 10K | Resistor_SMD:R_0805_2012Metric | R22 |
| 1 | R 1K5 | Resistor_SMD:R_0805_2012Metric | R1 |
| 1 | R 470Ohm | Resistor_SMD:R_0805_2012Metric | R6 |
| 1 | R_Potentiometer_US | Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical | DELAY1 |
| 1 | RotaryEncoder_Switch | Rotary_Encoder:RotaryEncoder_Alps_EC11E-Switch_Vertical_H20mm | SW2 |
| 1 | SW_TACTILE | Button_Switch_THT:SW_PUSH_6mm | SW1 |
The 71 most common of 72 parts.
Similar boards
- 2 layers

- 4 layers62 × 60.8 mm

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 mm

- 2 layers84.3 × 64.5 mm

- 2 layers100 × 70 mm

- 2 layers100 × 100 mm

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 mm

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 mm

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.