Various scenarios were presented for Windows 10 IoT at Build 2015. In all cases, the object is to have a Windows 10 device, whether desktop, mobile or embedded/IoT, talking to custom hardware and to the cloud. The “reference” design for hardware from a Makers’ perspective is Arduino. Let’s examine the scenarios.


Previous on this topic:


Links

There is detailed instructions on how to get started with the different scenarios

Description

Link

Comment

Microsoft IoT start page

https://dev.windows.com/en-US/iot

Getting Started:

http://ms-iot.github.io/content/GetStarted.htm

Start here.
Select device or go directly to one of the following.

Raspberry PI 2

http://ms-iot.github.io/content/win10/SetupRPI.htm

Minnow Board Max

http://ms-iot.github.io/content/win10/SetupMBM.htm

Galileo

http://ms-iot.github.io/content/win8/SetupGalileo.htm

Windows Remote Arduino

http://ms-iot.github.io/content/win10/SetupWRA.htm

Windows Virtual Shields for Arduino

http://ms-iot.github.io/content/win10/SetupWVSA.htm

For each target there is then:

  • Setting up the device
  • Setting up your PC and/or Phone
  • Application Development

Raspberry PI 2

Raspberry PI 2 is an ARM maker board supporting lower level IO such as GPIO, RS232, Bluetooth. I2C and SPI. The device is configured by loading a binary file onto an SD Card and booting during the first boot, a binary image of Windows 10 IoT is customized for the device. At this point it runs like a desktop PC in that it has an HDMI display, USB keyboard and mouse. Alternatively it can be configured to run headless, as you might for a controller device. Coding for sensors connected to the device over SPI or I2C is comparable in complexity to coding such for an Arduino device. Various plugin “shields” are available for the Raspberry PI 2 as with Arduino devices, eg:

http://www.bing.com/images/search?q=raspberry+pi+shields&id=0FA2488B40E8B9036F35A6E46792AF1EC5E2F251&FORM=IQFRBA

There is a shield that contains an Arduino device. The Raspberry PI 2 can program Arduino shield, or it can be separately programmed. The RPi2 can then communicate and control Arduino device and exploit its IO capabilities.

Connection is via Powershell. This provides security for access but can be difficult to get going.

Once started, a web server runs on the device which can be accessed to check the system setup. Just use http://<device IP Address>.

Minnow Board Max

The Minnow Board Max is an x86 system that you set up and use in a manner similar to the RPi2.

Galileo

This was the first version of Windows IoT with a headless version of x86 Windows 8.1. It has the Arduino footprint for connection of shields. In Linux mode, Arduino shields are hardware and code compatible (.. just need recompilation in the Galileo Arduino IDE). Some shields have been ported to Windows 8.1.

Connection is via telnet.

Windows Remote Arduino

An Arduino device can be programmed to run the Firmata API. This library is one of the standard libraries you get with the Arduino IDE installation. This enables an external system such as a desktop of phone to communicate with it serially to control its hardware. USB serial or Bluetooth is used. Once this works, it is simple to create applications that run under Windows Forms .NET that controls a Firmata enabled Arduino device with a suitable API. The Universal app example provided in the links above, is a work in progress for me. This will be discussed in detail in alter blog.

The point is though, that you only program the Arduino device once with Firmata. Subsequent application development is only done for the controlling device (desktop or phone).


Windows Virtual Shields for Arduino

“Windows Virtual Shields for Arduino is an open-source library primarily for the Arduino UNO which communicates with an open-source Universal Windows application running on all Windows 10 devices, including Windows Lumia phones. The library exposes Lumia phones' sensors and capabilities to an Arduino device.”


This requires some extra libraries to be added to the Arduino libraries as used by its IDE for Arduino application development. You need a Windows 10 Phone and some development PC resources. A Bluetooth shield is required for connectivity with the Arduino (Uno) device.

So once setup, application development is done on the Arduino side.