This guide will walk you through assembling your Spotify MacroBoard. Follow each step carefully to ensure a successful build.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/benz206/SpotifyMacroBoard/llms.txt
Use this file to discover all available pages before exploring further.
Before you begin
Required tools
- Soldering iron (temperature controlled, 300-350°C)
- Solder (60/40, 63/37, or lead-free)
- Wire strippers
- Flush cutters
- Multimeter
- Helping hands or PCB holder
- Isopropyl alcohol (for cleaning flux)
- Cotton swabs or brush
Required components
Ensure you have all components from the component list:- Custom PCB
- ESP32 development board
- SSD1306 OLED display (128x64, I2C)
- WS2812B LED strip (20 LEDs)
- 7 mechanical switches
- 7 keycaps (optional)
- Pin headers
- Resistors and capacitors (per schematic)
- Wire (22-24 AWG)
- USB cable
Read through the entire guide before starting assembly. This will help you understand the process and avoid mistakes.
Assembly overview
The assembly process follows this order:- PCB preparation and inspection
- Solder surface-mount components (if any)
- Solder through-hole components (resistors, capacitors)
- Install pin headers
- Mount mechanical switches
- Connect ESP32
- Connect OLED display
- Install WS2812B LED strip
- Testing and verification
- Final assembly
Step-by-step assembly
Prepare the PCB
Inspect the PCB:
- Check for manufacturing defects
- Verify all holes are properly drilled
- Look for any shorts or broken traces
- Wipe with isopropyl alcohol to remove any oils
- Dry completely before soldering
- Use a multimeter to verify ground connections
- Check that there are no shorts between power rails
- Verify critical traces are continuous
Solder passive components
Start with the smallest components first (resistors, then capacitors).For each component:
Critical components:
- Identify its position on the PCB using the schematic
- Insert the component leads through the holes
- Bend the leads slightly to hold the component in place
- Flip the board over
- Solder each lead
- Trim excess leads with flush cutters
Soldering tips
Soldering tips
- Heat both the pad and component lead simultaneously
- Apply solder to the joint, not the iron
- Use just enough solder to form a shiny, cone-shaped joint
- Avoid cold solder joints (dull, grainy appearance)
- Don’t overheat components (3-5 seconds per joint)
- Decoupling capacitors near the ESP32 power pins (100nF)
- Power supply capacitors (10µF electrolytic)
- Any resistors specified in the schematic
If your design uses internal pull-ups (as in the default firmware), you don’t need external pull-up resistors for the switches.
Install pin headers
Pin headers allow you to mount the ESP32 and OLED display without direct soldering.For the ESP32:
- Place female pin headers where the ESP32 will mount
- Use the ESP32 itself to align the headers properly
- Tack solder one pin on each header
- Check alignment before soldering all pins
- Solder all remaining pins
- Use 4-pin female or male headers (depending on your display module)
- Align with the I2C connection points (VCC, GND, SDA, SCL)
- Tack solder one pin
- Check alignment
- Solder remaining pins
Using pin headers makes it easy to replace components if needed. For a more permanent installation, you can solder directly to the PCB.
Mount mechanical switches
The 7 mechanical switches are the main input method for the MacroBoard.Installation:
- Insert each switch into its designated position on the PCB
- Ensure the pins align with the holes
- Press firmly until the switch sits flush with the PCB
- The switch should click into place
- Flip the board over
- Solder the switch pins (usually 2 pins per switch)
- Trim any excess pin length
- Position 1: Shuffle (GPIO 4)
- Position 2: Volume Down (GPIO 5)
- Position 3: Volume Up (GPIO 12)
- Position 4: Loop/Repeat (GPIO 13)
- Position 5: Previous Track (GPIO 14)
- Position 6: Play/Pause (GPIO 25)
- Position 7: Next Track (GPIO 26)
If your switches have PCB mount pins (5 pins total), solder all pins for maximum stability.
Connect the ESP32
The ESP32 is the microcontroller that runs the firmware.If using pin headers:
- Insert the ESP32 into the female headers
- Ensure proper orientation (check pin labels)
- Press firmly until seated
- Place the ESP32 on the PCB
- Align all pins with their pads
- Tack solder opposite corners
- Check alignment
- Solder all remaining pins
- GPIO 18 → LED data pad
- GPIO 19 → SCL pad (OLED)
- GPIO 21 → SDA pad (OLED)
- All switch GPIO pins → their respective switch pads
Connect the OLED display
The SSD1306 OLED display shows track information and status.Wiring:
- Display VCC → PCB VCC (3.3V or 5V depending on display)
- Display GND → PCB GND
- Display SDA → PCB SDA (GPIO 21)
- Display SCL → PCB SCL (GPIO 19)
- Using pin headers
- Using wires
- Direct soldering
- Insert the OLED display into the 4-pin header
- Ensure pins are properly aligned (VCC, GND, SDA, SCL)
- Press firmly until seated
The firmware configures the I2C bus at 400 kHz. Most SSD1306 displays support this speed, but if you experience issues, you can modify the firmware to use 100 kHz (Standard Mode).
Install the LED strip
The WS2812B LED strip provides visual feedback with colors matching the album art.Preparation:Mounting the LED strip:
- If you have a longer LED strip, cut it to exactly 20 LEDs
- Cut along the designated cut lines (usually marked on the strip)
- Note the direction: there’s a data input (DIN) and data output (DOUT) end
- The data flows in one direction only
- LED Strip 5V → PCB 5V
- LED Strip GND → PCB GND
- LED Strip DIN → PCB LED Data (GPIO 18)
- Solder pads
- Connector
If your LED strip has solder pads at the beginning:
- Tin the pads on both the LED strip and PCB
- Cut 3 pieces of wire (5-10cm each)
- Solder one end to the LED strip pads (5V, GND, DIN)
- Solder the other end to the corresponding PCB pads
- Use heat shrink tubing for insulation
- LED strips often have adhesive backing
- Plan the LED placement around the PCB perimeter or beneath keycaps
- Clean the mounting surface before applying
- Press firmly for 30 seconds
- Additional support with hot glue or zip ties is recommended
Initial testing
Before final assembly, test all components to ensure everything works.Power test:
- Connect USB cable to the ESP32
- Do NOT plug into computer yet
- Use a multimeter to check:
- 5V rail is present
- 3.3V rail is present (if applicable)
- No shorts between power and ground
- Plug USB cable into computer
- ESP32 power LED should illuminate
- Upload a test sketch or the final firmware
Test sequence
Test sequence
LED test:
- All 20 LEDs should turn white on startup
- If connecting to WiFi, LEDs pulse white
- After WiFi connection, LEDs turn green
- If any LED doesn’t work, check connections and data line continuity
- Display should initialize (may flash briefly)
- If display shows “OrangeRed” on LEDs and freezes, the display failed to initialize
- Check I2C connections (SDA, SCL)
- Verify I2C address is 0x3C
- Press each switch and verify the corresponding action
- If a switch doesn’t work:
- Check solder joints
- Verify GPIO pin connection
- Ensure switch is properly seated
Install keycaps
Once testing is complete, install the keycaps on the switches.Installation:
- Align the keycap stem with the switch stem
- Press down firmly until you hear/feel a click
- The keycap should be secure and not wobble
- Use a label maker for professional-looking labels
- Use vinyl stickers or decals
- 3D print custom keycaps with legends
- Leave blank for a minimalist look
- Shuffle (🔀)
- Vol - (🔉)
- Vol + (🔊)
- Loop (🔁)
- Previous (⏮)
- Play/Pause (⏯)
- Next (⏭)
Final assembly and cleanup
Complete the assembly and prepare for use.Cleaning:
- Power off the device
- Clean flux residue with isopropyl alcohol
- Use a brush or cotton swab
- Let dry completely
- Check all solder joints for quality
- Verify no loose wires or components
- Ensure no shorts or exposed conductors
- Test mechanical stability of all parts
- Design and 3D print a case
- Use standoffs to mount the PCB
- Add rubber feet for stability
- Ensure access to USB port for programming
- Use cable clips or adhesive mounts
- Route USB cable neatly
- Secure loose wires with zip ties or hot glue
Troubleshooting
Common issues and solutions:LEDs don't light up
LEDs don't light up
Possible causes:
- No power to LED strip (check 5V connection)
- Data line not connected (check GPIO 18)
- Wrong data direction (LED strips are directional)
- Faulty LED strip
- Verify 5V and GND connections with multimeter
- Check continuity of data line from ESP32 GPIO 18 to LED strip DIN
- Ensure LED strip DIN is connected (not DOUT)
- Test with a simple LED test sketch
OLED display not working
OLED display not working
Possible causes:
- I2C connections (SDA/SCL) swapped or disconnected
- Wrong I2C address
- Insufficient power
- Faulty display module
- Verify SDA (GPIO 21) and SCL (GPIO 19) connections
- Scan for I2C devices using an I2C scanner sketch
- Check display receives proper voltage (3.3V or 5V)
- Try reducing I2C speed in firmware (400 kHz → 100 kHz)
- Test display with a separate sketch
Switches not responding
Switches not responding
Possible causes:
- Poor solder joints
- Switch not fully seated
- GPIO pin not connected
- Wrong pin mapping in firmware
- Reflow solder joints on the non-working switch
- Verify switch is fully inserted into PCB
- Check continuity from switch pin to ESP32 GPIO
- Verify pin mapping in firmware matches hardware:
- Test switch with multimeter (continuity mode)
WiFi connection fails
WiFi connection fails
Possible causes:
- Wrong WiFi credentials
- 5 GHz network (ESP32 only supports 2.4 GHz)
- Network security settings
- Weak signal
- Verify SSID and password in credentials file
- Ensure using a 2.4 GHz network (ESP32 doesn’t support 5 GHz)
- Try a network with WPA2 security
- Move closer to WiFi router
- LEDs will pulse white while attempting connection
ESP32 won't program
ESP32 won't program
Possible causes:
- Wrong COM port selected
- Driver not installed
- USB cable is power-only (no data)
- Faulty ESP32
- Try a different USB cable (must support data)
- Install ESP32 USB drivers (CP210x or CH340)
- Hold BOOT button while programming
- Select correct board in Arduino IDE (ESP32 Dev Module)
- Try different USB port on computer
Power consumption
Understanding power consumption helps ensure reliable operation:| Component | Current Draw |
|---|---|
| ESP32 (active, WiFi on) | ~160-260mA |
| ESP32 (idle, WiFi on) | ~80-120mA |
| SSD1306 OLED display | ~20mA |
| WS2812B LEDs (20, full white) | ~1200mA |
| WS2812B LEDs (20, limited) | ~500mA (firmware limit) |
| Total (typical) | ~700mA |
| Total (maximum) | ~1500mA |
The firmware configures FastLED to limit power consumption:This prevents overdrawing current from USB ports, which are typically limited to 500mA.
Next steps
With your MacroBoard assembled, you’re ready to program it:Software setup
Install the Arduino IDE and upload the firmware
Configuration
Configure WiFi credentials and API settings
Additional resources
Component list
Review required components and specifications
PCB design
Learn about the PCB design and files