Introduction: Out of This World Space Shuttle Wagon!
It's very important to my wife and I that we expose our daughter to all things STEM, while also allowing her to have the room, space, and time to create something...anything. I suppose this drive comes from both my wife and I pursuing STEM careers. (Author's Note: If my daughter decided she wanted to write poetry, change her name to Willow, and sew hemp skirts...it might cause cardiac arrest) I also believe you have to practice what you preach and set a good example: if you are excited about what you're doing, then it'll be infectuous. Given that she's just about two, this seems like the right time to show her the righteous path. Coupled to all this is the desire that I always wanted to be the dad to make cool stuff for their kid. The more selfish reason: I wanted to make all the other dads in the neighborhood feel like they don't love their kid as much as I love mine. And I wanted the approval of others (kids and parents alike) when parading my daughter and wagon down the street. Not hearing "Whoa...that's so cool" from a bunch of 8-year olds might shatter my fragile confidence ;)
This year for Halloween my daughter was going to be an astronaut and blast off! She recently inherited an old wooden Radio Flyer wagon in my wife's family that's been around for ~ 50 years. So I decided to trick it out into the space shuttle Atlantis! The only restriction placed on me was I couldn't drill into or alter the wagon in any way. I looked around for other folks who have done similar things to help get me started, but surprisingly I did not find much at all. The only build I found (which I based mine from) which I really liked was at this link. To take it further, I wanted the shuttle to have headlights, lights in the thrusters to simulate take off, and to play sounds via a bluetooth speaker. Each of these functions would be controlled by my daughter pressing a lit-up button with the brains of the outfit being a Raspberry Pi.
And oh, by the way, I decided to pull the trigger on this project on Oct 17, so I had a mucho rapid prototyping project ahead of me. Late nights and coffee here I come!! Woohoo!!
This project really lends itself to taking it in whatever direction you want, so many of my supplies aren't super specific
- Wagon (wood or plastic)
- Wood for frame (not super bulky)
- Metal mending brackets (to join pieces of wood together)
- Raspberry Pi 3B+ (or similar device which is Bluetooth capable)
- External battery for the RPi
- Bluetooth capable speaker
- Arcade buttons (also the green and blue variety from Adafruit)
- Lots of cardboard (make sure you have some rather large pieces)
- White, glossy spray paint (I ended up using close to 5 cans)
- Roll of black duct tape
- 5 LED's (pics below)
- 3 (to 5) black flower planters (try to get black so it saves the step of painting those too)
- Nuts, bolts, washers
- 2 spools of red and black 20-22 gauge wire (you're going to want it reasonably thin)
- Soldering iron and solder
- Container for buttons and electronics (I used a styrofoam one lying around)
- NASA meatball (logo) stickers, American flag stickers, letter stickers
Step 1: Framing the Shuttle
I mentioned earlier that I had a restriction placed on me that I couldn't mar the wagon in any way. So I had to build a simple frame to sit on top of the wagon. From the pics, it's visible that I used U-shaped metal hooks (for lack of a better term) to sit over the edge of the wagon. On the outside of the wagon, sat a piece of wood which was screwed into the hook. Ultimately, the wings were attached to these pieces. It's also probably useful to have a chop saw and do a little trigonometry to make the necessary angle cuts for the wings.
The hard part, for me, was to build the tail fin for two reasons:
- Had to make sure the angles were correct
- Needed it to be stable when placed on top of the frame
Given that I didn't have a chop saw, I guesstimated the angles and the subsequent cuts. To secure them (with the minimal amount of work) I used some mending brackets that I picked up at a local hardware store. This rendered it relatively sturdy. Now, I needed to mount the tail fin. To achieve the best sturdiest that I could (given the time constraints), I fashioned two small vertical pieces that were bracketed to the main frame (this can be seen in one of the pics above).
Lastly, I built the thrusters (made from black flower planters I had lying around) and attached them to the frame. I drilled holes into centers of each planter, and attached them to the cardboard with some nuts, bolts, and washers. Then I took the cardboard and mounted it to the shuttle frame. This can be reasonably well viewed from the same pic denoting the vertical tail fin mounts.
There might seem like a lack of instruction in this particular section. This is the case because firstly, I hope my pictures convey the process reasonably well, but secondly, I want the reader to be daydreaming about their own way of doing it while reading mine which implies there's no right way of doing this.
Step 2: Electronics
One Pro-tip (but a lot of you are probably already amateur pros): Before I connected anything on the shuttle, I laid out all my components (buttons, LEDs, Bluetooth speaker, RPi) on my sun room table and tested, tested, tested...once code was written of course! Having worked on rapid prototyping projects at work, you can never do enough testing :)
I chose the Raspberry Pi 3B+ to be the brains of the outfit for four reasons:
- It has on-board WiFi so I could download the .wav files I needed to play the sounds
- It has an on-board SD-card to save the files onto
- It has native Bluetooth capability to interface with my Bluetooth speaker
- I had a couple lying around the QTH (that's ham radio jargon for home)
And, I decided the layout in the shuttle cockpit would have three buttons:
- Red button: control the LED headlights (turn them on/off)
- Green button: control the thrusters! It would not only turn on the LEDs in the thrusters but also play a NASA sound from an actual shuttle liftoff -- it would be gangster.
- Blue button: Cycle through 5 legit NASA sounds with each button push
The code I wrote was in Python and heavily utilized the GPIO library; it can be found in my GitHub repo. (Let me know if there are issues) I chose this so I could add event detections from button pushes and disable those same detections when I wanted (e.g. if my daughter pushed the thrusters button, and then immediately started pounding the others -- because she's 2 -- I didn't want to have the other button actions occur afterwards). I basically wanted to have callback functions while still monitoring for events; this is an example of multi-threading which all happens thanks to the magic of the GPIO library.
I downloaded sounds from a NASA website and pulled whatever ones sounded cool: I found an excerpt from the JFK speech about sending a man to the moon, the "Houston we have a problem" sound, and a variety of countdown and liftoffs. I will say they downloaded as mp3's and so I found an online mp3 to wav file converter to I could play them via the RPi. For speakers, I had a variety of bluetooth speakers lying around, so it was a simple matter of selecting one.
As I began to wire, the items I had to wire up were:
- 3 buttons
- 5 LEDs (2 for the headlights, 3 for the thrusters)
I had the LEDs lying around that a friend from my ham radio club had given me about three years ago. At the risk of hoarding, I just knew I'd find an application for them :) For the thruster lights, I simply drilled a small hole in each thruster, tied some string to the lights, and then pulled the string through the hole and tied it off on a piece of the frame somewhere. Then I unspooled a length of red/black wire, soldered one end to the lights, and ran the other side all the way to the front where the RPi would live. The headlights followed a similar procedure only they sat on a little shelf I made for them. Lastly, I had to wire the buttons. These guys had four prongs:
- 2 prongs (power/ground) for the LEDs in the buttons themselves
- 2 prongs (power/ground) to send voltage high (or low) upon push
To make life easy on myself, I soldered all the LED power wires and LED ground wires together and ran it to the VCC and GND port on the RPi, respectively. The last bits to take care of then were figuring out which wires went where on the RPi. I found a port layout of the RPi online (and the nice thing about the GPIO library is you can reference the ports by physical ordering) and just started assigning positions in my Python script.
I used an old styrofoam container that my father-in-law's heart medication came in, to house the buttons, RPi, battery, and rat's nest of wires (this is something I need to be better about) which you can see in the pics above. I couldn't think of anything better at the time. The battery was what I was most nervous about since I was hoping the RPi could boot up from it AND had enough charge to run everything for longer than 15 minutes (Spoiler Alert: It worked great! After an hour outside with the shuttle wagon, I didn't even dip down one dot in battery life)
Step 3: Assembly and Painting
Now comes the really fun bits: cutting out the cardboard and adding the accoutrements to really make it look like a shuttle!!
This process is relatively simple but time consuming. Initially the approach I was going for was since the wooden frame just sat on top of the wagon and wasn't bolted to it etc., I could (after I attached all the cardboard to the wood) theoretically pick the entire frame up (cardboard and all) and set it on the ground to spray paint and then when it was dry, place it back on the wagon. This in fact was the approach the fellow in the link (that I based this project from) took. I had intended to do this. But.....due to some small screwups when constructing, it turned out to be easier to keep the frame on the wagon and instead paint the cut-out cardboard and attach it to the wood.
There are various methods for how to template your cardboard to cut it out and attach. To go through my steps would be the ultimate digression in minutia and completely uninteresting and uninspiring. I would pursue whatever route is easiest for you.
I will share one piece of advice from my father-in-law which I found completely useful, however. He advised me not to make too many cardboard cutouts because it can be difficult to attach them together. Let me give an example. Initially, the side of the wagon was going to have 3 pieces of cardboard attached to the frame. Doing this may not be ideal since the whole conglomerate could begin to sag in the middle without sufficient support. Instead, what he said to do, is once the three pieces are cut to the sizes I want, lay them down together on a big piece of cardboard and trace around the set so I am only cutting one long piece. This makes for easy attachment and painting. I hope that made sense, because it is kind of an important step.
I ended up using 5 cans of the Rust-Oleum white, glossy spray paint (link in the materials list): I would totally recommend using glossy or super-extra glossy because when that puppy shines, you will be the talk of the neighborhood.
After the paint dried and I started to place the pieces on the wagon, it really started looking like a shuttle! The final touches were placing the stickers in the right places. I named the shuttle Atlantis since I liked Atlantis and it was mentioned in one of the sounds I had.
To make the trim and mimic the heat shield, I used black duct tape and I tried to be pretty precise about it. I went around the wings, the tail fin, bottom of the sides, and of course filled out the nose of the shuttle. I really think the black duct tape did the trick and made it look sharp.
Step 4: Reveal Day and Next Steps
My town's Halloween was from 6-8pm on Oct 31. At 5:45pm, I went out to the garage and booted up the shuttle. She purred like a Halloween black cat. My daughter came out looking stellar with her NASA astronaut uniform, jetpack, and shuttle trick-or-treat bag. She took one look at the shuttle with all it's gleaming lights and sounds and started to cry and backaway like Freddy Kreuger himself were coming for her. The joys of parenting a toddler. One might say: Hey Brian, were you frustrated your kid didn't even want to get within a 3 foot radius of it? I would reply NO, good sir or ma'am. I did this 90% for my daughter and 10% for me. And like I said, this was about winning the unspoken contest on the block of best dad ever.
I did have some fellow dads, in charge of driving the kiddos around, pull up next to me and say "Hey man, I gotta say that's a sweet wagon...Nice job!". I proceeded to blow their minds with the thrusters as we strutted on by :) And in case you were wondering, I did get validation from the middle-schoolers walking around. Hearing them say "Whoa...that's soooo cool" just makes 5th-8th grade totally worth it.
I learned a lot about building this. So much so that I'm going to do a V2. Here are some of the things I will improve on the next iteration
- Fix wing placement: I realized when I was done the wings were too high! They should have been at the bottom of the wagon, not the top. Le sigh.
- Revise tail fin design: I wanted this to be more structurally sound than being held with mending brackets. Given no further time constraint I wanted to experiment with doing it with a single piece of wood
- Improve code: Right now, when one button is pushed I temporarily disable the events from other button pushes until successful completion and then I reenable those events. Clearly, this is not scalable with more buttons. Additionally, I had some issues getting the RPi to play sounds out of the Bluetooth speaker when in headless mode. This seems to be a common issue online and I'm investigating solutions
- Find a new housing for the buttons rather than use a styrofoam container meant for heart medicine.
- Install new features:
- Have an on/off switch for the entire apparatus so that the RPi can safely power down.
- Install a Re-entry button. Pushing this would light up orange LEDs on the underside of the shuttle as well as turn a bass-shaker on!
- Install a steering wheel to give my daughter the feel that she's piloting the shuttle
Probably the biggest change is not build this on top of the wagon anymore and instead build a completely separate shuttle. In this method, I can design things exactly how I want and find homes and alcoves for all the things I want to put into it. The trick will be building it with a modular enough design so I'm not always totally redesigning it as she gets older. Given, however, that she's currently deathly afraid of it and wouldn't even get it in at Halloween time, I think I'll be ok and have plenty of time!
Having done this project, I feel like I can do anything now. Maybe it's time to build an Iron Man suit :)
Hope you enjoyed reading and if you have any questions/comments, please leave them below. Happy building!
Participated in the
Halloween Contest 2019