Introduction: How to Make a HAL 9000 Supercomputer
One of the most prominent characters in the movie 2001: A Space Odyssey is the onboard supercomputer HAL 9000, who controls the ship the astronauts take during their interplanetary trip. In this engineering project, I attempted to recreate a model of this supercomputer, using not titanium metal, but different types of wood and other types of everyday material. This project also uses an Arduino to power several components needed to make the prop more authentic.
The main material used to craft this prop will be 12" x 12" x 1/8" plywood sheets, but supplementary materials such as LEDs and switches will be used to enhance the prop's realism.
This prop's main purpose will be to display custom-programmed lighting through Arduino programming and circuit design.
Step 1: Tools and Materials
Listed below are the tools and materials that I used to make this prop.
- Band saw
- Ruler and pencil
- Scroll saw
- Hand drill
- Soldering equipment
- Hot glue gun
- Clamps (optional)
- Arduino Uno computer
- 11 12" x 12" x 1/8" plywood sheets
- 7 red LED's
- 6 33kΩ resistors, 1 50kΩ resistor
- 2 switches
- Solid wire (at least 2 different colors for differentiation)
- 2 32" x 3/8" x 1" rectangular wooden beams
- 4 8" x 3/8" x 1" rectangular wooden beams
- Wood adhesive
Hardware and Software:
- A laptop capable of running the Arduino IDE
- The Arduino IDE
Step 2: Essential Beams
First, I cut the 32" x 0.8” x 1” wooden beams into 4 lengths of 18”. These beams will be part of the skeleton of the structure. In the image, they are pictured to be inside a box (I originally planned to use the box, but decided it didn't look good). Next, I used a 12” x 12” piece of plywood and drilled pilot holes in the corners, each matching a pilot hole drilled on the 0.8” x 1” side of the 16” wooden beams. I then used screws to affix the beams to the plywood.
Next, I cut out 4 shorter pieces (10”) wooden beams from the same 0.8” x 1” wood, which will be used for the structure for the ‘server box’.
Step 3: Server Box Control Panel
I cut out two 6” x 10” pieces of plywood and glued them back to back. As this will be the control panel, having two pieces of plywood instead of one will make it more resistant to deformation. I marked holes for the LED sockets as well as the switch. Then I made a template of the two parts of the control panel using more plywood and drilled the sockets as shown in the picture.
Step 4: Server Box Doorframe
I started with a 6” x 10” piece of plywood and used the hand drill to create a hole in which the scroll saw could then be used to cut out the inside of the piece, leaving it with 1” margins. This will be the swinging piece to the server box door.
Step 5: Server Box
I cut out a 10” x 10” piece and two pieces of 6” x 10” using plywood. Then using the beams created previously, I drilled pilot holes in the corners of the plywood that matched those on the beams, then joined them with screws as shown. Notice that we have only made one of the remaining open sides (control panel step); this is because the other end will be open and accessible from the back for ease of installation of the electronics and future maintenance. This server box will contain most of the essential electronics (including the Arduino) that will power most of the box.
Step 6: Circuitry
The circuit of this project uses an Arduino computer. I used a platform that conveniently has space for both a breadboard and an Arduino to minimize the amount of wire needed. I (temporarily) set up my circuit on my breadboard as planned on my schematic. I strongly recommend color coding your wires as it will help tons later on when you have LEDs everywhere in your project.
I also made a small wooden frame to carry this circuit, which I can later glue into the server box without harming the circuit boards themselves.
Step 7: Arduino Programming
Here is the very technical part of this project. It is strongly recommended that the maker do some preliminary research and learn the basics of Arduino programming. For my project, I chose to do a certain pattern of blinking for my LED's, which might be deciphered from the code. I will briefly explain my choice of the blinking pattern used in my project. I will use the designation as drawn on the separate piece of paper to indicate the lights.
As the switch S is closed, the circuit turns on. G, an indicator for the power, turns on immediately. This light is directly linked to the switch and the 5V output of the Arduino and goes to GND, so if S is closed and the Arduino is powered, it will light up -- very useful for diagnostics if something goes wrong. A wire connects this terminal to input 2, which tells the Arduino to activate the rest of the program if and only if the switch S is turned on.
Usually, a random blinking program can be created by the following code, written in layman terms:
where the Delay function calls for the CPU to stop processes for a period of time drawn randomly between the interval 50 ms and 500 ms.
However, this code stops the Arduino from functioning, and thus it is unable to multitask and run parallel processes. We need a better solution. An alternative way to do this is to tell multiple outputs to record, individually, the time since they last changed states, and compare this time to a random value generated between 50 ms and 500 ms. If the time recorded exceeds this value, then the state changes, and the LED changes state. Otherwise, the LED maintains its state until the next comparison. This function that remembers the time is called Millis (currentMillis and previousMillis), and enables the LEDs to blink in this way.
Output A also turns on as S is closed, but in a particular way. As shown in the movie, HAL's main light does not turn on/off immediately. Rather, it fades in as power is supplied and fades out as power is removed. This was a slight challenge to recreate on the Arduino, because Arduino has outputs that are binary. This means it can either have a HI power or LO power output - strictly 2 states. In order to create an illusion of dimming, we can use a powerful tool that is built in the Arduino -- PWM, or pulse-width modulation. There are a lot of analytical properties behind this, but the idea of PWM is that it uses different frequencies of oscillations between HI/LO power to create different brightnesses, as the human eyes cannot perceive these rapid oscillations (≈16 MHz). I had a lot of fun exploring this tool, so I recommend that the maker check this out (and maybe even hook the circuit up to an oscilloscope!).
Finally, you may have noticed that there is an additional switch that connects directly to the battery. This is because the Arduino, if plugged in for prolonged periods, will exhaust the battery. Also, the dimming effect after the switch is opened will not work if the power is completely cut off from the Arduino. Hence, we need 2 switches - a hard switch and a soft switch.
Step 8: Server Box
Now that the coding for the LED's are done, you can install the LED's into the control panel, as shown in the images. Firstly, I used solder to connect wire to the two terminals of the LED's (color coding is strongly recommended - I used green for the cathode and black for the anode), so that they can be plugged into the breadboard later. Then, I used hot glue to attach these LED's to the control panel that has already been completed. Similarly, I glued in the switch as well. After that, I glued the server box control panel onto the control box itself, securing it before I drilled 4 pilot holes -- each on a corner -- and using screws to affix the panel securely.
Step 9: The "Eye" Panel
In this step of the project, I completed the "eye" panel of the computer. I drilled a hole (5" from the sides, 3" from the bottom) into a sheet of 12" x 12" plywood that I measured beforehand. I then glued another color-code wired LED into this hole. This LED will be the one that fades in/out.
Step 10: Installing Server Box and Circuit
Finally, the two major parts of this project come together. I placed the server box (approx. 10" x 10") in between the pencil-marked regions for the pillars, and once the spacing was right, glued it on with wood adhesive. Using screws to secure it is optional, but recommended. Then, I glued a piece of 12" x 12" plywood with its corners tailored to fit around the pillars onto the server box. This will not help the pillars support their shape and not deform as easily but also protect the server box.
Carefully, drill a hole into the top of the server box, through the sheet of plywood. This hole will be important for the connection of wires, which will be the next step. Now, attach the Arduino box onto the bottom sheet of plywood using wood adhesive, and using a flashlight (phone flashlight, super useful), connect the LED wires to the Arduino with the cathodes in the right terminals. The color coding really pays off in this step. By this step, you can see the project coming together.
Step 11: Door Installation
In this step, we install the doorframe created in step 4. First, we screw hinges into the edge of the doorframe carefully. Then, we screw the other end of the hinge onto a pillar (note that at this point, it should not have been installed onto the base yet). After testing that the hinge gives a full range of motion, we attack that pillar onto the base of the project, using screws to secure it from underneath.
Step 12: Cover Panels
Finally, we have to shield the machine. I used 12" x 12" plywood again and drilled pilot holes in the corners in both the pillars and the plywood. I then screwed the plywood onto the board to cover the top component. I cut out 3 6" x 12" pieces of plywood from the rest of the plywood and did the same to cover the sides of the server box.
And that's it! If you have time, you can decorate the outside of this computer with paint or other media to make it your own version of the AI from 2001: A Space Odyssey.
Step 13: Reflection
The Arduino programming was definitely the most instructive part of this project. I had fun learning about the mechanisms behind many of the tools that are built in the Arduino, especially the PWM. If I had more time to do this project, I would've definitely painted it and customized it even further.
Step 14: Sources and References
Encyclopedia of Electrical Components Volume 1 (pg. 245~288)
Platt, Charles. "Diodes, Unijunction Transistor, Bipolar Transistor." Encyclopedia of Electronic Components. Vol. 1. Sebastopol: O'Reilly Media, 2013. 245-88. Print.
Binary Arithmetic Circuits Coates, Eric. "Learn about Electronics." Binary Arithmetic Circuits. N.p., 17 Feb. 2017. Web. 08 Mar. 2017. http://www.learnabout-electronics.org/Digital/dig...
An 8-bit Adder/Subtractor Unit Rehman, Jawad. "An 8 Bit Adder/Subtractor Unit." Jawad's Blog. Wordpress, 19 Mar. 2010. Web. 08 Mar. 2017. https://jawadsblog.wordpress.com/2010/03/19/an-8-...
Binary Subtractor "Binary Subtractor Used for Binary Subtraction." Basic Electronics Tutorials. AspenCore Inc., 15 Apr. 2016. Web. 09 Mar. 2017. http://www.electronics-tutorials.ws/combination/b...
Protection Diodes "What Is a Protection Diode?" Learning about Electronics. N.p., n.d. Web. 09 Mar. 2017. http://www.learningaboutelectronics.com/Articles/...
Full Wave Rectifiers and Bridge Rectifiers "Full Wave Rectifier and Bridge Rectifier Theory." Basic Electronics Tutorials. AspenCore Inc., 07 Sept. 2016. Web. 09 Mar. 2017. http://www.electronics-tutorials.ws/diode/diode_6...
AC Transformers Kurtus, Ron. "Alternating Current (AC) Transformers." Alternating Current (AC) Transformers - Physics Lessons: School for Champions by Ron Kurtus. N.p., 19 Oct. 2013. Web. 09 Mar. 2017. http://www.school-for-champions.com/science/ac_tr...
PN Junction Theory "PN Junction Theory for Semiconductor Diodes." Basic Electronics Tutorials. AspenCore Inc., 21 Sept. 2016. Web. 09 Mar. 2017. http://www.electronics-tutorials.ws/diode/diode_2...
"Tutorials." Arduino. 2017 Arduino, n.d. Web. 18 Apr. 2017. https://www.arduino.cc/en/Tutorial/HomePage
I learned about the cautionary actions to protect sensitive components like diodes and transistors from permanent damage. I also reviewed some things that I learned a while ago.
I also learned about binary calculation circuitry and how to arrange logic gates into simple 1-bit adders. All of this is a review, but they do talk about simple RAM, which I could potentially implement into my build.
I took some time to investigate different designs for the adders. In some cases, the circuits provided fast outputs but varying power in each output. In other cases, the circuits gave consistent outputs but required a lot of parts.
The “2’s complement” is something I’ve studied before, but the resource I referenced gives details into how there are other ways to perform simple binary subtraction. Very interesting. I may consider using this idea to build the subtractor add-on rather than the 2’s complement because of a number of parts needed
I want my build to be able to use both DC and AC current, and thus I need to build both a transformer and a rectifier for the circuit. A simple current rectifier can be a protection diode, a more advanced one (continuous rectifier) a bridge/full wave rectifier.
Most electrical components involving a switch of some sort has a P-N component (Positive-Negative), which is a system of two materials which contain either silicon or germanium alloys to create a deficit or excess of electrons. When an exterior electric force/field interacts with these materials, ions shift around, creating either a blockage or a pass for current. A blockage occurs if the ions are away from the separator, and a pass occurs if the ions accumulate near the separator. The resulting accumulation creates a sort of conductor (pseudo-metal) which allows electrons to flow freely.
Finally, I learned a great deal of Arduino programming not only from online sources but from several of my friends in the computer science field.