Lego Technic Car with Arduino + XBee Wireless Control

Lego Technic Car
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.
Lego Technic CarThis 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:

  1. LEGO Technic Dune Duster #8207
  2. LEGO Technic Power Pack #8720
  3. Arduino UNO R3
  4. Sparkfun Ardumoto Motor Driver Shield
  5. Sub-micro Servo ROB-09065 (Sparkfun)
  6. 2x XBee 1mW Trace Antenna – Series 1 (802.15.4)
  7. XBee Shield
  8. XBee Explorer USB
  9. Various terminals and cabling
  10. Miscellaneous LEGO bits (90% of the parts came from the kits, we just needed 2 or 3 pieces to fill in)
  11. 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.
Lego Technic Car

Step 2: Turning left and right

IMG_20130105_193945.jpg
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.

Step 3: Making Sufficient Autonomous Power

To power the project, we started with a 9v battery and a simple adapter, hoping to eventually go to a LiPo and save space and weight. We quickly figured out however, that with running the XBee, the Ardumoto, and the Arduino, their was simply not enough battery capacity in a 9v for more than 5 minutes or so. After realizing that LiPo did not fit the budget, stepping up to 6x AAA was the only option as I had to have 9v for the Technic drive motor, and 6x AA, while providing great capacity, would have radically altered the design. With perseverance, and a little help from my 8 yo LEGO Master, we were able to stretch the body, remount the electronics platform, and came away with what I felt looked much more substantial, even without the articulating rear suspension. The original design had been much closer to the look of the Dune Duster kit, but just did not provide enough space to carry sufficient power.

To make the battery pack, we bonded two RadioShack 3 AAA battery holders together using Gorilla Glue and wired them in series to get the needed 9 volts.  The pack provides 30 minutes to an hour of run time, by which time it has smacked into the cabinets, or has run afoul of the cat, and is in need of R&R anyway.

Leave a Comment

Your email address will not be published. Required fields are marked *