In this project we'll build the Guardian Shield + from Zelda Breath of the Wild! This shield measures 700 millimeters wide by 600 millimeters tall. We used a 1 meter long high density mini NeoPixel Strip to illuminate the "blades" of the shield. To make the center and side gems glow, we used a NeoPixel Jewel and a single breadboard friendly NeoPixel.

The main body is printed in clear translucent PLA to allow the lights from the LEDs to shine through. The blades are printed with a blue translucent PLA which is uv fluorescent and glows bright under black lights!

We used gray PLA for the back circular attachment and the handles. Gray PLA is used to mask details on the front of the shield. The masks help to block out light to define the details on the front of the shield. 

Articulating Handle  


The shield is held up by the articulating handle attached to the back side of the main assembly. You can adjust the angle to better suit your style of battle.




The USB port on the side allows you to quickly reprogram colors and animations. You can even recharge the beefy 6600mAh battery!


We recessed the slide switch on the back part of the main body to allow easy access to power on the shield when an enemy appears!

Prerequisite Guides

If your new to electronics and working with NeoPixel LEDs, I suggest you walk through the following guides to get basics of wiring and soldering. The following guides will walk you through setting up Arduino IDE and Adafruit libraries.

Parts, Tools and Supplies

Here's a list of the parts needed to make this project.

Angled shot of a Adafruit Feather M0 Basic Proto - ATSAMD21 Cortex M0.
Feather is the new development board from Adafruit, and like its namesake it is thin, light, and lets you fly! We designed Feather to be a new standard for portable microcontroller...
In Stock
Adafruit NeoPixel Digital RGB LED Strip with all the LEDs in a rainbow
So thin. So mini. So teeeeeeny-tiny. It's the 'skinny' version of our classic NeoPixel strips!These NeoPixel strips have 144 digitally-addressable pixel Mini LEDs...
In Stock
Four glowing Breadboard-friendly RGB Smart NeoPixels wired up on a breadboard
This is the easiest way possible to add small, bright RGB pixels to your project. We took the same technology from our Flora NeoPixels and made them breadboard friendly, with two rows...
Out of Stock
NeoPixel Jewel - 7 x 5050 RGB LED wired to Trinket, lit up rainbow
Be the belle of the ball with the NeoPixel Jewel!  We fit seven of our tiny 5050 (5mm x 5mm) smart RGB LEDs onto a beautiful, round PCB with mounting holes and a...
In Stock
Lithium Ion Battery Pack with three round cells 3.7V 6600mAh with JST PH connector
Need a massive battery for your project? This lithium-ion pack is made of 3 balanced 2200mAh cells for a total of 6600mA capacity! The cells are connected in parallel and spot-welded...
In Stock
Mini Panel Mount DPDT 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...
In Stock
Type A Machines Series 1 Pro 3D Printer printing an orange vase
Built to last and better than ever. The Series 1 Pro 3D printers from Type A Machines offer durability, modularity and one of the largest...
Out of Stock

Slice Settings

Download the STL file and import it into your 3D printing slicing software. You'll need to adjust your settings accordingly if you're using material different than PLA.

  • 230C Extruder Temp
  • No heated bed (65C for heated)
  • 100% Extrusion Multiplier
  • .6mm Nozzle
  • 0.72 Extrusion Width
  • .4mm Layer Height
  • 20% infill
  • 4 to 6 skirt outlines (brim)
  • No Raft or Supports

CAD Model

The deck was designed in Autodesk Fusion 360. You can download the source file and modify the design to make a custom board. The STL file is available to download if you want to print "as is" without any modifications. 

NeoPixel Strip Connections 

D IN (white) on the NeoPixel Strip connects to pin 6 on the Feather board.
+ (5V) on the strip connects to one of the pins connecting to the BAT pin.
-  (GND) connects to one of the pins on the GND rail.


NeoPixel Jewel Connections

Data In on the Jewel connects to pin 5 on the Feather.
GND on the Jewel connects to one of the GND pins on the ground rail on the Feather.
5V wire on the Jewel connects to one of the pins connecting to the BAT pin


DPDT Toggle Switch

Top middle pin connects to the BAT pin.
Top right pin connects to a pin on the prototyping area.
Bottom left connects to the EN pin.
Bottom middle connects to the GND pins on the ground rail on Feather.

Prototyping Area

We'll use several pins in the prototyping area to add more BAT pins to the circuit. This allows us power several NeoPixels to the BAT pin. You will have to bridge these pins using a good amount of solder in order to "tie" them together.

Battery Power

The lipo battery features a male JST-PH2 connector that plugs into the female JST-PH2 connector on the Adafruit Feather. When the switch is toggled "On" it will power the Feather and NeoPixels. When it is switched to the "Off" position, the EN pin will activate, allowing the battery to be recharged via the microUSB port. Use a 5V power supply (like from your computer's USB hub) to recharge the battery through the microUSB port on the Adafruit Feather. 

Setup Adafruit Feather M0 for Arduino IDE

Before we start disassembling or building the circuit, it's a good idea to get code uploaded to the micro-controller first. If you don't write / understand code, don't to worry! You don't need to be a programmer to be able to upload prewritten code :-) 

We'll walk you through the whole process. 

First, visit the Adafruit M0 tutorial page by clicking the button below. Follow the instructions to download & setup the Arduino IDE and install drivers.

Make sure you are able to get sketches compiled and uploaded, especially the blink example in the tutorial. Once you are comfortable with using the Adafruit Feather, you can continue!

Install Adafruit NeoPixel Library

Next, we need to add support for NeoPixels.

Visit the Adafruit NeoPixel tutorial to install the NeoPixel library!

Uploading Code to Board

Now that we have the Adafruit boards & NeoPixel library installed, we can get our code ready to upload onto the board. Select all of the code listed below in the black box and copy it to your clip board. Then, in Arduino IDE, paste it in the sketch window (making sure to overwrite anything currently there). Next, goto the Tools menu > Board and select Adafruit Feather M0 (Native USB Port) Now you can click on the "check mark" icon to verify the code. If it's all good, we can continue to upload the code to the board.

Connect USB Data Cable to Feather M0

Be sure to use a micro USB cable that can transfer data - A USB cable that ONLY charges devices will simply not work. Plug it into the microUSB port on the Adafruit Feather M0 board and the USB port on your computer (try to avoid connecting to a USB hub). As soon as you plug it in, you'll see a red LED blink on the Adaruit Feather M0 - This let's you know the board is ready to except code. While the LED is blinking, click on the Upload button (It's a right arrow icon, next to the check mark). The Arduino IDE will notify you if the upload is successful and completed.

// Original Code by Shae Erisson
// released under the GPLv3 license to match the rest of the AdaFruit NeoPixel library

#include <Adafruit_NeoPixel.h>

// Strip goes to pin 6, jewel goes to pin 5 on Adafruit Feather
#define STRIPPIN            6
#define JEWELPIN            5

// Setting up the two neopixel objects

Adafruit_NeoPixel strip = Adafruit_NeoPixel(144, STRIPPIN, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel jewel = Adafruit_NeoPixel(8, JEWELPIN, NEO_GRB + NEO_KHZ800);

int delayval = 10; // super quick delay, increase this value to make the wipe go slower

void setup() {
  strip.setBrightness(80); // increase value to increase brightness, 255 is max
  jewel.setBrightness(80); // increase value to increase brightness, 255 is max

void loop() {

  for(int i=0;i<8;i++){
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    jewel.setPixelColor(i, jewel.Color(255, 60, 0)); // Orange color.; // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).

  for(int i=0;i<144;i++){
    // pixels.Color takes RGB values, from 0,0,0 up to 255,255,255
    strip.setPixelColor(i, strip.Color(0,100, 255)); // blue color.; // This sends the updated pixel color to the hardware.
    delay(delayval); // Delay for a period of time (in milliseconds).

Prepare NeoPixel Strip


First we'll need to look for the the start of the LED strip. Look on the back side of the strip (the opposite side of the LEDs). Find the small arrow that points away from the beginning of the strip. Now we can prepare the NeoPixel strip by trimming off the connector. Leave the wire long by cutting as close as you can to the connector. 


Use flush cutters to trim off the connector. Next we'll need to strip the wires and then tin each end with solder. 


Use the 22 gauge setting on the wire stripper and remove the ends of the the ground (black), power (red) and data (white).

Now we can apply solder to each end of the wires to prevent them from fraying. 


You can set the LED strip aside while we prepare the NeoPixel Jewel.

Prepare Jewel


To make soldering the NeoPixel Jewel easier, we'll use third helping hands to hold it in place. Place the Jewel with the back side facing you and apply solder to both of the ground pins (GND), Data input, Data out and 5V pins.


Jewel wire


Measure three wires 140mm long to connect the Jewel to the Feather board. Strip and tin the wires to make it easier to solder to the Jewel. The pins on the Jewel are small, so it will make it easier to use a tweezer to hold wires while soldering.


You can set the Jewel aside while we move on to preparing the single breadboard NeoPixel. 

Breadboard NeoPixel


We like to use a tweezer to hold the NeoPixel and then use a third helping hand to hold the tweezer. Tin the side that has "In" "G" and "+" pins.


Measure wires


The single NeoPixel will illuminate the small gem on the front side of the shield. We'll need to add wires to connect it the Jewel. Cut and measure three 75mm long wires and strip and solder them to In, G and + pins.


Solder Pixel to Jewel


Attach the Jewel and NeoPixel to thrid helping hands and bring them close to each other. Solder the wires for G on the single NeoPixel to one of the G pins on the Jewel. Solder the In wire on the NeoPixel to the Data Out pin on the Jewel.  The + wire on the single NeoPixel will share power on the 5V pin. 


With the single NeoPixel soldered to the Jewel we can move on to solder the Jewel and NeoPixel strip to the Feather board.

Please follow the circuit diagram closely to properly connect the switch and the power to the NeoPixels. The assembly instructions below are for a different switch.

Slide Switch


Now we can tin two of the pins on the slide switch. Solder the wires next to each other, don't leave the middle pin empty. Reference the connections shown in the picture.


Cut two wires 60mm long for the slide switch so they can reach the port opening for the slide switch to fit into.


Solder Strip and Jewel and Slide Switch to Feather


Next we can start to attach all of the components to the Feather board.


D IN (white) on the NeoPixel Strip connects to pin 6 on the Feather board. + (Red) on the Strip connects to one of the pins on the 3V rail. The - wire (Black) connects to one of the pins on the GND rail.


Solder the Jewel to Feather


Now we can connect the wires for the Jewel to the Feather board. Data In on the Jewel connects to pin 5 on the Feather. GND on the Jewel connects to one of the GND pins on the ground rail on the Feather. The 5V wire on the Jewel connects to one of the pins on the 3V rail. 


Slide Switch


Finally we can complete the circuit by soldering the slide switch to the Feather. Solder one of the pins to the EN pin on the Feather. Solder the last remaining pin on the slide switch to on of the available pins on the GND rail.

Mounting Feather


Now we can mount the Feather to the "handle circle" part. We'll use M2.5x6mm long screws to secure the Feather to the standoffs on the part. You can pre drill the screws to make it easier to mount the board.


Position the Feather board so the USB port is aligned with port opening on the side of the part.


Align the holes on the Feather to the standoffs on the part and fasten the screws to secure the board to the part.

Mount Slide Switch


Next we'll need to secure the slide switch to the port opening on the handle circle part.


Fit the slide switch at an angle and then push it into place. The tolerances should fit tight but we'll use a dab of hot glue to secure the it place.


Carefully apply about two small squeezes worth of glue between the pins. Make sure to spread the glue around the walls of the port opening.


Mount Tri BTM part 


Now we can start to mount the parts that make up the shield triangle pieces. Position the "tri btm" part over the circle handle part so the standoffs for both are aligned. 


Thread circuit


Now we can pass the NeoPixel strip, Jewel and single NeoPixel through the cut out on the tri btm part. Set the NeoPixel strip aside so we can assemble the battery mount. To keep the Strip from pulling on the Feather, we tapped the end of the Strip to the side of the table.

Battery mount


The 6600mAh battery attaches to the battery mount part. The battery is held in place with zip ties, or like shown here, gaffers tape. The battery mount part also has a circular wall that allows you to mount the NeoPixel Jewel. 


Thread Jewel 


First we'll need to mount the NeoPixel Jewel to the battery mount part. Look for the slit on the circular wall mount and pass the Jewel wires through the slit.


Once the wires are through the slit, we can pass the single breadboard NeoPixel through the center of the circular wall mount. 


Finally we can press fit the Jewel into the circular wall mount.  

Attaching the battery


We can attach the battery to the battery holder part with zip ties or a piece of tape.


Thread the the zip ties or tape in between the slits on the battery holder like shown in the pictures. 


Position the battery so the wire sticks out of the longer side of the battery holder part. Lay the 6600mAh battery on opposite side of the Jewel and secure the battery to the battery holder.


Mounting the battery holder


Now we can take the whole battery holder assembly and secure it to the tri btm part and the handle circle part.


Position the wires for the battery and Jewel so they don't block the USB port opening. Keep the single breadboard NeoPixel with the Jewel.   


Use M2x12mm screws to attach the battery holder to tri btm part. Continue screwing through until you fasten the into the handle circle part. 

Mount NeoPixel Strip


Now we can fit the NeoPixel strip inside the walls of the tri btm part. Begin by aligning the strip to the closest wall with the LEDs pointing out and away from the center of the body. We don't what any blue light spilling into the center were the Jewel and the breadboard NeoPixel will light the center gems orange. 

Handle assembly


Now we can start to assemble the handle that holds the shield. The handle uses two M4.5x9mm tall screws that connects to the two side bars. The side bar then connects to the sides of the handle circle part with M3x12mm tall screws.

Attach handle


With the handle assembled we can move on to attaching it to the rest of the shield.


The handle circle has two counter sink holes to fit nuts for the M3x12mm screws. We can use tweezers to insert a nut and then screw the side handle bars into place.  


Hold the nut with one hand while screwing the side handle bars into place. Screw the other side and then position the handle so it will twist into place when you fold it straight out.

Cut NeoPixel Strip ends off


Before we close up the shield, we'll need to remove the wires on the end of the NeoPixel strip. Cut the wires as close as you can to the silicone ends to prevent the wires from touching and shorting out the circuit.

Blade assembly


Finally we can move on to assembling the "blades"  that make up the shield. 


Reference the diagram when laying out the blades, the pieces are not symmetrical.


Make sure to place the blades so the handle is vertical when holding the shield.  


Use twelve M2x12mm tall screws to secure the blades to the standoff on the edges of the tri btm part. We'll only need to use two screws for each blade.


Use one screws for each end of the blade. The blades will be held in place in the next step when we add the tri top part.

Connect Top


Final Stretch! Now we can move on to attaching the tri top part to the rest of the assembly.


We recommend screwing in all of the standoff on the tri top first. This will create the threads for each standoff, making it easier to attach both parts together. 


Align the tri top part by referencing were the smaller gem on the front will go. Now we can align standoffs on both parts and secure the parts with nine M2x12mm tall screws.  


Start by screwing in from the bottom, just enough to poke through the tri btm part and through the blade part. Then align it to the top standoff and fasten each side.

Masking detail


Now we can add detail to the front of the shield by attaching the masking pieces. You can use an adhesive like E6000 to secure the pieces. We used a couple pieces of blue tac.


Press down on the mask pieces and allow them to dry.


Now we can power on the LEDs, ready for battle! 

This guide was first published on Aug 02, 2017. It was last updated on Aug 02, 2017.