Lee Richardson @lprichar http://www.leerichardson.com Introduction to Windows IoT via Raspberry Pi 3 Microsoft Maniacs Metup – January 19, 2017
Lee Richardson @lprichar www.leerichardson.com
Microsoft .NET I
WE BUILD AWESOME SOFTWARE.
sirenofshame.com
Microsoft .NETMaker 2 IoT =+
Overview • Part 1: What, Why • Part 2: How • Part 3: Connectivity • Part 4: GPIO • Part 5: Remote Controlled Car
Cost: $$ Updates: Deferrable Cost: $ Updates Deferrable Cost: Free Updates Automatic X86 or X64 or ARM X86 or X64 or ARM X86 or ARM
Raspberry Pi 3* Raspberry Pi 2 MinnowBoard MAX DragonBoard 410c Intel Joule $35 $35 $99 $75 $315 Broadcom BCM2837 Broadcom BCM2836 Intel Atom (x86) Qualcomm Snap Dragon 410 Intel Atom (x86) 900MHz Quad-Core ARM Cortex A53 900MHz Quad-Core ARM Cortex A7 1.91GHz Atom E3845 900MHz Quad-Core ARM Cortex A7 1.7 GHz Quad-Core Atom On-board WiFi** & Bluetooth** Firmware TPM On-board WiFi* & Bluetooth & GPS WiFi IoT Core Boards
• System On Chip • Operating System (Multitasking) • USB (Mouse, Keyboard) • HDMI / GPU • Internet Connected Arduino • Microcontroller • Single Program • ~$2 Raspberry Pi
Linux vs Windows IoT • Automatic Updates • Identity Protection • Trusted Platform Module (TPM)* • Native UEFI* • BitLocker* • Enterprise Data Protection • Azure IoT Hub • Azure Iot Suite • SignalR • AllJoyn • Http • Visual Studio • UWP • Remote Desktop • Language Support • C# • Python • JavaScript • Arduino C + Arduino Libraries • Learning Curve Security Connectivity Ecosystem *Only on MinnowBoard Max and Qualcomm DragonBoard
$1.3 trillionMarket for IoT by 2020 IDC 25 billionConnected “things” by 2020 Gartner
Part 2: How • Stuff You Need • Device Setup • Dev Environment Setup • Hello World
Ensure >= 2 Amp Output
https://developer.microsoft.com/en-us/windows/iot/win10/SupportedInterfaces.htm
Part 2: How • Stuff You Need • Device Setup • Dev Environment Setup • Hello World
IoT Dashboard http://ms-iot.github.io/content/en-US/win10/GetStartedManually.htm Or Getting Started With Windows IoT And Raspberry PI 3 at http://blog.infernored.com or http://www.leerichardson.com Basically: 1. Install IoT Dashboard 2. Set up a new device 3. Burn Image to SD Card >
Plug In • Ethernet (optional) • Keyboard/Mouse • HDMI • Power Turn On
(optional) Set Up Wifi
Default Credentials Username: Administrator Password: [user provided]
Part 2: How • Stuff You Need • Device Setup • Dev Environment Setup • Hello World
Things To Install • Visual Studio (Any Edition) • Universal Windows App Development Tools • Windows IoT Core Project Templates • https://visualstudiogallery.msdn.microsoft.com/55b35 7e1-a533-43ad-82a5-a88ac4b01dec • Enable Developer Mode
Demo Time – Hello World
Part 3: Connectivity • SignalR • Azure IoT • Alljoyn • Web Server
SignalR Demo • Simple, Fast, Nuget download • But on ARM private async Task InitializeSignalR() { var cn = new HubConnection("http://mysite.com"); var proxy = cn.CreateHubProxy("MyHub"); proxy.On<string>("itHappened", OnItHappened); await cn.Start(); }
Azure IoT Hub Azure IoT Hub Device Explorer Device Azure IoT Hub Prerequisites • Visual Studio Extension https://visualstudiogallery.msdn.microsoft.com/e254a3a5-d72e-488e- 9bd3-8fee8e0cd1d6 • Hub Device Explorer https://github.com/Azure/azure-iot-sdks Benefits • Per-device authentication • Secure connection • Massively scales
AllJoyn • P2P, Discoverable • Open Source Standard • Core component in Windows 10 • https://allseenalliance.org/ AllJoyn Consumer Discoverability 2-way Communication AllJoyn Producer
Web Browser or Any App HTTP Web Server on Pi • P2P Communication • Headless • Also available via Node Background App
Part 4: GPIO
GPIODemo
Web Server Demo • Headless Background Task • Open Firewall • Log in with Powershell http://ms-iot.github.io/content/en-US/win10/samples/PowerShell.htm • netsh advfirewall firewall add rule name=[Any name to identify rule] dir=in action=allow protocol=TCP localport=[Port number]
PWM See Also: How to Fade an LED with PWM at http://blog.infernored.com or http://www.leerichardson.com
1. Lightning Driver 2. Lightning SDK 3. Permissions 4. Code <iot:Capability Name="lowLevelDevices" /> <DeviceCapability Name="109b86ad-f53d-4b76- aa5f-821e2ddf2141"/> if (LightningProvider.IsLightningEnabled) { LowLevelDevicesController.DefaultProvider = LightningProvider.GetAggregateProvider(); var pwmControllers = await PwmController.GetControllersAsync(LightningPwmProvider.GetPwmProvider()); var pwmController = pwmControllers[1]; // use the on-device controller pwmController.SetDesiredFrequency(50); // try to match 50Hz _pin = pwmController.OpenPin(22); _pin.SetActiveDutyCyclePercentage(.25); _pin.Start(); }
Part 5: RC Car • Prototyped • 3D Printed Components • Custom PCB Board • Designed with Eagle - http://www.cadsoftusa.com/ • Printed at OSH Park - https://oshpark.com/ • Plans on Github • http://www.github.com/lprichar/IotRcCar
Resources • These slides: • http://www.slideshare.net/LeeRichardson13/introduction-to-windows- iot-via-raspberry-pi-3 • IotRcCar Source Code • https://github.com/lprichar/IotRcCar
http://www.nova-labs.org/ 1916 Isaac Newton Square West Reston, VA 20190 • 3D Printers • Laser Cutter • Arduino Classes • CNC Mill
TechShop http://techshop.ws 2110 Crystal Dr # B, Arlington, VA 22202
Next Up: Build Something • Grilling - Temperature Controlled BBQ Fan • Foosball – Workplace table monitor • Safety - Smart smoke detector • Drinking - Alcohol breathalyzer • Gardening - Per-plant water monitor and drip • Homeowner - Window/door temperature tracker • Cigars - Humidity controlled humidor • https://developer.microsoft.com/en-us/windows/iot
Lee Richardson @lprichar http://www.leerichardson.com Introduction to Windows IoT via Raspberry Pi 3

Introduction to Windows IoT via Raspberry Pi 3

  • 1.
    Lee Richardson @lprichar http://www.leerichardson.com Introduction to WindowsIoT via Raspberry Pi 3 Microsoft Maniacs Metup – January 19, 2017
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
    Overview • Part 1:What, Why • Part 2: How • Part 3: Connectivity • Part 4: GPIO • Part 5: Remote Controlled Car
  • 8.
    Cost: $$ Updates: Deferrable Cost:$ Updates Deferrable Cost: Free Updates Automatic X86 or X64 or ARM X86 or X64 or ARM X86 or ARM
  • 9.
    Raspberry Pi 3*Raspberry Pi 2 MinnowBoard MAX DragonBoard 410c Intel Joule $35 $35 $99 $75 $315 Broadcom BCM2837 Broadcom BCM2836 Intel Atom (x86) Qualcomm Snap Dragon 410 Intel Atom (x86) 900MHz Quad-Core ARM Cortex A53 900MHz Quad-Core ARM Cortex A7 1.91GHz Atom E3845 900MHz Quad-Core ARM Cortex A7 1.7 GHz Quad-Core Atom On-board WiFi** & Bluetooth** Firmware TPM On-board WiFi* & Bluetooth & GPS WiFi IoT Core Boards
  • 10.
    • System OnChip • Operating System (Multitasking) • USB (Mouse, Keyboard) • HDMI / GPU • Internet Connected Arduino • Microcontroller • Single Program • ~$2 Raspberry Pi
  • 11.
    Linux vs WindowsIoT • Automatic Updates • Identity Protection • Trusted Platform Module (TPM)* • Native UEFI* • BitLocker* • Enterprise Data Protection • Azure IoT Hub • Azure Iot Suite • SignalR • AllJoyn • Http • Visual Studio • UWP • Remote Desktop • Language Support • C# • Python • JavaScript • Arduino C + Arduino Libraries • Learning Curve Security Connectivity Ecosystem *Only on MinnowBoard Max and Qualcomm DragonBoard
  • 12.
    $1.3 trillionMarket forIoT by 2020 IDC 25 billionConnected “things” by 2020 Gartner
  • 13.
    Part 2: How •Stuff You Need • Device Setup • Dev Environment Setup • Hello World
  • 14.
  • 17.
  • 19.
    Part 2: How •Stuff You Need • Device Setup • Dev Environment Setup • Hello World
  • 20.
    IoT Dashboard http://ms-iot.github.io/content/en-US/win10/GetStartedManually.htm Or GettingStarted With Windows IoT And Raspberry PI 3 at http://blog.infernored.com or http://www.leerichardson.com Basically: 1. Install IoT Dashboard 2. Set up a new device 3. Burn Image to SD Card >
  • 21.
    Plug In • Ethernet(optional) • Keyboard/Mouse • HDMI • Power Turn On
  • 22.
  • 23.
  • 25.
    Part 2: How •Stuff You Need • Device Setup • Dev Environment Setup • Hello World
  • 26.
    Things To Install •Visual Studio (Any Edition) • Universal Windows App Development Tools • Windows IoT Core Project Templates • https://visualstudiogallery.msdn.microsoft.com/55b35 7e1-a533-43ad-82a5-a88ac4b01dec • Enable Developer Mode
  • 27.
    Demo Time –Hello World
  • 28.
    Part 3: Connectivity •SignalR • Azure IoT • Alljoyn • Web Server
  • 29.
    SignalR Demo • Simple,Fast, Nuget download • But on ARM private async Task InitializeSignalR() { var cn = new HubConnection("http://mysite.com"); var proxy = cn.CreateHubProxy("MyHub"); proxy.On<string>("itHappened", OnItHappened); await cn.Start(); }
  • 30.
    Azure IoT Hub AzureIoT Hub Device Explorer Device Azure IoT Hub Prerequisites • Visual Studio Extension https://visualstudiogallery.msdn.microsoft.com/e254a3a5-d72e-488e- 9bd3-8fee8e0cd1d6 • Hub Device Explorer https://github.com/Azure/azure-iot-sdks Benefits • Per-device authentication • Secure connection • Massively scales
  • 32.
    AllJoyn • P2P, Discoverable •Open Source Standard • Core component in Windows 10 • https://allseenalliance.org/ AllJoyn Consumer Discoverability 2-way Communication AllJoyn Producer
  • 33.
    Web Browser or AnyApp HTTP Web Server on Pi • P2P Communication • Headless • Also available via Node Background App
  • 34.
  • 35.
  • 36.
    Web Server Demo •Headless Background Task • Open Firewall • Log in with Powershell http://ms-iot.github.io/content/en-US/win10/samples/PowerShell.htm • netsh advfirewall firewall add rule name=[Any name to identify rule] dir=in action=allow protocol=TCP localport=[Port number]
  • 37.
    PWM See Also: Howto Fade an LED with PWM at http://blog.infernored.com or http://www.leerichardson.com
  • 38.
    1. Lightning Driver 2.Lightning SDK 3. Permissions 4. Code <iot:Capability Name="lowLevelDevices" /> <DeviceCapability Name="109b86ad-f53d-4b76- aa5f-821e2ddf2141"/> if (LightningProvider.IsLightningEnabled) { LowLevelDevicesController.DefaultProvider = LightningProvider.GetAggregateProvider(); var pwmControllers = await PwmController.GetControllersAsync(LightningPwmProvider.GetPwmProvider()); var pwmController = pwmControllers[1]; // use the on-device controller pwmController.SetDesiredFrequency(50); // try to match 50Hz _pin = pwmController.OpenPin(22); _pin.SetActiveDutyCyclePercentage(.25); _pin.Start(); }
  • 39.
    Part 5: RCCar • Prototyped • 3D Printed Components • Custom PCB Board • Designed with Eagle - http://www.cadsoftusa.com/ • Printed at OSH Park - https://oshpark.com/ • Plans on Github • http://www.github.com/lprichar/IotRcCar
  • 42.
    Resources • These slides: •http://www.slideshare.net/LeeRichardson13/introduction-to-windows- iot-via-raspberry-pi-3 • IotRcCar Source Code • https://github.com/lprichar/IotRcCar
  • 43.
    http://www.nova-labs.org/ 1916 IsaacNewton Square West Reston, VA 20190 • 3D Printers • Laser Cutter • Arduino Classes • CNC Mill
  • 44.
  • 45.
    Next Up: BuildSomething • Grilling - Temperature Controlled BBQ Fan • Foosball – Workplace table monitor • Safety - Smart smoke detector • Drinking - Alcohol breathalyzer • Gardening - Per-plant water monitor and drip • Homeowner - Window/door temperature tracker • Cigars - Humidity controlled humidor • https://developer.microsoft.com/en-us/windows/iot
  • 46.