.NET Core and .NET Standard for IoT - The potential of the Meadow Kickstarter
I saw this Kickstarter today - Meadow: Full-stack .NET Standard IoT platform. It says that "It combines the best of all worlds; it has the power of RaspberryPi, the computing factor of an Arduino, and the manageability of a mobile app. And best part? It runs full .NET Standard on real IoT hardware."
NOTE: I don't have any relationship with the company/people behind this Kickstarter, but it seems interesting so I'm sharing it with you. As with all Kickstarters, it's not a pre-order, it's an investment that may not pan out, so always be prepared to lose your investment. I lost mine with the .NET "Agent" SmartWatch even though all signs pointed to success.
I've done IoT work on Raspberry Pis which is much easier lately with the emerging community support for ARM32, Raspberry Pis, and cool stuff happening on Windows 10 IoT. I've written on how easy it is to get running on Raspberry Pi. I was even able to get my own podcast website running on Raspberry Pi and in Docker.
This Meadow Kickstarter says it's running on the Mono Runtime and will support the .NET Standard 2.0 API. That means that you likely already know how to program to it. Most libraries on NuGet are .NET Standard compliant so a ton of open source software should "Just Work" on any solution that supports .NET Standard.
One thing that seems interesting about Meadow is this sentence: "The power of Raspberry Pi in the computing factor of an Arduino, and the manageability of a mobile app."
Raspberry Pis are full-on computers. Ardunios are small little (mostly) single-tasked devices. Microcomputer vs Microcontroller. It's overkill to have Ubuntu on a computer just to turn on a device. You usually want IoT devices to have as small a surface area as possible.
Meadow says "Meadow has been designed to run on a variety of microcontrollers, and our first board is based on STMicroelectronics' flagship STM32F7 MCU. The Meadow F7 Micro board is an embeddable module that's based on Adafruit Feather form factor." Remember, we are talking megs not gigs here. "We've paired the STM32F7 with 32MB of flash storage and 16MB of RAM, so you can run pretty much anything you can think of building." This is just a 216MHz ARM board.
Be sure to scroll all the way down to the bottom of the page as they outline risks as well as what's left to be done.
What do you think? While you are at it, check out (total coincidence) our sponsor this week is Intel IoT! They have some great developer kits.
Sponsor: Reduce time to market and simplify IOT development using developer kits built on Intel Atom®, Intel® Core™ and Intel® Xeon® processors and tools such as Intel® System Studio and Arduino Create*
Scott Hanselman is a former professor, former Chief Architect in finance, now speaker, consultant, father, diabetic, and Microsoft employee. He is a failed stand-up comic, a cornrower, and a book author.
It's good to warn that Kickstarter isn't a pre-order but calling it an investment is even more misleading.
With an investment you put in money. If it goes well you get more in return.
With Kickstarter you don't get a share of the business, at most you get the product.
I was about to say that Kickstarter is more like gambling, but if you win in gambling you get more than you invested.
Best description I can think of is a donation, where if successful you get something in return, up to the value you donated but not more.
What you get is to be among the first to receive the product. Dispite what the early bird price says I doubt the price of the first batch of a product would be lower than the following batches.
I wonder if someone someday will bridge the gap between IoT devices and PLCs. Currently I think you need to be pretty good at both ladder logic and electrics to pull this stuff off, which is super frustrating..!
Is Meadow in any way related to TinyCLR (the successor to .NET Micro Framework)? If it isn't, it would be a shame to have duplication of effort.
Looks like they are based on Netduino project - bought them and opened source
- With 75$ for a German customer it's extremly expensive compared with Arduino, Raspberry Pi and other, similar offerings
- There is an effort to port .NET to several SDT chips and ESP32: https://nanoframework.net/. And you can get an ESP32 development board for less than 10$ (IIRC i paid under 6$ the last time, I purchased some).
- I was badly burned with the Agent smart watch and while this project is from different people and a different company, it is based on the same underlying technology of Netduino. I know that this is not really fair to the new owner of the brand, but it still has a bad aftertaste for me, so - combined with the high price - I will not pre-order the board...
In my opinion, there is now also some fragmentation in the .NET IoT space, which means that we have several small solutions but none that is used by many developers. A common effort, led by the .NET Foundation, would have been a better approach. I think, the Nano Framework is on the right track, but as far as I can tell, it's still in its infancy.
In the end, Microsoft's non-commitment to IoT/.NET Micro Framework is now a big issue, as that would have been the perfect and natural plattform for Azure based IoT development.
Some clarification for the comments and questions above.
First Meadow runs a custom port of Mono on top of a heavily modified NuttX (a µRTOS). That's where our .NET standard support comes from. It's not based on Netduino in really any way. It's a completely new piece of technology that we've been building from the ground up for the last two years.
There is some relation to our Netduino.Foundation project; in that we've been porting Netduino.Foundation to Meadow, and getting all the hotness of latest C# and full .NET to make an even better API for all those drivers.
In terms of NanoFramework and TinyCLR; while those are great efforts, they're significantly different than Meadow. Both of those efforts are based on the .NET MicroFramework. As such, they don't support full .NET. There are no Generics in either one of them for instance, nor is there support for .NET Standard libraries.
RE: the ESP32; we love that chip. It's amazing. And support for it is definitely on the roadmap. I look forward to the day that you can embed Meadow for <$10.
I don't know if I can create a proper analog or metaphor for Kickstarter projects. But I can tell you this; for us, Kickstarter is an opportunity 1) for us to pre-sale enough boards to do a production run (and therefore control costs), and 2) to help raise awareness of what we're up to. There are always risks in kickstarters (I was also disappointed in the Agent Watch), but without this Kickstarter, it would be very difficult for us to launch. So for me as a backer, it's a platform where I can help people with great ideas get off the ground, and in return, be among the first to be a part of a community. As a Kickstarter creator, I also recognize the trust and faith that folks have placed in us; and we're busting our asses to deliver. :) As Scott says above; check out the section on challenges and risks. We strive to be as transparent as possible.
In the end, we're building something completely new that aims to solve a lot of the problems of IoT today, and I hope you'll consider supporting us!
Case in point, even MicroPython and friends, the darlings of the IoT community, only have a small (albeit satisfyingly firm) foothold in this space.
Good luck, folks at Wilderness Labs, I count on you! :-)
The project was started because .NETMF was defunct and there was no real progress there nor the community was allowed to truly participate on it. It's true that it was started as a spin-off of .NETMF but, apart from the execution engine and a good portion of mscorlib all our code was written from the ground. We've improved a lot of stuff, brought it up to date in what concerns the build system, made it truly portable to CMSIS RTOSes, reworked the debugger engine and added various reference targets for MCUs with different feature sets.
ALL our code is completely open source. From the native code, to class libraries up to the Visual Studio extension.
Two years of work may sound that the project is still in it's infancy but we are proud to have this running on SMT32 SoCs (from L0 to H7 series) and, yes, ESP32 too. There are working and fully usable NuGets for GPIO, I2C, SPI, Serial, ADC, PWM, Wi-Fi, Networking (with SSL/TLS support) and others.
It's accurate that we do not support full .NET libraries. Instead we've followed pretty much the .NET UWP API so a lot of code can be reused without too much work.
It's also accurate that we don't have generics. Honestly I fail to understand all the fuss about generics in embedded world context. Don't get me wrong, I find generics a great feature and I used them often when coding in desktop and server context. But, coding for embedded systems is a totally different matter! Every code line matters, every CPU cycle should be considered, every mA that the system drains from the battery and so on. Everything that we can make more efficient is important. There a lot of variables in this system. If I can choose between having generics or code in C# using an awesome tool like Visual Studio, I wouldn't think twice and would go for the latter.
All in all, it's great that more options are becoming available allowing .NET developers to code for IoT and embedded systems using their favourite language!
Comments are closed.
To quote a famous meme: "Shut up and take my money!"