13 Oct 2015

Bringing Windows 10 IoT Core to life

Simon Duggleby, Semiconductor Marketing Manager, RS Components looks at how Windows 10 can be used for Internet of Things, IoT applications.

The world of developing IoT connected sensors and controls has been dominated by traditional embedded design techniques but Microsoft’s recent Windows 10 IoT Core announcement looks set to offer a viable alternative.

The desktop and server markets have long been the domains of Microsoft’s Windows operating system so it is with much interest that the company has started to provide a degree of support for the small computing boards such as Raspberry Pi, Arduino and the MinnowBoard MAX.

Windows 10 IoT core

Essentially, the Windows 10 IoT core is a smaller, more compact, version of the Windows 10 operating system that is designed especially for these, comparatively speaking, compact resource-constrained single-board computers. Designed to target 400 MHz devices or greater x86 and ARM-based platforms without a screen with a minimum of 256 MB RAM, or a Windows screen capability with at least 512 MB of RAM, there is a minimum storage requirement of 2 GB.

Coupled with full tool chain support in the form of Visual Studio and various board support packages, the Windows 10 IoT Core provides a viable environment on which to base your IoT design. Since the supported boards have been extremely popular with the maker community you will find lots of hints, tips and practical design examples available online. So whether you are a professional embedded developer or a maker you are assured that there are others like you using Windows IoT Core.

At the board level, Microsoft provides the ability to build a custom image that supports as many of the platform’s capabilities as required. For example, for many IoT sensor applications provision of an audio or video resources might not be required. However, to speed deployment on to the popular platforms, Microsoft provides board-specific images ready to be installed. That includes boards without composite video or HDMI output for which no Windows Shell would then be required either.

Developers contemplating using the Windows 10 IoT core should first visit the IoT page of the Microsoft Windows Developer Centre. This useful resource documents and links to the relevant supported targets in addition to providing information on provisioning IoT connectivity and showcasing a number of projects hosted on the popular Hackster.io developer community site.

Development boards

Currently there are three development boards that are fully supported by Microsoft Windows 10 IoT core, these being the Raspberry Pi 2, MinnowBoard MAX, and the Intel Galileo. In addition, while not able to run the IoT Core operating system, support for interacting with Arduino-based applications is provided through two library components. More about the library functions later.

Whichever board you choose for your development, the first step towards installing Windows 10 IoT Core is to prepare a PC ready for the transfer and subsequent developments. The latest version of Microsoft Windows 10 needs to be running on the PC together with the free Visual Studio Community edition or either the Professional or Enterprise versions of Visual Studio 2015. The Visual Studio version installed also needs to be validated, the details of which can be found on the above-mentioned Development Centre site. Once complete the Windows IoT Core Project templates need to be added through the Visual Studio Gallery. The open hardware MinnowBoard Max board (see Figure 1), for example, offers a 64-bit Intel Atom E38xx SoC, 2 GB of DDR3 RAM and is equipped with comprehensive peripheral support including HDMI, SATA2, USB3 and USB2 hosts, 10/100/1000 Ethernet and 8 GPIO pins. Requiring a single 5 VDC supply and measuring 99 x 74 mm, this compact board is ideal for a host of IoT applications.

Windows 10 for IoT using MinnowBoard MAX

Figure 1 – MinnowBoard MAX

With your PC set up the target board can then be prepared for running the IoT Core. The process is similar for each of the three supported boards and involves installing the latest board firmware, downloading the prepared target board ISO image from the Microsoft Download Centre, transferring the image to an SD card and then flashing the target. The target board can then be booted. See Figure 2.

Successful boot of Windows 10 IoT Core on MinnowBoard MAX

Figure 2 – Successful boot of Windows 10 IoT Core on MinnowBoard MAX

Design steps

Having booted your board with Windows 10 IoT Core you are ready to get going with your first design, but before we explore some examples let’s briefly take a look at the Arduino libraries mentioned earlier. As it stands today the Arduino series of boards are not supported as a bootable target but you can still access the power and simplicity these targets offer. The Windows Remote Arduino library is an open source Windows Runtime Component that allows developers control an Arduino through a USB or Bluetooth connection. Windows Runtime languages such as C++, C# and JavaScript can access the library when undertaking a development within Visual Studio.

An example application might be using an Arduino to collect environmental data from a number of sensors with the desktop-based application collecting this data for analysis or control purposes on a regular basis. The other library is the Windows Virtual Shields for Arduino. Primarily designed for use with the Arduino UNO this is aimed at open source Universal Windows applications that can run on any Windows 10 devices, such as a Windows Lumia phone, to provision communication to and from the Arduino. In this way the sensors of the phone can be read and interpreted from within an Arduino sketch.

Windows Remote Arduino project using Bluetooth connectivity to Windows 10 host. Image copyright Microsoft

Figure 3 – Windows Remote Arduino project using Bluetooth connectivity to Windows 10 host. Image copyright Microsoft

Checks and tests

Back to your target board booted with the IoT Core. A good first step to check that the target board is operating correctly is to use the Blinking LED example application documented on the Microsoft Developer Centre site. Using the code provided within Visual Studio tests the complete configuration prior to embarking on a more involved project. Visual Studio also provides a choice of language for such applications, so developers can choose between C++, C#, Python or node.js for their design. Visual Basic, F# and HTML/JavaScript are also supported. This of course can vary depending on what is most suitable for the application or simply down to developer preference.

Complementing Windows 10 IoT Core is Microsoft’s Azure cloud platform. Designed for a host of cloud-based compute, storage and analytics applications, it is also idea for being the storage and analysis repository for your IoT sensor data. Able to receive data from any number of registered sensors and devices, the platform can also be configured to analyse the data, respond to changes in data and trigger messages and control instructions to other devices and connected actuators. Microsoft’s ConnectTheDots.io open source project, see Figure 4, provides a number of libraries, code samples and configuration scripts to get your Windows 10 IoT Core application talking to the Microsoft Azure service.

Microsoft Azure – The storage, analysis and control platform for your IoT data

Figure 4 – Microsoft Azure – The storage, analysis and control platform for your IoT data

As with selecting any embedded single-board computer there is an almost endless list of possible IoT applications you can make it perform. For the developer, access to industry tried and tested development tools is as essential as finding a broad range of forums and community sites for those times when your target platform or software isn’t responding in the way you expect. Community sites such as Hackster.io provide a wealth of Windows IoT Core examples using Raspberry Pi 2, MinnowBoard MAX and Arduino.

More information: http://uk.rs-online.com/web/generalDisplay.html?id=i/iot-internet-of-things

Page 1 of 1

About the author

Simon Duggleby is Semiconductor Marketing Manager, RS Components. He has a Master's Degree in Electronics and Computer Systems Engineering from Loughborough University. Since graduating, he has worked in the field of electronics distribution, first as an Applications Engineer with Abacus ECD (now part of the Avnet Group), then joining RS Components in 2009 as a Technical Marketing Engineer. For the past two and a half years, Simon has been responsible for steering the marketing strategy of the Semiconductor product category at RS.

RS Components and Allied Electronics are the trading brands of Electrocomponents plc, the global distributor for engineers. With operations in 32 countries, we offer more than 500,000 products through the internet, catalogues and at trade counters to over one million customers, shipping around 44,000 parcels a day. Our products, sourced from 2,500 leading suppliers, include electronic components, electrical, automation and control, and test and measurement equipment, and engineering tools and consumables.

Most popular articles in Processing & embedded

  • Deep Learning Challenges in Embedded Platforms
  • Key considerations for Windows Embedded End of Life
  • Choice: Microcontroller, MCU or Microprocessor, MPU
  • Embedded World 2017
  • Capacitive Proximity Sensing Technology Update
  • Share this page

    Want more like this? Register for our newsletter

    Stray field immunity is essential to magnetic sensing in modern automotive applications Nick Czarnecki | Melexis B. V.
    Stray field immunity is essential to magnetic sensing in modern automotive applications
    A combination of environmental awareness and consumer demand is driving the automotive industry to produce ever-more efficient vehicles. Whether this is the highly-publicized Electric Vehicles (EV) / Hybrid Electric Vehicles (HEV) or simply updates to the existing internal combustion engine (ICE) based vehicles, modern vehicles are bristling with technology – and this is only set to grow in the future.

    Radio-Electronics.com is operated and owned by Adrio Communications Ltd and edited by Ian Poole. All information is © Adrio Communications Ltd and may not be copied except for individual personal use. This includes copying material in whatever form into website pages. While every effort is made to ensure the accuracy of the information on Radio-Electronics.com, no liability is accepted for any consequences of using it. This site uses cookies. By using this site, these terms including the use of cookies are accepted. More explanation can be found in our Privacy Policy