Skip to the content
PCBKitNew board
2 layers100 × 50 mmWindowMaster, the printed circuit board in 3D

A physical controller for the Windows Volume Mixer (sndvol)

Size
100 × 50 mm
Copper layers
2
Thickness
1.6 mm
Parts
81
Nets
68
Pads
270
Tracks, vias
509, 26
Pours
1
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
4 Feb 2021
Updated
8 Dec 2022

Overview

WindowMaster is an open-source printed circuit board by agausmann, from the agausmann/WindowMaster repository on GitHub. It is a 2-layer board of 100 × 50 mm with 81 parts on 68 nets, routed with 509 tracks and 26 vias.

It is built around the STM32F072C8T6. Its parts include 42 resistors, 18 capacitors, 9 switches, 8 diodes and 2 ICs. It belongs with the STM32 boards of this library.

Main components

1

README

pcb/README.md

WindowMaster PCB

This circuit board is the main board for the WindowMaster physcial controller. It supports 6 control channels which can be individually assigned to different channels via the WindowMaster software.

The MCU powering this board is an STM32F072C8, which can read the encoder states and set indicators via GPIO, and communicate with the host computer over USB. You can flash the provided firmware to communicate with and control the WindowMaster host software, or write and flash your own if you have another usecase for the control surface. (In the future, I may provide other firmwares to turn it into a generic input device like a joystick or MIDI. Feel free to contact me if you'd like to commission a custom firmware - I'd love to hear about your idea!)

This board is developed with KiCad version 5.1.9. Components, especially those that can or must be surface-mounted, are picked from the JLCPCB SMT Parts Library, if there is a suitable part there. This makes it more convenient to fabricate and assemble, as they will do most of the work. Everything else is picked to be easy to hand-solder with an iron, which generally means through-hole or large tabs.

Ordering

TODO

Programming Reference & Pinout

The PCB is laid out into six channels. Each channel has its own quadrature encoder (PEC11R), a pushbutton switch (built into the encoder), and an indicator LED. These peripherals are controlled by the onboard STM32F072C8 microcontroller, which is also given a USB port so it can communicate with a host system.

Here is the pinout of the STM32 chip to all of its connected peripherals, for quick reference while programming:

PhysicalLogicalDescriptionDirectionLogic
25PB12Status LEDOutputActive Low
32PA11USB D-
33PA12USB D+
3PC14Channel 1 Encoder AInputActive Low
2PC13Channel 1 Encoder BInputActive Low
39PB3Channel 1 PushbuttonInputActive Low
40PB4Channel 1 IndicatorOutputActive Low
46PB9Channel 2 Encoder AInputActive Low
45PB8Channel 2 Encoder BInputActive Low
38PA15Channel 2 PushbuttonInputActive Low
41PB5Channel 2 IndicatorOutputActive Low
43PB7Channel 3 Encoder AInputActive Low
42PB6Channel 3 Encoder BInputActive Low
27PB14Channel 3 PushbuttonInputActive Low
28PB15Channel 3 IndicatorOutputActive Low
18PB0Channel 4 Encoder AInputActive Low
17PA7Channel 4 Encoder BInputActive Low
6PF1Channel 4 PushbuttonInputActive Low
10PA0Channel 4 IndicatorOutputActive Low
16PA6Channel 5 Encoder AInputActive Low
15PA5Channel 5 Encoder BInputActive Low
5PF0Channel 5 PushbuttonInputActive Low
11PA1Channel 5 IndicatorOutputActive Low
14PA4Channel 6 Encoder AInputActive Low
13PA3Channel 6 Encoder BInputActive Low
4PC15Channel 6 PushbuttonInputActive Low
12PA2Channel 6 IndicatorOutputActive Low

Flashing

The focus of this section will be on the specifics of flashing on this board. I expect the reader to know generally how to program STM32 devices; there's plenty of other resources on the Internet that explain it better than I ever could.

There are two ways that the STM32 chip can be flashed: the USB DFU protocol, and the ST-Link debug interface.

USB DFU

To start the device in DFU mode: While holding down the DFU button, connect the USB cable so that it powers on and connects to the computer. Once it has turned on, you can let go of DFU.

(Note: If the device is already connected, you can enter DFU mode without disconnecting by holding down DFU and pressing and releasing RESET. Again, you can release DFU once it has reset.)

Once the device is in DFU mode, you can use a tool like DfuSe or dfu-util on the host computer to connect to the device and flash firmware binaries.

ST-Link

There is a spot for an ST-Link / SWD breakout header at the top of the PCB, in between the reset switch and USB port. The pinout of that port is designed to match the SWD header on Discovery/Nucleo boards, so from left to right:

  1. 3v3 power (not connected in rev1, you have to supply power over USB)
  2. SWCLK
  3. GND
  4. SWDIO
  5. NRST
  6. Not connected (normally SWO, which is unsupported by this chip).

Connect an ST-Link to that header, and connect both the ST-Link and the PCB to the computer via USB. Then you can flash using whatever ST-Link compatible tool or method you prefer. (openOCD, cargo-flash, etc)

Parts

81
QtyValueFootprintReferences
3210KResistor_SMD:R_0402_1005MetricR1, R2, R14, R15, R16, R17, R18, R19, R20, R21, R24, R25, R26, R27, R28, R29 +16
1210nFCapacitor_SMD:C_0402_1005MetricC2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12, C13
81KResistor_SMD:R_0402_1005MetricR12, R13, R22, R23, R32, R33, R34, R35
6ENCwindowmaster:Rotary_Encoder_Switched_PEC11RSW2, SW3, SW4, SW5, SW6, SW7
6LEDLED_THT:LED_D3.0mmD1, D2, D3, D4, D5, D6
4100nFCapacitor_SMD:C_0402_1005MetricC14, C15, C16, C17
24.7uFCapacitor_SMD:C_0402_1005MetricC1, C18
25.1KResistor_SMD:R_0402_1005MetricR10, R11
1AZ1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U1
1PWR_LEDLED_SMD:LED_0603_1608MetricD7
1STATUS_LEDLED_SMD:LED_0603_1608MetricD8
1STM32F072C8T6Package_QFP:LQFP-48_7x7mm_P0.5mmU2
1SWDConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2
1SW_DFUButton_Switch_SMD:SW_SPST_TL3342SW8
1SW_DFU2windowmaster:MJTP1117SW1
1SW_RSTButton_Switch_SMD:SW_SPST_TL3342SW9
1USB_C_Receptacle_USB2.0windowmaster:HRO_TYPE-C-31-M-12J1

Questions

How big is the WindowMaster PCB?

It measures 100 × 50 mm and has 2 copper layers, 1.6 mm thick.

What parts does the WindowMaster use?

81 parts, built around the STM32F072C8T6. 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 WindowMaster KiCad files?

From the agausmann/WindowMaster repository on GitHub, at the commit this page was made from: the board is pcb/windowmaster.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the WindowMaster design in my own project?

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

Similar boards

  • 2 layers82.8 × 63 mmBldc BMS, the printed circuit board in 3D

    Bldc BMS

    mpater/bldc-BMS

    Battery management system for a VESC

    175 parts26
  • 2 layers50 × 75 mmLocalTrack, the printed circuit board in 3D

    LocalTrack

    krakrukra/LocalTrack

    OSHW GPS Tracker (Logger)

    63 parts18MIT
  • 2 layers26.1 × 15 mmUsb2can pcb, the printed circuit board in 3D

    Usb2can pcb

    myaki-moe/usb2can

    A compact and low cost open source USB to CAN bus adaptor. 紧凑且低成本的开源USB到CAN总线适配器

    19 parts10GPL-3.0
  • 2 layers50 × 100 mmActiveLoad, the printed circuit board in 3D

    ActiveLoad

    ahessling/ActiveLoad

    Small 12 Watt Active Load (dummy load) with STM32 microcontroller

    83 parts5MIT
  • 2 layers59 × 22 mmCANberry, the printed circuit board in 3D

    CANberry

    joshajohnson/car-hacking

    A repo for assorted tools, projects, and documentation.

    86 parts2
  • 4 layers50 × 20 mmGCode Buttons MCU, the printed circuit board in 3D

    GCode Buttons MCU

    meteyou/klipper-gcode-buttons

    The Klipper Gcode-Buttons offer a unique control and status display solution in 3D printers and automated systems.

    57 parts2GPL-3.0
  • 2 layers50 × 50 mmEyore test, the printed circuit board in 3D

    Eyore test

    projectgus/eyore-test

    ESP8266 hardware test assembly for esp-open-rtos

    36 parts1
  • 2 layers66.7 × 81 mmMacropad v1.0, the printed circuit board in 3D

    Macropad v1.0

    benpegg23/ParPad

    3x3 macropad with 2 rotary encoders using STM32

    52 parts