Thursday, November 11, 2010

Arduino vs. Netduino, or How Netduino totally misses the point

I am a developer both professionally and as a hobbyist; I can't get enough of the stuff. One of the things I really like to do after a hard day of slinging code that, if I'm honest, is just slightly less than sexy, is cobble together some real-life hardware components, and then write the code to make them do cool things like read light values, power motors, and make noise with synthesizers. It's a nice change to do hands-on work and I find it enjoyable and relaxing. In other words, I write business apps by day, so I like to play hardware at night.

The hardware I am speaking of is Arduino, an open source hardware and software platform that has tons of libraries, users, and documentation. The development environment is intentionally limiting, and when compared to something like Visual Studio .NET where I do my day-to-day work, it is refreshing in its simplicity. It is actually not very good at all when compared with VS.NET, but it's not meant to be anywhere near the same thing. In its favor is the fact that I am able to use it from any computer in the house, even though that means multiple versions of Windows, a couple of Linux machines, and even a Mac mini.

But, many times over the past couple of years that I have been tinkering with Arduino I found myself wishing that I could write code in the language that dominates most of the work I do: C#. Arduino uses C++, which is at least a familiar syntax, but when you've been used to working with C# and the .NET framework, it's a bit of a pain to go back to the bad old days of C/C++.

So, a little while back I started hearing about Netduino, which is like Arduino in terms of being an open source hardware/software platform, but which uses C# and .NET as its development environment and framework instead of C/C++. Very recently I decided to check it out, thinking that this must be a marriage made in heaven: my favorite development environment combined with really cool hardware hacking; what could be better?

Well, here's the rub: Netduino totally misses the point of Arduino. The hardware is open source, sure, but who in their right mind is going to brave soldering surface-mount 100 pin chips (the Netduino processors)? Who really wants an ARM chip for a microcontroller, even if it would be cool to have built-in USB, LAN, and all the other stuff that the Netduino chips have? The whole point, to me, is simplicity, and the fact that even with my earthquake-shaky hands I still can manage to solder a simple 28-pin chip to a prototype board. Sure, the thing has hardly any memory at all, and no built in USB or LAN, but that's what gives it its charm: I can make really fun little learning projects with blinky LEDs and inputs that read analog potentiometers, and I don't expect it to have more technology in it than a damn cell phone.

I downloaded, but have not yet installed, the Netduino development kit, so I still have hope that I can ditch the fancy ARM chip and use the trusty old Atmega168, but I am expecting to be disappointed.

Here's hoping that I am wrong.

4 comments:

Anonymous said...

Hi, just found your blog, enjoyed your article but wondered if your opinion on the Netdurino has changed at all since you first posted.

Thanks
Stew

Leo said...

Thanks -- no, my opinion hasn't really changed about the Netduino. I did have an opportunity about a year ago to borrow a Netduino and while I think there are reasons why it might be right for some folks, it's not my idea of what *duino is all about.

What do you think of it?

Jason said...

Biggest problem i see with Netduino is:

+ Incompatibility with Arduino libraries (you'll have to find your own .NET equivalents)

+ Incompatibility with some Arduino shields out of the box (you'll need your own drivers)

+ Despite the beefier hardware, it's actually slower for most real-time apps because of the .NET abstraction layer


so....

I'd have to agree with the author that Netduino totally misses the point. Is the ease of programming in C# worth all the other drama?

Back to C++ on Arduino I go!

Unknown said...

Hello,
I asked in the Netduino forum (but I think that the admins has to approve my comments and in a week no signs of life...) if it is possible to program the Netduino 3 Ethernet using C instead of .NET.
I used PIC when I was young, and then I've buid some Arduino Uno, starting with Arduino IDE and then switching to GCC compiler and then Atmel Studio IDE.
I want to do something similar with Netduino 3 Ethernet. Main features of this board for me are powerful hardware (32-bit and high speed clock), integrated ethernet and on-board micro-SD card slot.
Do you know if it is possible to program such a board using C (Visual Studio would be better I think)?

Best regards

Davide