This is a presentation Chris Pietschmann gave to the Milwaukee Azure (http://MkeAzure.com) group on 8/17/2016 covering where to get started building IoT solutions using Microsoft Azure, Windows IoT Core, and Raspberry Pi. No IoT solution is complete without hardware so he will be using Windows IoT Core on a Raspberry Pi 3 to read from sensors and send that data to the cloud. This presentation will cover what you need to get started building IoT solutions using the Microsoft Azure platform.
3. Chris Pietschmann
Senior Cloud Solution Architect
http://Opsgility.com
~15 years architecting enterprise systems
Microsoft MVP (2008 – 2012)
http://BuildAzure.com
@BuildAzure
8. Device-to-Cloud Messaging
• Data Event / Messages are sent from the hardware device to the
cloud
• Sensor readings
• Telemetry stream
• Generally feeds into some kind of Message Queue for
processing
9. Lambda Architecture
• Data Aggregation
• Real-Time Processing /
Analytics
• fast
• Batch Processing
• slow
10. Cloud-to-Device Messaging
• Command / Messages sent to the hardware device
• Instruction to perform an action
• Turn something on: Light, Fan, Open Door, etc
• Start / Stop gathering telemetry
• 2-way messaging
11. MQTT Protocol
• Message Queuing Telemetry Transport
• Publish / Subscribe, simple and lightweight protocol
• Encryption performed using SSL
• Designed for low-bandwidth, high-latency or unreliable
networks
• Created in 1999 http://mqtt.org
12. Other Protocols
• AMQP
• Advanced Message Queuing Protocol
• http://amqp.org
• HTTP
• Standard web protocol
• Custom or Device Specific
• Legacy or Proprietary
13. IoT Gateways
• Similar to a Proxy
• Provide aggregation point for device communications
• Field Gateway
• Low powered or simple devices may not have capacity to provide security
necessary for IoT; maybe no SSL
• Protocol Gateway
• Provides protocol adaptation
• Translates from custom / proprietary protocol to one cloud supports; like
MQTT or AMQP
• Offers a single security attack vector connected to Internet
16. Raspberry Pi
• Designed with the purpose to help teach Basic
Computer Science in schools
• Very active community building all kinds of stuff
• First boards released in 2012
• Many editions have been released since
http://www.raspberrypi.org
17. Raspberry Pi 2 & 3
• ARM CPU
• Header with 40 GPIO Pins
• Network: Ethernet, Wifi
• Video: HDMI, Composite Video
• Storage: Micro SD Card
• 4 USB Ports
• Operating System support:
• Raspbian / Linux
• Windows 10 IoT Core
18. Raspberry Pi 2 & 3
Raspberry Pi 2
• 900 Mhz 32-bit quad-core
ARM Cortex-A7 CPU
• 1GB RAM
• Released Feb 2015
Raspberry Pi 3
• 1.2 Ghz 64-bit quad-core
ARMv8 CPU
• 1 GB RAM
• Integrated:
• Wifi 802.11n
• Bluetooth 4.1 w/ BLE
• Released Feb 2016
19. Certified for IoT Starter Kit
• Adafruit Raspberry Pi Kit
• Raspberry Pi 3
• Breadboard
• Jumper wires
• Temp, Pressure, Humidity
Sensor
• RGB Color Sensor
• Photo cell
• LEDs
• Resistors
• and more
http://bit.ly/AzureIoTStarterKits
21. Windows IoT Core
• Windows 10 optimized for smaller devices
• With Display or Headless
• Supports Auto-update over Windows Update
• Hardware Support
• Raspberry Pi 2 & 3, Qualcomm DragonBoard 410c, MinnowBoard MAX
FREE
22. Device UI - Dashboard
• Device Name
• Network & IP Address
• Windows 10 Version
23. Device UI – Setup Wifi & Bluetooth
• Setup Wifi
• Setup Bluetooth
24. IoT Development
• Universal Windows Apps (UWP) API
• Same development tools for Windows 10 Desktop, Phone, Xbox,
HoloLens, and Windows IoT Core
• Visual Studio 2015, .NET, XAML
34. Notification Hub
• Send Push Notifications to any platform
• Mobile Push Notification, not to be confused with SMS messages
• Supports All Major Platforms
• iOS, Android, Windows, Kindle, Baidu
• Highly Scalable
• Millions of Mobile Devices and Billions of Notifications
35. Stream Analytics
• Real-time stream processing
• Stream millions of events per second
• Can handle multiple Inputs and Outputs
• Input: IoT Hub, Event Hubs, Blob Storage
• Output: SQL Database, DocumentDB, Azure Storage, Event Hubs, Power
BI, Service Bus Queues/Topics
• Uses SQL-like query syntax for Input to Output mapping
37. Machine Learning
• PaaS Predictive Analytics
• Create Learning Models using ML
Studio
• Outputs Web Service that can be
run on Schedule and connected to
database
• Add intelligence to apps or
provide insights to BI tools
38. Power BI
• PaaS Service
• Create Interactive Reports
• Easily embed BI and
analytics within apps
40. App Service Web Apps
• Platform as a Service (PaaS)
• Host Web Applications
• ASP.NET, Node.js, PHP, Java
• Foundation for other services
• API Apps
• Mobile Apps
• Functions
41. Azure Functions
• Server-less
• Well not really, actually built on top of App Service Web Apps
• Language Support:
• C# and Node.js
• Isolated Function of Code
• Run on Schedule or Trigger
42. Service Bus Queue
• Message Queue
• First In, First Out
• Enable loosely coupled applications
• More robust than Storage Queues
46. Connect Temperature Sensor
• Adafruit BME280
• Temperature, Humidity,
Barometric Pressure
• Connect to I2C bus on header
pins 3 and 5
http://bit.ly/RPWeather3
47. Connect LED
• Blue LED
• 220 Ohm Resistor
• Connected to
GPIO 4
• Located on
Header Pin 7
NOTES:
Here’s a bunch of Consumer IoT devices available today
ATTRIBUTION:
http://nest.com
http://tesla.com
http://sonos.com
http://amazon.com
http://vizio.com
http://sony.com
http://apple.com
http://smartthings.com
NOTES:
Devices generate events / messages sent to a Queue. In Azure this would be Azure IoT Hub or Event Hubs
Them event data is sent 2 directions
For Real-Time processing, like using Azure Stream Analytics and possibly Machine Learning
For Batch Processing, like Azure SQL Database or DocumentDB for archiving
The end result is basically the same for both paths; some kind of database to persist the data for longer term storage and retrieval
Finally an application on the other end that will do something with the data.
Perhaps reporting like Power BI or just some kind of business app
NOTES:
MQTT has become a standard protocol for “Internet of Things”
Operates over TCP/IP port 1883 reserved for MQTT, and 8883 with SSL / encryption
NOTES:
Baidu is a Chinese cloud service
LINKS:
- https://azure.microsoft.com/en-us/services/notification-hubs/
- https://azure.microsoft.com/en-us/documentation/articles/notification-hubs-baidu-china-android-notifications-get-started/
NOTE:
Link is for the Weather Station V 3.0 project I put up on Hackster.io. Project includes code, wiring diagram and other info necessary for connecting this up.
Links:
https://www.adafruit.com/products/2652
https://www.hackster.io/23021/weather-station-v-3-0-b8b8bc
http://bit.ly/RPWeather3
NOTES:
- I am using a cobbler with a Breakout ribbon to connect the Raspberry Pi to the Breadboard.