Project tutorial

3D-Printed RGB Wallet © GPL3+

Stand out from the crowd with this unabashedly ostentatious excuse for a wallet.

  • 1 comment
  • 10 respects

Components and supplies

Microchip Technology ATtiny85 - DIP
Adafruit Neopixel Buttons
DIP-8 Socket
2-Pin JST Connector
LiPo - 100 mAH
Ph a000066 iso (1) ztbmubhmho
Arduino UNO
Just needed for programming the ATtiny85
12002 04
Breadboard (generic)
Just needed for programming the ATtiny85
Stranded-Core Wire

Necessary tools and machines

Hy gluegun
Hot glue gun (generic)
09507 01
Soldering iron (generic)
3D Printer (generic)

Apps and online services

About this project

Stand out from the crowd with this unabashedly ostentatious excuse for a wallet. It's got plenty of space, RGB lights, and you can even put your name on it for added vanity. Interested? Keep reading!

Step 1: Print it out!

In the files section of this build you can find two things: a Fusion archive and some STL files. If you're just interested in printing a blank wallet without any text on it then download the STL files. Load them into your favorite 3D-print utility, and make sure they're in the orientation shown above. No rafts or support material are necessary, and anywhere from 0.3mm per layer to 0.05mm per layer should work. If you would like to customize the design, import the archive into Fusion and get to work! If you want a customized design but don't want to put any effort in, message me and I can help you out.

Step 2: The Circuit

The challenge here is getting three NeoPixels, a microcontroller, and a battery to fit in the tiny base compartment of the wallet. The parts I chose reflect the small space: button-size NeoPixels, an ATtiny, and a 100 mAh battery. There's also no space for a printed circuit board, breadboard, or perfboard; the only remaining option is to free-wire the circuit! Free-wiring is a technique where you utilize only wires and solder to connect everything together. If you've never done it before, this is an easy project to start on!

Step 3: Wiring the LEDs

The first component to start on is the NeoPixels. Use the base of the wallet as a template and try to put an equal amount of wire in between each NeoPixel. Also leave a fair bit of wire on the end to connect to the microcontroller. See the above image if you get stuck. Also, be sure to wire the data bus on the NeoPixels in the direction indicated: out to in only!

Step 4: Hot Glue

After pretty much every connection you solder it's important to place a dab of hot glue for strain relief. Rather than having all the stress on a solder joint you can offload some of that stress onto the board and the wire's coating. This helps prevent connections from snapping.

Step 5: JST Connector

Solder a small piece of wire onto each terminal of the JST connector, and be sure to identify which one is positive and which is ground.

Step 6: Connecting Everything Together

You will need to solder the ground of the JST connector and the ground of the NeoPixel strip to pin four of the DIP socket, then solder the positive of each to the opposite corner of the DIP socket (pin 8). The data line on the NeoPixels should go to pin 2 on the DIP socket, or output three of the ATtiny. Be sure to leave an ample amount of wire so you have the ability to move components around to get them to fit in the base.

Step 7: Uploading the Software

I created an electronics lab simulation so you can test out software before you upload it to the ATtiny. Check it out here: The demo sketch attached in the code section of this build uses functions taken from the Adafruit NeoPixel library. It cycles through various colors on each NeoPixel, producing a cool multi-colored effect. Upload that sketch to the ATtiny by following the instructions in this tutorial:

If you've done this before and know how to program an ATtiny85 just make sure you burn the bootloader first. I spent the better part of an hour trying to debug my circuit because the lights weren't behaving correctly only to discover that burning the bootloader could fix it.

Step 8: Smooshing It All in There

Plug the ATtiny85 into the DIP socket (in the correct orientation!) and the lights should start changing colors. You can now place the whole circuit into the base of the wallet as shown, then snap the base onto the middle section. The lights should diffuse nicely throughout the whole thing. I recommend white PLA or ABS for the best effect.

More Information

The wallet itself can actually fit more than it appears. There's room for four credit cards in the middle section, a bunch of bills, and coins of all different sizes. You can remove the base with the lights whenever you want to make the wallet even smaller. NeoPixels are pretty power hungry. Given the small size of the battery the circuit can run for a little over an hour. Keep this in mind when showing off your creation!

A fun next step would be to modify my case so that it has an opening for a slide switch. This way, you can turn the lights on and off without having to disconnect and reconnect the battery.

That's all! Let me know what you think or if you end up making one of your own. You can check out more of my builds on my Hackster profile page (, my website (, and my Medium page (


//Alex Wulff -

#include <Adafruit_NeoPixel.h>

#define PIN            3
#define NUMPIXELS      3
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  // put your setup code here, to run once:
  pinMode(PIN, OUTPUT);

void loop() {

void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256*5; j++) { // 5 cycles of all colors on wheel
    for(i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));

// Input a value 0 to 255 to get a color value.
// The colours are a transition r - g - b - back to r.
uint32_t Wheel(byte WheelPos) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
   return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else if(WheelPos < 170) {
    WheelPos -= 85;
   return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  } else {
   WheelPos -= 170;
   return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);

Custom parts and enclosures

Fusion Archive
Upload this in your Fusion 360 Data Panel

Schematics Breadboard Simulator
You can use this to test code before uploading it to the ATtiny


Similar projects you might like

3D-Printed Prank Vibrating Cup

Project tutorial by Alex Wulff

  • 20 respects

Simple 3D-Printed WS2812-Based RGB Lamp

Project in progress by Arnov Sharma

  • 8 respects

3D-Printed Nanoleaf ATtiny85

Project tutorial by Arnov Sharma

  • 24 respects

The Magnetic Field and RGB Tester

Project tutorial by Kutluhan Aktar

  • 1 comment
  • 19 respects

Automated Staircase RGB LED Lights

Project tutorial by

  • 151 respects

Tito - Arduino UNO 3D-printed robot

Project tutorial by Camilo Parra Palacio

  • 61 respects
Add projectSign up / Login