Old computer peripherals. They're everywhere. Most simply consist of a box, a few wires & a few connectors. Instead of trashing that old box of peripherals in the attic, consider turning them into Retro Modules.
This Instructable details how to create a NeoPixel "flower dome" Retro Module, similar to the one seen in Beauty and the Beast. If you prefer, the "flower" pictured can be decorated to more closely resemble a real flower.
Step 1: Gather Parts From the Recycle & Junk Bins
Most of the parts used in this build are -- or were sourced from -- old devices. These older devices can usually withstand tough conditions in stride. They feature larger, easily hack-able components. The old parts are likely on their way to the landfill. You can rescue them.
The modern parts can be attained for about $20. Ask your local hackerspace if they have any spares.
What you'll need:
- 1x Arduino or similar microcontroller
- A $6.95 "Trinket 5V" was used in this build
- 1x "Jewel" "NeoPixel" board
- 1x "Ring" "NeoPixel" board
- 1x cheap rechargeable USB-friendly battery pack
- 1x potentiometer
- 1-4x DE-9 connectors
- These may be found within a DE-9 A/B switch or in old PCs.
- Crimp-on connectors are preferable as they reduce clutter & soldering time.
Step 2: Prepare the Base
A RJ-11 connector needs to be added to the top of the A/B Switch box. This is best accomplished with both a drill & a "sheet metal nibbler". First drill a hole large enough for the head of the metal nibbler to fit through. Then gradually remove small pieces from the top (or hood) of A/B switch. Take your time, as it is easy to accidentally remove too much material. When close to the ideal size, test-fit the plastic RJ-11 shroud.
The RJ-11 jacks should be wired to this specification.
Step 3: Prepare the Protoboard & Junk-bin USB Battery Booster
USB battery boosters are ridiculously cheap. Hopefully you already have one you can use with this project. This one was purchased from the discount junk heap of a local electronics store. Inside, there is a single 18650 Li-ion rechargeable battery. Thousands of batteries similar to this one power Tesla cars, among others.
We want both the battery & the board it came with. The board is both a charge controller & voltage regulator. It is best to use one of those two features at a time. For this project, I opted to remove the micro-USB connector & solder wires in its place. If you prefer, you can instead cut up a micro-USB cable & use the existing jack. After connecting wires to the necessary pads, bend the wires downward & remove the insulation so that the board may be easily soldered to the mainboard (see photos).
For the battery, search for & purchase 18650 battery clips. These can be installed directly onto the mainboard (as pictured). Alternatively, wires can be quickly soldered directly to each end of the battery. Reconnect the battery to the charge controller output.
Now is a good time to install the header for the DE-9 ribbon cable. The header can be wired to this specification.
Step 4: Mount the Microcontroller
This module utilizes the very affordableTrinket 5V, by Adafruit. Released in 2013, the microcontroller can easily accommodate a string of WS2812 "NeoPixels" & a potentiometer. As this module is part of the Retro Modules framework, the two pins with I2C capabilities will be exposed on the main DE-9 connectors. When this iteration of construction is complete, the module will be compatible with other 5V modules. A logic-level converter can be added later to ensure proper compatibility with lower-voltage modules.
As seen in the photos, I initially planned to have the Trinket mounted directly to the mainboard. A hole would have been necessary on the side of the A/B switch box. I decided this was not ideal & instead mounted the trinket to a cut segment of the mainboard. This allows access to the USB port (which can be used to update the microcontroller program) from the back of the A/B Switch.
Note: I ran into a problem with the Trinket. It needs to do a few things: read a potentiometer value, send data to the NeoPixels & optionally communicate via I2C. I quickly began to run out of pins on the tiny board. I had to connect the potentiometer to one of the two UART pins which are used to update the microcontroller. In order to update the microcontroller, the potentiometer must be disconnected. This can be remedied by using a larger variation of the board, such as the Pro Trinket. If this I upgrade the board later, it will be pretty simple as can just replace the existing segment of proto board with a new segment wired to the same spec.
Step 5: Install an Old Up-Cycled Power Switch
You want to be able to turn it off. This is best done by disconnecting both the microcontroller & NeoPixels from their power source. In this build I used a simple technique: install a pair of pins which can be connected via a jumper. While the board is being developed, use a jumper. When a switch with a female header is ready, use the switch. This technique allows for greater flexibility during construction & upgrade processes.
Source an old power switch from a broken electronic device, if possible. Old solder can be removed with a soldering iron & solder pump. Use the continuity feature of a voltage tester device to determine how the switch works. Solder wires to two of the connectors on the switch & the other end to a two-pin female header (you can create one by sawing from a larger header).
On the back of the A/B Switch, drill a few small holes to prepare for switch installation. Gradually widen those holes by increasing the size of your drill bit. Eventually the small holes will converge as a hole large enough for your switch. If you have a graduated drill bit and/or sheet metal nibbler, this is a good time to use those. If your switch can be installed via screws, make sure to drill holes for those too. A hot glue gun can also be used to install the switch. Just make sure the glue does not obstruct the mechanical functionality of the switch.
Step 6: Connect All the Components Together
Note: The mainboard was constructed without relying on a schematic. Since most of the elements are modular -- following www.retrospec.cc -- it was pretty easy to keep things organized during the construction process. I intend to create a schematic for the board soon. In the meantime, here is the general logic:
Given auxiliary power is available
Then the microcontroller will utilize auxiliary power
And the flower will utilize auxiliary power
And the battery will be charged
Given auxiliary power is unavailable
Then the microcontroller will utilize battery power
And the flower will utilize battery power
Given the power switch is in the "off" position
Then power cannot flow to the microcontroller
And power cannot flow to the flower
And auxiliary power can flow to the charge controller
Given the power switch is in the "on" position
Then power can flow to the microcontroller
And power can flow to the flower
And auxiliary power can flow to the charge controller
Step 7: Construct the Auxiliary Power Cable
A DE-9 A/B Switch usually has three connectors. In the Retro Modules framework I developed, modules are daisy-chainable. This means all three connectors can be connected to each-other 1:1. The first photo in this step includes the ribbon cable constructed for this project: three DE-9 connectors & a 10-pin header. Only one of the DE-9 connectors is necessary.
The Retro Modules spec indicates that up to 20VDC is available on pin 1 of a DE-9 connector. This means the Flower Dome Retro Module needs a voltage regulator capable of converting voltages up to 20VDC safely down to 5VDC. I originally opted for a linear voltage regulator, but later decided to use a UBEC step-down converter. It can stay cool while tolerating voltages up to 16VDC (I am still searching for an ideal power-conversion solution tolerant of 20VDC).
When power is connected to the module, the UBEC begins to output ~5VDC. This charges a 5VDC relay coil (pictured), switching the microcontroller & NeoPixels from battery to UBEC power. The battery charge controller also receives the UBEC power & begins to charge the battery.
There are three types of D-Subminiature connectors: solder, removable pins & ribbon. I prefer the latter two. Connect the positive terminal of a 12VDC power source to pin 1 of the DE-9 connector & the negative terminal to pins 4&9 (as indicated in the spec).
Step 8: Finish the Base Hood & "Flower"
A header should be added to the end of the cable connected to the RJ-11 jack on the hood of the switch box. For this project, only three wires are necessary: twenty-volts-max, common & pixel-data. This project, for now, will only feature ~5VDC on the `twenty-volts-max` contact. This is important as NeoPixels can only tolerate ~5VDC. Down the road, a UBEC voltage regulator may be installed on the back of the flower itself to ensure full compatibility with the spec.
Wire the custom header so the Data Input contact on the back of the flower is connected to `pixel-data` on the microcontroller module. Verify connections via a multimeter. The flower can be tested by running a NeoPixel Strand Test. Once operational, save a copy of the ino file & add code to read the value of the connected potentiometer. Try, first, to change the color value of one of the connected NeoPixels in the flower. You may find it useful to create three functions: setCenter, setInner & setOuter. The functions make it easier to set groups of pixels to color values all at once. The flower is just one linear string of tri-color LED modules. Splitting them into groups, via code, makes things easier.
Step 9: Close Everything Up
It is time. Close the lid. Screw in those screws. Connect the old-school knob & find that glass jar you saved.
Place it on a table & let it shine.
If you'd like, get a piece of scrap printer paper & create petals. NeoPixels can be very bright & can easily refract through a sheet of paper.
Step 10: Make More Retro Modules
This is not the end. No, merely the beginning! Like any modular framework, more can always be built. The Flower Dome Retro Module features I2C on its connectors. This means you could add code to the internal microcontroller that would listen for commands on the I2C bus. An external microcontroller (perhaps one that is internet-connected), could send color-change requests to the flower dome module (and/or request the current potentiometer value).
The Retro Modules project is a scratch-built project designed for makers of all ages. At its core: up-cycling of cheap old trash-bin-destined hardware into modern (sometimes whimsy) treasures. See retromodules.com for more. Thanks for reading! Good luck!