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.
Update, August 8, 2015: The Netduino 3 Ethernet is now shipping (forum thread here). Also available is the Netduino 3 (base model, no networking). The forum thread for the base Netduino 3 is 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.
New Possibilities
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.
Wi-Fi
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.
SSL
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 HttpWebRequest
).
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.
GoBus
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.
Weather Sample
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.)
Conclusion
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 async
/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
Related Posts
- MicroTweet, my Twitter API library for the .NET Micro Framework
- Initial Thoughts: Raspberry Pi 2 and Windows IoT Core
TI has released a CC3100/CC3200 SDK and example code using the MSP430 booster packs, however I haven’t seen many projects* that use it.. Is the logical interface (or documentation) to use the chip not very straightforward?
Or did everyone already jump to the esp8266 or similar IoT platform (EMW3162, WRTnode2R, OpenPicus, onion omega, Domino IO, digistump, asiarf, vocore, USR-WIFI232-T/ Hi Flying HF-LPT100, etc, etc)
BTW, how does the netduino’s .net micro enviorment compare to the mbed ide? I understand both can run on ST32F4/ST32F7 chips, while leveraging many ready tested building blocks.. have you experimented with each on the same hardware? which do you recommend? I’m hoping to get an STM32 discovery board but not sure it’ll work with either platform!
*Project that uses CC3100
http://www.element14.com/community/groups/internet-of-things/blog/2014/09/14/sending-atmospheric-data-from-the-msp430-and-wi-fi-cc3100-boosterpack-to-plotly