Saturday, January 10, 2015

Gadgeteer vs Arduino vs Phidgets



Hackaday.com recently ran an article called "Arduino vs. Phidgets - Dev Time Trials" which brought to attention a blog post by Ken (?) called "Hardware Protoyping Speed Test: Phidgets vs Arduino" which I thought was a rather fair set of tests for comparing development speed and costs for three simple projects. My objective is to run these same tests using the Gadgeteer rapid prototyping system and report my results. Of course, like any article of this sort there are always going to be some lively comments from the readers regarding the validity and bias of tests.  I fully expect that this article will generate plenty of its own.

Like [I suspect] Ken, I am not being paid to write this article and have not gone to every length to make everything as objective and scientific as possible simply because I am not interested in spending more than a few nights with these tests and producing the video.  However, I do feel that my tests are in line with the tests that Ken performed. Ken introduced us to Phidgets as an alternative rapid prototyping system for hardware.  His tests showed that Phidgets is indeed a faster development system than Arduino.  However, as he and the readers of the article pointed out there are several negatives to going this direction including:
  1. Cost - the Phidgets projects were considerably more expensive than the Arduino projects.
  2. PC Tether - Phidgets must be connected to a PC at all times.
  3. Proprietary

What is Gadgeteer and why use it?

My favorite hardware system for rapid prototyping is Gadgeteer.  Much like Phidgets, it uses modular components combined with software to provide a system which makes it possible to prototype extremely quickly.  In these tests I will demonstrate this.  I am also a big fan of Arduino and regularly use it in projects.  However, for rapid prototyping I haven't found anything better than Gadgeteer.  I have never used Phidgets myself.  Any statements about the platform come from Ken's article.

Gadgeteer also addresses the concerns numerated above with Phidgets.  You will see that the project costs when using Gadgeteer was only nominally higher than that of Arduino.  Considering the productivity gains, I believe it to be worth the investment.

Gadgeteer is microcontroller based.  So, a PC is only needed for programming and debugging.  Once that's done, you can untether it and power it from any DC source as you can with Arduino.
Gadgeteer is open source and is based on the open source .NET Micro Framework (NETMF) project.  Most of the modules and some of the mainboards are also open hardware & software.  Vendors can extend the core framework and add their own proprietary software to mainboard firmware.  However, no proprietary functions were used in my tests.

The Tests!

For more information about the tests, I encourage you to read Ken's article.  I'm going to focus this post on just showing my results and detailing concerns I uncovered when necessary.

TEST #1 : Blink an LED (aka "Hello World!")


For this test, I used the following components.
The results...

Some people may complain here that I didn't manually wire up an LED & resistor as Ken did in his tests.  I say that defeats the purpose of rapid prototyping.  One of the main advantages of Gadgeteer is that I don't need to know how to wire up circuits in order to quickly make something that works.

TEST #2 : Move a Servo 


For this test, I used the following components.
One thing I felt was an error in Ken's tests were that he didn't use the same servo in both tests but instead used a slightly more expensive Phidgets branded servo for the test of the Phidgets board.  Since the brand of servo really shouldn't matter, I thought it would be a more fair comparison to exclude the cost of the servo from the prices and assume that the same servo was used in every test since they all basically function the same way.

The results...

Some of the readers of Ken's article complained that he use "libraries" in his tests and I anticipate some will complain that I did the same.  To that I'll respond "you betcha!".  Built-in module drivers that have been written and tested specifically for a known module circuit that are easy to wire in via drag & drop programming is another big reason that rapid prototyping with Gadgeteer is so much faster.  Even if you have the libraries available to you in Aduino, you are going to have to locate them and figure out how to include them in your project which takes time that you do not have to spend with Gadgeteer.

TEST #3 : Pedometer


For this test, I used the following components.
The results...

Here we can see that as the complexity of a project increases, the development time saved by Gadgeteer really pays off.  It's also important to note that the cost of the Gadgeteer solution is only slightly higher than that of the Arduino solution and almost four times cheaper than the Phidgets solution.

OVERVIEW


Here I've plotted a summary of the results from the three tests.  The Y axis shows development time and the bubble size shows cost.  It is evident from this comparison that Gadgeteer makes a very good choice when choosing a rapid prototyping system.

Some readers of Ken's article commented that Phidgets was faster but due to the cost it wouldn't be useful for creating final projects.  As you can see in the cost comparisons of the Gadgeteer & Arduino solutions, Gadgeteer solutions can make very good options for many final projects.  In fact, I have consulted with a company in the past that is doing this very thing in a commercial product.  Certainly, if a company's volume gets high enough then it makes sense to convert to a custom PCB solution.  But if you are a start-up with more ideas than engineers then a Gadgeteer based solution is a very viable option.

Although at times it may sound like I'm getting paid to write this article, that is not the case.  I am just a really big fan of the Gadgeteer prototyping system and I'm excited to show you why.  There's much more power including rich debugging, inline help, and the full power of Visual Studio that these tests do not even begin to demonstrate.  

For more information, I encourage you to follow my blog and Gadgeteerin' YouTube channel for more information.  For up to the minute news about Gadgeteer, follow me on Twitter as @Gadgeteerin.

You can find all source code used in the video here.

http://hackaday.com/2015/01/12/arduino-vs-phidgets-vs-gadgeteer/
This post made Hackaday!

7 comments:

Unknown said...

Great post! Thank you.

ianlee74 said...

I'd never head of Gadgeteer before. Looks like a good solution for people working in the .NET framework. Thanks for sharing. Have you played with Phidgets before? It sounds like you've just read about them, but I'd love to hear your thoughts if you get around to using them for anything.

ianlee74 said...

No, unfortunately, I've never used Phidgets and my comparisons comes solely from the data in Ken's article which this post was based upon. If you would like to send me some hardware to test, I'd love to learn more about it and do a review. I have heard good things about Phidgets from others.

ianlee74 said...

Great blog-post :) How could I miss this one on the GHI-Forums?

ianlee74 said...

I have worked with Phidgets and like them because they are very easy to use, especially for somebody like me that was not trained in electronics and was hindered by having to use a breadboard or risking to blow stuff up by not using proper resistors and other safeguards. I also love that they give you the choice to program in any language you like, even in obscure rare ones. For me choice is a huge plus, I like the idea of Gadgeteer, but when reading that it only supports .net, the thing is off the table again. And for the same reason, the Arduino is not a choice for me, because I won't use C for it. I do my projects in Python and have initially used Phidgets, and now use a Raspberry Pi, as I have become a little more knowledgable about electronics.
Phidgets is relatively expensive compared to the other two, but offers a lot of choice and ease of use for it, they also have ready made plug and play components for pretty much any use case. I just wanted to chip in here as nobody seems to know about Phidgets really and the comparison seems unfair just considering the price and not knowing what Phidgets really can offer (it is a small company from Canada, and we want to support these, don't we?). I think the comparison is also biased as if you already know how to use an Arduino, program it, have all the electronics know how, you don't count the time that it took you to learn that, while Phidgets does not require it, so it is probably best geared towards beginners and will likely not offer much to a electronics and Arduino pro.

ianlee74 said...

Nigra, this comparison was never meant to be an exhaustive comparison of any of the platforms. It was meant to be from the perspective of someone that already knows the platforms well and how quickly they are able to develop a solution. I'm learning more about Phidgets and agree with all of your points. I've been in discussions with them and its very likely that you will see an exhaustive review of Phidgets on this forum in the future. So, stay tuned!

However, I do have a problem with part of your argument. You say you pick a platform because you want choice but then you discard the two platforms that use two of the most widely used languages of today (http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html). So, it doesn't seem that you want choice you simply want Python. That's OK but I would encourage you to not discard others because of this one factor. Also, you might want to check out the microPython (http://micropython.org/).

ianlee74 said...

My intention was not to criticize you, we all have our opinions and our biases, just from the point of not knowing all platforms or preferring some features over others. I'm surely very biased towards Python, as it is the only language for me that I can create things easily and efficiently. C is just too hard for me, so you could say that programming is not my best skill, I think I'm actually pretty weak in it. I will check out micropython, thanks for that tip!

Post a Comment