Let's Make Robots!


Walks (kind of)

stEve started life as a robot shaped sweetie tin. I received him as part of a Christmas present last year (2011) from some friends. This Christmas Eve stEve was born. I took the tin and opened some holes in the base for wheels. I had previously bought some geared stepper motors (28BYJ-48-5VDC) from ebay and though they didn't suit their original intended purpose they suited this bot down to a tee.

The two stepper motors drive ellipse shaped wheels made from shapelock/polymorph. When rotated to one position the wheel does not project below the bottom of the tin/base and stEve stands normally. Rotating one wheel through 180 degrees causes stEve to take a 'step' in an arc which pivots around the opposite edge of the tin/base. With 90 degree offset between the two wheels and both wheels spinning at the same constant speed stEve staggers forward.

The steppers are currently driven by an Arduino (DFRobot.com Duemilanove) through their included ULN2003 driver boards, powered by the 5v regulated supply from the Arduino. A 9V battery feeds the Arduino though I'm not sure there is sufficient capacity for long duration use (something I'll need to investigate).

Everything is mounted on a removable sled made of balsa wood, with a thin piece of balsa wood jammed down the back to hold the sled in place. Superglue, zip/cable ties, twist ties and the occasional screw are all used to hold this together, a bit cludgy but I wasn't going for good looks as this is all hidden within a pretty robot shaped tin. I'm considering the addition of LDRs or LEDs to make stEve into a crude light chaser (phototropic robot) but for now he simply moves both his motors at a fixed pace. Further refinement of his wheels and possibly some way to determine their 'home' position may lead to more interesting walking methods.

A little update (18/01/13):

stEve still gets occasional attention from me, he's had his arduino and motor driver boards properly mounted with bolts now (previously held in place with twist-ties). I added a piezo speaker and merged my simple stepper motor control code with Auduino, which turns the arduino into a granular synthesizer. He plays random sounds between movements and tries to play Super Mario Bros theme tune when starting up (still needs a little tinkering, converted a midi file into a set of arrays for the arduino but it currently cannot handle overlapping notes (don't think I'll be able to make the arduino polyphonic, just one note at a time for now)). The piezo is not loud enough so I've ordered a 386N IC to build a simple amplifier and will include a small speaker within stEve's tin.

Recently I've been toying with the idea of printing replacement wheels, perhaps with the addition of some magnets which will trigger hall effect sensors to determine when the wheels are in the neutral position (horizontal, not touching the ground). I've also been seriously contemplating JerZ's idea of chopping stEve's head off and making it turn.

I like that I can safely stick stEve in my laptop bag and bring him with me to show off. Portability is definitely going to rank higher on my "important factors to consider" list with any future robot projects.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

ya gotta know when to stop. He is perfect just like he is!

Maybe I'm wrong, But you shouldn't need encoders with the steppers. I believe those steppers are 5.625 degree (1/64) step angle, with a 1:64 gear reduction. So you should be able to figure 4096 steps/per revolution at your wheels. Probably have to double check your data sheet to confirm. Also I know they are a bargain so not sure on the motor accuracy, some testing should tell if you could save a bit of hardware and still determine when the wheels are in "neutral" position..

You are correct in what you've said JerZ, however I'm not intending to build an encoder. Stepper motors provide relative positioning (assuming no steps are missed), I just need to determine the orientation of the wheels upon startup (move to home position) and as long as I keep track of the steps or only issue 2048 or 4096 steps at a time then I know what my steppers/wheels are doing.

Beautiful. Stunning. Such raw creativity!


Ha - looks like a fun little project. I love seeing fun projects like this and using existing "things". A dark spot on one side of the wheel and an optosensor might give you a cheap "home" position I would guess.

Adding LDR's and some LEDs and even a little speaker that makes some random sounds would add even more personality to him.. or her.. I didn't look closely.


Good job - :-)

Like the name too!

-Stephen aka Steve

Thanks Stephen, he was indeed a fun project. Food for thought with the optosensor.

I also like the idea of adding some sound (looked at AdaFruit Wave Shield, think it may be overkill though).

Wav output would be the very best but you can make some sounds and even play music using a simple speaker and some code. I used some sample code found online for my "DARTH" bot. It's very very simple but better than nothing. Used the same technique on my Spider for some simple little odd sounds and my TED Biped I'm still working on.

Here is the basic concept/code but there are others out there too:

You'll want a randomSeek(<some analog input>) or something to make it really random.

void randomsound(int soundcount){

  for (long i = 0; i < soundcount; i += 1) {

    int myTone = random(5000,10000);

    int myDur  = random(50, 200);

    playTone(myTone, myDur);



void playTone(int tone, int duration) {
  for (long i = 0; i < duration * 1000L; i += tone * 2) {
    digitalWrite(speakerPin, HIGH);
    digitalWrite(speakerPin, LOW);
Other option is hacking a simple MP3 player to move back and forth between songs which is another angle I am looking at for DARTH. Either a servo to pop the next/prev button on the MP3 player I have or go inside and tap the switch.
Just some ideas. Enjoy!


Thanks for the code Stephen, stEve wakes up and says hello now before he starts waddling across the table. Hopefully with a little work I can add some beeps and whistles to his repertoire.

To anyone looking to use Stephen's code snippet above note that randomSeek should read randomSeed (easy typo to make).

Didn't see that - I can't type "office" without typing "officer" or "drive" without making it "driver either... oh well.

So how did you do the hello piece? Very interested. I have a couple $5 MP3 players on the way to see about hacking for some sounds/speech playback but always looking for new ways of doing things.



Sorry I didn't explain that better, I mean't a figurative hello. He strings together 17 random sounds using your functions whenever he powers up.

With some closer attention to finding musical notes and perhaps using PWM I'm hoping to achieve some sort of beep or whistle failing that I think the cheap MP3 player is a good way to go, optoisolator or transistor control over it should be enough (I used optoisolators when I tied a cheap camera to my robot years ago, link here).