ENTER NEW DAILY DATA HERE:
Outline for ElmoHack Documentation
I. Looking at Elmo Under the Hood
A. Fig-1: a photo of Elmo (from the front) fresh out of the box.
i. Explain how to remove Elmo's fur.
B. Fig-2: a photo of Elmo (also from the front) after removing fur.
i. Photo contains leaders calling out Elmo's body parts as follows: a) motorized limbs: one arm, two legs
b) housing for the electronics: the head contains the speaker and the microcontroller “brain,” and the torso contains the motors and sensors
c) power supply: battery compartments in feet, power switch on bottom of foot (requires another photo in Fig-2 showing the bottom of the feet)
d) tickle spots: chest button, chin button, and foot button.
ii. Describe how Elmo is intended to be used: press a tickle spot, and Elmo performs a “you-tickled-Elmo-”routine; describe some of Elmo's movements such as falling down and standing up.
C. Fig-3: a photo of Elmo (from the back) after removing back.
i. Photo contains leaders calling out Elmo's internal organs as follows:
a) motors: one arm motor and one leg motor
b) sensors: one arm position sensor, one leg position sensor, and one orientation sensor (gyroscope)
c) mechanisms: single-toothed ratchet gear, locking mechanism, and leg spring (these three work together so that the arm position determines whether the legs move in unison, or as a scissor).
d) circuitry: microcontroller “brain,” and two small circuit boards for filtering motor power connections D. Fig-4: a photo of the arm motor.
i. Describe the motors. Explain how to use a 9V battery or a power supply for a quick demo of motor operation. E. Fig-5: a photo of the arm sensor taken apart to reveal the two concentric conductive rings.
i. Describe how the sensors work. Explain how to build a circuit to chart the relationship between angular position and sensor output (i.e. LEDs connected to each sensor wire with pull-up resistors.
ii. Fig-6: illustrations depicting relationship between position and sensor output, as follows:
a) the arm positions and corresponding arm sensor output
b) the leg positions and corresponding leg sensor output
c) the body orientations and corresponding gyroscope output
F. Fig-7: a photo of the leg-lock mechanisms.
i. Describe how the arm position affects the movement of the legs.
G. Fig-8: a photo of one of the motor power filter circuits.
i. Fig-9: a circuit schematic of the motor power filter circuit. ii. Describe what this circuit does.
H. Fig-10: photos of the front and back of the “brain” circuit:
i. on the “front” photo, call out the location of the microcontroller
ii. ii. on the “back” photo, call out the connections for the sensors, motors, and power. iii. Fig-11: flowchart illustrating motor control:
iii. a) Describe how the brain controls Elmo's movement (use an arm motion as an example: brain turns arm motor on, then watches output of arm position sensor, then turns arm motor off when desired position is reached). II. Embedded Systems Made Easy: A Quick Intro to the Arduino
A. Fig-12 : a photo of the Arduino board and a USB cable.
i. Describe how to get started with the Arduino (what you need to buy, where to download the interface, how to install the interface, and where to find help on the internet). ii. Explain how to write a simple program to flash the on-board LED.
B. Fig-13 : a photo of several microcontroller ICs, and a photo of the Arduino board with the microcontroller removed.
i. Describe what the Arduino is (a microcontroller, pre-programmed with a bootloader, and a printed circuit board for in-circuit programming, power supply, and access to I/O pins).
ii. Describe why the Arduino is a useful tool for prototyping. III. Electronics Prototyping Crash Course and the 1st ElmoHack Project
A. Fig-14 : a photo of all the tools and supplies that are good to have handy for prototyping.
i. Photo contains a,b,c labels to identify each tool/supply as follows:
a) tool 1 b) tool 2 c) etc d) supply 1 e) supply 2 f) etc ii.
Describe what each tool/supply is for. iii. Explain where to buy tools/supplies (vendor, part number, price, quantity), and break up into three lists: a prototyper's bare-essentials list, a prototyper's highly-recommended list. and a list of all parts needed for the ElmoHack Projects.
B. Fig-15 : a photo of a blank breadboard, a breadboard with parts on it, an empty pcb, and a finished pcb with parts on it.
i. Describe the general process of electronics prototyping (wire up a breadboard for testing, then layout a printed circuit board.)
ii. Describe how the Atmega168 can be used independent of the Arduino board. Explain how to breadboard a circuit to use the Atmega168, running whatever code is already burned on it. Explain how to modify this circuit to allow in-circuit programming of the Atmega168. Explain how to breadboard this new circuit. Explain how to create a pcb of this very simple circuit.
C. 1st ElmoHack Project: the goal is to create your own circuitry that takes control over Elmo's motors and sensors, and to write your own code to perform movements. This project becomes a choreography testing tool, allowing you to work out the code for each movement. We skipped this step, but we'll need to do it to one Elmo to make the choreography less frustrating.
a) Fig-16 : a block diagram explaining the circuitry necessary to control Elmo's arm. b) Describe the software and hardware concepts for controlling Elmo's arm. c) Explain how to write the code and breadboard a circuit to control Elmo's arm.
d) Describe how to extend these ideas to the leg motor and the gyroscope; but we run into the problem of not having enough input/output pins on the Atmega168.
e) Describe how to overcome this problem using a shift register (in the end, we were really just one I/O pin short, so we forfeited that pin rather than deal with complicating our code and adding the cost of an additional chip on our pcb – a project that incorporates the shift register belongs in an appendix).
f) Explain how to create a pcb of this circuit (include the in-circuit programming circuitry explained above), and sample code for choreographing a sequence of arm and leg movements that are executed by pushing one of Elmo's built-in buttons. This concludes the 1st ElmoHack Project. At this point, you have the “tools” to re-create all the actions Elmo performs “fresh out of the box” (except for the audio).
D. Revisiting the Arduino and the Atmega168.
i. Describe the concept of microcontroller memory, and what the microcontroller is actually doing when it is “running” the code burned on it. Describe the oscillator signal and reset button. Describe the difference between an off-the-shelf Atmega168, and the Atmega168 that comes with the Arduino. Explain how to burn the Arduino bootloader onto the Atmega168.
ii. Describe our approach to prototyping on the ElmoHack project: the previous section is more in-depth than what you'd normally include in a “quick” intro, but it's all necessary knowledge for making a circuit that allows easy reprogramming of Elmo as we work out the bugs in our code, or develop new features in our code. The in-circuit programmer is only for the prototyping stage. We don't bother including it in the final circuit board that gets mass produced, because the code we burn onto each Elmo's microcontroller is flexible, allowing the choreography to be controlled remotely, i.e. a change in choreography means re-burning the code on one microcontroller, not on all 50.
iii. Fig-17 : an illustration depicting a master microcontroller, and the 50 slave Elmo microcontrollers. An accompanying block diagram breaks down the programming, showing which parts belong in the master microcontroller, and which parts belong in the 50 slave Elmos.
iv. Wireless Communication Made Easy: A Quick Look at the XBee
A. Fig-18 : a photo of the XBee
i. Describe what the XBee is and how it works. Explain how to configure the XBee (XCTU, destination address, my address, pan ID, entering command mode from hyperterminal, listening in on XBee communications using hyperterminal).
B. Fig-19 : a photo of the XBee on a breadboard, connected to the Arduino
i. Describe the concept behind serial comunication, and how the Arduino uses the XBee to communicate wirelessly. Explain how to connect the XBee to the Arduino, and how to write code on the Arduino to test out basic wireless communications (e.g. code to transmit button pushes).
C. 2nd ElmoHack Project: the goal is to create a remote control Elmo joystick.
i. Explain how to rewrite the Elmo control code so that Elmo listens for a command sequence from the master controller, and then selects the appropriate movement from a list of all possible moves. Build in the intelligence to prohibit moves that result in locked motors. Explain how to write the control code for the master, and to how to build a simple controller with a few push buttons, allowing real time control of Elmo's moves.
A. Wireless Control of 50 Elmos: Dealing With Time Delays and Unreliable Transmissions; Expanded Functionality for Human Interaction A. Describe the need for and concept behind a communications protocol to deal with the possibility of lost transmissions, and the issue of timing (i.e. creating an ad-hoc protocol, and breaking up transmissions into set-ups and executes). Explain how to breadboard a master controller, and demonstrate sample code for transmitting choreographed movements to several slave Elmos.
B. 3rd ElmoHack Project: the goal is to program a master microcontroller with a desired choreography for the 50 Elmos.
C. Describe the other XBee features available via Processing. Explain how to use a computer and an XBee to control the slave Elmos, transmitting choreographed movements as part of an interactive exhibit. D. 4th ElmoHack Project: the goal is to use Processing to create a computer user-interface where the choreography of each Elmo is programmed graphically on a time line.
VI. Power to the Elmos A. Describe the options for rechargeable batteries (battery chemistries, alterations to the Elmo body, off-the-shelf chargers, homemade chargers). Explain how to build a Nickel Metal Hydride charger for one Elmo (use conventional charging plugs and jacks). This is the 5th ElmoHack Project: the goal is to take the Elmo from the 1st or the 2nd project, and make it rechargeable. B. Explain how to build a Nickel Metal Hydride charger for 50 Elmos. Besides the issue of incredibly large power consumption, explain how to deal with the issue of connecting 50 Elmos for charging (i.e. the alternative to using conventional jacks and plugs). This is the 6th (and final) ElmoHack Project: the goal is to create this custom 50-Elmo battery charger.