Sound Board with Prop-Maker

Use an Adafruit Feather M4 and Prop-Maker FeatherWing to make a portal NeoTrellis soundbox! Play and trigger motion activated audio samples with CircuitPython. Build and assemble the 3D printed enclosure to make your own with built-in speaker and rechargeable battery!

Each button has its own NeoPixel so you can make them any color. Assign audio wave files and set custom triggers for loops and latching using python code. Use the accelerometer to detect shake to shuffle the playlist or trigger motion activated sound effects.

CircuitPython USB Drive

Use microUSB port to update the code.py file, drag and drop audio files on to the circuit python USB drive. Recharge over USB with Adafruit Feather's built-in battery charging circuit.

Hardware

Screws, standoffs and nuts required in this build.

Hand pressing buttons that light up on a Adafruit NeoTrellis RGB Driver PCB for 4x4 Keypad.
By popular request, we've upgraded our popular Trellis elastomer button kits to now have a PCB with full color NeoPixel support! You heard that right, no more single-color...
Out of Stock
Angled shot of a Adafruit Feather M4 Express.
It's what you've been waiting for, the Feather M4 Express featuring ATSAMD51. This Feather is fast like a swift, smart like an owl, strong like a ox-bird (it's half ox,...
$22.95
In Stock
Angled shot of a Adafruit Prop-Maker FeatherWing.
The Adafruit Feather series gives you lots of options for a small, portable, rechargeable microcontroller board. Perfect for fitting into your next prop build! This FeatherWing will...
$9.95
In Stock
Silicone Elastomer 4x4 Button Keypad
So squishy! These silicone elastomer keypads are just waiting for your fingers to press them. Go ahead, squish all you like! (They're durable and easy to clean, just wipe with mild...
$4.95
In Stock
Video of 16mm rugged metal pushbutton with an RGB LED ring glowing rainbow colors.
By popular demand, we now have these buttons with a full color RGB LED ring light! These chrome-plated metal buttons are rugged, but certainly not lacking in flair. Simply drill a...
$10.95
In Stock
Mini Oval Speaker with pico blade connector
Hear the good news! This wee speaker is a great addition to any audio project where you need 8 ohm impedance and 1W or less of power. We particularly like...
$1.95
In Stock
Mini Panel Mount SPDT Toggle Switch
This or that, one or the other, perhaps or perhaps not! So hard to make decisions these days without feeling like you're just going back and forth constantly. Deciding whether or...
$0.95
In Stock
Angled closeup of single 6mm metal ball tactile button.
Add some steely elegance to your project with these Metal Ball Tactile Buttons. They've got a nice industrial shine to them along with a light blue...
$5.95
In Stock
Lithium Ion Polymer Battery 3.7v 1200mAh with JST 2-PH connector
Lithium-ion polymer (also known as 'lipo' or 'lipoly') batteries are thin, light, and powerful. The output ranges from 4.2V when completely charged to 3.7V. This...
$9.95
In Stock

RGB LED Button

Use an RGB LED button to reset the audio arrangement or customize the code for triggering different modes. Use Adafruit's libraries for Circuit Python to write and program your own features.

Circuit Diagram

This provides a visual reference for wiring of the components. They aren't true to scale, just meant to be used as reference. This diagrams was created using Fritzing software.

Adafruit Library for Fritzing

Use our Fritzing parts library to create circuit diagrams for your projects. Download the library or just grab the individual parts. Get library and parts from GitHub Adafruit Fritzing Parts.

Wired Connections

The Prop-Maker FeatherWing is fitted on top of Adafruit Feather M4 Express via extra female headers on the Feather M4 and male headers on the Prop Maker FeatherWIng. The speaker is connected via a molex picoblade connector.

Powering

The Adafruit Feather M4 Express can be powered via USB or JST using a 3.7v lipo battery. In this project, a 1200mAh lipo battery is used. The lipo battery is rechargeable via the USB port on the Adafruit Feather. The RGB LED pushbutton is wired to the enable and ground pins on the Prop-Maker FeatherWing.

NeoTrellis

  • INT from NeoTrellis to Pin #5 on Prop-Maker FeatherWing
  • VIN from NeoTrellis to 3V on Prop-Maker FeatherWing
  • GND from NeoTrellis to Ground on Prop-Maker FeatherWin
  • SCL from NeoTrellis to SCL on Prop-Maker FeatherWing
  • SDA from NeoTrellis to SDA on Pro-Maker FeatherWing

RGB LED

  • red pin (R-) to red pin on Prop-Maker FeatherWing
  • green pin (G-) to green pin on Prop-Maker FeatherWing
  • blue pin (B-) to blue pin on Prop-Maker FeatherWing
  • voltage pin (V+) to V+ pin on Prop-Maker FeatherWing

Push Button

  • button to SW pin on Prop-Maker FeatherWing
  • button to –(ground) pin on Prop-Maker FeatherWing

Speaker

  • Voltage and ground to Prop-Maker speaker port

On/Off Switch

  • Middle pin to enable pin on Prop-Maker
  • Far left or right pin to ground on Prop-Maker

Reset Button

  • button to RESET pin on Prop-Maker FeatherWing
  • button to ground pin on PropMaker FeatherWing

3D Printed Parts

Parts are designed to be 3D printed with FDM based machines. STL files are oriented to print "as is". Machines with dual extrusion or single extrusion setups are listed below with parts name and description. Parts require tight tolerances that might need adjusting slice setting. Reference the suggested settings below.

CURA Slicing

Parts were sliced using Ultimaker's CURA software and tested with an Ultimaker 3 and Flashforge Inventor II. The kit requires a minimum build volume of 50mm x 50mm x 190mm. No support material is necessary for any of the parts. Double check parts are positioned in the center of the build plate before printing. 

Settings

Use these settings as reference. Values listed were used in Ultimaker's CURA slicing software.

  • 0.2mm Layer Height / 0.4mm nozzle
  • 0.38mm Line Width (inner & outer widths)
  • 40mm/s printing speed
  • 20% infill
  • Supports: No

Parts list

  • bottom.stl – This has a spot for the 1200mAh battery
  • cover.stl – Fits the button pad and metal tactile button
  • frame.stl – Had holes for panel mounted button and switch
  • pcb mount.stl – Fits Feather using M3 holes for M2.5 screws
  • tray.stl – Secures NeoTrellis PCB and metal tactile button

Heat Set Inserts

Frame.stl features four mounting holes sized for these M3 heat set inserts. You'll need to install four inserts by heat press installation using a soldering iron. For great results, use a special installation tip. For more info on how to install heat set inserts, check out our guide.

Installing Heat Set Inserts

The inserts should be installed from the bottom of the part. Orient the frame so the flat surface is facing up. Place an insert on top one of the mounting tabs. The edge without the knurling should press fit into the hole. This will hold it in place while installing. Heat up your soldering iron to 380ºC. Insert the tip of the iron into the insert to heat it up for a few seconds. Gently press down to install the insert until it's flush with the bottom surface. Slowly pull out the tip from the insert. Allow a few seconds too cool before proceeding to the remaining tabs. 

Mounting Tabs

The tabs are approximately 4mm thick so they should be level with the length of the heat set inserts.

Heat Sets Installed

Proceed to install heat set inserts into the remaining mounting tabs. Take your time with these! It's important to be cautious as the part could be damaged if inserts are pressed too deep. If you're new to this, perhaps try on some test parts first. 

Designing Things

The Fusion 360 source file is included and features original sketches and feature timeline along with easily editable user parameters. The parts can further be separated into small pieces for fitting on printers with smaller build volumes. Note: the STEP file is included for other 3D surface modeling programs such as Onshape, Solidworks and Rhino.

Layer by Layer

Interested in CAD tutorials? Check out the playlist on YouTube – There's over 100 of them! My personal favorite is the snap fit tutorial for cases and enclosures. 

Install CircuitPython

The Adafruit Feather M4 ships with CircuitPython but lets go ahead and update it to the latest version. It's super easy with the circuitpython.org website, just click the link below to launch the page. There you can choose to install stable release or beta. 

Quick Start

  • Connect board to computer via a known good USB data cable and double press the reset button.
  • Download the CircuitPython UF2 and upload to the FEATHERBOOT drive.
  • Open CIRCUITPY drive and upload the required libraries (listed below) and code.py

Adafruit Circuit Python Libraries

Download the CircuitPython library bundle and unzip the folder. Create a new folder in the CIRCUITPY drive and name it "lib". The following libraries are required to run the code properly. Double check to ensure all of the files and folders are inside the lib folder on the CIRCUITPY drive.

  • adafruit_bus_device (directory)
  • adafruit_lis3dh.mpy
  • adafruit_neotrellis (directory)
  • adafruit_rgbled.py
  • adafruit_seesaw
  • neopixel.mpy
  • simpleio.mpy

Mu Python Editor

Check out Mu, it's a simple Python editor that works with Adafruit CircuitPython hardware. It's written in Python and works on Windows, MacOS, Linux and Raspberry Pi. The serial console is built right in so you get immediate feedback from your board's serial output!

# SPDX-FileCopyrightText: 2019 Anne Barela for Adafruit Industries
#
# SPDX-License-Identifier: MIT

# NeoTrellis Soundbox Remix - CircuitPython
# Noe and Pedro Ruiz, code by Anne Barela
# for Adafruit Industries, MIT License

import time
import os
import random
import board
from board import SCL, SDA
import digitalio
import busio
import audioio
import audiocore
import adafruit_rgbled
from adafruit_neotrellis.neotrellis import NeoTrellis
import adafruit_lis3dh

# Color definitions
OFF = (0, 0, 0)
RED = (25, 0, 0)
YELLOW = (25, 15, 0)
GREEN = (0, 25, 0)
CYAN = (0, 25, 25)
BLUE = (0, 0, 25)
PURPLE = (18, 0, 25)
WHITE = (127, 127, 127)

# Create the i2c object for the trellis
# If you get an error, your PropMaker Shield needs to be snappped on
i2c_bus = busio.I2C(SCL, SDA)

# Create the trellis
trellis = NeoTrellis(i2c_bus)

print("NeoTrellis created")

# Enable PWR Pin to enable NeoPixels, audio amplifier and RGB LED
# See https://learn.adafruit.com/adafruit-prop-maker-featherwing/pinouts
enable = digitalio.DigitalInOut(board.D10)
enable.direction = digitalio.Direction.OUTPUT
enable.value = True

# Set up RGB for switch RGB LED
RED_LED = board.D11
GREEN_LED = board.D12
BLUE_LED = board.D13
led = adafruit_rgbled.RGBLED(RED_LED, GREEN_LED, BLUE_LED)
led.color = GREEN

# Enable button use on PropMaker Wing Switch input
push_switch = digitalio.DigitalInOut(board.D9)
push_switch.switch_to_input(pull=digitalio.Pull.UP)

# Set up Accelerometer on I2C bus
int1 = digitalio.DigitalInOut(board.D5)
accel = adafruit_lis3dh.LIS3DH_I2C(i2c_bus, int1=int1)
# See https://circuitpython.readthedocs.io/projects/lis3dh/en/
#  latest/api.html for adjusting settings for the accelerometer
accel.range = adafruit_lis3dh.RANGE_4_G
# accel.set_tap(1, 80)  # Single tap, second value is sensitivity

# Set up playing audio on A0 and interruptable playing
myaudio = audioio.AudioOut(board.A0)
audio_file = None

def play_file(audio_filename):
    global audio_file  # pylint: disable=global-statement
    if myaudio.playing:
        myaudio.stop()
    if audio_file:
        audio_file.close()
    audio_file = open("/sounds/"+audio_filename, "rb")
    wav = audiocore.WaveFile(audio_file)
    print("Playing "+audio_filename+".")
    myaudio.play(wav)

# Process wav files in the flash drive sounds directory
wavefiles = [file for file in os.listdir("/sounds/")
             if (file.endswith(".wav") and not file.startswith("._"))]
if len(wavefiles) < 1:
    print("No wav files found in sounds directory")
else:
    print("Audio files found: ", wavefiles)

PUSH_COLOR = GREEN
ANIM_COLOR = WHITE

COLORS = ["RED", "YELLOW", "GREEN", "CYAN", "BLUE", "PURPLE", "WHITE"]
COLOR_TUPLES = [RED, YELLOW, GREEN, CYAN, BLUE, PURPLE, WHITE]

buttons = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
button_colors = [OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF,
                 OFF, OFF, OFF, OFF, OFF, OFF, OFF, OFF]
shuffled_colors = list(button_colors)
Shuffled = False

# Time to process the filenames using the special file name syntax
# Currently nn-color-name.wav where nn = 2 digit number 0 to 15
# color is lower or upper case color name from above and
# name can be anything. BUT these all must be separated by a "-"
# Example 02-blue-firetruck.wav is valid. Note leading 0 for 0 to 9
wavnames = ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
shuffled_names = list(wavnames)  # Duplicate list, wavnames is our reference
shuffled = False
for soundfile in wavefiles:
    print("Processing "+soundfile)
    pos = int(soundfile[0:2])
    if pos >= 0 and pos < 16:      # Valid filenames start with 00 to 15
        wavnames[pos] = soundfile  # Store soundfile in proper index
        shuffled_names[pos] = soundfile
        skip = soundfile[3:].find('-') + 3
        user_color = soundfile[3:skip].upper()  # Detect file color
        print("For file "+soundfile+", color is "+user_color+".")
        file_color = COLOR_TUPLES[COLORS.index(user_color)]
        button_colors[pos] = file_color
        shuffled_colors[pos] = file_color
    else:
        print("Filenames must start with a number from 00 to 15 - "+soundfile)

# this will be called when button events are received
def blink(event):
    # turn the LED on when a rising edge is detected
    if event.edge == NeoTrellis.EDGE_RISING:  # Trellis button pushed
        print("Button "+str(event.number)+" pushed")
        if event.number > 15:
            print("Event number out of range: ", event.number)
        trellis.pixels[event.number] = WHITE
        if shuffled_names[event.number] != "":
            play_file(shuffled_names[event.number])

    # turn the LED off when a rising edge is detected (button released)
    elif event.edge == NeoTrellis.EDGE_FALLING:
        trellis.pixels[event.number] = shuffled_colors[event.number]

for i in range(16):
    # activate rising edge events on all keys
    trellis.activate_key(i, NeoTrellis.EDGE_RISING)
    # activate falling edge events on all keysshuff
    trellis.activate_key(i, NeoTrellis.EDGE_FALLING)
    # set all keys to trigger the blink callback
    trellis.callbacks[i] = blink

    # cycle the LEDs on startup
    trellis.pixels[i] = ANIM_COLOR
    time.sleep(.05)

# On start, set the pixels on trellis to the file name colors chosen
for i in range(16):
    trellis.pixels[i] = shuffled_colors[i]
    time.sleep(.05)

while True:
    # call the sync function call any triggered callbacks
    trellis.sync()

    # Check push switch, reset trellis buttons randomization if pressed
    if not push_switch.value:
        myaudio.stop()  # Stop any audio playing
        print("RGB Switch Push - reset shuffle if needed")
        shuffled_names = list(wavnames)     # Reset with clean lists
        shuffled_colors = list(button_colors)
        for i in range(16):
            trellis.pixels[i] = shuffled_colors[i]
            time.sleep(.05)
        Shuffled = False
        led.color = GREEN
    # Check accelerometer
    if accel.shake(shake_threshold=15):   # Change shake(val) to tapped
        myaudio.stop()  # Stop any audio playing
        print("Unit Tapped - shuffle sound files to random buttons")
        shuffled_names = list(wavnames)       # Copy lists
        shuffled_colors = list(button_colors)
        for i in range(len(wavnames)):  # Do the shuffling
            random_i = random.randrange(len(wavnames))
            # Swap current name with a random slot
            name = shuffled_names[random_i]
            shuffled_names[random_i] = shuffled_names[i]
            shuffled_names[i] = name
            number = shuffled_colors[random_i]
            shuffled_colors[random_i] = shuffled_colors[i]
            shuffled_colors[i] = number
        for i in range(16):
            trellis.pixels[i] = shuffled_colors[i]
            time.sleep(.05)
        print(shuffled_names)
        print(shuffled_colors)
        shuffled = True
        led.color = RED
    # the trellis can only be read every 17 milliseconds or so
    time.sleep(.019)

Audio Files

The sounds used in this project are sampled from popular music and movies. The pack contains various sounds that are already in the supported audio format. The file names must contain a two digital number followed by a color and single phrase description (00-15). For example:

  • 00-red-bird.wav
  • 01-blue-cat.wav
  • 02-green-dog.wav

The two digit number represents the button pad on the NeoTrellis. Located on the top of the PCB are labels with numbers 1-16. For example, the file name with "00" will be mapped to the first NeoPixel #1.  A total of 16 audio files can be used. 

Audio files must be in a directory named "sounds". 

Adafruit CircuitPython supports 16-bit, Mono, 22.050kHz .wav audio format. See this guide to help format any audio files you might want to use in this project besides the files provided.

NeoPixel Colors

Supported colors are in the list below. Optionally create custom colors using RGB values. List of colors are located in the code on line 17.

# Color definitions
OFF = (0, 0, 0)
RED = (25, 0, 0)
YELLOW = (25, 15, 0)
GREEN = (0, 25, 0)
CYAN = (0, 25, 25)
BLUE = (0, 0, 25)
PURPLE = (18, 0, 25)
WHITE = (127, 127, 127)

Additional colors must be added to the array on line 87 and 88.

COLORS = ["RED", "YELLOW", "GREEN", "CYAN", "BLUE", "PURPLE", "WHITE"]
COLOR_TUPLES = [RED, YELLOW, GREEN, CYAN, BLUE, PURPLE, WHITE]

Header Installation

Use a 12-pin and 16-pin female headers on the Feather M4 Express. Insert the headers from the top of the PCB.

Use a 12-pin and 16-pin male headers on the PropMaker FeatherWing. Insert the headers from the bottom of the PCB.

Prop-Maker FeatherWing Breadboard

Use a breadboard to make soldering easier. While holding the headers in place, press the the male header pins down into the breadboard. With the PCB secured in place, solder all of the pins. Once finished, remove from the breadboard and inspect solder joints. Make sure all of the solder joints are solid.

Feather PCB Vise

With the male header pins now soldered to the FeatherWing, install the female headers to the male header pins. Make sure the Feather M4 Express is properly seated into the female headers. The two PCBs should be sandwiched together. Use a PCB stickvise to hold it in place while soldering. Solder all the pins.

Soldered PCB Headers

With the pins soldered in place, remove from the PCB stickvise and pull them apart to separate them. Thoroughly inspect all of the solder joints to ensure they're solid.

Cables for RGB LED Pushbutton

The RGB LED pushbutton requires a total of six wired connections. To make the assembly easier, use a 4-pin and 2-pin JST cable set. These allow the component to be easily connected. The cables are a bit long for this project, so cut them so they're about 7cm(3in) in length.

Tinning 4-pin cable

To make wiring a bit easier, it's a good idea to tin the strands of wire to prevent them from fraying. Use wire stripper to remove a bit of insulation from each wire. A third helping hand tool and help keep the whiles steady while soldering. With the wires exposed, add a bit of solder to tin them. Repeat for the accompanying 4-pin JST cable set.

Tinning 2-pin cable

Proceed to tin the 2-pin JST cables.

Tinned Wires

Here are the two cables, tinned and ready to wire. Pieces of heat shrink tubing and help keep the wires together. Take a moment to check the tinned wires and length of the cables. If they're too long, it may not fit inside the enclosure. Obversely, too short and they won't reach the components. 

Connecting to Button

The RGB LED pushbutton will need a single 4-pin and 2-pin JST cable. The accompanying cables will connect to the Prop-Maker FeatherWing. Pick either the female or male connectors to attach to the RGB LED button.

Soldering Wire to Buttons

Before soldering, take a moment to plan which wires to connect the leads. The bottom of the button has the following labels.

  • C+ (common anode)
  • R (red LED)
  • G (green LED)
  • B (blue LED)

Here's how I connected them.

  • C+ to black wire
  • R to red wire
  • G to green wire
  • B to white wire

Wired Button

Proceed to solder the 2-pin JST cable to the two unlabeled leads on the push button. These leads are for the button switch, not the RGB LED. Polarity does not matter for switches, so the colored wires can go either way.

Take a moment to inspect the soldered connections. Spacing is a bit tight so you'll need to be precise.

Switch 2-pin JST Cables

Use one of the 2-pin JST extension cables to connect the toggle switch to the Prop-Maker FeatherWing.

Cut the extension cable so each connector has a wire length of about 6cm(2in).

2-pin JST wire tinning

Using wire stripper, remove a bit of insulation from each wire. Use a third helping hand tool to keep the whiles steady. Add a bit of solder and tin the stands of wire. Repeat for the accompanying 2-pin JST cable.

Solder Wires to Switch

Decide which cable you'd like to connect the switch (doesn't matter which). Tin the leads using a bit of solder – This will make the wires "stick" better. Solder the two wires to the middle pin and either far left or right pin. 

Wired Toggle Switch

Double check the wires are properly soldered. The solder joints should be solid. A pieces of heat shrink tubing will keep the wires bundled together.

The second JST cable will connect to the Prop-Maker FeatherWing, later in the build. Set it aside for now.

Reset 2-pin Wire

Use a 10-wire silicone cover stranded-core ribbon cable. Cut a piece so the cable has a length of 6cm(2in). Then, peel off a 2-wire bundle. Use this wire to connect the metal ball tactile button.

Reset Wire Tinning

Using wire stripper, remove a bit of insulation from each wire. Use a third helping hand tool to keep the whiles steady. Add a bit of solder and tin the stands of wire. Pieces of heat shrink tubing will keep the wires bundled together.

Soldering Wire

Secure the metal ball tactile button to third helping hands or a panavise to keep it in place. Tin two of the leads on the button (the side where the leads are protruding). Then, solder the wires to the two leads.

Wired Metal Ball Tactile Button

Check the wires are properly soldered. The solder joints should be solid. A piece of heat shrink tubing will keep the wires bundled together.

NeoTrellis Cable

Grab the left over 10-wire ribbon cable that was used for the reset button. Peel off a 5-wire bundle from the cable. The length of the wire should be 6cm (2in).

NeoTrellis Wire Tinning

Peel apart the ends of each wire. Using wire stripper, remove a bit of insulation from each wire. Use third helping hands to hold the cable in place. Add a bit of solder to the strands of wire to tin them.

NeoTrellis Wiring

Secure the NeoTrellis PCB to a panavise or PCB stickvise. Reference the photo for the correct set of pads. Add a bit of solder to that set of pads. Note the orientation of the wires – This will make the assembly much more clean and tidy. Carefully attach each wire to each pads by heating up the solder. 

Wired NeoTrellis

Double check the wires and pads are properly soldered.

Check Point

At this time, gather the wired components. The NeoTrellis, RGB LED button, reset button, and toggle switch will connected to the Prop-Maker FeatherWing via the accompanying JST connectors. Note. The reset button will be wired directly to the FeatherWing.

PropMaker Cables

Gather the Prop-Maker FeatherWing, JST cables and reset button.

RGB LED Wiring

Connect the wires from the 4-pin JST cable to the RGB pins on the Prop-Maker FeatherWing. Reference the wiring from the RGB LED button so the colors match. Use a PCB stickvise to secure the PCB in place while soldering. Solder the wires from the bottom of the Prop-Maker FeatherWing.

Enable Wiring

Connect the accompanying 2-pin JST cable from the toggle switch to the enable and ground pins on the Prop-Maker FeatherWing. Insert the wiring through the strain relief hole. Solder the wires from the top of the PCB. Polarity doesn't matter.

Switch Wiring

Connect the accompanying 2-pin JST cable from the RGB LED pushbutton to the switch and ground pins on the Prop-Maker FeatherWing. Solder the wires from the top of the PCB. Polarity does not matter. 

Reset Wiring

Connect the wires from the metal ball tactile button to the RESET and ground pins on the Prop-Maker FeatherWing. Reference the photo or the labels on the Feather M4 Express. Ground wire is soldered to the existing header pin. Solder the wires from the top of the PCB.

Connecting NeoTrellis

Get the NeoTrellis PCB ready to connecto the Prop-Maker FeatherWing.

NeoTrellis Wiring

Connect the cable from the NeoTrellis to the following pins on the Prop-Maker FeatherWing.

  • INT from NeoTrellis to Pin #5 on Prop-Maker FeatherWing
  • VIN from NeoTrellis to 3V on Prop-Maker FeatherWing
  • GND from NeoTrellis to Ground on Prop-Maker FeatherWin
  • SCL from NeoTrellis to SCL on Prop-Maker FeatherWing
  • SDA from NeoTrellis to SDA on Pro-Maker FeatherWing

Wired Prop-Maker FeatherWing

Take a moment to inspect the components and wiring.

Installing Speaker

Gather the mini oval speaker and 3d printed case. Locate the spot inside the case for the speaker – It has several holes and two raised edges. The speaker will be fitted in this spot.

Speaker Case

The mini oval speaker should have a loose fit. Instead of a friction fit, we'll "stick" it to the surface.

Remove Sticker Backing

Peel the protective backing from the speaker. Handle with caution to avoid accidentally dropping. 

Secure Speaker

Get the speaker inside the case and position it so it's directly over the spot. Note: The wire is pointing away from the holes. Carefully reposition and adjust so the speaker is lined up as close as possible. Reference the photo as needed. Press firmly to adhere the speaker to the case.

Installed Speaker

The speaker cable has just enough length to reach the audio out port on the Prop-Maker FeatherWing.

PCB mounting screws

Gather the Feather M4 Express and PCB mount. Use the following hardware to secure the Feather to the mount.

  • 4x M2.5 x 10mm
  • 4x M2.5 hex nuts

Install Screws

Insert the M2.5 x 10mm nylon screws through the top of each mounting hole on the Feather M4 Express. Insert them all the way through so the screw heads are flush with the PCB.

Installing to PCB mount

Orient the PCB mount so the mounting holes line up with the Adafruit Feather M4 Express. Reference the photo for correct placement.

Installed Screws

While holding the screws in place, insert the threads of the screws through the built-in standoffs on the PCB mount. The standoffs should have a loose fit allowing the screws to pass all the way through.

Install Hex Nuts

While holding the screw down, insert a hex nut onto the thread of the screw from the bottom of the PCB mount.

Installed Hex Nuts

Repeat this process for the remaining screws. Finger tighten the hex nut and try not to over tighten.

Secured PCB

The Feather M4 Express PCB should be secured to the PCB mount. Double check the parts are installed in the correct orientation.

Install PropMaker to Feather

Get the Pro-Maker FeatherWing and snap it on top of the Feather M4 Express. Handle the wiring and components gently to avoid any stress or damage. 

Connect Battery

Get the 1200mAh battery. Insert the cable through the bottom of the PCB mount. Reference the photo for correct placement. Plug in the JST connector from the battery to the battery port on the Feather M4 Express.

Connect Speaker

Get the case with the installed speaker. Grab the cable from the speaker and plug it into the speaker port on the top of the Prop-Maker FeatherWing.

Connected Speaker

The length of the speaker cable should be enough to freely handle the components.

Install PCB Mount

Get the PCB mount ready to install into the case. Orient the case and PCB mount so the Feather's USB port is lined up with the cut out on the case.

Installed PCB Mount

Place the PCB mount into the case at an angle. The speaker will be in the way so start with that side. Press the part down so it's flush with the tabs on the case. The Feather's USB port should be line up with the cutout on the case. 

Setup Case

The PCB mount is loosely fitted inside the case. In the next page we'll secure the standoffs and finalize the rest of the assembly.

M3 Standoffs

Get 4x M3 x 20mm standoffs – female to male. These are available in an assortment kit purchased from Amazon.

M3 Screws

To make assembly easier, go ahead and fasten a M3 x 6mm flat head screw into each standoff. Do not over tighten.

Install Standoffs

Insert the standoff with the male thread going in through the tab on the PCB mount. Guide the thread into the heat set insert on the case. Fasten the screw to tighten the standoff. Repeat this process for the remaining mounting tabs.

Remove Screws

With the standoffs now installed, you'll need to remove the flat head screws from the standoffs. While holding the standoff, begin to unfasten the screw. The tray for the NeoTreliis PCB will be fitted on top of the standoffs so the screws need to be removed.

Secured Standoffs

Double check and make sure the standoffs are tightly fastened. In the next pages, you'll panel mount the remaining components and complete the assembly.

Connect Switch

Get the toggle switch and connect it to the accompanying JST cable from the Prop-Maker FeatherWing.

Install Toggle Switch

The toggle switch is panel mounted to the side of the case. Locate the 6mm diameter hole on the side of the case. Insert the stem of the switch through the mounting hole. Press the body of the switch up against the wall.

Secure Toggle Switch

While holding the switch, insert the washer onto the stem. Begin to fasten the accompanying hex nut to the threading on the stem. Use pliers to tightly fasten the hex nut.

Panel Mounted Switch

The orientation of the toggle switch can be adjusted. The toggle switch can be positioned so it's flipped up/down or left/right depending on how you've mounted it. Note: This is the "power" switch – It will turn the device on and off. Adjust to your desired preference. 

Installing RGB LED Button

The RGB LED button is also panel mounted to the side of the case. 

Install RGB LED Button

Insert the RGB LED button into the 16mm diameter hole on the side of the case with the wiring going in first.

Secure RGB LED button

Get the accompanying hex nut and insert it through the wiring. Place hex nut over the threaded body and begin to fasten. Proceed to fasten until hex nut is tightly secured.

Connect RGB LED

Plug in the 4-pin JST cables together. Take caution when handing the wires. These connections are for the RGB LED inside the pushbutton.

Connect Button

Plug in the JST cable from the RGB LED button to the JST cable that is wired to the SW pin on the Pro-Maker FeatherWing.

Panel Mounted Components

Take a moment to adjust wires and make sure components are secured in place. 

NeoTrellis Tray Installation

Get the tray for the NeoTrellis PCB and the 4x M3 x 6mm flat head screws.

Installing NeoTrellis

Insert the NeoTrellis PCB through the bottom of the tray. The PCB should fit through at an angle.

Press Fit PCB

Orient the PCB so the edges line up with the tray. Press the PCB into the tray.

Installed PCB

The PCB should have a tight fit inside the tray. The PCB can be repositioned to your desired orientation. Reference the labels on the NeoTrellis PCB for desired placement.

NeoTrellis PCB Tray Installed

The PCB should be flush with the tray. If the PCB doesn't fit, you can sand away the mouse bite marks from the edges. PCBs normally have these left over from the depanelization process. Use a power rotary tool, sandpaper or filing tool. Be sure to wear a proper breathing mask when sanding FR-4 PCBs in a well ventilated area.

Install Reset Button

Place the metal ball tactile button over the square plank on the tray. Reference the photo for best placement.

Installed Reset Button

The metal ball tactile buttob rests over the plank. Once the top cover is fitted over, it should stay in place. The leads on the button should grip onto the sides of the blank. Take caution if bending the leads – you don't want to snap them off!

Insert Tray

With the NeoTrellis PCB and metal ball tactile button installed, begin to install it into the case. Reference the photo for best placement. While holding the tray and case together, flip the build over and adjust the wiring so they're inside the case and none of the wires or components are being pinched or kinking. 

Installing Tray

Press the tray into the case and line up the mounting holes with the standoffs. Double check the placement of the tray.

Secure Tray

Begin to insert and fasten the 4x M3 x 6mm flat head screws into the mounting tabs of the tray.

Installed Tray

Double check the hardware is tightly fastened.

Install Button Elastomers

Get the 4x4 button elastomers and orient so the registration keys line up with the holes. Place the pad over the PCB and press down. Make sure the registration keys are fully seated.

Install Top Cover

Grab the top cover and orient so the cutout for the metal ball tactile button is lined up. Press down on the cover to snap fit into place. The cover features snap fit feathers that clamp shut.

Battery Tack

Use mounting tack/putty to secure the 1200mAh lipo battery to the bottom cover. The bottom cover features a dedicated spot for the battery.

Secure Battery

Orient the battery so the cable has enough slack to reach and maneuver.

Closing Bottom Cover

Handle the case and bottom cover and begin to close it up. Make sure the bottom cover is orientated so the battery can be fitted inside the case. Adjust the wiring as necessary. 

Final Build

Flip the switch to turn it on and test it out! The top and bottom covers can be removed using finger nails or praying tool. The battery can be recharged via the microUSB port.

This guide was first published on Jul 16, 2019. It was last updated on Jun 29, 2019.