1. Getting Started with Intel® IoT Devkit
Dr. Matthias Hahn
Moscow Hackathon
November 22-23 2014
2. Agenda
Intel® Edison
Intel® IoT Developer Kit Overview
HW components
Arduino* and Linux native programming
Intel® IoT Cloud Analytics
* Other names and brands may be
claimed as the property of others.
4. Important Ingredients
Development
• IDEs
Target Images
• libmraa: IO abstraction
• UPM: sensor repo
• iotkit-agent
Cloud
• Intel® IoT Analytics
Hardware
• Intel® Galileo or Intel® Edison
• Grove Sensor Kit
5. Supporting you
Arduino* Visual
Programming
Node.JS C / C++
Target
Audience
Maker Beginner Intermediate Advanced
IDE Arduino* IDE Intel® XDK Eclipse* IDE
Win/ Mac/ Linux
Wyliodrin*
platform Browser Win/ Mac/ Linux Win/ Mac / Linux
6. LibMraa UPM (Sensor/Actuator library repository)
Intel® Galileo
Gen 1 & 2
Board
API Bindings C/C++, Node JS, Python
Yocto* based Linux OS image
Intel® Edison
Arduino
Development
Board
NodeJS
support
C/C++
Tool Chains
Wyliodrin*
agent
Hard Ware Target SW
Intel® XDK
IoT Edition
Eclipse* IDE
Wyliodrin*
(Visual
Programming)
IDE
Arduino* IDE
IoT Developing
Sensors / Actuators
* Other names and brands may be
claimed as the property of others.
8. Intel® Galileo Development Board – Gen 2
Board I/O:
Mechanically compatible with Arduino* Uno*
20 digital input/output pins including 6 pins as PWM outputs
6 analog inputs
2 UART (RX/TX)
1 I2C
1 ICSP 6-pin header (SPI)
USB device connector (Host)
Micro USB device connector (client)
SD Card connector
DC power jack (7V – 15V DC input)
* Other names and brands may be
claimed as the property of others.
9. Intel® Edison - Mechanical Layout
4 GB
eMMC Intel® SoC /
1GB LPDDR3
WiFi /
BT
PMIC
Top Side Bottom Side
USB
ULPI
70 pin
connector
antenna
Extern Coax
35.5 mm
25mm
10. Intel® Edison
Board
• 2 Intel® Atom™ cores @ 500 MHz
• 1 Intel® Quark™ MCU @ 100 MHz
• 35.5 × 25.0 × 3.9 mm
• 1 GB RAM (LPDDR3, 2ch @ 800 MT/s)
• 4 GB eMMC
• WiFi (a/b/g/n) + BT 4.0 + antenna
• 40 GPIOs : UART, I2C, SPI, I2S, PWM,
USB 2.0, SD card, clock out, GPIO
Software
• Default OS: Yocto* 1.6 Linux*
• Right now 3.10.17 kernel
• OTA upgradable
• libmraa: GPIO abstraction layer
• UPM repository: sensor libraries
* Other names and brands may be
claimed as the property of others.
11. Caveats – Intel® Edison
• Not latest libmraa / UPM?
• Rootfs
• Partition too small?
• Partition empty?
• Wireless
• interfaces not available?
• xyz not supported?
• LE not supported?
12. Expansion Boards
Partner
Expansion Boards
Intel
Expansion Boards
Built to Order
Expansion
Boards
13. Extension Boards
Intel® Edison
• 70 pin connector
• Hirose DF40 Series
• Easy to build your own board
Intel currently offers 2 boards
• Breakout Board
• Arduino* expansion board
* Other names and brands may be
claimed as the property of others.
14. Intel® Edison – Arduino* Expansion Board
• Arduino* Uno compatibility (except 4 rather 6 PWM)
• 20 digital GPIO (incl 4 PWM)
• 6 analog inputs
• 1 UART (RX/TX)
• 1 I2C
• 1 ICSP 6-pin header (SPI)
• switchable: Micro USB device | USB host
• Micro USB device (UART)
• Mini SD Card connector
• DC power jack (7V – 15V DC input)
* Other names and brands may be
claimed as the property of others.
15. 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)
16. Partner Expansion Boards
Expl: Sparkfun* Boards
* Other names and brands may be
claimed as the property of others.
18. Grove* Starter Kit Plus - Intel® IoT Version
1 Base Shield v2
2 Grove - Buzzer V1.1
3 Grove – Button
4 Grove-LED v1.3
5
Grove - Sound Sensor_V1.2
6 Grove - Rotary Angle Sensor
7 Grove-Touch Sensor
8 Grove - Smart Relay
9 Grove-Light Sensor
10 Grove - Temperature Sensor_V1.1
11 26AWG Grove Cable
12 Mini Servo
13 9V to Barrel Jack Adapter - 126mm
14 DIP LED Blue-Blue
15 DIP LED Green-Green
16 DIP LED Red-Red
11 Grove - LCD RGB Backlight
USB, serial
and Ethernet
cables
20. Now connect your environment
Intel® Galileo / Intel® Edison
For Windows*: first install driver from USB stick
Ref.: https://communities.intel.com/docs/DOC-23147
Serial 9600
Serial 115200
21. Connect board via serial – discover port (Windows*)
Ref.: https://software.intel.com/en-us/iot-c-eclipse
22. Connect via serial
e.g. using PuTTy*, goSerial* or minicom* resp
User: root, no password * Other names and brands may be
claimed as the property of others.
23. Connecting Intel(R) Galileo
Wifi
connmanctl, rfkill, wpa_cli, hostapd_cli
Bluetooth
connmanctl, rfkill, bluetoothctl, hciconfig, hcidump, btmon
serial
24. Connecting Intel(R) Edison
On Windows* - first install driver from USB stick
“configure_edison --setup”
• One central way to set hostname, password and configure wifi
Wifi
connmanctl, rfkill, wpa_cli, hostapd_cli
Bluetooth
connmanctl, rfkill, bluetoothctl, hciconfig, hcidump, btmon
Eth over USB
serial
* Other names and brands may be
claimed as the property of others.
25. Find your Galileo/Edison IP address and write it down:
command `ip a`
Ping between board and your laptop to
check connectivity
Ref.: https://software.intel.com/en-us/iot-c-eclipse
27. Arduino* IDE for Intel® Edison
* Other names and brands may be
claimed as the property of others.
28. Arduino* IDE
Sketch
/sketch/sketch.elf
• Cross compiler
• clloader listening on
/dev/ttyGS0
• Upload via serial
• Renaming existing
sketch.elf
* Other names and brands may be
claimed as the property of others.
34. libmraa - https://github.com/intel-iot-devkit/mraa
IO abstraction layer
(C, C++, Python, Node.JS)
Used by
• UPM
• Intel(R) XDK for IoT
• Wyliodrin*
API documentation
http://iotdk.intel.com/docs/master/mr
aa/
* Other names and brands may be
claimed as the property of others.
35. Libmraa - C API
Expl: switch on GPIO #8
mraa_gpio_context gpio; // Pointer to GPIO context
gpio = mraa_gpio_init(8); // Create GPIO context for pin 8
mraa_gpio_dir(gpio, MRAA_GPIO_OUT); // GPIO direction: out
mraa_gpio_write(gpio, 1); // Write to GPIO
mraa_gpio_close(gpio); // Close GPIO
36. Libmraa - C++
Expl: read analogue value on A0
mraa::Aio* a0;
a0 = new mraa::Aio(0); // Create AIO object for pin 0
std::cout << a0->read() << std::endl;
37. Libmraa – Object API (Python)
Expl: interrupt triggered on IO #6
from mraa import * # Import mraa library
# define a callback function
def my_isr():
print("Button pressed")
x = Gpio(6) # Create a GPIO object for pin 6
x.dir(DIR_IN) # Set GPIO direction to input
x.isr(EDGE_BOTH, my_isr) # Set callback on BOTH
38. Libmraa – Object API (Node.js)
Expl: did we have this? – switch on IO #8
var m = require("mraa") # Import mraa module
var x = new m.Gpio(8) # Create a GPIO object for pin 8
x.dir(m.DIR_OUT) # Set GPIO direction to output
x.write(1) # Write to GPIO
39.
40. UPM repository - https://github.com/intel-iot-devkit/upm
List of supported sensors in C++
API documentation - http://iotdk.intel.com/docs/master/upm/
Examples directory
C++ example:
// Copyright (c) 2014 Intel Corporation. MIT license
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);
}
42. Updating libmraa / UPM
cat > /etc/opkg/mraa-upm.conf <<EOF
src mraa-upm http://iotdk.intel.com/repos/1.1/intelgalactic
EOF
opkg update
opkg upgrade
* Other names and brands may be
claimed as the property of others.
43. Eclipse* IDE
* Other names and brands may be
claimed as the property of others.
44.
45.
46. Eclipse(C/C++) – setting up
Copy to your computer
Extract the file you copied previously (iotdk-ide-${yourOS}.7z) with 7z
Treats long paths better, needed for this file.
If you need to download: http://www.7-zip.org/
Note: Better to extract the file to C: on Windows
Execute devkit-launcher.bat
Ref.: https://software.intel.com/en-us/iot-c-eclipse
66. Your SD Card is already with the Galileo Image, so all you need to do is to download (1) wyliodrin.json
and (2) write it on the root of the SD Card. Make sure the name is exactly wyliodrin.json
1
2
67. Install the updates and the extra libraries. This make take some time to run