Начало работы с intel iot dev kit
TRANSCRIPT
Getting Started with Intel® IoT Devkit
Dr. Matthias Hahn
Moscow Hackathon
November 22-23 2014
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.
Intel® IoT Developer Kit
Overview
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
Arduino* Visual
ProgrammingNode.JS C / C++
Target
AudienceMaker Beginner Intermediate Advanced
IDE Arduino* IDE Intel® XDK Eclipse* IDE
Supporting you
Win/ Mac/ Linux
Wyliodrin*
Win/ Mac/ Linux Win/ Mac / LinuxBrowser platform
Intel® Galileo
Gen 1 & 2
Board
Intel® Edison
Arduino
Development
Board
Yocto* based Linux OS image
API Bindings C/C++, Node JS, Python
UPM (Sensor/Actuator library repository)LibMraa
NodeJS
supportC/C++
Tool Chains
Wyliodrin*
agent
Ha
rd W
are
Ta
rget S
W
Intel® XDK
IoT EditionEclipse* IDE
Wyliodrin*
(Visual
Programming)IDE
Arduino* IDE
IoT Developing
Sensors / Actuators
* Other names and brands may be claimed as the property of others.
Boards
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.
Intel® Edison - Mechanical Layout
Top Side Bottom Side
4 GB
eMMC Intel® SoC /
1GB LPDDR3
WiFi /
BT
PMIC
USB
ULPI
70
pin
co
nn
ecto
r
an
ten
na
Extern Coax
35
.5 m
m
25mm
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.
Caveats – Intel® Edison
• Not latest libmraa / UPM?
• Rootfs
• Partition too small?
• Partition empty?
• Wireless
• interfaces not available?
• xyz not supported?
• LE not supported?
Expansion Boards
Partner
Expansion Boards
Intel
Expansion Boards
Built to Order
Expansion
Boards
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.
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.
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)
Partner Expansion Boards
Expl: Sparkfun* Boards
* Other names and brands may be claimed as the property of others.
Grove* Starter Kit
Intel® IoT version
Grove* Starter Kit Plus - Intel® IoT Version
1 Base Shield v2
2 Grove - Buzzer V1.1
3 Grove – Button
4 Grove-LED v1.3
5Grove - 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
Setting up the developer environment
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 115200
Serial 9600
Connect board via serial – discover port (Windows*)
Ref.: https://software.intel.com/en-us/iot-c-eclipse
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.
Connecting Intel(R) Galileo
Wifi
connmanctl, rfkill, wpa_cli, hostapd_cli
Bluetooth
connmanctl, rfkill, bluetoothctl, hciconfig, hcidump, btmon
serial
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.
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
Programming
Arduino* IDE for Intel® Edison
* Other names and brands may be claimed as the property of others.
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.
Go to IDZ IoT page, find your sensor
Under References, follow Grove Wiki
Recap – navigating IDZ IoT - https://software.intel.com/iot
libmraa & UPM
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.
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
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;
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
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
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);
}
UPM API documentation – which library to use?
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.
Eclipse* IDE
* Other names and brands may be claimed as the property of others.
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
Ref.: https://software.intel.com/en-us/iot-c-eclipse
Click on Remote System Explorer
Ref.: https://software.intel.com/en-us/iot-c-eclipse
Fill the IP address on (3)
Ref.: https://software.intel.com/en-us/iot-c-eclipse
Intel(r) XDK for IoT
Login/create your account
Start with a Sample (under IoT Projects) – click on “Use this
Template”
Should look like this
Select Galileo/Edison board
You might have to restart xdk-
daemon (systemctl restart xdk-
daemon)
Toggle the console
sync host / target time if needed
Install / build
Upload to target
run on target
Wyliodrin*
* Other names and brands may be claimed as the property of others.
Ex: programming via cloud with www.wyliodrin.com
Please name your board and select Intel Galileo and press Next
Cable (Ethernet) WiFi
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
Install the updates and the extra libraries. This make take some time to run
Intel® IoT Analytics
www.enableiot.com
Intel® IoT Analytics - www.enableiot.com
RESTful API
iotkit-agent (UDP / TCP)
#! /usr/bin/env python
import socket
import sys
UDP_PORT = 41234
sock = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM)
sock.sendto('{"n":"' + component +
‘","v":"' + value + '"}', ('localhost', UDP_PORT))
Login to IoT Analytics
Login in to Intel® IoT Analytics Cloud
https://dashboard.us.enableiot.com
Various login options
Next steps?