December 10, 2013

The Beaglebone versus the Arduino

This is not a regurgitation of things I have read. I have just finished several AVR microcontroller projects and am now well into my first Beaglebone black project.

The price is quite close, identical unless you are truly strapped for cash. You pay $45 for the BBB, and $30 for an Arduino Uno. You get incredibly more for your money with the BBB. With the BBB you have a 1Ghz ARM processor with 512M of ram and 2G of flash. With the Arduino Uno you have a AVR ATmega 328 running at 20 Mhz, with 32K of flash and 2K of ram. A ridiculous comparison if you just look at the hardware. With the Arduino you have 23 IO pins, with the BBB you get 65.

The truly big difference with the BBB is that you get an actual 10/100 ethernet port, and the thing runs linux out of the box. It is true that (for an additional $46 at Sparkfun) you can get an ethernet shield, but that brings the total cost to $76. And running a network stack on the ATmega 328 is truly pushing the envelope (people do it, but it doesn't sound pretty).

The real difference though is in the development environment. With the Arduino, you either have to deal with the crappy Arduino IDE (with all of its painful Java issues), or (as I did) learn how to bypass that garbage and use the AVR toolchain and command line tools. Not to be outdone, the beagle folks try to foist the wretched Cloud 9 IDE on you, but it is very easy to blow that off and get things done much more nicely without it.

I was pleased to find that with the Beagle, I did not have to install any development tools on my host computer. All I needed was ssh (which I already had, if you are on windows, you would get an ssh client like "putty"). Then I was happily running vi on the beagle itself and editing javascript. It is equally possible to code in python or write bash scripts. There is nothing stopping you from using ruby or writing C programs or even perl. You can probably even use php, but I would go with javascript/node/socket_io.

Since all these tools run on the beagle itself, you don't have to install anything on your development machine. In fact the term "development machine" is somewhat of a misnomer.

What really charmed me though was that my final application, GUI and all could be hosted on the beagle. All I need is a browser on any machine (even a mobile device) and I can be controlling my device. With the arduino, I would have been using a USB link and writing some kind of GUI that would have been hosted on whatever machine was at the other end of the USB link.


Feedback? Questions? Drop me a line!

Tom's Computer Info / tom@mmto.org