Introduction: Arduino Steve - a Minecraft Animatronic
Summary
I frequently do introduction to Electronics for groups - and after the theory is out of the way - this is fun project to see theory in practice. With a little preparation (pre printed papers) It can be completed in under an hour by the students. The subject is instantly recognisable to the students and there is huge potential for them to add their own features.
The parts can be got for as little as $10 if you shop around and everything but the paper parts are reusable for next time.
I have previously published this using a different development board - This is the port to more accessible Arduino - for this project the Arduino is much more suitable platform - cheaper and easier to build and more robust to kids 'imaginative' wiring.
The above video doesn't play on some mobile devices - here is the link to it on youtube.
Introduction
This is a fun project that is very easy to build. The goal of this project was to come up with as low-as-possible part-count robotic-figure that was still great fun to assemble, operate, watch and expand - yet be possible to build in under an hour. This project then is the result of my continually distilling my various robot designs. This, of course, then leaves it up to the adventurous students to expand it further as they wished - light up eyes or an energy sword maybe :)
As per instructables guidelines - no stock photos used in the making of this instructable.
Step 1: Supplies
Per figure - you will need
- 1x Arduino board
- 1x Breadboard (Medium or Long)
- 10x Aprox Breadboard connector wires (a mix of male-male And male-female)
- 1x Lollypop stick (or possibly some stiff cardboard)
- 2x Servo motors
- 1x Pritt Stick or other low mess glue
- 1x Printed template (see next steps where to get this)
- 5x pieces of double sided spongy pads (box of 100 from local pound shop) (*)
- An Elastic band is useful (holds the Arduino in Position on the breadboard)
1x Joystick Module (frequently sold from about 0.70c to $3) (**)
Note(*) It is Important you use double sided sticky pads - they are able to absorb the motors sudden movements without breaking apart - glue, bluetack, sellotape, duct tape etc are Not really a suitable alternative.
Tip: Try not to touch the sticky parts when affixing as it can reduce their sticky effectiveness. The pads are not reusable so you need to get them in the correct place first try.
Some sources for some of the parts: (I'll list all Amazon here - but do shop around keeping postage costs in mind)
Note(**): if you have not got a Joystick - you could instead modify the project to do a scripted "dance" with the students using code to move the servos in a repeating pattern.
Joystick
http://www.amazon.co.uk/KY-023-Joystick-Sensor-Module-Arduino/dp/B00FHRQ2CG
Packet of Two Servo Motors
http://www.amazon.co.uk/Sonline-Servo-Plane-Helicopter-Hitec/dp/B00X9M44YO
Sticky Pads (about 10mm x 20mm)
http://www.amazon.co.uk/Sellotape-Sticky-Fixers-double-12x25mm/dp/B001CN1TR2
Pritt Stick (Glue Stick)
http://www.amazon.co.uk/Pritt-Stick-10g-Pack-6/dp/B000I6QX34
Breadboard cables (its easier if you get both kinds)
http://www.amazon.co.uk/Solderless-Flexible-Breadboard-Jumper-arduino/dp/B00JUDWILM
http://www.amazon.co.uk/Conductor-Female-Jumper-Color-Ribbon-Male-20cm/dp/B00ATMHU52
Step 2: The Fun Messing With Glue Step!
We need to create a Head, Arm and a Sword, Pickaxe or other hand-held item.
- An ideally suitable template for this can be got from this site
http://minecraft.novaskin.me/wallpapers#papercraft - Choose your character, or create a new one
- Print it out full size onto A4 or similarly sized paper using a colour printer
I find card great - but ordinary printer/photocopy paper is ok too. - Cut out and assemble the head, arm, and any weapon you would like your figure to hold.
- Note! Make sure Not to cut off all the white triangular tooking tabs off the head - they are used to stick the head into a cube shape.
- For the weapon - I print out two pickaxes or swords - one for the back and one for the front - and between the two printouts I place a wooden lollipop stick to make sure its good and sturdy.
The images attached above could be used also - If you paste them into a word processor or an art program you can stretch them to try different sizes.
Alternatively - If you prefer - Microsoft have published some suitable XBox Halo Papercraft models from their site, downloadable at http://www.buildahalospartan.com/
The Halo head and arm I found to be a little more difficult to assemble than the Novaskin skins linked to above.
In one of the videos I added there is an Instructables Robot Paper Craft - The papercraft cutout is a modified version of this model :).
Step 3: Body, Assemble!
- Stick down the first servo to the breadboard using one sticky (1cm x 2cm) pad - this servos axle should be facing upwards. Think "Helicopter". This is the robot figures waist and lets him turn around.
- Attach one of the white plastic wheel or horns that came with the servo on the axle.
- You may have been supplied with screws also - these are useful but not necessary unless the servo horn is really loose.
- I find the Cross type of servo horn best here as it gives more surface area for the next sticky pad
- Place a sticky pad on this Servo horn..
- Now place the next servo on top - this time you want to place it on its side - label facing up - so the axle is coming out horizontal. Think "Windmill".
This axle is the shoulder we will attach the arm to. - Attach a servo horn to the axle - the T shaped one is best here.
- Now attach the arm you made - using one sticky pad to fasten it to the shoulder
Your figure should look like the 3rd image above
Get ahead..
...carefully without squishing it...place the selected head down on the topmost sticky pad.
Now he looks the business! Try not to move the motors too much at this stage - it can damage the gears moving them manually - we will add power so you can control them in the next step.
Step 4: Complete the Circuit
Here is the circuit diagram- its quite straightforward.
Basically what you are doing is:
- All the grounds from the Joystick, Servo 1 and Servo 2 are connected to the Arduino GND.
You will need use the Breadboards ground rails to have enough space to connect them all.- Note the Servos "Brown" wire is GND
- All the +5V and VCC from the Joystick, Servo 1 and Servo 2 are connected together to the Arduino 5V.
You will need use the Breadboards + rails to have enough space to connect them all- Note Servos Red or Orange wire is the VCC
- The Servos' Signal wire are connected to pin 3 and Pin 5
- In our Servos its the orange or yellow wire is the signal wire.
- The Joysticks X & Y are connected to Arduino pins A0 and A1 (Analog Group of Pins)
- The Joystick Z (click in the joystick) is unused.
You can connect this to A2 and use this to light lights etc if you like.
If the colours are different to what's described above - please web search the servo model you have for the colour code.
Step 5: Add Brains
Upload the sketch below....
The code is commented.
- It reads the position of the joystick X by reading A0
- It converts this number into a number from 10 to 170
- And it sends this as the number of degrees the servo should move to
- Then it repeats this for the Y axis and outputs to the second servo.
We use 10 to 170 degrees rather than 0 to 180 as some stepper motors grind the gears at these extremes and can break.
For the Sword - we limit the angle of the servo so that it wont let the sword hit the table.
The code:
/* Arduino Steve - by Ambrose Clarke 2015 Connect joystick to pin A0 and A1 Two servos to 3 & 5 - and decorate! */ #include <Servo.h> Servo myservoA; // create servo object to control a servo Servo myservoB; // create servo object to control a servo void setup() { myservoA.attach(3); // attaches the servo on pin 3 to the servo object myservoB.attach(5); // attaches the servo on pin 5 to the servo object } void loop() { //Read a value - convert from 0..1023 to 10..170 degrees- and send to servo int v0 = analogRead(A0); int s0 = map(v0,0,1023,10,170); myservoA.write(s0); //again for the second joystick & servo - go 90 to 170 degrees - we dont want hit the table int v1 = analogRead(A1); int s1 = map(v1,0,1023,90,170); myservoB.write(s1); }
Step 6: Its Allliiive! All Done - Enjoy :)
Moving the Joystick Up/Down moves the Sword... Moving Left/Right moves him left/Right..
Clicking the button in is left to the constructor to what happens - light the eyes up? Light up a sword or maybe play a sound or sample? As in minecraft - its up to you want you want to build.