Friday, December 04, 2020

3D Printed Warp Core

The finished product
After finishing my 3D printed Stargate (https://www.thingiverse.com/make:749261 and https://jeremygustafson.blogspot.com/2019/10/3d-printed-stargate-journey.html), I started looking at the other 3D printed things that "Boogle" (the guy who's Stargate build I'd based mine off of) had printed. That led me to this creation: https://www.thingiverse.com/make:589779 - a warp core from Star Trek: The Next Generation. Where the original design had blue-only LEDs, Boogle had expanded upon the electronics to include multi-color lights (RGB LEDs), a web-based control interface to change the light patterns, and Bluetooth connectivity to play sound effects through a speaker.

I also saw Boogle's comment that: "If there's much interest I can put up the source code and PCB files for the brave and the crazy but it won't be anywhere near as well put together as [the original warp core designer's] guide :("

Naïvely counting myself amongst "the brave and the crazy," and since I already had a correspondence running with Boogle (aka Dan) from my Stargate build, I wrote and asked if he'd share his Warp Core PCB (printed circuit board) and source code with me. He did! And then even more graciously, he cheerfully and patiently answered my dozens of questions over the months as I attempted to tweak his circuit board to be more novice-friendly (an attempt I later abandoned, but I learned a LOT along the way), and shared numerous other pointers to help in my struggles.

Early LED test with a spare Raspberry Pi
Early on, I could see one of my biggest hurdles was going to be soldering. While I'd grown comfortable soldering small surface mount components during the Stargate project, some of the chips in Dan's PCB had yet even tinier pins, in no small quantity. Since these were expensive chips ($3-ish a piece for some), and since I didn't think I would have the fine motor dexterity to successfully solder them, Dan suggested I could redesign the board to use a different set of chips that had larger pads. "Larger" here is a relative term, meaning "still tiny but roughly the same size as on the other surface mount pieces I'd successfully soldered previously."

For several months I on-again-off-again worked toward redesigning the PCB with these other chips, and finally in mid-summer, after MUCH hand-holding from Dan, finished that design. The experience was turned slightly anti-climactic while placing the order, because it was at this point I discovered the factory that made the circuit boards would also do some automated assembly/soldering for most of the chips, including the "novice-friendly" chips I'd used in the design. So as it turned out, I paid them money and they sent me almost-completed boards.

Completed ring section, fully lit!
Nevertheless, as an electronics novice, I learned a LOT along the way, including some rudimentary skill in examining chip data sheets, and perhaps more usefully, how to use a particular online PCB editing tool, which I would later use to design my own Stargate Atlantis circuit boards. (see an as-yet-unwritten blog post about that project!).

I excitedly awaited the arrival of my circuit boards from China, and timed a summer vacation from work to coincide with when the boards would arrive, knowing I would still need to solder the micro USB connectors onto the boards (those weren't available as part of the factory assembly service), and then thinking I'd be able to completely finish assembling the warp core that same week.

The magic smoke escaped
(and left scorch marks)
Freshly into my weeklong vacation, my Dad graciously allowed me to take over his soldering workstation for a day (which turned into multiple days). Things went south for me almost immediately. After successfully soldering a few capacitors and other components with "large" pads, I tried my hand at the micro USB ports.

Spoiler alert: this went, shall we say, "poorly."

After several days of effort, I'd ruined/ripped/burnt the pads on several circuit boards, ruined 6 or 7 USB connectors, and then after I thought I'd finally soldered the ports correctly, I plugged it in, heard a sizzling sound, and cried as I watched the magic smoke escape (fortunately no fire extinguishers were required).

It was at this point I decided to salvage the remainder of my vacation by taking a break from the warp core for a while. Though, I would be remiss if I didn't also say there was one good thing that came from all the soldering failure, and that was that I got to spend a lot of hours hanging out with my parents, which was truly wonderful.

Around this time Alissa asked me a question that I still think about: do I want my hobbies to be challenging and frustrating? I really had to stop and ponder. My eventual answer was that I do enjoy challenges... that are within my ability to learn and achieve. The Stargate project helped me learn more about electronics than I’d known since 9th grade electronics class, and this warp core project continued that learning. And in documenting my build process my hope is to pass some of that along so that the next “me” looks at this warp core project and says “yeah, I can learn how to do this.” (for instance, I know at least two people have built Stargates based on my directions I published)

Partial assembly

Now that I've reached the end, I can definitively say the warp core was both challenging AND frustrating, but that I view it as yet another step in preparation for future projects, like the aforementioned Stargate Atlantis, but also my hopes of perhaps designing a Quantum Link handlink prop (something I've wanted since childhood), and my eventual goal of building a club-spec R2-D2. I think I might have too many hobbies, but the benefit of that is that when one gets a little too frustrating, I can just pause for a little bit and hop to a different hobby to relax (like painting).

When I eventually came back to the warp core, I'd discovered that I could purchase pre-soldered micro USB boards for only $1.50 a piece. So I did that. I also discovered that the circuit board assembly service could solder the more expensive/faster/better/harder-to-solder chip that Dan had used in his original design, so my entire venture into redesigning the board was basically moot (except for the learning along the way). I went ahead and un-redesigned my PCB back to Dan's original version, except with easily-solderable headers that could connect to these pre-soldered USB boards, and placed an order. I'm sometimes a Scrooge when it comes to spending my personal allowance money, and so I briefly considered just ordering the parts and not paying for the assembly service (which is somewhat pricy), but with Alissa's reminder of "how much is your time worth?", it was an easier decision to pony up the extra cost to have the boards pre-soldered as much as possible.

Short story short: soldering the new boards went easily and uneventfully.

Partial assembly
Turning my attention to the software side of things, the experience was neither easy nor uneventful. I won't bore you more than I already have, but in short, when Dan mentioned to me that he'd had to perform "unspeakable hackery" to get things to work, that rings true to my experience. I documented my steps along the way to make it easier writing a guide at the end, and many of my notes were of the form, "try this. Nope, don't do that, try this instead. Nevermind, that didn't work, try this third thing instead. Screw ALL of that, go back to the first thing, except do this differently, and touch your nose and lick your elbow at the same time." Finally there came a moment where I glanced at my screen and exclaimed, "holy sheep, it worked!" (or something like that).

Finished warp core!
At the end, I used all those notes to compile what I think is a fantastically thorough guide, along with a lengthy troubleshooting document with all the specific error messages I encountered and how I eventually solved them.

Late at night on Friday, November 27th, I jokingly (and proudly) posted on Facebook that "Alissa's Thanksgiving wish came true, she'll finally stop having to listen to me talk about "warp core this" and "warp core that". Aka, the warp core is finished!"

In case it wasn't clear, let me be abundantly clear that I owe so many thanks to Dan for sharing his design and answering my innumerable questions and cheering me on along the way; to my parents for also cheering me on along the way and my Dad especially for letting me take over his electronics bench for almost a week; and of course to Alissa for putting up with my constant "warp core this" and "warp core that," and still loving me through it all.