SlideShare ist ein Scribd-Unternehmen logo
Windows 10 IoT Core
Jens Siebert (@jens_siebert)
.NET User Group Kassel, 29. März 2018
https://www.slideshare.net/JensSiebert1
Windows 10 – „One Windows“
Bild: Microsoft (https://winblogs.azureedge.net/win/2015/01/Windows-10_Product-Family.jpg)
Windows für eingebettete Systeme
Windows CE 1.0
(1996)
Windows CE 1.01
(1997)
Windows CE 2.0
(1997)
Windows CE 2.10
(1998)
Windows CE 2.11
(1998)
Windows CE 3.0
(2000)
Windows CE 4.0
(2001)
Windows CE 4.1
(2002)
Windows CE 4.2
(2003)
Windows CE 5.0
(2004)
Windows CE 6.0
(2006)
Windows CE 6R2
(2007)
Windows CE 6R3
(2009)
Windows Embedded 7
(2011)
Windows Embedded 8
(2013)
Windows 10 IoT Core
(2015)
Windows 10 IoT Pro/Ent.
(2015)
Raspberry Pi 3 Model B
• 1.2GHz Quad-Core ARMv8 (Broadcom BCM2837)
• 1 GB RAM
• Broadcom Video Core IV GPU
• 4x USB 2.0
• 802.11 b/g/n WiFi
• 10/100/1000 Mbit Ethernet
• Bluetooth 4.1/LE
• HDMI
• Camera Interface (CSI)
• Display Interface (DSI)
• 40 GPIO Pins
Bild: Microsoft (https://https://az835927.vo.msecnd.net/sites/iot/Resources/images/devices/RPi3_0.png)
Raspberry Pi
• 24x GPIO
• 2x 5V
• 2x 3,3V
• 8x Ground (Masse)
• 1x I2C (Inter-Integrated Circuit Bus)
• 2x SPI (Serial Peripheral Interface)
• 1x UART (Universal Asynchronous Receiver Transmitter)
Bild: Microsoft (https://az835927.vo.msecnd.net/sites/iot/Resources/images/PinMappings/RP2_Pinout.png)
Windows 10 IoT Core Setup
• Raspberry Pi (2 oder 3)
• SD-Card (16GB)
• PC mit
• Windows 10
• SD-Card Reader
• Windows 10 IoT Dashboard
Bild: Microsoft (https://az835927.vo.msecnd.net/sites/iot/Resources/images/IoTDashboard/IoTDashboard_SetupPage.PNG)
Windows Device Portal
• Zugriff auf Windows 10 IoT Gerät über Web-Oberfläche
• URL: http://<devicename>:8080
• User: Administrator
• Passwort: Aus Windows 10 IoT Dashboard
Bild: Microsoft (https://az835927.vo.msecnd.net/sites/iot/Resources/images/deviceportal/deviceportal.png)
Universal Windows Platform
Bild: Microsoft (https://i-msdn.sec.s-msft.com/de-de/windows/uwp/get-started/images/universalapps-overview.png)
Was wird benötigt?
• Raspberry Pi 2 oder 3 mit Windows 10 IoT Core (Fall Creators Update)
• PC mit Windows 10 (Fall Creators Update)
• Visual Studio 2017 (Community reicht aus)
• Windows 10 SDK und Tools (für Fall Creators Update)
• Für Elektronik-Basteleien:
• Breadboard
• Elektronik-Komponenten (Widerstände, LEDs, etc.)
• Sensoren (Temperatur, Luftdruck, Luftfeuchtigkeit, GPS, etc.)
• Ein gewisses Elektronik-Grundwissen ist von Vorteil!
Projekt-Setup (UWP-App)
GPIO-Pins nutzen
using Windows.Devices.Gpio;
[…]
// Hole Referenz auf GPIO Controller Objekt
var gpio = GpioController.GetDefault();
// Prüfe ob GPIO Controller vorhanden ist
if (gpio != null)
{
// Verbindung zum GPIO-Pin Nr. 5 öffnen
var pin = gpio.OpenPin(5);
// GPIO-Pin als Ausgabe-Pin konfigurieren
pin.SetDriveMode(GpioPinDriveMode.Output);
// GPIO Pin auf Wert «High» setzen
pin.Write(GpioPinValue.High);
}
Demo: LED blinken, Button einlesen
I2C-Bus nutzen
using Windows.Devices.I2c;
[…]
var controller = await I2cController.GetDefaultAsync();
if (controller != null)
{
// Verbindung zum Sensor mit der Adresse 0x77 herstellen
var connectionSettings = new I2cConnectionSettings(0x77);
device = controller.GetDevice(connectionSettings);
// Wert aus Sensor-Register mit Adresse 0xAA auslesen
var registerData = new byte[2];
device.WriteRead(new byte[] { 0xAA }, registerData);
}
Demo: Temperatur-/Luftdruck-Sensor
• Adafruit BMP180 Barometric Pressure/Temperature/Altitude Sensor
• Vin: 3 to 5V (DC)
• Logic: 3 to 5V compliant
• Pressure sensing range: 300-1100 hPa
• Up to 0.03hPa / 0.25m resolution
• -40 to +85°C operational range
• ±2°C temperature accuracy
• This board/chip uses I2C 7-bit address 0x77
Bild: Adafruit (https://cdn-shop.adafruit.com/970x728/1603-03.jpg)
UART nutzen
using Windows.Devices.SerialCommunication;
[…]
// Hole Referenz auf UART Objekt
var aqs = SerialDevice.GetDeviceSelector();
var dis = await DeviceInformation.FindAllAsync(aqs);
device = await SerialDevice.FromIdAsync(dis[0].Id);
// Prüfe ob UART Objekt vorhanden ist
if (device != null)
{
// UART Baud-Rate setzen
device.BaudRate = 9600;
// Wert über InputStream auslesen
var dataReader = new DataReader(device.InputStream);
var bytesRead = dataReader.LoadAsync(1024);
var text = dataReader.ReadString(bytesRead);
}
UART nutzen
Wichtig: Nutzung der UART-Schnittstelle über Capabilities im Application Manifest freischalten!
Package.appxmanifest:
<Capabilities>
<Capability Name="internetClient" />
<DeviceCapability Name="serialcommunication">
<Device Id="any">
<Function Type="name:serialPort" />
</Device>
</DeviceCapability>
</Capabilities>
Demo: GPS-Sensor
• Adafruit Ultimate GPS Breakout (based on MTK3339)
• -165 dBm sensitivity, 10 Hz updates, 66 channels
• 5V friendly design and only 20mA current draw
• Breadboard friendly
• RTC battery
• Output: NMEA 0183, 9600 baud default
• Fix status LED
• Internal patch antenna
• u.FL connector for external active antenna
Bild: Adafruit (https://cdn-shop.adafruit.com/970x728/746-08.jpg)
„Internet of Things“
Bild: siliconANGLE (http://siliconangle.com/files/2016/02/network-782707_1280-1080x675.png)
Azure IoT Hub
Bild: Microsoft (https://acom.azurecomcdn.net/80C57D/cdn/mediahandler/docarticles/dpsmedia-prod/azure.microsoft.com/en-us/documentation/articles/iot-hub-what-is-iot-hub/20161003010117/hubarchitecture.png)
Azure IoT - Datenverarbeitung
Bilder (nachbearbeitet):
Microsoft (https://msdnshared.blob.core.windows.net/media/2016/10/image633.png)
Microsoft (https://az835927.vo.msecnd.net/sites/iot/Resources/images/devices/RPi3_0.png)
Azure IoT Hub – Notwendige Vorarbeiten
1. Azure Account anlegen (kostenlos)
2. Azure IoT Hub im Azure Portal einrichten
Wichtig:
Bei „Tarif und Skalierung“
unbedingt „F1 – Free“
auswählen!
Azure IoT Hub – Gerät registrieren
1. Azure DeviceExplorer herunterladen und installieren
2. IoT Hub Verbindungsschlüssel kopieren
Azure IoT Hub – Gerät registrieren
1. IoT Hub Verbindungsschlüssel im DeviceExplorer registrieren
2. Im Tab „Management“ das neue Gerät registrieren
Azure IoT Hub – Geräteschlüssel auslesen
1. Im Tab „Management“ Rechts-Klick auf den Geräte-Eintrag
2. „Copy connection string for selected device“ auswählen
Projekt-Setup (Background-App)
Projekt-Setup (NuGet-Packages)
Nachrichten an IoT Hub senden
using Microsoft.Azure.Devices.Client;
[…]
// Verbindung aus einem Connection String erstellen
var deviceClient = DeviceClient.CreateFromConnectionString(connectionString);
[…]
// Message erstellen und senden
var message = new Message(Encoding.UTF8.GetBytes(data));
await deviceClient.SendEventAsync(message);
Projekt-Setup (Event-Receiver)
Projekt-Setup (NuGet-Packages)
Nachrichten vom IoT Hub empfangen
using Microsoft.ServiceBus.Messaging;
[…]
// Verbindung aus einem Connection String erstellen
var eventHubClient = EventHubClient.CreateFromConnectionString(
connectionString,
"messages/events"
);
// Message empfangen und dekodieren
var eventData = await eventHubReceiver.ReceiveAsync();
var data = Encoding.UTF8.GetString(eventData.GetBytes());
Demo: Azure IoT Hub
Neue Technologien und SDKs
• Azure IoT Suite
• Azure IoT Edge
• Azure IoT Automated Provisioning
• Windows ML (ab Spring Creators Update)
Informationen & Links
• Source-Code: bitbucket.org/jenssiebert/dnugpbwindows10iotcore
• Windows 10 IoT Core: developer.microsoft.com/en-us/windows/iot
• Docs: developer.microsoft.com/en-us/windows/iot/Docs
• Samples: developer.microsoft.com/en-us/windows/iot/samples
• IoT Core Dashboard: developer.microsoft.com/en-us/windows/iot/docs/iotdashboard
• Raspberry Pi: raspberrypi.org
• Docs: raspberrypi.org/documentation
• Azure IoT Hub: azure.microsoft.com/de-de/services/iot-hub
• Docs: azure.microsoft.com/de-de/documentation/services/iot-hub
• DeviceExplorer: github.com/Azure/azure-iot-sdks/blob/master/tools/DeviceExplorer
Literatur
Bilder:
Hanser Verlag (http://files.hanser.de/hanser/pics/978-3-446-44719-6_2165312176-34.jpg)
Microsoft Press (https://www.microsoftpressstore.com/ShowCover.aspx?isbn=9781509302161)
Vielen Dank!

Weitere ähnliche Inhalte

Ähnlich wie Windows 10 IoT Core

Modern Deployment Magic mit Microsoft 365 & Autopilot | Bechtle Competence Da...
Modern Deployment Magic mit Microsoft 365 & Autopilot | Bechtle Competence Da...Modern Deployment Magic mit Microsoft 365 & Autopilot | Bechtle Competence Da...
Modern Deployment Magic mit Microsoft 365 & Autopilot | Bechtle Competence Da...
Bechtle
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
Jürg Stuker
 
Android Embedded - Einführung in Android als Embedded-Plattform
Android Embedded - Einführung in Android als Embedded-PlattformAndroid Embedded - Einführung in Android als Embedded-Plattform
Android Embedded - Einführung in Android als Embedded-Plattform
inovex GmbH
 
Was ist neu in .NET 4.5?
Was ist neu in .NET 4.5?Was ist neu in .NET 4.5?
Was ist neu in .NET 4.5?
Digicomp Academy AG
 
Spiele entwickeln mit dem Adobe AIR SDK
Spiele entwickeln mit dem Adobe AIR SDKSpiele entwickeln mit dem Adobe AIR SDK
Spiele entwickeln mit dem Adobe AIR SDK
IndieOutpost
 
Zukunftsfähig durch Retrofitting mit Embedded Hard- und Software
Zukunftsfähig durch Retrofitting mit Embedded Hard- und SoftwareZukunftsfähig durch Retrofitting mit Embedded Hard- und Software
Zukunftsfähig durch Retrofitting mit Embedded Hard- und Software
iesy GmbH & Co. KG
 
Industry 4.0 in a box
Industry 4.0 in a boxIndustry 4.0 in a box
Industry 4.0 in a box
Tillmann Eitelberg
 
SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)
SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)
SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)
Christian Heindel
 
AKCP securityProbe 5E-X60 - Überwachung von bis zu 60 potentialfreien Kontakten
AKCP securityProbe 5E-X60 - Überwachung von bis zu 60 potentialfreien KontaktenAKCP securityProbe 5E-X60 - Überwachung von bis zu 60 potentialfreien Kontakten
AKCP securityProbe 5E-X60 - Überwachung von bis zu 60 potentialfreien Kontakten
Didactum
 
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Gregor Biswanger
 
Infrastructure Solution Day | Core
Infrastructure Solution Day | CoreInfrastructure Solution Day | Core
Infrastructure Solution Day | Core
Microsoft Österreich
 
Android Entwicklung GTUG München 2009
Android Entwicklung GTUG München 2009Android Entwicklung GTUG München 2009
Android Entwicklung GTUG München 2009
greenrobot
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Gregor Biswanger
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
OPITZ CONSULTING Deutschland
 
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Digicomp Academy AG
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
Ulrich Krause
 
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit AgoravaJavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
Werner Keil
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & Domino
Ulrich Krause
 
Mit jQTouch auf's iPhone & Android
Mit jQTouch auf's iPhone & AndroidMit jQTouch auf's iPhone & Android
Mit jQTouch auf's iPhone & Android
Björn Wibben
 
Infrastruktur-Überwachung mit dem AKCP securityProbe 5E-X20 Alarm Server
Infrastruktur-Überwachung mit dem AKCP securityProbe 5E-X20 Alarm ServerInfrastruktur-Überwachung mit dem AKCP securityProbe 5E-X20 Alarm Server
Infrastruktur-Überwachung mit dem AKCP securityProbe 5E-X20 Alarm Server
Didactum
 

Ähnlich wie Windows 10 IoT Core (20)

Modern Deployment Magic mit Microsoft 365 & Autopilot | Bechtle Competence Da...
Modern Deployment Magic mit Microsoft 365 & Autopilot | Bechtle Competence Da...Modern Deployment Magic mit Microsoft 365 & Autopilot | Bechtle Competence Da...
Modern Deployment Magic mit Microsoft 365 & Autopilot | Bechtle Competence Da...
 
Top 10 Internet Trends 2006
Top 10 Internet Trends 2006Top 10 Internet Trends 2006
Top 10 Internet Trends 2006
 
Android Embedded - Einführung in Android als Embedded-Plattform
Android Embedded - Einführung in Android als Embedded-PlattformAndroid Embedded - Einführung in Android als Embedded-Plattform
Android Embedded - Einführung in Android als Embedded-Plattform
 
Was ist neu in .NET 4.5?
Was ist neu in .NET 4.5?Was ist neu in .NET 4.5?
Was ist neu in .NET 4.5?
 
Spiele entwickeln mit dem Adobe AIR SDK
Spiele entwickeln mit dem Adobe AIR SDKSpiele entwickeln mit dem Adobe AIR SDK
Spiele entwickeln mit dem Adobe AIR SDK
 
Zukunftsfähig durch Retrofitting mit Embedded Hard- und Software
Zukunftsfähig durch Retrofitting mit Embedded Hard- und SoftwareZukunftsfähig durch Retrofitting mit Embedded Hard- und Software
Zukunftsfähig durch Retrofitting mit Embedded Hard- und Software
 
Industry 4.0 in a box
Industry 4.0 in a boxIndustry 4.0 in a box
Industry 4.0 in a box
 
SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)
SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)
SharePoint, HTML5 und mobile Geräte (SharePoint UserGroup Dresden 11/2011)
 
AKCP securityProbe 5E-X60 - Überwachung von bis zu 60 potentialfreien Kontakten
AKCP securityProbe 5E-X60 - Überwachung von bis zu 60 potentialfreien KontaktenAKCP securityProbe 5E-X60 - Überwachung von bis zu 60 potentialfreien Kontakten
AKCP securityProbe 5E-X60 - Überwachung von bis zu 60 potentialfreien Kontakten
 
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET CoreElectron.NET: Cross-Platform Desktop Software mit ASP.NET Core
Electron.NET: Cross-Platform Desktop Software mit ASP.NET Core
 
Infrastructure Solution Day | Core
Infrastructure Solution Day | CoreInfrastructure Solution Day | Core
Infrastructure Solution Day | Core
 
Android Entwicklung GTUG München 2009
Android Entwicklung GTUG München 2009Android Entwicklung GTUG München 2009
Android Entwicklung GTUG München 2009
 
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
Kuck mal, Node.js! Einstieg für .NET Entwickler mit Visual Studio Code und Ty...
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
 
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
Fachreferat: Visual Studio 2012, Windows 8 und .NET 4.5
 
C / C++ Api for Beginners
C / C++ Api for BeginnersC / C++ Api for Beginners
C / C++ Api for Beginners
 
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit AgoravaJavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
JavaLand: Quantified Social - Fitness-Geräte und -Portale mit Agorava
 
C API for Lotus Notes & Domino
C API for Lotus Notes & DominoC API for Lotus Notes & Domino
C API for Lotus Notes & Domino
 
Mit jQTouch auf's iPhone & Android
Mit jQTouch auf's iPhone & AndroidMit jQTouch auf's iPhone & Android
Mit jQTouch auf's iPhone & Android
 
Infrastruktur-Überwachung mit dem AKCP securityProbe 5E-X20 Alarm Server
Infrastruktur-Überwachung mit dem AKCP securityProbe 5E-X20 Alarm ServerInfrastruktur-Überwachung mit dem AKCP securityProbe 5E-X20 Alarm Server
Infrastruktur-Überwachung mit dem AKCP securityProbe 5E-X20 Alarm Server
 

Mehr von Jens Siebert

WebAssembly
WebAssemblyWebAssembly
WebAssembly
Jens Siebert
 
Embedded Rust
Embedded RustEmbedded Rust
Embedded Rust
Jens Siebert
 
Embedded Rust
Embedded RustEmbedded Rust
Embedded Rust
Jens Siebert
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit Rust
Jens Siebert
 
Backend-Services mit Rust
Backend-Services mit RustBackend-Services mit Rust
Backend-Services mit Rust
Jens Siebert
 
TinyML – Machine Learning für eingebettete Systeme
TinyML – Machine Learning für eingebettete SystemeTinyML – Machine Learning für eingebettete Systeme
TinyML – Machine Learning für eingebettete Systeme
Jens Siebert
 
Deep Learning mit TensorFlow.js
Deep Learning mit TensorFlow.jsDeep Learning mit TensorFlow.js
Deep Learning mit TensorFlow.js
Jens Siebert
 
Chatbots bauen mit dem Microsoft Bot Framework
Chatbots bauen mit dem Microsoft Bot FrameworkChatbots bauen mit dem Microsoft Bot Framework
Chatbots bauen mit dem Microsoft Bot Framework
Jens Siebert
 
Integrating The Things Network Applications with Azure IoT Services
Integrating The Things Network Applications with Azure IoT ServicesIntegrating The Things Network Applications with Azure IoT Services
Integrating The Things Network Applications with Azure IoT Services
Jens Siebert
 
GraphQL
GraphQLGraphQL
GraphQL
Jens Siebert
 
Embedded JavaScript
Embedded JavaScriptEmbedded JavaScript
Embedded JavaScript
Jens Siebert
 
Microsoft Bot Framework (Node.js Edition)
Microsoft Bot Framework (Node.js Edition)Microsoft Bot Framework (Node.js Edition)
Microsoft Bot Framework (Node.js Edition)
Jens Siebert
 
Microsoft Bot Framework (.NET Edition)
Microsoft Bot Framework (.NET Edition)Microsoft Bot Framework (.NET Edition)
Microsoft Bot Framework (.NET Edition)
Jens Siebert
 
Electron
ElectronElectron
Electron
Jens Siebert
 
Physical Web
Physical WebPhysical Web
Physical Web
Jens Siebert
 
TypeScript
TypeScriptTypeScript
TypeScript
Jens Siebert
 
TypeScript
TypeScriptTypeScript
TypeScript
Jens Siebert
 

Mehr von Jens Siebert (17)

WebAssembly
WebAssemblyWebAssembly
WebAssembly
 
Embedded Rust
Embedded RustEmbedded Rust
Embedded Rust
 
Embedded Rust
Embedded RustEmbedded Rust
Embedded Rust
 
Microservices mit Rust
Microservices mit RustMicroservices mit Rust
Microservices mit Rust
 
Backend-Services mit Rust
Backend-Services mit RustBackend-Services mit Rust
Backend-Services mit Rust
 
TinyML – Machine Learning für eingebettete Systeme
TinyML – Machine Learning für eingebettete SystemeTinyML – Machine Learning für eingebettete Systeme
TinyML – Machine Learning für eingebettete Systeme
 
Deep Learning mit TensorFlow.js
Deep Learning mit TensorFlow.jsDeep Learning mit TensorFlow.js
Deep Learning mit TensorFlow.js
 
Chatbots bauen mit dem Microsoft Bot Framework
Chatbots bauen mit dem Microsoft Bot FrameworkChatbots bauen mit dem Microsoft Bot Framework
Chatbots bauen mit dem Microsoft Bot Framework
 
Integrating The Things Network Applications with Azure IoT Services
Integrating The Things Network Applications with Azure IoT ServicesIntegrating The Things Network Applications with Azure IoT Services
Integrating The Things Network Applications with Azure IoT Services
 
GraphQL
GraphQLGraphQL
GraphQL
 
Embedded JavaScript
Embedded JavaScriptEmbedded JavaScript
Embedded JavaScript
 
Microsoft Bot Framework (Node.js Edition)
Microsoft Bot Framework (Node.js Edition)Microsoft Bot Framework (Node.js Edition)
Microsoft Bot Framework (Node.js Edition)
 
Microsoft Bot Framework (.NET Edition)
Microsoft Bot Framework (.NET Edition)Microsoft Bot Framework (.NET Edition)
Microsoft Bot Framework (.NET Edition)
 
Electron
ElectronElectron
Electron
 
Physical Web
Physical WebPhysical Web
Physical Web
 
TypeScript
TypeScriptTypeScript
TypeScript
 
TypeScript
TypeScriptTypeScript
TypeScript
 

Windows 10 IoT Core

  • 1. Windows 10 IoT Core Jens Siebert (@jens_siebert) .NET User Group Kassel, 29. März 2018 https://www.slideshare.net/JensSiebert1
  • 2. Windows 10 – „One Windows“ Bild: Microsoft (https://winblogs.azureedge.net/win/2015/01/Windows-10_Product-Family.jpg)
  • 3. Windows für eingebettete Systeme Windows CE 1.0 (1996) Windows CE 1.01 (1997) Windows CE 2.0 (1997) Windows CE 2.10 (1998) Windows CE 2.11 (1998) Windows CE 3.0 (2000) Windows CE 4.0 (2001) Windows CE 4.1 (2002) Windows CE 4.2 (2003) Windows CE 5.0 (2004) Windows CE 6.0 (2006) Windows CE 6R2 (2007) Windows CE 6R3 (2009) Windows Embedded 7 (2011) Windows Embedded 8 (2013) Windows 10 IoT Core (2015) Windows 10 IoT Pro/Ent. (2015)
  • 4. Raspberry Pi 3 Model B • 1.2GHz Quad-Core ARMv8 (Broadcom BCM2837) • 1 GB RAM • Broadcom Video Core IV GPU • 4x USB 2.0 • 802.11 b/g/n WiFi • 10/100/1000 Mbit Ethernet • Bluetooth 4.1/LE • HDMI • Camera Interface (CSI) • Display Interface (DSI) • 40 GPIO Pins Bild: Microsoft (https://https://az835927.vo.msecnd.net/sites/iot/Resources/images/devices/RPi3_0.png)
  • 5. Raspberry Pi • 24x GPIO • 2x 5V • 2x 3,3V • 8x Ground (Masse) • 1x I2C (Inter-Integrated Circuit Bus) • 2x SPI (Serial Peripheral Interface) • 1x UART (Universal Asynchronous Receiver Transmitter) Bild: Microsoft (https://az835927.vo.msecnd.net/sites/iot/Resources/images/PinMappings/RP2_Pinout.png)
  • 6. Windows 10 IoT Core Setup • Raspberry Pi (2 oder 3) • SD-Card (16GB) • PC mit • Windows 10 • SD-Card Reader • Windows 10 IoT Dashboard Bild: Microsoft (https://az835927.vo.msecnd.net/sites/iot/Resources/images/IoTDashboard/IoTDashboard_SetupPage.PNG)
  • 7. Windows Device Portal • Zugriff auf Windows 10 IoT Gerät über Web-Oberfläche • URL: http://<devicename>:8080 • User: Administrator • Passwort: Aus Windows 10 IoT Dashboard Bild: Microsoft (https://az835927.vo.msecnd.net/sites/iot/Resources/images/deviceportal/deviceportal.png)
  • 8. Universal Windows Platform Bild: Microsoft (https://i-msdn.sec.s-msft.com/de-de/windows/uwp/get-started/images/universalapps-overview.png)
  • 9. Was wird benötigt? • Raspberry Pi 2 oder 3 mit Windows 10 IoT Core (Fall Creators Update) • PC mit Windows 10 (Fall Creators Update) • Visual Studio 2017 (Community reicht aus) • Windows 10 SDK und Tools (für Fall Creators Update) • Für Elektronik-Basteleien: • Breadboard • Elektronik-Komponenten (Widerstände, LEDs, etc.) • Sensoren (Temperatur, Luftdruck, Luftfeuchtigkeit, GPS, etc.) • Ein gewisses Elektronik-Grundwissen ist von Vorteil!
  • 11. GPIO-Pins nutzen using Windows.Devices.Gpio; […] // Hole Referenz auf GPIO Controller Objekt var gpio = GpioController.GetDefault(); // Prüfe ob GPIO Controller vorhanden ist if (gpio != null) { // Verbindung zum GPIO-Pin Nr. 5 öffnen var pin = gpio.OpenPin(5); // GPIO-Pin als Ausgabe-Pin konfigurieren pin.SetDriveMode(GpioPinDriveMode.Output); // GPIO Pin auf Wert «High» setzen pin.Write(GpioPinValue.High); }
  • 12. Demo: LED blinken, Button einlesen
  • 13. I2C-Bus nutzen using Windows.Devices.I2c; […] var controller = await I2cController.GetDefaultAsync(); if (controller != null) { // Verbindung zum Sensor mit der Adresse 0x77 herstellen var connectionSettings = new I2cConnectionSettings(0x77); device = controller.GetDevice(connectionSettings); // Wert aus Sensor-Register mit Adresse 0xAA auslesen var registerData = new byte[2]; device.WriteRead(new byte[] { 0xAA }, registerData); }
  • 14. Demo: Temperatur-/Luftdruck-Sensor • Adafruit BMP180 Barometric Pressure/Temperature/Altitude Sensor • Vin: 3 to 5V (DC) • Logic: 3 to 5V compliant • Pressure sensing range: 300-1100 hPa • Up to 0.03hPa / 0.25m resolution • -40 to +85°C operational range • ±2°C temperature accuracy • This board/chip uses I2C 7-bit address 0x77 Bild: Adafruit (https://cdn-shop.adafruit.com/970x728/1603-03.jpg)
  • 15. UART nutzen using Windows.Devices.SerialCommunication; […] // Hole Referenz auf UART Objekt var aqs = SerialDevice.GetDeviceSelector(); var dis = await DeviceInformation.FindAllAsync(aqs); device = await SerialDevice.FromIdAsync(dis[0].Id); // Prüfe ob UART Objekt vorhanden ist if (device != null) { // UART Baud-Rate setzen device.BaudRate = 9600; // Wert über InputStream auslesen var dataReader = new DataReader(device.InputStream); var bytesRead = dataReader.LoadAsync(1024); var text = dataReader.ReadString(bytesRead); }
  • 16. UART nutzen Wichtig: Nutzung der UART-Schnittstelle über Capabilities im Application Manifest freischalten! Package.appxmanifest: <Capabilities> <Capability Name="internetClient" /> <DeviceCapability Name="serialcommunication"> <Device Id="any"> <Function Type="name:serialPort" /> </Device> </DeviceCapability> </Capabilities>
  • 17. Demo: GPS-Sensor • Adafruit Ultimate GPS Breakout (based on MTK3339) • -165 dBm sensitivity, 10 Hz updates, 66 channels • 5V friendly design and only 20mA current draw • Breadboard friendly • RTC battery • Output: NMEA 0183, 9600 baud default • Fix status LED • Internal patch antenna • u.FL connector for external active antenna Bild: Adafruit (https://cdn-shop.adafruit.com/970x728/746-08.jpg)
  • 18. „Internet of Things“ Bild: siliconANGLE (http://siliconangle.com/files/2016/02/network-782707_1280-1080x675.png)
  • 19. Azure IoT Hub Bild: Microsoft (https://acom.azurecomcdn.net/80C57D/cdn/mediahandler/docarticles/dpsmedia-prod/azure.microsoft.com/en-us/documentation/articles/iot-hub-what-is-iot-hub/20161003010117/hubarchitecture.png)
  • 20. Azure IoT - Datenverarbeitung Bilder (nachbearbeitet): Microsoft (https://msdnshared.blob.core.windows.net/media/2016/10/image633.png) Microsoft (https://az835927.vo.msecnd.net/sites/iot/Resources/images/devices/RPi3_0.png)
  • 21. Azure IoT Hub – Notwendige Vorarbeiten 1. Azure Account anlegen (kostenlos) 2. Azure IoT Hub im Azure Portal einrichten Wichtig: Bei „Tarif und Skalierung“ unbedingt „F1 – Free“ auswählen!
  • 22. Azure IoT Hub – Gerät registrieren 1. Azure DeviceExplorer herunterladen und installieren 2. IoT Hub Verbindungsschlüssel kopieren
  • 23. Azure IoT Hub – Gerät registrieren 1. IoT Hub Verbindungsschlüssel im DeviceExplorer registrieren 2. Im Tab „Management“ das neue Gerät registrieren
  • 24. Azure IoT Hub – Geräteschlüssel auslesen 1. Im Tab „Management“ Rechts-Klick auf den Geräte-Eintrag 2. „Copy connection string for selected device“ auswählen
  • 27. Nachrichten an IoT Hub senden using Microsoft.Azure.Devices.Client; […] // Verbindung aus einem Connection String erstellen var deviceClient = DeviceClient.CreateFromConnectionString(connectionString); […] // Message erstellen und senden var message = new Message(Encoding.UTF8.GetBytes(data)); await deviceClient.SendEventAsync(message);
  • 30. Nachrichten vom IoT Hub empfangen using Microsoft.ServiceBus.Messaging; […] // Verbindung aus einem Connection String erstellen var eventHubClient = EventHubClient.CreateFromConnectionString( connectionString, "messages/events" ); // Message empfangen und dekodieren var eventData = await eventHubReceiver.ReceiveAsync(); var data = Encoding.UTF8.GetString(eventData.GetBytes());
  • 32. Neue Technologien und SDKs • Azure IoT Suite • Azure IoT Edge • Azure IoT Automated Provisioning • Windows ML (ab Spring Creators Update)
  • 33. Informationen & Links • Source-Code: bitbucket.org/jenssiebert/dnugpbwindows10iotcore • Windows 10 IoT Core: developer.microsoft.com/en-us/windows/iot • Docs: developer.microsoft.com/en-us/windows/iot/Docs • Samples: developer.microsoft.com/en-us/windows/iot/samples • IoT Core Dashboard: developer.microsoft.com/en-us/windows/iot/docs/iotdashboard • Raspberry Pi: raspberrypi.org • Docs: raspberrypi.org/documentation • Azure IoT Hub: azure.microsoft.com/de-de/services/iot-hub • Docs: azure.microsoft.com/de-de/documentation/services/iot-hub • DeviceExplorer: github.com/Azure/azure-iot-sdks/blob/master/tools/DeviceExplorer
  • 34. Literatur Bilder: Hanser Verlag (http://files.hanser.de/hanser/pics/978-3-446-44719-6_2165312176-34.jpg) Microsoft Press (https://www.microsoftpressstore.com/ShowCover.aspx?isbn=9781509302161)