The Microsoft .NET Gadgeteer, originally developed as a research project, is an open-source toolkit for building lightweight electronic devices (similar to the Raspberry Pi) using hardware components and Visual Studio. I wanted to find out whether this toolkit is yet another toy for hobbyists or if it can be used for building applications with business value.
.NET Gadgeteer Core
The core of a Gadgeteer device is a Gadgeteer mainboard and a microcontroller running the .NET Micro Framework. The .NET Micro Framework is specifically designed for resource constrained devices and embedded applications, containing only a subset of the .NET libraries. Different modules can be connected to the mainboard using sockets, adding specific functionality such as Ethernet, LEDs or a camera. Setting up a Gadgeteer is quite simple and can be performed graphically using the designer surface for .NET Gadgeteer applications in Visual Studio. The modules can be connected directly to the mainboard using the designer surface and the corresponding code configuration is then handled by Visual Studio automatically.
A device for real world applications?
My programming experience is in Java and C++, and I wanted to get to know the .NET world. So I was looking for an interesting and fun project that would give me a nice introduction to the .NET technology stack. And what is more fun than taking hardware components, putting them together and programming them with C# and Visual Studio? But what project should I build? My aim was to learn as much as possible about .NET technology and to develop an application that serves a “real world” purpose. Zuhlke was lacking a solution to allow a conference room to be booked spontaneously once in the room itself. I considered equipping each conference room with touch screen devices that support this. They would then synchronize with a central server (such as a Microsoft Exchange Server). This is definitely a useful real world project, so I started a Proof of Concept (PoC).
Equipment and architecture
First I selected and ordered the appropriate hardware modules from GHI Electronics. This included:
- A FEZ Hydra Mainboard
- USB Client DP Module for power supply
- Ethernet ENC28 Module
- Display TE35 Module (touch screen display)
The display module is used by the end-user to view the availability of a conference room and to book it if available. The Ethernet module allows the device to communicate with the central server. The PoC also includes a device management application that manages the room devices and provides a bridge between the Gadgeteer devices and a central server. The devices pull and push information from this device management application which then communicates with a Microsoft Exchange Server (or any other alternative). To make it even more interesting, this application is to be hosted in the Cloud using Microsoft Azure.
This configuration is foremost fun to work with but also allows me to explore various parts of the .NET technology stack. Apart from exploring the .NET Micro Framework for programming the Gadgeteer devices, the device management application allows me to also get to know the ASP.NET MVC Framework, the Entity Framework, the ASP.NET Web API and Microsoft Azure. In the next article I am going to pick up from here and present the PoC I have built in more detail, including some images and videos of the system in action.
What are your experiences with .NET Gadgeteer? What projects did you build? Please let me know.