I was perusing Instructables one fine winter Saturday, when my 8 yo son came in and peered over my shoulder and saw this: http://www.instructables.com/id/RC-Lego-Car/
by sath02. My son is a huge fan of all things Lego, and loves robots and cars, and this was right up his alley. He immediately put it on his Christmas list, thinking it was a “real” product that came in a box, and since I had been looking for some inspiration to take on an Arduino project, it was a perfect joint gift for he and I to share over the holidays.
This is my first ‘ible. It’s an Arduino-controlled Lego RC car using XBee units for the “RC” part. The idea was shamelessly stolen from sath02’s excellent ‘ible, attributed above. We began and finished the project over winter break 2012, and I’ve been sitting on these pictures for about a year, and have finally found some time to get them posted.
I won’t be providing a step-by-step instructional, but I will be highlighting what were some of our key challenges, and what our solutions were for them.
Here are the parts we used, in no particular order:
- LEGO Technic Dune Duster #8207
- LEGO Technic Power Pack #8720
- Arduino UNO R3
- Sparkfun Ardumoto Motor Driver Shield
- Sub-micro Servo ROB-09065 (Sparkfun)
- 2x XBee 1mW Trace Antenna – Series 1 (802.15.4)
- XBee Shield
- XBee Explorer USB
- Various terminals and cabling
- Miscellaneous LEGO bits (90% of the parts came from the kits, we just needed 2 or 3 pieces to fill in)
- 2x RadioShack 3 AAA battery holders
Most of the code was written by myself, and while I tried to pique my son’s interest in it, a lot of it was over his head, though I think he got the basics. He’s already been through the SparkFun Inventor’s Kit with me, so he knew the basics of circuits and motors and the like, the code work was just too tedious for him.
The one thing I took away from this, besides spending some quality time with my son and building something really cool, was not to underestimate what children can grasp at any age. Don’t let the “recommended age” guidelines put you off of introducing your kids to a learning experience like this. You’re planting seeds for a lifetime of discovery and innovation.
And with that, on to the good stuff.
Step 1: Powering the drive wheels
This was one of the more challenging aspects of the project believe it or not. Figuring out how to mate the 9v LEGO Technic motor with the Ardumoto was challenging. I had seen custom power bricks and the like, and I think LEGO even sells (or used to) adapters. In any case, I finally devised a hack using a soldering iron and a small LEGO brick to make an adapter for the jumpers from the Ardumoto. It took a couple of tries and some mangled bricks to get it right (much to my son’s dismay), but what I ended up with in the end works fairly well. The whole assembly (including the motor drive itself) is rather fragile, since the whole thing is put together without glue, and a couple whacks into baseboard or cabinets will invariably loosen things up a bit. The little 9v LEGO Technic motor, while not speedy, has enough torque to squeal the tires when quickly changing from forward to reverse, and is definitely fast enough for a LEGO RC car.
Step 2: Turning left and right
Connecting the micro-servo to the Technic steering system was accomplished using a zip-tie, and one of the adapters and some screws that came with the servo, that just so happened to mate up to one of the Technic driveline pieces perfectly. After setting the limits in the software, the steering system was one of the easiest parts of the project. The LEGO Technic parts really helped here, as hacking something together for this could have taken quite a while without it. It is probably the primary reason why I decided to go with the Technic system.