Let's Make Robots!


Navigate around via ultrasound and make a cute sound when it encounters an obstacle
PipSqueak.ino_.zip871 bytes

Here's a nice animation of him (I found out animation gets disabled if you use a .gif for your Primary Image):

It all starts innocently enough, when Ossipee points out what a great deal Rocketbrand Studios has on the new Dagu Mini Driver board. By the way, I noticed this and wondered if they didn't give it the name on purpose, but...

(In other words, it's a "Mini Driver," not "Minnie Driver." Although both are pretty sexy in their own ways.  Also, sorry that the image link was denied on some systems.  That's the only thing I've updated 1/28/2013, but come on-she looks great and you have to admit it's worth the bump!)

Anyway, you go, and you look, and sure enough the damned thing has everything you need to build a bot except the I/O and all CtC is asking for it is $16? That's what's called an "impulse buy" right there. It's the equivalent of putting candy bars at the check-out counter. Really good candy bars.

When it got here (rather more quickly than I'm used to for a robot part, incidentally) I had to start looking for a project to put it on.  I wanted to be the first on LMR to use one of these in an original (non-kitted) robot, and I think I was.  

Now, most of my robots are in the medium- to large- format range. The Mini-driver could handle more robot than I chose to build around it, but not something as heavy as Serv-O or Yubin Kun (which require some bigger motors relative to the power you'd want to pump through the Mini Driver.)  I decided to build a variation on FritsL's latest Start-Here robot-that is, I wanted to have a simple, non-differential drive and servomotor steering with ultrasonic obstacle detection, about desktop-unit sized.  I think the the tricycle configuration is reversed from the design on the latest SHR, but the principal is the same.  Also I used a lot of hot glue.  (Sorry MarkusB-there's just no great way to mount those little yellow gearmotors without glue somewhere.)

Pip5queek is just the Mini-Driver on a slice of 4mil PVC sheet hot glued to a yellow gearmotor with wheels directly screwed into the axles and a ping sensor mounted over a steering castor piloted by a servo.  Oh, and it has a little speaker stuck between the batteries to make it sound as cute as it looks.  The wheels aren't great on many surfaces.  I could probably put wide rubber bands around them to make them grab better, but I know myself well enough to realize that I've taken this robot as far as I'm interested and am more likely to part him out than improve on him.

The Mini-Driver is a great deal for a first robot μcontroller, or for an experimenter's board.  It does have a few limitations to be aware of.  First, make sure you give it enough power.  If it dips below 5v for long you'll have to reburn the bootloader.  Second, remember that on the Mega 8 series, you have PWM on fewer pins than the 328 and up (like Uno/Leonardo) pins 9,10 and 11 are all, I think-and these are more or less tied up in the h-bridges on the Mini Driver.  Another important consideration (one of which OddBot had to remind me) is that the servo.h library "breaks" PWM on these pins, so you can't use the h-bridges when driving a servo with the library.  This proved a small headache when it came to programming Pip, but one that is easily surmountable.  All you have to do is remember that servos are controlled by 20000 μSecond intervals with a high pulse at the beginning determining the angle.  Here's an example of a subroutine that sets the servo at about 120°:

void lookRight(){

  for (int repeat = 1; repeat<50; repeat++){
    pulse = 1100;
    digitalWrite(servoPin, HIGH);
    digitalWrite(servoPin, LOW);

...not as simple as myservo.write(120) perhaps, but easy enough to manage and direct enough that you can see what's going on and handle everything in a function.  I've attached the .ino file if anyone wants to look at my implementation.


Pip is not much of a robot.  He won't bring you drinks, pick up socks or dog poop or mine diamonds for you.  All he does is run around looking cute, beeping and backing up when he sees an obstacle then deciding which route is least obstructed and pursuing it.  He barely registers a 1.1 on the dog-annoyance scale, and (like all robots) he's dumb as snot and his simple cybernetics can easily be foiled by carpet, soft obstacles and edges low enough to catch his head but high enough for the ping sensor to miss. 

However, he was a satisfying build and a good platform for the Mini-driver. High marks to both RocketBrand and Dagu for this board!  The product is well-documented and supported as well as designed and built with quality and thoughtfulness.  It represents an unmatched bargain for any robot builder.  For about half the price of an Arduino UNO, you get a microcontroller with a built-in dual motor-driver and servo/sensor ready headers on each available pin.  Also, I like the inclusion of a power switch on the board.  While not a huge ommission on "official" Arduino micros, for a robot builder it really is a nice thing to have when the power regulator is built in.  It also comes packaged with plastic standoffs for mounting, which is solves the problem of placement nicely for most applications.  Just don't do what I did with them (ie, put the threaded ends of the standoffs "up" so that you have to put the nuts down on top of the board and put the screws through the substrate.  Bad planning.)

RocketBrand as a supplier will never treat you wrong, and Chris is always enthusiastic in his support of his products.  OddBot backs up the Dagu line with compleat knowlege and helpful personal direction when you ask him.  The two of them are cheerful, friendly resources and LMR is lucky to have each in the community.  Okay, I've sucked up enough now.  Time to stop f'ing around and get to work on the Diamond Challenge!


Comment viewing options

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

Thank you and by extension Oddball.  I was unaware of the servo.h library breaking PWM on the pins in question.  Your code example saved me.  Much appreciated.

Glad to see you got it up and running.

Now I wanna make one, too. :)

   I love the sonar on the wheel.  Killing two birds with one stone in the mechanics is a big win on a small 'bot.  I also like how the angle of the chassis throws most of the weight on the drive wheels.  And he recognizes table legs!  +1!!

Great design. Great execution.  Nice work!

Gee, thanks you guys! I guess I forgot how proud I was of that idea originally, but the double-use servo concept was probably where it all really started. Initially I tried to drive him with a CR servo/worm gear configuration but I couldn't get it to go for some reason. The Dagu parts really brought him together though.

Ha, sweet little bot. Love the ultrasonic on the front steer. Hadn't thought about that. Cool little build Max. I've been wanting to build a tinybot myself - give me some inspiration.


Tricycle bot I love it, start here, learn to ride arduino here,  your also the first one I have seen put a wheel on a ping!