Skip to main content
August 10, 2015
IoT

Hello, Windows 10 IoT Core

Greetings, Makers!

We are excited to announce the public release of Windows 10 IoT Core for the Raspberry Pi 2 and the MinnowBoard Max. Visit the Windows IoT Dev Center to choose your target board, then walk through the steps to provision your board, acquire the tools, and get started Making. This release of Windows 10 IoT Core requires a development machine running the 7/29/2015 release of Windows 10 (Build 10240) and Visual Studio 2015.

Introduction to Windows 10 IoT Core

Windows 10 IoT Core is a new edition for Windows targeted towards small, embedded devices that may or may not have screens. For devices with screens, Windows 10 IoT Core does not have a Windows shell experience; instead you can write a Universal Windows app that is the interface and “personality” for your device. IoT core designed to have a low barrier to entry and make it easy to build professional grade devices. It’s designed to work with a variety of open source languages and works well with Visual Studio.

Oh, and you can also use it to build robotic air-hockey tables.

New in this release

The first public preview of Windows 10 IoT Core was released at the //build/ conference, and we’ve made great progress since then. Perhaps most importantly, long-awaited support for Wi-Fi and Bluetooth connectivity has arrived. The full list of new features and improvements is too long to list here but here’s a nice sampling:

  • Improved support for Python and Node.js, including a new Express Node.js project template
  • GPIO performance on the Raspberry Pi 2 has improved by 8X to 10X
  • Analog-to-digital converter (ADC) and pulse-width modulation (PWM) are now supported via breakout boards and ICs
  • New Universal Windows Platform (UWP) APIs give apps easy control over system management features like time zone and network connections

Developers, Developers, Developers

The developer experience has been a high priority for our team as we’ve built Windows 10 IoT Core, and we hope this shows when constructing apps for this platform. Our philosophy is that we want to make it easy for developers to use the languages and frameworks they prefer to build IoT device apps. This means full support for the standard UWP languages like C++, C#, JS and VB, but it also means bringing support – including full tools, debugging, and project systems – for Node.js and Python. The project templates for the standard UWP languages create projects that look like standard UWP projects, but for Node.js and Python we’ve worked hard to make these apps look and feel just like they do on other platforms. The code below shows a complete Node.js UWP app that reads from an I2C sensor and serves up a web page with the data (and you can get the sample here).

[code lang=”javascript”]
// Copyright (c) Microsoft. All rights reserved.
// This is under the MIT license, please go to the GitHub sample link for full license.
// https://github.com/ms-iot/samples/tree/develop/WeatherStation/Node.js/NodeWeatherStation

var http = require(‘http’);

//Import WinRT into Node.JS
var uwp = require("uwp");
uwp.projectNamespace("Windows");

var i2cDevice;

//Find the device: same code in other project, except in JS instead of C#
var aqs = Windows.Devices.I2c.I2cDevice.getDeviceSelector("I2C1");

Windows.Devices.Enumeration.DeviceInformation.findAllAsync(aqs, null).done(function (dis) {
Windows.Devices.I2c.I2cDevice.fromIdAsync(dis[0].id, new Windows.Devices.I2c.I2cConnectionSettings(0x40)).done(function (device) {
i2cDevice = device;
});
});

http.createServer(function (req, res) {
res.writeHead(200, { ‘Content-Type’: ‘text/plain’ });
var output = "";
var humidity = 0;

//Read the humidity from the sensor
var command = new Array(1);
command[0] = 0xE5;
var data = new Array(2);
i2cDevice.writeRead(command, data);
var rawhumidityReading = data[0] << 8 | data[1];
var ratio = rawhumidityReading / 65536.0;
humidity = -6 + (125 * ratio);

//Read the temperature from the sensor
var tempCommand = new Array(1);
command[0] = 0xE3;
var tempData = new Array(2);
i2cDevice.writeRead(command, data);
var rawTempReading = data[0] << 8 | data[1];
var tempRatio = rawTempReading / 65536.0;
var temperature = (-46.85 + (175.72 * tempRatio)) * 9 / 5 + 32;

output = "Humidity: " + humidity + ", Temperature: " + temperature;
res.end(output);
}).listen(1337);
[/code]

A small note about VS RC->RTM project system compatibility:

There were a variety of breaking changes in the VS project system between the //build/ and RC and RTM. For the most part, application code will remain functional, but the project itself will need to be rebuilt. The recommendation from the Visual Studio team is to build a new project and move the code over into the new project shell.

Built to work with the tools & languages you want to use – whatever they are

As part of our engagement with the broader community, we’ve worked with the community to support as many open source options as we can. You can find all of our IoT samples on Github, as well as documentation and a growing set of libraries and helper tools. Even our project system and runtime support for Python and Node.js is available open source on Github.

When our samples start turning into full projects, you can find them on Hackster.io.

We’ve also worked with our friends at Arduino to make it very easy to talk to Arduino boards from Windows and even for Arduinos to talk to Windows devices as if they were virtual shields. See this project for more information.

IoT Projects for fun and profit

We built IoT Core and the corresponding developer tools to make it easy to build projects that are fun and cool, as well as those that have very practical uses in the real world. Find evidence of this in the range of projects, from members of our team, as well as the community, that have been created in the months since our first public builds.

Sampling of Hackster.IO projects:

We have more projects in the pipeline, so keep your eyes on our hackster.io hub for more information about our Air Hockey Table, Face Recognition Unlocked Door, and more.

We are listening

While you’re playing around, if you notice some rough edges, please let us know. As always, we appreciate your feedback, so keep it coming and we’ll do our best to address issues.

Quick links

  • Release Notes : Details about what is covered in this release of Windows 10 IoT Core.
  • Download Now : Click here to start downloading for FREE now. You will need the latest version of Windows 10, Visual Studio 2015 and tools.
  • Community : Share your feedback here and engage with other Makers using our forums.

Show Us What You’ve Got

We do what we do so we can see all the cool things people build on top of our platforms. Most of our projects start with the unofficial Maker credo of “Wouldn’t it be cool if…” and we can’t wait to see how you answer that question. Have fun building amazing things and, when you do, tweet @WindowsDev with the hashtag #makeInventDo with pictures so we can have as much fun as you do.