Low-Poly Iron Man
This project combines several electrical components and features into a single visually appealing project. I found the low-poly Iron Man design online and laser-cut the outlines on a piece of wood and then painstakingly hand-painted the entire thing. I added lights on the back that can be controlled through an Amazon Echo (Alexa) or a smartphone app called Blynk. It is completely battery powered so that there isn't a power cable hanging down from it except when it needs charging.
ESP8266 NodeMCU 1.0 Microcontroller
WS2812B LED strip lights (5V)
12V/5V battery pack
Standard RGB LED strip
TIP122 high-amperage transistors
3.3v to 5v logic level converter
Lots of hot glue (~5 sticks) and solid core wire
Time and patience
Demo Video tbd
Design and Laser Cutting
The source image is an illustration by William Teal, please give his portfolio a look for other great works by him: https://www.behance.net/tealeo93 (I think it's his - I followed the rabbit hole of GoogleImages, Pinterest, GraphicDesignJunction, Behance)
I spent a day or two of class time using the pen tool in Adobe Illustrator to draw over every line in the image. I drew shapes for the acrylic pieces so that they could easily by copy/pasted into a separate artboard for laser cutting the acrylic.
Normally when laser etching a material you use a function called raster etching - this function moves the laser head across the workspace like an inkjet printer head. It moves quickly, but to etch all the lines in this project using raster etching would take hours. Instead, I "vector cut" all the inside lines at 70% speed and reduced power so that it etched the lines instead of cutting all the way through. This vector etching is shown in the video on the right.
Laser etching the inside lines
Painting... and more painting... and painting again... forever... please help me
So. Much. Painting. I'd estimate it was about 20 hours of painting.
If you're thinking about doing a project with as many triangles as this, please don't paint it yourself unless you love painting. Just pay to get the image printed on metal or wood and then cut that out, or get it printed on something flimsy like a poster and glue that piece onto something solid.
I used FrogTape painters tape to outline each triangle on the piece as I painted this. This gave me much more consistent results than my early attempts at filling in each triangle by hand without any tape borders. The FrogTape gives lines that are much more crisp than the white or blue painters tape. Your time and sanity is completely worth the extra $2/roll of tape. If you want it to be skinnier you can use an exacto knife to cut the top few layers of tape into even smaller strips so that when you outline one triangle it doesn't cover up as many neighboring triangles. (Shoutout to Matthew Sheppherd for the FrogTape suggestion)
I'm cheap and don't have much experience with painting so I used 2 oz bottles of paint from Michael's or Hobby Lobby. I found that the Craft Smart Premium line covered fairly well, and ended up using the CraftSmart Premium Metallic Festive Red paint mixed with white or black to make 95% of my red shades. Yellow was just the Craft Smart premium yellow, with a little gold thrown in as an attempt to make it slightly glittery.
Light modules to backlight the acrylic
I made a separate light module for each acrylic piece using WS2812B LED strip sections.
First I cut a piece of 1/4" black foam board to a size slightly bigger than necessary and drew an outline of the acrylic piece on it. Then I cut and taped the LED strips for that piece in a way that mostly covered the acrylic area. The female connectors for each light module would be better done with a prototyping board and some screw terminals, but I didn't have those on hand when I was ready to start wiring it. As a workaround, I cut some female header pin strips to 4 inputs - Ground, 5V in, data in, data out. I hot-glued the female header strip to the foam board and began soldering all the lights together.
The soldering was actually really challenging because of how small those solder pads were. Luckily I had two chances for all the power and ground pads because each strip can be supplied power to either end. I laid out the strips so that the data wire flowed in a serpentine pattern. I use a soldering iron with adjustable temperature and I've found that I like the temperature to be at the upper end of the range colored green - I probably like it hot because the soldering iron I used for years was cheap and had no temperature controls and ran hot.
Once everything was soldered on, I used an exacto knife (with a fresh blade) to cut strips of the foam board to enclose the lights and reduce bleed-through. I used white instead of black because I had longer strips of it and actually it was a good thing because it allowed me to easily see from the back side if that section of LED strips was turned on during the testing step of wiring it all up.
For detailed steps on wiring up the electronics please see the Instructable.
Here are some important points that took me hundreds of tabs in Chrome to figure out
The voltage for the signal wire of WS2812B LED strips needs to be 70% of the line voltage. Running the lights at 5V means the signal needs to be 3.5V, which is a problem because the ESP8266 controllers run at 3.3V. I was having random pixels be an incorrect color (often pink or green) until I got a 3.3V to 5V logic level converter
Use pliers to turn the legs of TIP122 transistors sideways 90° to fit them into a breadboard
Hot glue and plastic cable organizer clips are your friend
For more detailed software help read the Instructable or email me.
This project uses various libraries so that it can be controlled from a phone app called Blynk, turned on/off from an Amazon Echo, and the code can be updated over wifi. Some of the libraries used are below
Blynk - https://www.blynk.cc/ - Blynk is a service that allows simple control between an ESP8266 microcontroller and a customizable phone app. The phone app allows you to build an application with buttons, sliders, RGB color pickers, and much more. Each "widget" changes a value that can be pulled from the Blynk app whenever you run a certain function.
OTA (Over the Air) Update- default library included with the ESP8266. This creates a virtual port on your local wifi network that the Arduino IDE identifies as a controller and you can wirelessly upload code to it.
Alexa Wemo Emulator - https://github.com/witnessmenow/esp8266-alexa-wemo-emulator - Tricks the Amazon Echo into thinking that your project is a Wemo light switch. The code allows you to define a function to run when Alexa sends the "turn on" signal and a separate function for the turn off signal. You can emulate multiple devices (up to 10) with a single controller which allows even more flexibility. My code is set up so that the Echo finds two devices named "Iron Man" and "Night Light". They're both this project and this controller, but if I turn on "Night Light" it will run a function with dim white lights, where as turning on "Iron Man" sets the outer LED strips to red and the acrylic pieces to white.
I've been using Visual Studio at work for a few months now and I love all the autocomplete tools it has built in, so after some searching I found that I could actually use Visual Studio instead of the normal Arduino IDE. A single computer vMicro license costs $15 for students, which in my opinion is totally worth it if you're going to spend more than a few hours programming Arduino code.
A note on FastLED vs Neopixel libraries
I use FastLED in my projects simply because I found more functions online already made for it, and at this point I've made many projects using it so I have lots of code to reuse. I'm sure the Neopixel library would work just as well if you worked on it enough. I'm planning on putting all my custom functions on GitHub for other people to use, I just haven't gotten around to it yet.