Lego NXT vs Arduino

battle of the microcontrollersI have always been interested in Lego NXT. It seems like a really easy way to get into robotics, and programming. I have never really figured out how functional it is in the “real world” (whatever that means)
The other day a coworker was really pushing the idea on me telling me I needed to buy a kit because it was so easy to build things. Now I really struggle with the arduino most of the time, but I enjoy the struggle, and I know that if I ultimately build something then I can replicate it fairly cheaply. That is my issue with NXT. It is REALLY expensive. It is expensive for legos, it is expensive for a microprocessor, and it is expensive for the peripherals. I think I’m past the target age of these things, but regardless, I priced out how much it would cost for me to “replicate” an NXT kit with and arduino.


Here’s the NXT specs fro the lego site (lightly edited for clarity)

# 3 Interactive Servo motors
# sound sensor
# ultrasonic sensor
# touch sensor
# light / color sensor
# 519 specially selected LEGO TECHNIC pieces
# 4 input ports, 3 output ports and 7 6-wire cords
# Matrix display
# Real sound speaker
# USB 2.0 and Bluetooth support
# Easy-to-use PC and Mac compatible interface
# Intuitive, icon-based drag-and-drop program “building” environment.

and there is this special offer
*Purchase 8527 LEGO® MINDSTORMS NXT and receive a FREE F9847 Bluetooth® Dongle.
The NXT kit 8527 will run you $249.99

Here is the breakdown for the Arduino
color light sensor $19
“Touch Sensor” Aka Pushbutton $2.99 (2)

ultrasonic sensor $$27
3 continuous rotation Servos $39
Microphone $3.79
Arduino Decemilia usb starter kit $65.00
protoshield
ncludes a 10K potentiometer, 1K potentiometer, 2 small pushbuttons, 5 red diffused bright LEDs, one each of red, green and blue ultrabright LED, 5 100 ohm resistors, 5 1K resistors, 5 10K resistors, and a CdS photocell (new!). Also includes 4 pieces of 18″ long jumper wire

LED MATRIX $6.95

All of that comes to $163.73 before taxes and shipping! $80 lessFor that you are getting a lot more functionality, and more applicable hardware knowledge. Granted, the “knowledge barrier to entry” is higher, but I think that when robotics are concerned, everyone is probably interested in learning just as much as they are in results. This is a pretty heady field. On the other hand I don’t think there is any dispute in saying that the nxt is cool for kids to play with. My interest in this whole proposition is more because I am sick of people telling me to buy legos, when you can buy the real hardware for less. If your kid is either einstein, already interested in programming, or over 15, I’d say stay away from the familiar bricks.

Just for kicks, lets load up the cart until we hit our fabled $249.99 price tag!

…we can build up our electronics toolkit.
diagonal cutters $2.95

wire strippers $3.95
1 lb of solder $12.99

Basic soldering iron $7.99
…We can make some pcb boards…
PCB Etching kit $15.99

…We can even get an extra arduino, this time in a smaller form factor!
Boarduino $17.50

USB TTL-232 Cable for boarduino $20

In conclusion – I say go for the route of more knowledge, It’s usually cheaper, more frustrating, and ultimately more rewarding. You don’t even need to go the arduino route, you could go basic stamp, pic, or any other kind of chip! I think the only reason for an adult to get an NXT is the one that never gets mentioned – you can buy it “for the kids” and then play with it into the night…

14 Responses to Lego NXT vs Arduino

  1. I don’t agree that the mindstorms NXT is “REALLY expensive”. If anything i think your breakdown shows how much of a great value it really is. Consider the fact that while you have bluetooth on your list of NXT features, you did not choose the bluetooth arduino which is ~$100 more. And the lego building blocks, which physically connect to the various motors and sensors, provide quite alot.

    Thanks for the article, it was really useful.

  2. M.F. – I agree with you that IF you need bluetooth, then it might possibly be a closer horserace. I personally haven’t ever felt the need for it, but that is probably determined by the kinds of things I buy.
    Can the nxt operate tethered to a computer? That is the one area where I could see bluetooth being useful. From my (admittedly small) knowledge of NXT I thought that data transfer was for pushing firmware onto the device.

    Regardless of the bluetooth issue – the fact remains that after you have built your first creation it is much more expensive to produce a second via NXT. With arduinos starting at $37.50 it’s a pretty simple choice for me.

    That being said, I wouldn’t turn one down if I saw it at a garage sale. It’s still cool, just not cheap!

  3. As someone who owns a large number of AVR microcontrollers (well over 100), Arduino Shields (almost 50), and 22 separate Arduinos of various style and make. I am obviously a FAN of AVR technology. I love the ability to program the micro-controller at a low level, and don’t want to have to use some “slick UI” to make a motor run, I’d rather flip bit (literally).

    So, normally, I would agree with you, in that its better to learn these things at a low level. But in this case, you’re only thinking of the electrical aspects, and not the 3-dimensional and mechanical aspects.

    In fact, just moments ago, I ordered an NXT kit. Why you might ask? Since I seemingly already have all the components that the kit contains. But the fact is, I don’t. I have no way to combine these pieces together in 3-dimensional space to make a useful design.

    The NXT kit will allow me to connect those components together quickly and easily into a 3-dimensional creation. Much as the Arduino & Shields allow people to rapidly prototype by connecting sub-circuits together and writing the code, the NXT kit provides a quick and easy way to build a 3-dimensional electro-mechanical device.

    Unless you happen to own a machine shop or are able to fabricate your own plastic parts, I simply don’t know any other way of doing this.

  4. Bluetooth is one of the best features of the NXT. You can upload new programs via bluetooth. You can start and stop existing programs (letting you test, debug and reupload without having to chase down the robot and reconnect it to the computer).

    But it goes beyond that. You can transfer data to and from your computer. You can even remotely control your robot using bluetooth.

    Some of this is easier (in my opinion) using 3rd party software. Personally, I like ruby-nxt for writing programs that run on my laptop but control the NXT brick. NBC/NXC is good for on-board control.

    I think the best options are hybrid onboard/offboard programs that transfer data to and from a bluetooth linked–letting you do the hard-core processing on a more powerful computer.

    The only problem with the bluetooth is the range. It’s not bad, but if you’re remote controlling a mobile robot, it’s easy for it to drift a bit too far. Then it just continues to execute its last command. That can be bad.

    Actually, my biggest problem with the NXT in general is the limited number of sensor and motor slots.

    -Rich-

  5. Oh, I also forgot. You can also do NXT to NXT communication. I was able to borrow a second brick from UH, and played around with this. There are some limitations, but it’s still pretty cool.

  6. Personally, i think that arduino is better. the reasons: arduino lets you connect to almost any analog or digital device. you can cheaply make a board replica for finished products and use the main board for prototyping. arduinos can communicate with each other and comps. easily through serial or an x-bee. serial com is the real deal. it can connect to almost any computerized device easily. it has a much wider range of uses.
    Besides. if you want a stand/frame, you can make it be anything. wood, metal, plastic ect. and it can be any shape.

  7. I find all the arguments here true and worthy of consideration. I like lego mindstorms NXT over arduino (despite the fact I haven’t tried the latter :-P ) only because of the aforementioned mechanical aspects of robot design.

    If your beam is too long or too short in lego you just move the pins or find another part. If you need to add a gearbox to your creation lego is fairly simple (although it’s selection of gears is a bit small imo ). If you do it on any other non lego medium prototyping will be a pain as if you need a different sized piece what are you going to do at home? I guess you can cut glue wood/plastic again or reshape steel etc… but these mediums take a very long time to manipulate. Legos you can change the size and gearbox of a robot fairly quickly. With the other mediums though you pretty much have to get it right the first time. If you’re heavy into engineering I guess that would make sense – I’m more of an experimental builder myself :-D

    Arduino definitely has the cost advantage – I stumbled upon this googling on why the lego color sensor is 54$. I’m tempted now to somehow transplant a 3rd party color sensor or find a cheap color sensor to NXT hack.

  8. It depends on what you are trying to do. If you want to make a coffeepot that tweets when your coffee is ready, then Arduino all the way.

    If you want a novice friendly way to build robots, then I say Mindstorms is far superior.

    And then you have a lot of overlap between the two. I own and use both, and sometimes use them together. Lego has a huge advantage in the fact that not only can you control motors and read sensors (without soldering and burning fingers), but you can also build the structures, frames, etc you need all out of one system that works well together.

    If you want to build, say a tracked robot that can explore your back yard using arduino, then you are going to have to figure out how you are going to make the body, and the tracks, get everything to match up and mount correctly, etc. It is almost certainly going to require more tools, more cost, and more frustration than with lego.

    With lego I can quickly prototype ideas, shapes, structures, etc; in ways that I can’t with Arduino because there is no associated building system. But what I build has limits on how sturdy, or permanent it can be.

    Like everything in this life, it is about trade-offs, compromises, and using the best tool for the job. So before I can say which is “better”, I need to know what problem you are trying to solve.

  9. love that post. I was wondering to buy or not a NXT lego. but i’m brazilian and it arrives here (after our lovely taxes) for more than USD 600 . I will go for Arduino! :D

  10. I agree with those saying the Lego rules for getting the actual physical part of the project up and running, so you can do a hybrid of the two. I’m actually working on a project like that now. Once I get things set up so my Arduino communicates w/ the NXT motors, I’ll be ready to go, whereas otherwise you have to get creative (not a bad thing) w/ cardboard and popsicle sticks and etc. and that can give pretty mixed results.

    So the Lego parts are great for structure prototyping, and you can make something more permanent later. The Arduino is great for the software prototyping, and you can load that code onto a $4 AVR as part of your more permanent product.

    So in an ideal world, you’d get the Arduino and then buy just the structural pieces of the NXT kit. I’m pretty sure you can do that. Some Googling required.

  11. Big question concerning NXT and arduino. I am looking at starting a robotics club for ages 10 and up. Thinking of ten year olds with little or no robotics experience, and an instructor (me) with no arduino and a little programming language experience (VB, a little c+) is arduino a good starting place for robotics? My big concern is the cost of the NXT system and the limitations it has. My understanding of arduino is we could tear apart old radio controlled systems and incorporate them into arduino easier than nxt. If I understand correctly arduino is far more expandable, flexible, functional than a nxt system, true? Can you point me in a good direction for beginning arduino educational materials?

  12. Dan: yes.
    The arduino is much easier to control other non-lego things with. You would probably not be able to do it just with an arduino though. For instance, the motors for your rc car will typically draw more power then the arduino could provide, so you would need to set up a mosfet or a relay.

    I am obviously a big arduino proponent. Some may argue that nxt can overlap a fair bit, but I think it will end up being much more expensive.

    I think if you were able to sit down with an example rc car you could figure it out pretty quickly. You would basically be replacing the rc reciever with the arduino. From there you need to figure out how to control the motor speed (which is easy, but not plug and play) and the steering servo (which can be fairly plug and play) The next step is to set up some sensors so it can use its brain a bit.

    Making things talk is a great book on the subject. The arduino website is great as well, http://arduino.cc Lastly, I cant recommend any place as much as http://sparkfun.com for buying your hardware. They have stuff for every level, and they might even cut you a deal if you could tell them enough about your club

    Learning about microcontrollers and robotics is a really fun process. Start small and focus on one ‘system’ at a time. You’ll have fun!
    Feel free to post here with any questions!

  13. We homeschool and belong to a group that covers the county we live in. One of the dads in the group heard about the NXT Challenge and started a group to enter this challenge. Having had my own software company before the Internet took off I thought it would be fun for my young son and me. I had been wanting to teach programming to my son for awhile and thought this would be a good beginning.

    I checked out the group’s meetings and bought an NXT kit for the $250 or what ever it was. The price is high but if I can teach my son cool things about programming it is worth it. And that is where the rub is. The programming environment is a total piece of crap. It is a type of picture programming that does nothing to help teach proper coding practice. It makes bloated spaghetti code literally, everything is connected with lines like spaghetti. Yes I know there are other languages that will work if you change the firmware but they are not allowed in the challenge. I didn’t waste my time and dropped out of the group. When I dropped out most dropped out as I was the one with any real programming experience.

    My son and I are now working on our own and we are using the arduino platform, as well as the ardweeny. He is learning a lot and has a lot of fun doing it. I found this blog looking for how I can use the sensors from the nxt with the arduino. My reply to the poster about the cost is cost is the last consideration when I am schooling my child. The quality of what my son learns is far more important then cost. And the NXT falls flat in that regard. The arduino is far superior. Also for the person that can’t figure out how to use legos and has to buy the NXT I have this to say. Any four year old can snap legos together. You don’t need a machine shop. The things you use to connect to the nxt sensors can be made from wood and a drill. It’s really not hard if you allow yourself to think out of the lego box. But legos doesn’t want you to. That’s how they make their money, by keeping you in the box.