Intro: Holocron: Build a Star Wars Thumb Drive
In the Extended Universe of Star Wars, the Holocron is a sort of AI-assisted, telepathically-operated, information storage device. And, sure, you can build a prop version (there's even a kit). Or you can do a fancy version with a real flash drive, especially if you, like I, can say; "I Made it at TechShop."
Step 1: "Chewie, Hand Me That Hydro-spanner"
Materials needed for this project:
1/8th Acrylic sheet in pale blue and dark blue transparent (sourced from Tap Plastics)
Rustoleum Hammered-Finish metallic
A cheap USB cable to hack up (I got one for a buck at Urban Ore)
Super-bright LED (I chose to go a bit more elaborate with the lighting circuit, as will be described later in the Instructable).
Basic electronics tools (soldering iron, needle nose pliers, etc.)
Bondo Spot Putty (or similar)
Acrylic Cement (I got a tube from Tap Plastics)
A laser engraver
There is an existing kit (for technical reasons I can not supply a direct link, but a search for "Jedi Holocron" should pull it up); this kit has pre-cut acrylic pieces and all you need to supply is paint, glue, and the electronics.
I modified my kit extensively, to the point where I was practically lasering my own. Which is more fun to do anyhow so that is what this Instructable features.
Step 2: "That's No Moon..."
No, it is a box.
The shell consists of six pieces of laser-cut acrylic which, in the original kit, are identical in size. If you are making your own, you make them in three different sizes -- which makes assembly much simpler. I'll explain more when we get to the pieces I custom-cut.
I chose to create the "overlap" on this build by gluing little strips of 1/8" acrylic rod to selected edges. Which, since lasers don't cut at pure right angles (the cut opens up towards the bottom) meant I had to sand the pieces flat again after gluing. And then sand the whole assembly for quite some time after the box was built.
(Sanding blocks might work, but my technique for getting a flat surface is to place a full sheet of sandpaper on a flat, hard surface -- like my kitchen counter -- and sand with a swirling motion. Check your progress frequently, and rotate the piece in your hand every now and then; you are trying for a consistent pressure but none of us are perfect and if you keep it in one orientation you will develop a hot spot.)
Following gluing, and flat-sanding to as clean as possible, prime it, then address remaining seams and divots with Bondo Spot Putty. Sand again, prime again.
Now the shell is ready for painting.
Step 3: "Red Five Standing By!"
After priming, paint. I chose hammered copper as a nice contrast with the blue acrylic. The hammered finishes are finicky; you have to apply them heavy enough for the texture to develop, but not so heavy as to drip.
(They also are tricky to apply over themselves; you have a short window in which you can make a second coat; after that, you need to wait twelve hours or more before adding more paint).
Over that, I shot a few coats of Blair spray fix, because lots of other paints react badly with the hammered finish stuff. Then watered-down acrylic washes; I puddled black, green, and dark blue and dabbled that on with a sponge, blotting most of it away again.
It is the usual trick of puddling the wash into the cracks and crevasses and other places that would collect dirt and grime, and then mostly blotting clean the exposed surface that tend to stay a little cleaner.
(Full disclosure here; my first acrylic wash I cut with Jenkins Happy Medium. It looked lovely, but it interacted badly with the Rustoleum. After waiting four days for it to dry properly I gave up, stripped the paint completely, and started again from scratch).
Step 4: "Lock the Door..."
Set aside the shell. Now it is time for the translucent portion.
The original kit wasn't a bad solution; six rectangles of translucent blue acrylic. Sand the inside surface to create a nice diffusion, and it will light up nicely.
But since I had a laser...
Step 5: "...and Hope They Don't Have Blasters!"
When you engrave acrylic with a laser, it vaporizes the top fraction of an inch of the material. This leaves an irregular surface that is frosted in appearance -- and diffuses light quite nicely.
But what makes this even better than sandpaper is you can engrave an image; the negative areas of the image then transmit light normally. This makes for even more interest and movement.
To add even more complexity, I laminated the diffused panels with cut-out patterns in a darker translucent plastic. These are also designed to cover up the hotspot where the LEDs sit.
Oh, yeah; acrylic glue is a welding glue; it melts the surface of the plastic. This means it changes the appearance of the frosted portions. To make this work, I had to carefully mark out on the face piece where the outer shell would hide the glue, and apply glue only in those spots. I missed a little and oozed a little, but I more-or-less managed this.
Cyanoacrylics -- superglues -- are to be avoided; they craze and discolor acrylics. Fortunately epoxy and hot glue are fairly benign (they just don't have the same strength as those acrylic welds).
Step 6: "Close the Blast Doors, Close the Blast Doors!"
The important thing to know about preparing art for a laser engraver is how that particular machine interprets cut versus engrave. In the case of the Epilog Helix print drivers, the distinction is simple; all artwork is raster, with the exception of vector lines with a width of .001 points; those lines are treated as cut lines.
This means you can engrave and cut from the same piece of art, in one operation. Often, however, you get a cleaner cut if you cut twice, at lower power.
First, prep the original artwork. In the case of the "diffused" panels, the art consisted of text (using a freeware Star Wars font) wrapped to path (a circle), and a set of ornamental spline paths cloned several times to fill the outside shell.
I did this original art in the freeware vector art program Inkscape. In order to get the reversed image necessary to engrave all but the lines and words, I exported to Gimp, inverted there, then re-imported as a bitmap.
I used SVG as the interchange format between Inkscape and Illustrator, resulting in having to re-scale the image in Illustrator once I got to the printer. But this is easy enough to do.
The important measurement here is the actual inside dimension of the assembled shell. I measured that with calipers, then subtracted 1/16th of an inch for easier fit. That became the cut line.
To assemble a cube, however, you want three different sizes. You will have two "cap" pieces that are the full dimension of the space they are fitting into. The next four pieces fit between those two outer caps; thus you have two "inside side" pieces that are the same width, but shorter by two thicknesses of acrylic, and two "inside end" pieces that are shorter by the same two thicknesses of acrylic, but also less wide by two thicknesses of acrylic.
Look at the picture of the cut pieces again if that helps.
Step 7: "Those Turbo-lasers Will Cut Us Apart!"
The inner layer is just a cutout. I made a pattern of random blocks with connecting lines reminiscent of the patterns on the Millenium Falcon's control surfaces.
Laser engravers are probably the most forgiving CNC tool there is. But it is still good practice to combine your shapes and check for broken and overlapping paths.
To finish off the cutting, there were two special pieces; the "spider" holds the electronics in the center of the box, and the last piece is designed to hold the super-magnets that keep the lid on.
Do I need to point out you can assemble everything in Illustrator (or Inkscape), including reference layers, and by simply turning on and off visibility control what actually gets cut? Also, the color fills here are all for my reference; when I went to print, I selected "vector only" from the print options, thus none of the fill gets engraved; only the surrounding paths get cut.
TechShop will give you a basic class on the Epilog laser engravers before they allow you to use them. There are copies in the laser area of the class handout; specifically, the guide to powers and speeds. These will get you in the ballpark, but you must be prepared to make adjustments.
In the case of these pieces, many are so small I needed to reduce machine speed (as the warning posted near the lasers explains). I was using speeds no higher than 60% during the raster work to keep the print head from slamming back and forth too rapidly and damaging the motors.
For the actual engraving, I started on the low side of the recommended power. My first pieces bowed under the heat of all that engraving. I reduced power again over two more trials on scrap pieces, carefully notating my settings in my notebook as I worked, until I had a nice engraving with minimum distortion.
For the cutting, I started with my own power/speed combination found on a previous run with the same plastic, then modified it from there. You want to avoid having a lot of flare-ups when cutting. This is why the best cut is sometimes to do two passes at a lower power setting - without of course moving the piece between cuts!
In other practical matters? It generally took about four days to get a reservation in on the machines, although I managed to get some cutting done one day by waiting around for someone to finish early on their reserved block. The cut pieces were fast; it took longer to get the plastic in the machine and the print settings checked than it did to actually cut. The engraving, on the other hand, is multiple passes, and took 5-7 minutes for each piece. So get the full two-hour reservation; you'll need it.
(And bring extra material/scraps to experiment with -- I had to cut in three different sessions as I had never quite brought enough with me!)
Step 8: "Now That's a Name I Have Not Heard in a Long Time..."
We don't have Kyber crystals, but we do have flash drives. You can buy a USB extender cable and that might be a smarter way of doing things. I'm not smart. I chopped up a USB cable, and pried the housing off a thumb drive. The wires from the cut-off end of the USB cable got soldered directly to the exposed pins of the connector on the thumb drive.
Word to the wise; do not attempt to remove the connector itself. I did so, and bricked my first thumb drive. The traces simply aren't tough enough to take the abuse of de-solding.
The main reason I exposed the connection to the thumb drive (instead of just using an extender) was that I wanted access to that 5V USB bus...
Step 9: "Not As Clumsy or Random As a Blaster..."
Practically any LED will do. One or more 5mm ultrabrights, with ballast resisters, will run off that 5V USB supply and your Holocron will light up whenever it is plugged into the computer.
Or for the hacker inclined, get any of those light-up USB widgets; laptop lights and what not. Some of them have cool lighting routines they will go through. Or...most of that LED bling you see around now is running off 2-3 AA batteries. Which means that it will also run of 5V, with perhaps a slight increase of the ballast resistor.
Just crack the cases to get at the wires, and you are done.
I happen to want more control. I designed lights for the stage for over a decade, and I have very specific sorts of effects I want to produce. Plus, this project was a perfect excuse to play with some new LED options.
To wit, the NeoPixel. This is a packaging of an ultra-bright RGB with an integrated driver chip. The WS2812 chip (an SMD component like the LED), combines constant-current drivers with PWM, all on a 1-wire interface.
What the heck does all that mean? It means they are a very small, very efficient LEDs that will run at full brightness through most of a battery's discharge cycle, and once you digitally select the desired color it will maintain it without any further input.
Adafruit makes them available in several forms; strips, rings, and individual pixels. I chose the five-pack of tiny PCB types.
You'll notice something unsaid here. These, unlike the BlinkM, do not have their own CPU. They require an outside microprocessor to control them.
Step 10: "...an Elegant Weapon for a More Civilized Age."
A brief bit of history.
The first thing that really resembled a modern microcontroller would probably be the Apollo AGC. This was the first real flight computer, plus, the first major use of integrated circuits. But you have to go forward another decade before all the basic functionality of a computer was brought together on a single LSI chip; such as the Intel 8080 or the Zilog Z80. And even then, memory, clock, and many of the I/O functions were external. It wasn't terribly convenient for the hobby user.
It is the ARM, AVR and similar chips that bring the next important step; with the inclusion of non-volatile flash RAM, it became possible to construct a computer with practically no external components. The AVR series of chips (with which I am most familiar) have buffered I/O lines, serial UARTs, A/D converters and PWM generators, watchdog timers, and even internal oscillators if wanted. They also make a great soufflé.
In the format of the Arduino and similar boards, these chips are surrounded with a proper clock crystal or resonator, a regulated power supply, some power supply and other critical-pin de-coupling capacitors, and a few blinkenlights for status monitoring. But you can run them without all this overhead. If your timing is non-critical and you aren't worried about the occasional crash, you can have a complete computer with nothing but the central chip and a battery.
Like the BASIC Stamp before it, you could communicate with and upload programming to via an In-System Programmer, as well as by a proper programming board. But the next nifty trick was to add an easy interface to a personal computer; first via serial, then via the USB standard (and now options are opening up in wireless and BlueTooth). This was accomplished in the previous generation of Arduinos via a chip made by FTDI.
Enter the next generation of AVRs, which can communicate via USB natively. The FTDI chip goes away. But it turns out to be possible to hack a pseudo-serial connection over USB with an ordinary older-generation AVR. Such as with the same venerable ATtiny85 that is also at the heart of the BlinkM. Thus the latest offering from the engineers at Adafruit; the Trinket board; an ATtiny-based Arduino-compatible that sells for very little more than the cost of a chip.
It only has 5K of program space left after that handy bootloader, it runs at the leisurely speed of 8 MHz, and there is a mere 4 I/O pins normally exposed, but that is plenty for running a little light show inside a 3" acrylic box.
Step 11: "This Droid's Got a Blown Motivator!"
Actually, to be honest, I crashed my Trinket and finished the project with a "naked" ATtiny85.
I don't want to over-sell the Arduino. Other options got there first, and there are even more exiting options opening up now (the Beagle Bone and Rasberry Pi communities, for one, plus the venerable BASIC stamp and the semi-associated ARM world are staging a come-back, and are quite possibly superior for DSP and similar A/V tasks).
But for those who haven't tasted it yet, it is easy to use in a way that is impossible for a non-technical person to trust what a technical person is saying. They aren't "easy" for people who were born with a soldering iron in their hands, and whose first words were "Hello, world." They are easy for artist types and electronics newbs.
And the platform doesn't hold you back. If you need to be a power user, there are options. If you need a cheaper chip, a smaller or more specialized footprint, then you can still do it.
I learned how to speak C to my AVR chips, but for 95% of what I do the Arduino IDE works well enough for what I need to do. And it is easy; all I need is my laptop, my Adafruit ISP, and a way to connect to the AVR and I can program and tweak.
In any case, for this project -- if you chose to follow my footsteps in NeoPixels -- all that is needed is an Arduino compatible, a USB cable, and the free download of the Arduino software.
And then you download the NeoPixel library. And, in my case, the CapSense library (found at the Arduino Playground).
Step 12: "I Feel a Strange Disturbance in the Force..."
To get a little interactivity, we can add a button. Or a sensor. In this case, by adding capacitance sensing we turn the entire top surface of the Holocron into a button.
I had hoped to get 20-30 centimeters of range, but it doesn't appear possible through three thicknesses of acrylic. Plus, the sensitivity changes depending on whether the Holocron is connected (thus, grounded) to a computer. So to prevent false triggers, the capsense is dialed down to where you need to lightly touch the surface before it will fire.
At that point the Holocron does a little light show -- as if the presence of a Force-Sensitive has awoken it -- then after thirty seconds or so fades back to the usual soft glow.
The AVR chips can do capacitance sensing natively. Atmel even has a free library. But you can also do it through the Arduino IDE, using the capsense library from the Arduino Playground. The way the library works, the "send" pin is used to trickle a charge to the receive pin through a large resistor. The time it takes that pin to reach threshold is dependent on the RC value; hence, adding the capacitance of a human body changes it.
WIth a resistor of 1 meg, actual touch is required. With ten meg ohms, you can trigger from a few inches away, and with more than that, you can push it out to a foot or more. Unfortunately, this also increases the sense time, and to keep the rest of the circuit running smoothly I found it was better to stay with a mid-range value.
Of course, sensor circuits always work differently in the box. Once the Holocron was completely assembled, I had to tweak the sensitivity -- by going back and changing one of the params in the software.
Step 13: "I Don't Have It WITH Me..."
For my Holocron, I wanted to be able to display it without a computer attached. Which means batteries. And since you don't want to be opening it every few days to change the batteries, it should recharge automatically whenever it is connected to a computer.
Simple enough. The usual suspects (SparkFun, Maker's Shed, Adafruit) all make LiPo chargers. Make sure you get one that is suited to the size of the LiPo you will be using (more-or-less, 100mah versus 500+ mah).
And, yes, the thumb drive and Trinket and charger will all work simultaneously, without interference. That was one of the first things I checked.
The USB-based charger board is connected in parallel with the thumb drive to the single USB cable. Only the power and ground leads need to be connected. The Trinket and NeoPixels and battery are all in parallel on the "battery" side of the USB charger, thus are never directly connected to the USB bus.
This is really a bit elaborate for the project at hand, but as with the NeoPixels, I wanted to try this kind of rechargeable circuit. And what I've found here may be of use to you as well; if not in a Holocron, then in another project.
Step 14: "Let the Wookie Win."
It might be annoying to be streaming a movie off your fancy new flash drive and have this glowing rotating light on your desktop right beside the screen. It also might be nice to save the batteries when you've got the thing in a closet. So it needs a kill switch.
The simplest answer is another non-contact sensor; a tilt switch.
The older tilt switches (as you used to find in thermostats) were little balls of mercury in a glass envelop. When tipped, the mercury would slosh over a pair of conductors, bridging them electrically. Well, RoHS has made mercury switches a thing of the past. Fortunately, you can still get the same functionality. Radio Shack no longer carries them, but Digikey does. As did my local electronics shop.
The downside to the new switches is they are much more vibration sensitive as well. Thus, the late addition of a 470 uf capacitor in parallel with the power leads; this way, the Trinket circuit remains powered up for long enough to ride out the brief interruption of power, without going dark then rebooting every time the Holocron is jarred or shifted.
Well, sorta. The original test had a 4,700 uf, and that worked better!
Sure, it is a box. But, arbitrarily, the end the USB cable comes out is designated as "down." With the USB cable towards the ground, it lights. With the USB cable towards the ceiling, it charges, but the lights stay off.
Step 15: "If Any of My Own Parts Would Help I'll Gladly Donate Them!"
So enough theory. This is the actual circuit I built for mine.
8-pin DIP socket for an ATtiny. The chip was programmed off-line using my ATtiny target board, via the Arduino IDE and an Adafruit ISP. The power busses, the capacitor and resistor for various circuit functions were all soldered on to a small piece of strip board hacked to size with my scroll-saw.
The case for the USB flash drive was cracked open to expose the USB connector. A hacked length of USB cable is soldered to that and leads out of the Holocron. Power is pulled from that same USB connection to the LiPo charger, which is stuck on top of the thumb drive with double-stick tape. The LiPo itself is stuck to the bottom of the acrylic "spider" that holds the circuit.
A hole was drilled into the spider to hold the tilt switch, orientated so the Holocron switches off when the lid is towards the ceiling. The CPU is stuck to the spider with more double-stick tape, the neopixels wired in series with short bits of ribbon cable and hot-glued to the perimeter of the spider.
Just before the spider was glued in place, a bare copper lead was spot-glued to one inside edge to act as antenna for the capsense.
Step 16: "Never Thought I'd Be Smuggling Myself in Them."
Lastly, one needs to be able to go into the box. The way I designed it, the USB cable tucks inside for those times you want to make it look like a proper prop Holocron. And it is always nice to have a way in to fix things when they go wrong.
The lid is held down with two neodymium magnets. These are attracted to another pair that are held in place by the hollow top piece seen earlier.
The "panel lines" part is omitted for the bottom here. That simplifies. Of course, since the holes for the magnets had to be drilled in the top piece, once installed I had to repair the damage with Bondo Spot Putty. And then since the inner acrylic (the laser-engraved piece) is already glued on, I can't spray a fresh coat of hammered finish.
Fortunately there is an old trick. Spray generously at a scrap of tinfoil, then dip a brush in the wet spray paint and apply it by hand.
Step 17: Finished
And it is done. Charge the battery up, tuck the USB cord inside if desired, and enjoy the light show.
Runner Up in the