Two new Netduinos were announced today: the Netduino 3 Wi-Fi and the Netduino 3 Ethernet! The Wi-Fi version ships today, and the Ethernet version is
scheduled to ship in late June now shipping! You can view Chris Walker’s announcement post on the Netduino forums here.
I’ve been testing the Netduino 3 Wi-Fi for the past few weeks and I can easily say it’s the best Netduino hardware ever released. This board is awesome.
There are two huge differences with this model compared to the previous Netduino Plus 2: the Ethernet port has been replaced with Wi-Fi (2.4GHz 802.11b/g/n via TI’s CC3100) and three GoBus ports have been added along the right edge of the board. Even with these additions the board is still very small — only about half an inch wider than the NP2.
With the Netduino 3 Wi-Fi you get everything you’ve come to expect from a Netduino: most notably, beautifully crafted hardware with features to match.
Where are we coming from?
When the Netduino Go was released in 2012 I (and many others) immediately started to dig into the GoBus protocol to see how everything worked. It turned out, for the most part, that the protocol was actually pretty simple. I wrote about it on the Komodex Blog: A Developer’s Introduction to GoBus.
Netduino Go laid the groundwork for an easy-to use, extensible platform for beginners and experts alike. Some of us released our own third-party modules (such as my Seven Segment Display) and many others explored and wrote about the possibilities this platform could bring.
But that was three years ago and there hasn’t been a lot of activity since. Many of the first- and third-party modules announced on the forums were never actually released. Needless to say, not having key modules (Ethernet in particular) had an effect on platform adoption. Additionally, while the Shield Base module — designed to add Arduino shield-like pins to the Netduino Go — should have helped bridge the gap, it never left its initial beta stage, severely limiting its utility.
Adoption of the Netduino Go also suffered because of cost. By the time you purchased a Go mainboard, a Shield Base module, and an Ethernet module (if it had been available), you’d be spending at least $100 just to get to a similar set of features as you could get with the $60 Netduino Plus 2.
By comparison, the Netduino 3 Wi-Fi is a bargain. Not only does it solve a lot of the problems people encountered using the Netduino Go, it’s the first Netduino with Wi-Fi connectivity, making it more versatile than ever before. Even if you don’t end up using any GoBus modules, it’s still a very solid board on its own.
Not only is this the first Netduino with Wi-Fi, it’s also the first board to bring network connectivity to GoBus. This opens up a huge number of new possibilities. Nearly all of the GoBus projects I thought of back when the Go was first released needed Ethernet, so I’m very excited to finally be able to try them out.
I must admit, at first I was a bit skeptical about the choice of Wi-Fi on this board. I almost always prefer using wired Ethernet, so I was definitely a bit worried when I first heard about this change.
So far I haven’t encountered any major issues from the use of Wi-Fi. I did have trouble with some of the very early versions of the CC3100 networking stack used on this board, but after working at length with Chris I was eventually able to find the source of my problems and I haven’t noticed any issues since.
I’ve tested the board’s networking capabilities under a variety of conditions: as a client, as a server, even long-running, multi-hour socket connections have been rock solid. There are some limitations (~8 concurrently open sockets, some buffer limitations, etc.) but for most real-world uses these won’t present a problem.
The only issue I would note is with speed. There is a bit of slowness when performing network operations, but I’m told this is due to the current use of UART for communications with the CC3100 instead of SPI. There is currently experimental support for SPI in the network stack but it hasn’t been completely implemented yet — I was able to get it partially working in my tests, but for now, UART is more reliable.
The CC3100 also contains built-in support for SSL connections. This makes the Netduino 3 Wi-Fi the first Netduino to support SSL out of the box. This has become increasingly important as more and more services (such as Twitter’s API) require HTTPS.
I had no trouble connecting to HTTPS sites from the Netduino 3 Wi-Fi — for the most part it works exactly the same as other HTTP connections (through
One thing to note is that it isn’t currently possible to validate SSL certificates from the Netduino 3 Wi-Fi, but Chris is working on getting this implemented and it should be included in a future firmware release.
Update, August 8, 2015: It’s important to note that the Netduino 3 Ethernet does not currently support SSL. The only Netduino model that supports SSL connections today is the Netduino 3 Wi-Fi.
As for GoBus itself, there aren’t many changes compared to the Netduino Go. For the most part, the drivers work in the same way and there aren’t any new user-visible features. The biggest difference you might notice in code is that GoSockets are now called GoPorts.
There are some minor implementation differences. On the Netduino Go, there were two buses with four GoPorts each. Each bus had its own SPI and UART channels. On the Netduino 3, all three ports share the same SPI channel, but each port has its own dedicated UART channel. (GoModules aren’t supposed to use UART, but there are some cases — such as the Shield Base — where it may be necessary.)
While waiting for the official GoBus library to be developed, I created a new, alternate implementation of the GoBus library. You can read more about that in a separate post here.
One of the first things I wanted to try was retrieving the current weather from a web service and displaying the temperature on a seven segment display module. This turned out to be remarkably easy to do with the Netduino 3 Wi-Fi.
At first I tried using OpenWeatherMap’s API, but I found the service to be fairly unreliable. In my testing Weather Underground’s API has been much more consistently reliable. You can get a free API key that safely lets you send a request once every 5 minutes or so.
This Gist contains the code I wrote for this sample. You’ll also need the Seven Segment Display drivers and the SevenSegmentDisplayUtilities class for its
SetTemperatureDisplay extension method. (Alternately, you could just use the included
SetValue(double) method but
SetTemperatureDisplay adds the ability to display a unit at the end of the display, i.e., °F or °C.)
The Netduino 3 Wi-Fi really is an awesome board, and it represents the best implementation of GoBus so far. Of course, GoBus will need more than just a new mainboard to become popular, but Chris has committed to ship a ton of new GoBus modules this year, and in talking with him he is very committed to making that happen.
We’ll have to see what happens, but even if you ignore the three GoPorts this is still an excellent piece of hardware. I’ve had a ton of fun writing code and sample programs for it in C# over the past few weeks and I look forward to seeing how things progress.
I also expect we’ll hear more about Microsoft’s renewed commitment to the .NET Micro Framework at this year’s //build/ conference (starting today!), especially with Microsoft’s recent push for their IoT platforms. NETMF has been a bit neglected over the past few years (see a helpful chart of supported features here — incredibly, it still doesn’t even support generics), but it’s still significantly easier and more enjoyable than, say, writing code in C for the STM8 microcontroller. (Incidentally, if you’re interested in the STM8, Mark Stevens has a ton of instructional posts about this microcontroller on his blog here.)
Will NETMF ever receive language support for generics? Will we ever get
await? It’s impossible to say at this point, but even without these more recent C# features it’s still a powerful and capable platform. Coupled with a Netduino 3, it’s a great place for any C# developer interested in the world of electronics to start.
Follow me on Twitter: @mattisenhower
- MicroTweet, my Twitter API library for the .NET Micro Framework
- Initial Thoughts: Raspberry Pi 2 and Windows IoT Core