Internet of Things

The World of Possibilities

Mathew Ockerse – IoT Application Engineer

Nürnberg, June 2015 The idea of the internet of things is …

… that instead of having a small number of powerful computing devices in your life, you have a large number of low energy, ubiquitous computing devices

2 ® Quark

Intel® Quark SoC X1000 The first product from the Intel® Quark technology family of low-power, small- core products. Intel® Quark technology will extend Intel architecture into rapidly growing areas – from the Internet of Things to wearable computing in the future.

3 Past, present, future

Portfolio of products . Quark : . IDF 2013 . Basis of Galileo Gen1 and Gen2 . Edison : . CES 2014 . Curie : . CES 2015 . More about it in 2H 15

4 From sensor to cloud

Intel Confidential — Do Not Forward 5 Intel IoT hardware Edison & Expansion Boards

6 Intel® Edison module

. 22 nm Intel® SoC that includes a dual- core, dual-threaded Intel® ™ CPU at 500 MHz . 32-bit Intel® Quark™ microcontroller at 100 MHz . 1 GB LPDDR3 POP memory . Flash storage 4 GB eMMC . WiFi and ® Low Energy . 35.5 × 25.0 × 3.9 mm (1.4 × 1.0 × 0.15 inches) . 40 GPIOs: UART, I2C, SPI, I2S, GPIO(PWM), USB, SD card

7 Intel Partner Built to Order Expansion Boards Expansion Boards Expansion Boards

8 Extension Boards

Intel® Edison • 70 pin connector • Hirose DF40 Series • Easy to build your own board

Intel currently offers 2 boards • Breakout Board • * expansion board

* Other names and brands may be claimed as the property of others. Intel® Edison Breakout Board

• I/O: array of through-hole solder points • USB OTG with USB Micro (AB) • Battery charger • USB micro (B) [UART] • DC power supply jack (7 to 15 VDC) Intel® Edison - Arduino Expansion Board Board features

. Compatible with Arduino Uno (except only 4 PWM instead of 6 PWM)

. 20 digital input/output pins including 4 pins as PWM outputs

. Micro USB device connector OR (via mechanical switch) dedicated standard size USB host Type-A connector

. Micro USB device (connected to UART)

. 6 analog inputs

. 1 UART (RX/TX)

. 1 I2C

. 1 ICSP 6-pin header (SPI)

. SD Card connector

. DC power jack (7V – 15V DC input)

11 Partner Expansion Boards E.g.: Sparkfun*

* Other names and brands may be claimed as the property of others. Intel IoT software Overview of software layers & IDE’s

13 General Software Overview

• Onboard Edison • Developer Environments • Cloud Connectivity

14 IoT Development kit components

15 Developer Environments

16 libmraa

• c/c++ library (abstraction layer) with bindings to javascript & python • Interfaces with IO on Galileo, Edison and other platforms • With board detection at runtime can be used on multiple platforms

17 mraa - https://github.com/intel-iot-devkit/mraa

MRAA – random letters, doesn’t mean anything

API documentation available – http://iotdk.intel.com/docs/master/mraa/

Examples directory

Minimum code sample: mraa_gpio_context gpio;

gpio = mraa_gpio_init(6);

mraa_gpio_dir(gpio, MRAA_GPIO_IN);

for (;;) {

fprintf(stdout, "Gpio is %d\n", mraa_gpio_read(gpio));

sleep(1);

}

mraa_gpio_close(gpio);

18 libupm

• High level sensor repository • Links to mraa • Sensors represented as classes

19 upm – Example of libupm for Grove Temp Sensor

List of supported sensors in C++

API documentation - http://iotdk.intel.com/docs/master/upm/

Examples directory

Minimum code example: upm::GroveTemp* s = new upm::GroveTemp(0); std::cout << s->name() << std::endl; for (int i=0; i < 10; i++) {

std::cout << s->value() << std::endl;

sleep(1);

}

20 Developer Environments

(C/C++) - native • Intel XDK (node.js) - native • Arduino* (Emulated Environment) • Wyliodrin* (Browser based coding, uses Javascript & Python) • Python - native

* Other names and brands may be claimed as the property of others. 21 What to choose

Arduino* Visual Node.JS C / C++ Programming Target Maker Beginner Intermediate Advanced Audience

IDE Arduino* IDE Wyliodrin* Intel® XDK Eclipse* IDE

platform Win/ Mac/ Linux Browser Win/ Mac/ Linux Win/ Mac / Linux Download your IDE of choice • https://software.intel.com/iot/downloads Arduino IDE Gain command line access Prerequisite for Windows* development systems

• Install USB & FTDI serial drivers • https://software.intel.com/en-us/installing-drivers-for-intel-edison-board-with-windows • Options • Drivers installation is part of an automatic full installation ( incl. image & IDE ) • Standalone drivers downloads Setting up Arduino IDE

• Download .zip from arduino.cc

• Extract Arduino file (.zip .tgz .7z)

• Move Arduino folder to desired location

(e.g. Root directory)

• Open and run arduino.exe to get to IDE (or other OS executable)

Intel Getting Started Guide https://software.intel.com/en-us/iot/getting-started Setting up Arduino IDE

• Choose Tools>Board>Boards Manager

Intel Getting Started Guide https://software.intel.com/en-us/iot/getting-started Setting up Arduino IDE

• Click on „Intel i686 Boards by Intel“ and install

Intel Getting Started Guide https://software.intel.com/en-us/iot/getting-started Running a Sketch - Blink

• In IDE • Click on “File > Examples > Basics > Blink” and this window will open. Running a sketch – Uploading to Edison

Click “Tools > Board” and select Select “Tools > Serial Port” (Arduino “Intel® Edison” IDE uses the Virtual Com Port!) Full Bleed Image Example

software.intel.com/iot Intel Confidential — Do Not Forward 31 Intel IoT on Instructables.

32