Whistling Birds Gauntlet Darts

Stage 01 · firmware & wiring harness

Prepare the electronics

Load the firmware, build the wiring harness, and test each component before it is installed in the gearbox.

Test as you build — with the firmware running first, each connection can be checked as soon as it is made, while everything is still easy to reach and correct.

Completed Whistling Birds wiring harness ready for installation

Before you start

  • All BOM components in hand
  • Data-capable USB-C cable
  • Soldering iron and 30 AWG wire
  • Printed gearbox housing for wire-length fitting

You'll complete

  • Firmware installed and boot-tested
  • Power, sensor, speaker, and LED wiring prepared
  • All 12 LEDs tested
  • Speaker and reed switch verified
  • Servo connector prepared for the low-profile cover

Time & difficulty

  • 1–3 hours
  • Soldering and basic electronics

Install the Firmware Before Wiring

Flash CircuitPython and copy the project files onto the microcontroller before any wiring begins. With firmware already running, you can verify each solder joint with live tests as the harness comes together: a wiring fault found at this stage takes 30 seconds to fix; the same fault buried inside a completed gearbox can take 30 minutes.

The full install procedure (Windows one-click install.bat, plus a manual fallback for Mac/Linux/advanced users, plus the complete config.py reference) lives in the Software and Configuration guide:

Software and Configuration: Update Firmware

Power Switch & Power Sensing

The power switch wires to the board's EN and GND pins to turn the prop on and off. The battery-level and USB power detection dividers land on the same GND pad as the switch: everything is placed on the board first and soldered together in a single pass at the microcontroller, because the GND pad is soldered once, not reworked per component. The 2-pin JST in the middle of the harness keeps the switch detachable for service.

Power button switch as received from the vendor, still in its original housing
Stock switch as received, still in the vendor housing before any disassembly
Rewired power switch plugged into the microcontroller's EN/GND header
Finished switch plugged into the microcontroller, ready for final install

Prepare the Switch

The switch is rewired to the lengths the gearbox needs. The current 13mm switch has no housing, so the housing-removal step is skipped; the original 18mm switch from earlier kits comes out of its vendor housing first. Everything else is the same for both.

Power button switch fully prepped with the long-side leads, JST, and short-side leads ready for install
Power switch prepped: long side trimmed to 3 3/4″ (board side), short side stays long until trimmed for an exact fit at the gearbox.
  1. 18mm switch only: open the switch housing. Use a small flathead screwdriver at the seam to pop the case open and remove the switch from the stock housing. The housing is discarded. (The 13mm switch ships bare; start at the next step, using a 2-pin JST pair from the connector set.)
  2. Desolder the stock switch leads. Remove the existing wires from the switch terminals so the tabs are clean. Keep the wires and the inline 2-pin JST; both are reused.
  3. Trim the long side to length. Cut the long (board-side) leads to 3 3/4″ (3.75″). Strip and tin the bare ends. The short (switch-side) leads stay long for now; they'll be trimmed for an exact fit after the JST is positioned in the gearbox.
  4. Position the JST in the gearbox. Seat the JST connector about halfway along the wall in the battery compartment of the gearbox. This sets the run length for the long-side leads going up to the microcontroller and lets you route them cleanly before soldering.
    Power-switch JST seated about halfway along the wall of the gearbox battery compartment
    JST positioned in the battery compartment, leads routed toward the MCU

Battery Level Sensing

Battery level sensing uses two 100kΩ resistors arranged as a voltage divider between BAT and GND, with the midpoint feeding the microcontroller's A3 analog input. The firmware reads A3 to report LiPo charge level. This divider is part of the standard v2.5 build; the schematic below shows where each resistor lands on the Prop-Maker Feather.

Battery monitoring circuit schematic for the Adafruit RP2040 Prop-Maker Feather
Voltage divider schematic (Adafruit reference)

USB Power Detection

Standard for v2.5 builds. Without this, the board only knows it is plugged in when a computer completes the USB data handshake; a wall charger or power bank supplies 5 V silently. Two more 100kΩ resistors put the USB 5 V line where the firmware can read it directly: any power source registers as plugged in, and the prop wakes the moment a cable is connected instead of sleeping through it. Unlike the battery divider, this one draws nothing while unplugged: the line it sits across is only live with a cable in.

USB ----[ 100k ]----+----[ 100k ]---- GND
                    |
                    +---- D5

5 V halves to 2.5 V at D5 (a solid logic high, safely under the 3.3 V limit), and the lower resistor holds the pin at 0 V when the cable is out, so the reading is defined in both states. The resistors go onto the board in the wiring steps below, in the same single soldering pass as everything else. The firmware ships with detection enabled (VBUS_SENSE_PIN = "D5" in config.py), and the divider is verified end to end once the LEDs are connected at the terminal block.

If the setting is on but the resistors are not fitted (an earlier build running the stock v2.5 configuration, for example), the firmware notices the contradiction on its own, ignores the pin, and falls back to computer-only detection. A one-line note on the serial console says so; nothing else about the prop changes.

Back of the Prop-Maker Feather showing the USB power divider soldered from the USB pad to D5, beside the battery divider
The USB power divider runs from the USB pad to D5, sharing the back of the board with the battery divider

Wire the Board

  1. Position all leads on the microcontroller before soldering. Place every connection that lands on the board first, so the GND pad is soldered once with every attachment together:
    • Switch long side: one 3 3/4″ lead at EN, the other at GND.
    • Battery level sensing: one 100kΩ resistor between BAT and A3; a second 100kΩ resistor between A3 and GND. Tuck both resistors flat under the board near the A3 pin so they don't stand proud of the PCB.
    • USB power detection: one 100kΩ resistor between USB and D5; a second 100kΩ resistor between D5 and GND. Tuck these flat like the battery divider.
    Either switch lead can go to either of EN or GND; the switch is just closing a circuit between them.
  2. Solder all pads in one pass. Heat each pad once: BAT, A3, USB, D5, GND, and EN. The GND pad takes the switch's GND lead and the GND-side resistors of both dividers in a single joint; place everything before soldering so the pad is reflowed only once.
    Power switch leads soldered to the EN and GND pins on the Prop-Maker Feather
    Long-side switch leads soldered to EN and GND
    Back of the Prop-Maker Feather with the battery divider at A3 and the USB power divider at D5 soldered
    Both dividers tucked against the back of the board: battery level at A3, USB power at D5
  3. Clip and check. Clip any excess resistor lead length. Confirm the divider center junctions sit at A3 and D5 and there are no solder bridges between pads.

Finish and Test the Power Wiring

  1. Trim the switch side for an exact fit. With the JST seated in the battery compartment and the long side soldered to the microcontroller, trim the switch-side leads so the switch sits cleanly in its slot on the side wall, typically about 1 1/2″ (1.5″). Strip and tin the bare ends.
  2. Solder the short side to the switch. Solder the trimmed leads to the switch terminals. The switch is not polarized; either lead can go to either terminal.
  3. Protect the switch joints. Add a small dab of hot glue over each soldered switch joint once the wiring is confirmed and the leads are positioned correctly.
  4. Verify continuity. Use a multimeter on the JST pins to confirm the switch closes and opens cleanly with each click. Functional ON/OFF behavior is verified later when the JST is plugged onto the microcontroller during gearbox assembly.
  5. Confirm USB power detection is enabled. config.py ships with VBUS_SENSE_PIN = "D5", so the standard build needs no change. Wired the divider to a different pin? Set that pin's name. The firmware also self-checks the wiring: if the pin is set but the divider is not actually wired (or is on a different pin), the serial console prints a [usb_power] warning while a computer cable is connected and ignores the pin until the next boot.

Reed Switch

The reed switch arms and disarms the system using a magnet on the hand plate: no buttons, no exposed contacts.

Wiring diagram for the reed switch: green wire to Btn pin, black wire to Gnd
Wiring: green → Btn  ·  black → Gnd
Finished reed switch with heat-shrink on both leads and cable management grouping
Finished reed switch with heat-shrink
  1. Prep the JST lead. Use the 2-pin JST connector and attached wires for the reed switch. Strip and tin the two loose wire ends.
  2. Bend the leads 90°. Bend each reed switch lead 90° to create a flat solder surface, then solder the JST leads. Either lead can go to either reed switch leg; reed switches are not polarized.
  3. Protect the joints. Slide 12 mm sections of heat shrink over each lead and apply heat to secure.

LED Arrays

The twelve dart LEDs are built as three linked arrays: seven outer, four middle, and one inner. The strip is cut into those segments and reconnected with flexible 30 AWG wire so the short links between rows can move freely as the assemblies extend and retract. Build and test one row at a time so any wiring fault is found before the joints are insulated.

LED array wiring diagram showing 5V, GND, and Data connections across three strip segments
Each segment: red → 5V  ·  black → GND  ·  green → Data. Data direction follows the arrow on the strip.
Completed LED array with all three segments wired and heat-shrink applied
Completed LED array: all 12 LEDs
  1. Outer row (7 LEDs). Use the 3-pin JST connector and attached wires for the outer row. Strip and tin the three loose wire ends, then solder them to the entry end of the outer segment. Ensure the data arrow on the strip points away from the terminal block (toward the LEDs). Slide 4–5 mm of heat shrink over each joint; do not shrink yet. Connect to the microcontroller (5V, GND, Neo) and trigger the reed switch to verify. Shrink after a successful test.
  2. Middle row (4 LEDs). Cut 2″ of red, black, and green wire for the link between the outer and middle segments. Solder one end to the middle segment, position heat shrink (do not shrink), then solder the other end to the outer-row wires. Test before shrinking.
  3. Inner row (1 LED). Cut 2″ of red, black, and green wire for the link between the middle and inner segments. Same process: solder one side, position heat shrink, solder the other side to the middle-row wires, test all 12 LEDs, then shrink.
Troubleshooting LED issues
  • No LEDs at all: Check 5V, GND, and Data for connectivity between the strip and the microcontroller.
  • Some LEDs off or flickering: Cold solder joint or broken data trace at a cut point. Reflow suspect joints.
  • Strip won’t fit in housing: Heat shrink is over a resistor or LED chip. Re-open and reposition so tubing sits only on the flat solder pads.

Terminal Block

The board's terminal block is the final connection point for the reed switch, speaker, and LED array. No soldering is required at the board: strip each prepared lead, secure it in the labeled terminal, and tug-test it before moving on. The speaker needs no wiring work at all: it ships with a JST connector, so its pigtail screws into the terminal here and the speaker itself quick-connects when it is installed in the gearbox.

Terminal block wiring diagram showing pin assignments for Btn, Gnd, SPK-, SPK+, 5V, and Neo
Terminal block pin assignments
Completed wiring harness with all components wired to the terminal block, box speaker and JST connectors visible
Completed harness, ready for installation
Component Wire Pin
Reed switch Green (Data) Btn
Reed switch Black (GND) Gnd
Speaker pigtail Black SPK−
Speaker pigtail Red SPK+
LED strip Red (5V) 5V
LED strip Black (GND) Gnd
LED strip Green (Data) Neo
  1. Strip the wire ends. Strip about 5 mm of insulation from each lead and twist the strands so they hold a clean shape inside the screw terminal.
  2. Reed switch: green → Btn, black → Gnd. Loosen each screw, insert the lead, tighten, then tug-test; the wire should not pull free.
  3. Speaker pigtail: black → SPK−, red → SPK+. Loosen, insert, tighten, tug-test. The speaker itself connects to the pigtail's JST plug; quick-connect it now for testing, or during gearbox assembly.
  4. LED strip: red → 5V, black → Gnd, green → Neo. Loosen, insert, tighten, tug-test.
  5. Final test. Power up the board over USB-C and verify: magnet triggers the reed switch, all three LED segments light up, and (with the speaker plugged onto its pigtail) sound plays when triggered.
  6. Verify USB power detection. With the LEDs connected, plug into a wall charger or power bank (not a computer), and the battery view should appear on its own. That confirms the divider end to end.

Servo Terminals: Low-Profile Bend

The three servo terminal posts must be bent flat to fit the microcontroller inside the low-profile gearbox cover. The goal is enough clearance for the MCU cover to seat without pressing on the servo connector. Take your time and make small incremental bends; bending too quickly at the solder base can lift pads from the PCB.

Servo connector with posts bent flat inside the gearbox, seated in the low-profile MCU cover
Posts bent flat: connector seated in the MCU cover without compressing the pins
  1. Place the servo connector on the tips of the posts. Balance it on the top of the three pins without pushing down. Confirm signal/voltage/ground orientation before bending.
  2. Support the PCB near the header to prevent torsion at the solder joints.
  3. Apply gentle, even pressure to bend the posts over. Press the connector slowly toward the USB port; the plug acts as the lever, bending all three posts together. About 45° is typical, but the real success criterion is the cover seating cleanly, not the angle. Pause and check for kinks or cracked bases if you feel resistance.
  4. Test fit under the MCU cover. The connector must seat without compressing the pins. Verify the servo still powers and responds.

Wiring harness is complete, and ready for install

Completed wiring harness with all components wired to the terminal block, box speaker and JST connectors visible
Completed wiring harness, ready for Stage 02