SlideShare a Scribd company logo
1 of 52
Download to read offline
Stefano Sanna
(with Giovanni Di Gialluca)
Timeline
2008
2011
2014
2015
2016
Mr Sulu, our coordinates, please...
Physical
World
Cloud
At a glance
SAFETY &
SECURITY
SAFETY &
SECURITY
HOME
APPLIANCES
HOME
APPLIANCES
CONNECTED
CARS
CONNECTED
CARSSMART METERSSMART METERS
INDUSTRY 4.0INDUSTRY 4.0
SALES &
VENDING
SALES &
VENDING
PORTABILITYPORTABILITY
LARGE, VIBRANT,
PROFESSIONAL
COMMUNITY
LARGE, VIBRANT,
PROFESSIONAL
COMMUNITY
FULL-STACK
CLOUD
SERVICES
FULL-STACK
CLOUD
SERVICES
SECURITYSECURITY
ON DEVICE
INTELLIGENCE
ON DEVICE
INTELLIGENCE
MODERN
ARCHITECTURE
AND
LANGUAGES
MODERN
ARCHITECTURE
AND
LANGUAGES
Environment
●
Same architecture
●
Same IDE (Android Studio)
●
Same programming language(s)
●
Same framework
●
Same app (Activity) lifecycle
●
Same UI widgets (UI?)
●
Same application packaging
●
Same reliable security for apps and frmware
upgrade
●
Same passionate community
Feel at home...
… more or less! Where is
the UI?
Where is
the UI?
Android Things vs Android: in & out
Cast
Drive
Firebase Analytics
Firebase Cloud Messaging
Firebase Realtime Database
Firebase Remote Config
Firebase Storage
Fit
Instance ID
Location
Nearby
Places
Mobile Vision
Cast
Drive
Firebase Analytics
Firebase Cloud Messaging
Firebase Realtime Database
Firebase Remote Config
Firebase Storage
Fit
Instance ID
Location
Nearby
Places
Mobile Vision
CalendarContract
ContactsContract
DocumentsContract
DownloadManager
MediaStore
Settings
Telephony
UserDictionary
VoicemailContract
AdMob
Android Pay
Firebase App Indexing
Firebase Authentication
Firebase Dynamic Links
Firebase Invites
Firebase Notifications
Maps
Play Games
Search
Sign-In
CalendarContract
ContactsContract
DocumentsContract
DownloadManager
MediaStore
Settings
Telephony
UserDictionary
VoicemailContract
AdMob
Android Pay
Firebase App Indexing
Firebase Authentication
Firebase Dynamic Links
Firebase Invites
Firebase Notifications
Maps
Play Games
Search
Sign-In
SOM
SOM: System On Module
A system on a module (SOM) is a board-level circuit that integrates
a system function in a single module.
A typical SOM consists of:
●
a microcontroller, microprocessor or digital signal processor
(DSP)
●
memory blocks including a selection of ROM, RAM, EEPROM
and/or fash memory
●
timing sources
●
industry standards interface such as USB, FireWire, Ethernet,
UART, SPI
●
peripherals including counter-timers, real-time timers and power-
on reset generators
●
analog interfaces including ADCs and DACs
●
voltage regulators and power management circuits
https://en.wikipedia.org/wiki/System_on_module
From prototype...
SYSTEM ON
MODULE (SOM) WITH
OS AND APPS
SYSTEM ON
MODULE (SOM) WITH
OS AND APPS
BASEBOARD
FOR
PROTOTYPING
BASEBOARD
FOR
PROTOTYPING
… to production
SYSTEM ON
MODULE (SOM) WITH
OS AND APPS
SYSTEM ON
MODULE (SOM) WITH
OS AND APPS
STACK OF
DEDICATED
BOARDS
STACK OF
DEDICATED
BOARDS
Setup the development environment
●
Android Studio 3.0
– Android 7.0 support for Developer Preview 4
– Android 8.0 support for Developer Preview 5
upwards
●
Google Account
– Access to Android Things Console
●
Hardware
– SOM
– Development Kit
– Sensor, actuators, interfaces
Boards
Intel Edison Intel Joule NXP Pico i.MX6UL Raspberry Pi3
PRICE $55 > $200 $70 $22
SDK
PRICE
$150 > $300 - $22
CPU Atom DC @500Mhz Atom QC @1.5GHz
NXP i.MX6Ultralite ARM
Cortex A7 @500MHz
Broadcom BCM2837
QC @1.2GHz Cortex
A53
RAM 1GB 3-4GB 512MB 1GB
STORA
GE
4GB 8-16GB 4GB microSD
DISPLA
Y
NO HDMI NO HDMI
CAMER
A
NO CSI-2 NO CSI-2
AUDIO USB 2.0 USB 2.0 3.5mm Analog USB 2.0 & 3.5mm Analog
NET WiFi n, BT 4.0 WiFi ac, BT 4.2 Ethernet, WiFi n, BT 4.1 GB Ethernet, WiFi n, BT 4.1
USB USB 2.0 OTG
2x USB 2.0 HOST +
USB 3.0 OTG
USB 2.0 HOST +
USB 2.0 OTG
4x USB 2.0 HOST
GPIO
2x UART, 2x I2C,SPI 2ch,
14 GPIO
4x UART, 5x I2C, 2x SPI, up
to 48 GPIO
8x UART, 4x I2C, 4x SPI, >
20 GPIO
2x UART, 2x I2C, 2x SPI, up
to 26 GPIO
Select a board
●
Intel Edison
– Damn small!
– No UI, no Ethernet
– ADB via USB
– Obsolete (will not receive upgrades), but easily
sold on eBay at afordable price
●
Raspberry Pi3
– Damn cheap!
– Ethernet + WiFi
– HDMI + Camera + lot of
– extension boards: AI+VR+IoT!
– Diferent confgs can be tested swapping the SD
Deployment and update
APP
by Developer
APP
by Developer
OS
by Google
OS
by Google
DEVELOPER
UPDATE
CONSOLE
DEVELOPER
UPDATE
CONSOLE
DeviceDevice
OTA
Console [DEMO]
Bundle
Android Things vs Android
●
No UI == some hacking
– ADB via USB is not available on any board: it
must be confgured over network
– Wireless Network must be confgured using
ADB. See previous item: loop!
– Bluetooth and other stuf must be managed
programatically
●
Power management must be implemented from
scratch
●
RTC could not be available: without time
synhcronization certifcate validation may fail
Hello World!
System.out.println(“Hello World!”);
Hello World! [DEMO]
Hello World!
PeripheralManagerService pms = new PeripheralManagerService();
Gpio LED = pms.openGpio("IO13");
LED.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
LED.setValue(true);
API Extensions
●
General Purpose Input/Output (GPIO)
●
Pulse Width Modulation (PWM)
●
Analog Input
●
I2C
●
UART
●
SPI
Warning
●
Moving from software to hardware playground
requires some skills and attention
●
Boards may accept 3.3v or 5v peripherals or both:
check voltage matching before connecting
devices otherwise you may damage the hardware
●
Flying cables, jumpers, breadboards and misc
tools may cause a short circuit in milliseconds
and fre your beloved workstation
●
Boards with eMMC may be “bricked” if bootloader
update fails. It is strongly recommended to move
early steps on a board with removable storage
(Raspberry Pi3)
General Purpose Input/Output (GPIO)
●
Digital I/O with two logical states (true/false)
mapped on two electrical states (high/low)
PeripheralManagerService pms = new PeripheralManagerService();
List<String> portList = pms.getGpioList();
mGpio = pms.openGpio(portList.get(0));
mGpio.setValue(true | false); // write
boolean state = mGpio.getValue(); // read
General Purpose Input/Output (GPIO)
GpioCallback mGpioCallback = new GpioCallback() {
@Override
public boolean onGpioEdge(Gpio gpio) {
mDevice.getValue(); // Read the active low pin state
return true; // Continue listening for more interrupts
}
@Override
public void onGpioError(Gpio gpio, int error) { }
};
// EDGE_BOTH |EDGE_NONE | EDGE_RISING | EDGE_FALLING
mGpio.setEdgeTriggerType(EDGE_BOTH);
mGpio.registerGpioCallback(mGpioCallback);
GPIO for analog input
●
Android Things API currently does not support
analog input (think about “analogRead()”
provided by Arduino)
●
An Analog To Digital Converter (ADC) must be
used to read voltage level
●
The 2-channel converter ADC0832 can be easily
used to solve this issue
Start communication
Analog input
Clock
Output
Channel
selection
Writing the ADC0832 driver [1]
// configuring GPIO connections
gpioD0.setDirection(Gpio.DIRECTION_IN);
gpioD1.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH);
gpioCLK.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH);
gpioCS.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH);
Writing the ADC0832 driver [2]
// selecting channel 1
for (int i = 0; i < 3; i++) { // Input MUX address
if (i == 0 || i == 1 || ch == 1) { gpioD1.setValue(true); }
else { gpioD1.setValue(false); }
gpioCLK.setValue(true); //Clock signal
gpioCLK.setValue(false);
}
Writing the ADC0832 driver [2]
for (int i = 0; i < 8; i++) { // Read 8 bits from ADC
gpioCLK.setValue(true); //Clock signal
gpioCLK.setValue(false);
ad = ad << 1;
boolean value = gpioD0.getValue();
if (value) {
ad |= 0x01;
}
}
Writing a driver FAQ
●
Is this always so complicated?
– YES
●
Could it be simplifed?
– YES
●
How???
– Using a driver library :-)
●
Where?
– Android Things user-space drivers (by Google)
– Useful Packages and Modules (UPM) and MRAA
(by Intel)
Pulse Width Modulation (PWM)
●
Uses a square wave signal (with assigned
frequency and duty-cycle) to control devices such
as servo motors.
Pulse Width Modulation (PWM)
●
Values for this servo:
– 50HZ , 7.5% -> Neutral position(90°)
– 50HZ , 3.75% -> Min position (0°)
– 50HZ , 11.25% -> Max position (180°)
PeripheralManagerService pms = new PeripheralManagerService();
List<String> portList = pms.getPwmList(); //List of all PWM ports
Pwm mPwm = pms.openPwm(portList.get(0));
mPwm.setPwmFrequencyHz(50);
mPwm.setPwmDutyCycle(7.5);
mPwm.setEnabled(true); //start pulsing
Serial Communication: I2C, UART, SPI
PeripheralManagerService pms = new PeripheralManagerService();
List<String> mI2Cs = pms.getI2cBusList();
List<String> mUARTs = pms.getUartDeviceList();
List<String> mSPIs = pms.getSpiBusList();
Inter-Integrated Circuit (I2C)
●
Synchronous, fxed clock speed, half-duplex,
master-slave (SW), low boundrate
●
Peripheral specs: addresses for all connected
slave, addresses for all information, MSB only
●
Connection:
– Shared clock signal (SCL), Shared data line (SDA)
– Common ground reference (GND)
PeripheralManagerService pms = new PeripheralManagerService();
I2cDevice mI2C = pms.openI2cDevice(I2C_DEVICE_NAME, I2C_ADDRESS);
byte[] data = new byte[3];
mI2C.readRegBuffer(startAddress, data, data.length);
mI2C.writeRegBuffer (startAddress, data, data.length)
Typical I2C devices [DEMO]
Universal Asynchronous Receiver
Transmitter (UART)
●
Every time you see the TX-RX pair, there’s a UART
available!
●
The simplest serial port used for expansion boards
or even home appliances (often for logging)
●
Features: point to point, asynchronous (no clock),
full duplex
●
Peripheral specs: boudrate, parity bit, data size,
stop bit
●
Physical Interface: 3 basic wires TX, RX, GND + 2
optional wires: request to send (RTS) and clear to
send (CTS)
UART: setup
PeripheralManagerService pms = new PeripheralManagerService();
UartDevice uart = pms.openUartDevice(UART_DEVICE_NAME);
mUart.setBaudrate(115200);
// 8N1
mUart.setDataSize(8);
mUart.setParity(UartDevice.PARITY_NONE);
mUart.setStopBits(1);
//enable/disable HW flow control
mUart.setHardwareFlowControl
(UartDevice.HW_FLOW_CONTROL_AUTO_RTSCTS);
mUart.setHardwareFlowControl(UartDevice.HW_FLOW_CONTROL_NONE);
UART: read/write
mUart.write(buffer, buffer.length); mUart.read(buffer, buffer.length));
mUart.registerUartDeviceCallback(new UartDeviceCallback() {
public boolean onUartDeviceDataAvailable(UartDevice uart) {
byte[] buffer = new byte[20];
int count;
try {
while ((count = uart.read(buffer, buffer.length)) > 0) {
Log.d("TAG", "Read " + count + " bytes from peripheral");
}
} catch (IOException e) { Log.d("TAG", "Unable to access UART device");}
return true; // Continue listening for more interrupts
}
public void onUartDeviceError(UartDevice uart, int error) { }
});
RFID Reader [DEMO]
+
NFC badge reader [1/3 DEMO]
private void readNFC() {
try {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("presenze");
PeripheralManagerService pms = new PeripheralManagerService();
UartDevice uart = pms.openUartDevice("UART1");
uart.setBaudrate(19200); uart.setDataSize(8);
uart.setParity(UartDevice.PARITY_NONE); uart.setStopBits(1);
byte[] readCMD = new byte[]{(byte) 0xAA, (byte) 0xBB, 0x02, 0x20, 0x22};
// prefix + 2 bytes
byte[] noTAG_PREFX = new byte[]{(byte) 0xAA, (byte) 0xBB, (byte) 0x02};
// prefix + 1 byte to skip + 4 bytes ID + 1 byte end
byte[] foundTAG_PREFX = new byte[]{(byte) 0xAA, (byte) 0xBB, (byte) 0x06};
NFC badge reader [2/3 DEMO]
byte[] prefix = new byte[3]; byte[] buffer = new byte[6];
byte[] data = new byte[4]; byte[] lastRead = new byte[4];
while (true) {
uart.write(readCMD, 5);
uart.read(prefix, 3);
if (Arrays.equals(prefix, noTAG_PREFX)) {
uart.read(buffer, 2);
} else if (Arrays.equals(prefix, foundTAG_PREFX)) {
uart.read(buffer, 1); // skip 20
uart.read(data, 4);
if (!Arrays.equals(data, lastRead)) {
myRef.child(Long.toString(System.currentTimeMillis())).setValue(Arrays.toString(data));
lastRead = Arrays.copyOf(data, 4);
}
uart.read(buffer, 1); // skip 0D
}
}
NFC badge reader [3/3 DEMO]
} catch (Exception e) { e.printStackTrace(); }
}
private void d(String message) { Log.d("LD17", message); }
}
Serial Peripheral Interface (SPI)
●
Full duplex, synchronous, master-slave (HW)
●
Params: Frequency, BPW, MSB/LSB, CLOCK mode
●
Connection:
●
2 Bus lines
●
Master Out Slave In (MOSI)
●
Master In Slave Out (MISO)
●
Clock [CLK]
●
Slave selection pin [CS or SS]
●
Fastest serial connection available: best to
communicate with slave boards that have
full (and low level) control of all sensor and
actuators
SPI
PeripheralManagerService pms = new PeripheralManagerService();
mSpi = pms.openSpiDevice(SPI_DEVICE_NAME);
mSpi.setMode(SpiDevice.MODE0); // MODE0 | MODE1 | MODE2 | MODE3
mSpi.setFrequency(500000); // 500 KHz
mSpi.setBitsPerWord(8); // 8 BPW
mSpi.setBitJustification(false); // MSB first
// Write & read
mSpi.write(buffer, buffer.length);
byte[] response = new byte[32];
mSpi.read(response, response.length);
48
DEXTER BrickPi
●
Raspberry Pi3 extension module that provides:
– 4 Mindstorms NXT/EV3 Motor ports
– 4 Mindstorms NXT/EV3 Sensor ports
– Extra I2C sensor bus
– SPI interface to Raspberry Pi3
– Uniform request/response binary protocol
– Seamless power management (internal,
external, both)
Never forget to read the release notes!
Never forget to read the release notes!
List<String> portList = mManager.getGpioList();
for (String gpioName: portList) {
Gpio gpio;
if (gpioName.equals("BCM4") ||
gpioName.equals("BCM5") ||
gpioName.equals("BCM6")) {
gpio = mManager.openGpio(gpioName);
gpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);
gpio.setActiveType(Gpio.ACTIVE_HIGH);
gpio.setValue(false);
gpio.close();
}
}
51
BrickPi & LEGO Rover (video)
52
Conclusion
●
Android Things brings the power and richness of
Android Platform to the IoT World
●
Secure, portable, scalable, ready-for-the-cloud,
ready-for-independence :-)
●
Upcoming board with cellular network
connectivity and near-to-wearable devices will
open the doors to new classes of applications and
services
53
Speaker
●
Co-founder GULCh (21 years ago…)
●
Manager @ Open Reply
●
Technical writer
●
Linux User since 1994
●
Android Developer since 2009
●
Billionaire (still to come)
●
Reference
– Twitter: @gerdavax
– http://www.gerdavax.it
– gerdavax presso la posta di Big G
54
Copyright and disclaimer
●
This presentation has been written by Stefano
Sanna and Giovanni Di Gialluca. It has been
derived from “Android Things in action”,
presented at Droidcon 2017 in Turin.
●
This presentation is published under the Creative
Commons License “Attribution-NonCommercial-
ShareAlike 4.0 International”
●
All brands, trademarks and technologies
mentioned in this presentation are properties of
respective owners and they have been used just
for educational purpose.

More Related Content

What's hot

Hack the Real World with ANDROID THINGS
Hack the Real World with ANDROID THINGSHack the Real World with ANDROID THINGS
Hack the Real World with ANDROID THINGSDevFest DC
 
Android Things Robocar with TensorFlow for object recognition
Android Things Robocar with TensorFlow for object recognitionAndroid Things Robocar with TensorFlow for object recognition
Android Things Robocar with TensorFlow for object recognitionDevFest DC
 
[CON3189] JavaOne 2016 - Introduction to Java ME development for the Raspberr...
[CON3189] JavaOne 2016 - Introduction to Java ME development for the Raspberr...[CON3189] JavaOne 2016 - Introduction to Java ME development for the Raspberr...
[CON3189] JavaOne 2016 - Introduction to Java ME development for the Raspberr...Kevin Hooke
 
Con3187 Creating Industrial Middleware with Java ME and Single-Board Computers
Con3187 Creating Industrial Middleware with Java ME and Single-Board ComputersCon3187 Creating Industrial Middleware with Java ME and Single-Board Computers
Con3187 Creating Industrial Middleware with Java ME and Single-Board ComputersJulio Palma Vázquez
 
Android on IA devices and Intel Tools
Android on IA devices and Intel ToolsAndroid on IA devices and Intel Tools
Android on IA devices and Intel ToolsXavier Hallade
 
Windows 10 IoT Core on Raspberry Pi 2 Usine IO
Windows 10 IoT Core on Raspberry Pi 2 Usine IOWindows 10 IoT Core on Raspberry Pi 2 Usine IO
Windows 10 IoT Core on Raspberry Pi 2 Usine IOAlex Danvy
 
Controlling Robots with Javascript, Ruby and Go
Controlling Robots with Javascript, Ruby and GoControlling Robots with Javascript, Ruby and Go
Controlling Robots with Javascript, Ruby and GoColin Loretz
 
Scaling IoT: Telemetry, Command & Control, Analytics and the Cloud
Scaling IoT: Telemetry, Command & Control, Analytics and the CloudScaling IoT: Telemetry, Command & Control, Analytics and the Cloud
Scaling IoT: Telemetry, Command & Control, Analytics and the CloudNick Landry
 
Lets make robots
Lets make robotsLets make robots
Lets make robotsSudar Muthu
 
Confusion of Things — The IoT Hardware Kerfuffle
Confusion of Things — The IoT Hardware KerfuffleConfusion of Things — The IoT Hardware Kerfuffle
Confusion of Things — The IoT Hardware KerfuffleOmer Kilic
 
Chrome game programming_with_for_play
Chrome game programming_with_for_playChrome game programming_with_for_play
Chrome game programming_with_for_playfirenze-gtug
 
Hacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT CoreHacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT CoreNick Landry
 
Arduino vs Raspberry Pi | Which Board to Choose for IoT Projects | IoT Device...
Arduino vs Raspberry Pi | Which Board to Choose for IoT Projects | IoT Device...Arduino vs Raspberry Pi | Which Board to Choose for IoT Projects | IoT Device...
Arduino vs Raspberry Pi | Which Board to Choose for IoT Projects | IoT Device...Edureka!
 
Using arduino and raspberry pi for internet of things
Using arduino and raspberry pi for internet of thingsUsing arduino and raspberry pi for internet of things
Using arduino and raspberry pi for internet of thingsSudar Muthu
 
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...David Fowler
 
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)savageautomate
 
Power optimization for Android apps
Power optimization for Android appsPower optimization for Android apps
Power optimization for Android appsXavier Hallade
 

What's hot (19)

Hack the Real World with ANDROID THINGS
Hack the Real World with ANDROID THINGSHack the Real World with ANDROID THINGS
Hack the Real World with ANDROID THINGS
 
Android Things Robocar with TensorFlow for object recognition
Android Things Robocar with TensorFlow for object recognitionAndroid Things Robocar with TensorFlow for object recognition
Android Things Robocar with TensorFlow for object recognition
 
[CON3189] JavaOne 2016 - Introduction to Java ME development for the Raspberr...
[CON3189] JavaOne 2016 - Introduction to Java ME development for the Raspberr...[CON3189] JavaOne 2016 - Introduction to Java ME development for the Raspberr...
[CON3189] JavaOne 2016 - Introduction to Java ME development for the Raspberr...
 
Con3187 Creating Industrial Middleware with Java ME and Single-Board Computers
Con3187 Creating Industrial Middleware with Java ME and Single-Board ComputersCon3187 Creating Industrial Middleware with Java ME and Single-Board Computers
Con3187 Creating Industrial Middleware with Java ME and Single-Board Computers
 
Android on IA devices and Intel Tools
Android on IA devices and Intel ToolsAndroid on IA devices and Intel Tools
Android on IA devices and Intel Tools
 
Windows 10 IoT Core on Raspberry Pi 2 Usine IO
Windows 10 IoT Core on Raspberry Pi 2 Usine IOWindows 10 IoT Core on Raspberry Pi 2 Usine IO
Windows 10 IoT Core on Raspberry Pi 2 Usine IO
 
Controlling Robots with Javascript, Ruby and Go
Controlling Robots with Javascript, Ruby and GoControlling Robots with Javascript, Ruby and Go
Controlling Robots with Javascript, Ruby and Go
 
Scaling IoT: Telemetry, Command & Control, Analytics and the Cloud
Scaling IoT: Telemetry, Command & Control, Analytics and the CloudScaling IoT: Telemetry, Command & Control, Analytics and the Cloud
Scaling IoT: Telemetry, Command & Control, Analytics and the Cloud
 
Lets make robots
Lets make robotsLets make robots
Lets make robots
 
Confusion of Things — The IoT Hardware Kerfuffle
Confusion of Things — The IoT Hardware KerfuffleConfusion of Things — The IoT Hardware Kerfuffle
Confusion of Things — The IoT Hardware Kerfuffle
 
Arduino1.0 RC
Arduino1.0 RCArduino1.0 RC
Arduino1.0 RC
 
Chrome game programming_with_for_play
Chrome game programming_with_for_playChrome game programming_with_for_play
Chrome game programming_with_for_play
 
Hacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT CoreHacking with the Raspberry Pi and Windows 10 IoT Core
Hacking with the Raspberry Pi and Windows 10 IoT Core
 
Arduino vs Raspberry Pi | Which Board to Choose for IoT Projects | IoT Device...
Arduino vs Raspberry Pi | Which Board to Choose for IoT Projects | IoT Device...Arduino vs Raspberry Pi | Which Board to Choose for IoT Projects | IoT Device...
Arduino vs Raspberry Pi | Which Board to Choose for IoT Projects | IoT Device...
 
Using arduino and raspberry pi for internet of things
Using arduino and raspberry pi for internet of thingsUsing arduino and raspberry pi for internet of things
Using arduino and raspberry pi for internet of things
 
ESP8266 Wifi Nodemcu
ESP8266 Wifi Nodemcu ESP8266 Wifi Nodemcu
ESP8266 Wifi Nodemcu
 
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
IoT simple with the ESP8266 - presented at the July 2015 Austin IoT Hardware ...
 
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
RASPBERRY PI WITH JAVA 8 + Pi4J (Devoxx 2014)
 
Power optimization for Android apps
Power optimization for Android appsPower optimization for Android apps
Power optimization for Android apps
 

Similar to Android Things Linux Day 2017

Android Things in action
Android Things in actionAndroid Things in action
Android Things in actionStefano Sanna
 
20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Jorisimec.archive
 
Python-in-Embedded-systems.pptx
Python-in-Embedded-systems.pptxPython-in-Embedded-systems.pptx
Python-in-Embedded-systems.pptxTuynLCh
 
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON
 
A+ computer hardware slide
A+ computer hardware slideA+ computer hardware slide
A+ computer hardware slideRajendra Tete
 
Intel galileo gen 2
Intel galileo gen 2Intel galileo gen 2
Intel galileo gen 2srknec
 
Syed IoT - module 5
Syed  IoT - module 5Syed  IoT - module 5
Syed IoT - module 5Syed Mustafa
 
Ls catalog thiet bi tu dong gm e_0908_dienhathe.vn
Ls catalog thiet bi tu dong gm e_0908_dienhathe.vnLs catalog thiet bi tu dong gm e_0908_dienhathe.vn
Ls catalog thiet bi tu dong gm e_0908_dienhathe.vnDien Ha The
 
Ls catalog thiet bi tu dong gm e_0908
Ls catalog thiet bi tu dong gm e_0908Ls catalog thiet bi tu dong gm e_0908
Ls catalog thiet bi tu dong gm e_0908Dien Ha The
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitSulamita Garcia
 
Programable logic controller.pdf
Programable logic controller.pdfProgramable logic controller.pdf
Programable logic controller.pdfsravan66
 
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014Takeda Pharmaceuticals
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingAnne Nicolas
 
Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013Tom Paulus
 
PragmaPod-brochure-A4 smaller
PragmaPod-brochure-A4 smallerPragmaPod-brochure-A4 smaller
PragmaPod-brochure-A4 smallerImaginos NDE
 
Arduino Microcontroller
Arduino MicrocontrollerArduino Microcontroller
Arduino MicrocontrollerShyam Mohan
 

Similar to Android Things Linux Day 2017 (20)

Android Things in action
Android Things in actionAndroid Things in action
Android Things in action
 
Arduino Programming Basic
Arduino Programming BasicArduino Programming Basic
Arduino Programming Basic
 
20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris20081114 Friday Food iLabt Bart Joris
20081114 Friday Food iLabt Bart Joris
 
Python-in-Embedded-systems.pptx
Python-in-Embedded-systems.pptxPython-in-Embedded-systems.pptx
Python-in-Embedded-systems.pptx
 
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
 
A+ computer hardware slide
A+ computer hardware slideA+ computer hardware slide
A+ computer hardware slide
 
Intel galileo gen 2
Intel galileo gen 2Intel galileo gen 2
Intel galileo gen 2
 
Arduino
ArduinoArduino
Arduino
 
How to use an Arduino
How to use an ArduinoHow to use an Arduino
How to use an Arduino
 
Syed IoT - module 5
Syed  IoT - module 5Syed  IoT - module 5
Syed IoT - module 5
 
Ls catalog thiet bi tu dong gm e_0908_dienhathe.vn
Ls catalog thiet bi tu dong gm e_0908_dienhathe.vnLs catalog thiet bi tu dong gm e_0908_dienhathe.vn
Ls catalog thiet bi tu dong gm e_0908_dienhathe.vn
 
Ls catalog thiet bi tu dong gm e_0908
Ls catalog thiet bi tu dong gm e_0908Ls catalog thiet bi tu dong gm e_0908
Ls catalog thiet bi tu dong gm e_0908
 
Getting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer KitGetting started with Intel IoT Developer Kit
Getting started with Intel IoT Developer Kit
 
Programable logic controller.pdf
Programable logic controller.pdfProgramable logic controller.pdf
Programable logic controller.pdf
 
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
Hacker's and painters Hardware Hacking 101 - 10th Oct 2014
 
Introduction to Arduino
Introduction to ArduinoIntroduction to Arduino
Introduction to Arduino
 
Embedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debuggingEmbedded Recipes 2019 - Introduction to JTAG debugging
Embedded Recipes 2019 - Introduction to JTAG debugging
 
Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013Getting Started With Raspberry Pi - UCSD 2013
Getting Started With Raspberry Pi - UCSD 2013
 
PragmaPod-brochure-A4 smaller
PragmaPod-brochure-A4 smallerPragmaPod-brochure-A4 smaller
PragmaPod-brochure-A4 smaller
 
Arduino Microcontroller
Arduino MicrocontrollerArduino Microcontroller
Arduino Microcontroller
 

More from Stefano Sanna

Mobile Security su Android - LinuxDay 2018
Mobile Security su Android - LinuxDay 2018Mobile Security su Android - LinuxDay 2018
Mobile Security su Android - LinuxDay 2018Stefano Sanna
 
Introduzione alla tecnologia iBeacon
Introduzione alla tecnologia iBeaconIntroduzione alla tecnologia iBeacon
Introduzione alla tecnologia iBeaconStefano Sanna
 
Augmented Smartphone
Augmented SmartphoneAugmented Smartphone
Augmented SmartphoneStefano Sanna
 
Bluetooth Low Energy
Bluetooth Low EnergyBluetooth Low Energy
Bluetooth Low EnergyStefano Sanna
 
Google TV: la nuova frontiera Android
Google TV: la nuova frontiera AndroidGoogle TV: la nuova frontiera Android
Google TV: la nuova frontiera AndroidStefano Sanna
 
Enlarge your screen: introducing the Google TV
Enlarge your screen: introducing the Google TVEnlarge your screen: introducing the Google TV
Enlarge your screen: introducing the Google TVStefano Sanna
 
NFC: tecnologia e applicazioni
NFC: tecnologia e applicazioniNFC: tecnologia e applicazioni
NFC: tecnologia e applicazioniStefano Sanna
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione AvanzataStefano Sanna
 
HCIM08 - Mobile Applications
HCIM08 - Mobile ApplicationsHCIM08 - Mobile Applications
HCIM08 - Mobile ApplicationsStefano Sanna
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniStefano Sanna
 
Application Store: opportunita' e trappole
Application Store: opportunita' e trappoleApplication Store: opportunita' e trappole
Application Store: opportunita' e trappoleStefano Sanna
 
Android Bluetooth Hacking
Android Bluetooth HackingAndroid Bluetooth Hacking
Android Bluetooth HackingStefano Sanna
 
Free Software e Open Hardware
Free Software e Open HardwareFree Software e Open Hardware
Free Software e Open HardwareStefano Sanna
 
Playing with Mobile 2.0
Playing with Mobile 2.0Playing with Mobile 2.0
Playing with Mobile 2.0Stefano Sanna
 
Comunicazione Pervasiva
Comunicazione PervasivaComunicazione Pervasiva
Comunicazione PervasivaStefano Sanna
 
Introduzione alla tecnologia Sun SPOT
Introduzione alla tecnologia Sun SPOTIntroduzione alla tecnologia Sun SPOT
Introduzione alla tecnologia Sun SPOTStefano Sanna
 
Sensoristica Avanzata per Dispositivi Mobili
Sensoristica Avanzata per Dispositivi MobiliSensoristica Avanzata per Dispositivi Mobili
Sensoristica Avanzata per Dispositivi MobiliStefano Sanna
 

More from Stefano Sanna (20)

Mobile Security su Android - LinuxDay 2018
Mobile Security su Android - LinuxDay 2018Mobile Security su Android - LinuxDay 2018
Mobile Security su Android - LinuxDay 2018
 
Introduzione alla tecnologia iBeacon
Introduzione alla tecnologia iBeaconIntroduzione alla tecnologia iBeacon
Introduzione alla tecnologia iBeacon
 
Augmented Smartphone
Augmented SmartphoneAugmented Smartphone
Augmented Smartphone
 
Bluetooth Low Energy
Bluetooth Low EnergyBluetooth Low Energy
Bluetooth Low Energy
 
Google TV: la nuova frontiera Android
Google TV: la nuova frontiera AndroidGoogle TV: la nuova frontiera Android
Google TV: la nuova frontiera Android
 
Enlarge your screen: introducing the Google TV
Enlarge your screen: introducing the Google TVEnlarge your screen: introducing the Google TV
Enlarge your screen: introducing the Google TV
 
Introduzione ad NFC
Introduzione ad NFCIntroduzione ad NFC
Introduzione ad NFC
 
NFC: tecnologia e applicazioni
NFC: tecnologia e applicazioniNFC: tecnologia e applicazioni
NFC: tecnologia e applicazioni
 
Android - Programmazione Avanzata
Android -  Programmazione AvanzataAndroid -  Programmazione Avanzata
Android - Programmazione Avanzata
 
HCIM08 - Mobile Applications
HCIM08 - Mobile ApplicationsHCIM08 - Mobile Applications
HCIM08 - Mobile Applications
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioni
 
Application Store: opportunita' e trappole
Application Store: opportunita' e trappoleApplication Store: opportunita' e trappole
Application Store: opportunita' e trappole
 
Android Bluetooth Hacking
Android Bluetooth HackingAndroid Bluetooth Hacking
Android Bluetooth Hacking
 
Android
AndroidAndroid
Android
 
Free Software e Open Hardware
Free Software e Open HardwareFree Software e Open Hardware
Free Software e Open Hardware
 
Playing with Mobile 2.0
Playing with Mobile 2.0Playing with Mobile 2.0
Playing with Mobile 2.0
 
Sun SPOT
Sun SPOTSun SPOT
Sun SPOT
 
Comunicazione Pervasiva
Comunicazione PervasivaComunicazione Pervasiva
Comunicazione Pervasiva
 
Introduzione alla tecnologia Sun SPOT
Introduzione alla tecnologia Sun SPOTIntroduzione alla tecnologia Sun SPOT
Introduzione alla tecnologia Sun SPOT
 
Sensoristica Avanzata per Dispositivi Mobili
Sensoristica Avanzata per Dispositivi MobiliSensoristica Avanzata per Dispositivi Mobili
Sensoristica Avanzata per Dispositivi Mobili
 

Recently uploaded

Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Pooja Nehwal
 
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escortsranjana rawat
 
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查awo24iot
 
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...ur8mqw8e
 
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...Pooja Nehwal
 
Top Rated Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
Top Rated  Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...Top Rated  Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
Top Rated Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...Call Girls in Nagpur High Profile
 
Develop Keyboard Skill.pptx er power point
Develop Keyboard Skill.pptx er power pointDevelop Keyboard Skill.pptx er power point
Develop Keyboard Skill.pptx er power pointGetawu
 
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...anilsa9823
 
NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...
NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...
NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...Amil baba
 
Call Girls Dubai Slut Wife O525547819 Call Girls Dubai Gaped
Call Girls Dubai Slut Wife O525547819 Call Girls Dubai GapedCall Girls Dubai Slut Wife O525547819 Call Girls Dubai Gaped
Call Girls Dubai Slut Wife O525547819 Call Girls Dubai Gapedkojalkojal131
 
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikLow Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikCall Girls in Nagpur High Profile
 
Call Girls Kothrud Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Kothrud Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Kothrud Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Kothrud Call Me 7737669865 Budget Friendly No Advance Bookingroncy bisnoi
 
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...Pooja Nehwal
 
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样qaffana
 
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...Pooja Nehwal
 
Top Rated Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated  Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Top Rated  Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Call Girls in Nagpur High Profile
 
Russian Escorts in lucknow 💗 9719455033 💥 Lovely Lasses: Radiant Beauties Shi...
Russian Escorts in lucknow 💗 9719455033 💥 Lovely Lasses: Radiant Beauties Shi...Russian Escorts in lucknow 💗 9719455033 💥 Lovely Lasses: Radiant Beauties Shi...
Russian Escorts in lucknow 💗 9719455033 💥 Lovely Lasses: Radiant Beauties Shi...nagunakhan
 
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...Call Girls in Nagpur High Profile
 
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...ranjana rawat
 

Recently uploaded (20)

Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Sakshi Call 7001035870 Meet With Nagpur Escorts
 
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
Kalyan callg Girls, { 07738631006 } || Call Girl In Kalyan Women Seeking Men ...
 
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escorts
Call Girls in Nagpur Bhavna Call 7001035870 Meet With Nagpur Escorts
 
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查
如何办理(Adelaide毕业证)阿德莱德大学毕业证成绩单Adelaide学历认证真实可查
 
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...
《伯明翰城市大学毕业证成绩单购买》学历证书学位证书区别《复刻原版1:1伯明翰城市大学毕业证书|修改BCU成绩单PDF版》Q微信741003700《BCU学...
 
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...9004554577, Get Adorable Call Girls service. Book call girls & escort service...
9004554577, Get Adorable Call Girls service. Book call girls & escort service...
 
Top Rated Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
Top Rated  Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...Top Rated  Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
Top Rated Pune Call Girls Shirwal ⟟ 6297143586 ⟟ Call Me For Genuine Sex Ser...
 
Develop Keyboard Skill.pptx er power point
Develop Keyboard Skill.pptx er power pointDevelop Keyboard Skill.pptx er power point
Develop Keyboard Skill.pptx er power point
 
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
Lucknow 💋 Call Girls Adil Nagar | ₹,9500 Pay Cash 8923113531 Free Home Delive...
 
NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...
NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...
NO1 Verified Amil Baba In Karachi Kala Jadu In Karachi Amil baba In Karachi A...
 
Call Girls Dubai Slut Wife O525547819 Call Girls Dubai Gaped
Call Girls Dubai Slut Wife O525547819 Call Girls Dubai GapedCall Girls Dubai Slut Wife O525547819 Call Girls Dubai Gaped
Call Girls Dubai Slut Wife O525547819 Call Girls Dubai Gaped
 
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service NashikLow Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
Low Rate Call Girls Nashik Vedika 7001305949 Independent Escort Service Nashik
 
Call Girls Kothrud Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Kothrud Call Me 7737669865 Budget Friendly No Advance BookingCall Girls Kothrud Call Me 7737669865 Budget Friendly No Advance Booking
Call Girls Kothrud Call Me 7737669865 Budget Friendly No Advance Booking
 
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...
Call Girls in Thane 9892124323, Vashi cAll girls Serivces Juhu Escorts, powai...
 
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样
哪里办理美国宾夕法尼亚州立大学毕业证(本硕)psu成绩单原版一模一样
 
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...
9892124323 Pooja Nehwal Call Girls Services Call Girls service in Santacruz A...
 
Top Rated Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated  Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...Top Rated  Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
Top Rated Pune Call Girls Chakan ⟟ 6297143586 ⟟ Call Me For Genuine Sex Serv...
 
Russian Escorts in lucknow 💗 9719455033 💥 Lovely Lasses: Radiant Beauties Shi...
Russian Escorts in lucknow 💗 9719455033 💥 Lovely Lasses: Radiant Beauties Shi...Russian Escorts in lucknow 💗 9719455033 💥 Lovely Lasses: Radiant Beauties Shi...
Russian Escorts in lucknow 💗 9719455033 💥 Lovely Lasses: Radiant Beauties Shi...
 
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
VVIP Pune Call Girls Balaji Nagar (7001035870) Pune Escorts Nearby with Compl...
 
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
(MEGHA) Hinjewadi Call Girls Just Call 7001035870 [ Cash on Delivery ] Pune E...
 

Android Things Linux Day 2017

  • 3. Mr Sulu, our coordinates, please... Physical World Cloud
  • 4. At a glance SAFETY & SECURITY SAFETY & SECURITY HOME APPLIANCES HOME APPLIANCES CONNECTED CARS CONNECTED CARSSMART METERSSMART METERS INDUSTRY 4.0INDUSTRY 4.0 SALES & VENDING SALES & VENDING PORTABILITYPORTABILITY LARGE, VIBRANT, PROFESSIONAL COMMUNITY LARGE, VIBRANT, PROFESSIONAL COMMUNITY FULL-STACK CLOUD SERVICES FULL-STACK CLOUD SERVICES SECURITYSECURITY ON DEVICE INTELLIGENCE ON DEVICE INTELLIGENCE MODERN ARCHITECTURE AND LANGUAGES MODERN ARCHITECTURE AND LANGUAGES
  • 5. Environment ● Same architecture ● Same IDE (Android Studio) ● Same programming language(s) ● Same framework ● Same app (Activity) lifecycle ● Same UI widgets (UI?) ● Same application packaging ● Same reliable security for apps and frmware upgrade ● Same passionate community
  • 7. … more or less! Where is the UI? Where is the UI?
  • 8. Android Things vs Android: in & out Cast Drive Firebase Analytics Firebase Cloud Messaging Firebase Realtime Database Firebase Remote Config Firebase Storage Fit Instance ID Location Nearby Places Mobile Vision Cast Drive Firebase Analytics Firebase Cloud Messaging Firebase Realtime Database Firebase Remote Config Firebase Storage Fit Instance ID Location Nearby Places Mobile Vision CalendarContract ContactsContract DocumentsContract DownloadManager MediaStore Settings Telephony UserDictionary VoicemailContract AdMob Android Pay Firebase App Indexing Firebase Authentication Firebase Dynamic Links Firebase Invites Firebase Notifications Maps Play Games Search Sign-In CalendarContract ContactsContract DocumentsContract DownloadManager MediaStore Settings Telephony UserDictionary VoicemailContract AdMob Android Pay Firebase App Indexing Firebase Authentication Firebase Dynamic Links Firebase Invites Firebase Notifications Maps Play Games Search Sign-In
  • 9. SOM
  • 10. SOM: System On Module A system on a module (SOM) is a board-level circuit that integrates a system function in a single module. A typical SOM consists of: ● a microcontroller, microprocessor or digital signal processor (DSP) ● memory blocks including a selection of ROM, RAM, EEPROM and/or fash memory ● timing sources ● industry standards interface such as USB, FireWire, Ethernet, UART, SPI ● peripherals including counter-timers, real-time timers and power- on reset generators ● analog interfaces including ADCs and DACs ● voltage regulators and power management circuits https://en.wikipedia.org/wiki/System_on_module
  • 11. From prototype... SYSTEM ON MODULE (SOM) WITH OS AND APPS SYSTEM ON MODULE (SOM) WITH OS AND APPS BASEBOARD FOR PROTOTYPING BASEBOARD FOR PROTOTYPING
  • 12. … to production SYSTEM ON MODULE (SOM) WITH OS AND APPS SYSTEM ON MODULE (SOM) WITH OS AND APPS STACK OF DEDICATED BOARDS STACK OF DEDICATED BOARDS
  • 13. Setup the development environment ● Android Studio 3.0 – Android 7.0 support for Developer Preview 4 – Android 8.0 support for Developer Preview 5 upwards ● Google Account – Access to Android Things Console ● Hardware – SOM – Development Kit – Sensor, actuators, interfaces
  • 14. Boards Intel Edison Intel Joule NXP Pico i.MX6UL Raspberry Pi3 PRICE $55 > $200 $70 $22 SDK PRICE $150 > $300 - $22 CPU Atom DC @500Mhz Atom QC @1.5GHz NXP i.MX6Ultralite ARM Cortex A7 @500MHz Broadcom BCM2837 QC @1.2GHz Cortex A53 RAM 1GB 3-4GB 512MB 1GB STORA GE 4GB 8-16GB 4GB microSD DISPLA Y NO HDMI NO HDMI CAMER A NO CSI-2 NO CSI-2 AUDIO USB 2.0 USB 2.0 3.5mm Analog USB 2.0 & 3.5mm Analog NET WiFi n, BT 4.0 WiFi ac, BT 4.2 Ethernet, WiFi n, BT 4.1 GB Ethernet, WiFi n, BT 4.1 USB USB 2.0 OTG 2x USB 2.0 HOST + USB 3.0 OTG USB 2.0 HOST + USB 2.0 OTG 4x USB 2.0 HOST GPIO 2x UART, 2x I2C,SPI 2ch, 14 GPIO 4x UART, 5x I2C, 2x SPI, up to 48 GPIO 8x UART, 4x I2C, 4x SPI, > 20 GPIO 2x UART, 2x I2C, 2x SPI, up to 26 GPIO
  • 15. Select a board ● Intel Edison – Damn small! – No UI, no Ethernet – ADB via USB – Obsolete (will not receive upgrades), but easily sold on eBay at afordable price ● Raspberry Pi3 – Damn cheap! – Ethernet + WiFi – HDMI + Camera + lot of – extension boards: AI+VR+IoT! – Diferent confgs can be tested swapping the SD
  • 16. Deployment and update APP by Developer APP by Developer OS by Google OS by Google DEVELOPER UPDATE CONSOLE DEVELOPER UPDATE CONSOLE DeviceDevice OTA
  • 19. Android Things vs Android ● No UI == some hacking – ADB via USB is not available on any board: it must be confgured over network – Wireless Network must be confgured using ADB. See previous item: loop! – Bluetooth and other stuf must be managed programatically ● Power management must be implemented from scratch ● RTC could not be available: without time synhcronization certifcate validation may fail
  • 22. Hello World! PeripheralManagerService pms = new PeripheralManagerService(); Gpio LED = pms.openGpio("IO13"); LED.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW); LED.setValue(true);
  • 23. API Extensions ● General Purpose Input/Output (GPIO) ● Pulse Width Modulation (PWM) ● Analog Input ● I2C ● UART ● SPI
  • 24. Warning ● Moving from software to hardware playground requires some skills and attention ● Boards may accept 3.3v or 5v peripherals or both: check voltage matching before connecting devices otherwise you may damage the hardware ● Flying cables, jumpers, breadboards and misc tools may cause a short circuit in milliseconds and fre your beloved workstation ● Boards with eMMC may be “bricked” if bootloader update fails. It is strongly recommended to move early steps on a board with removable storage (Raspberry Pi3)
  • 25. General Purpose Input/Output (GPIO) ● Digital I/O with two logical states (true/false) mapped on two electrical states (high/low) PeripheralManagerService pms = new PeripheralManagerService(); List<String> portList = pms.getGpioList(); mGpio = pms.openGpio(portList.get(0)); mGpio.setValue(true | false); // write boolean state = mGpio.getValue(); // read
  • 26. General Purpose Input/Output (GPIO) GpioCallback mGpioCallback = new GpioCallback() { @Override public boolean onGpioEdge(Gpio gpio) { mDevice.getValue(); // Read the active low pin state return true; // Continue listening for more interrupts } @Override public void onGpioError(Gpio gpio, int error) { } }; // EDGE_BOTH |EDGE_NONE | EDGE_RISING | EDGE_FALLING mGpio.setEdgeTriggerType(EDGE_BOTH); mGpio.registerGpioCallback(mGpioCallback);
  • 27. GPIO for analog input ● Android Things API currently does not support analog input (think about “analogRead()” provided by Arduino) ● An Analog To Digital Converter (ADC) must be used to read voltage level ● The 2-channel converter ADC0832 can be easily used to solve this issue Start communication Analog input Clock Output Channel selection
  • 28. Writing the ADC0832 driver [1] // configuring GPIO connections gpioD0.setDirection(Gpio.DIRECTION_IN); gpioD1.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH); gpioCLK.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH); gpioCS.setDirection(Gpio.DIRECTION_OUT_INITIALLY_HIGH);
  • 29. Writing the ADC0832 driver [2] // selecting channel 1 for (int i = 0; i < 3; i++) { // Input MUX address if (i == 0 || i == 1 || ch == 1) { gpioD1.setValue(true); } else { gpioD1.setValue(false); } gpioCLK.setValue(true); //Clock signal gpioCLK.setValue(false); }
  • 30. Writing the ADC0832 driver [2] for (int i = 0; i < 8; i++) { // Read 8 bits from ADC gpioCLK.setValue(true); //Clock signal gpioCLK.setValue(false); ad = ad << 1; boolean value = gpioD0.getValue(); if (value) { ad |= 0x01; } }
  • 31. Writing a driver FAQ ● Is this always so complicated? – YES ● Could it be simplifed? – YES ● How??? – Using a driver library :-) ● Where? – Android Things user-space drivers (by Google) – Useful Packages and Modules (UPM) and MRAA (by Intel)
  • 32. Pulse Width Modulation (PWM) ● Uses a square wave signal (with assigned frequency and duty-cycle) to control devices such as servo motors.
  • 33. Pulse Width Modulation (PWM) ● Values for this servo: – 50HZ , 7.5% -> Neutral position(90°) – 50HZ , 3.75% -> Min position (0°) – 50HZ , 11.25% -> Max position (180°) PeripheralManagerService pms = new PeripheralManagerService(); List<String> portList = pms.getPwmList(); //List of all PWM ports Pwm mPwm = pms.openPwm(portList.get(0)); mPwm.setPwmFrequencyHz(50); mPwm.setPwmDutyCycle(7.5); mPwm.setEnabled(true); //start pulsing
  • 34. Serial Communication: I2C, UART, SPI PeripheralManagerService pms = new PeripheralManagerService(); List<String> mI2Cs = pms.getI2cBusList(); List<String> mUARTs = pms.getUartDeviceList(); List<String> mSPIs = pms.getSpiBusList();
  • 35. Inter-Integrated Circuit (I2C) ● Synchronous, fxed clock speed, half-duplex, master-slave (SW), low boundrate ● Peripheral specs: addresses for all connected slave, addresses for all information, MSB only ● Connection: – Shared clock signal (SCL), Shared data line (SDA) – Common ground reference (GND) PeripheralManagerService pms = new PeripheralManagerService(); I2cDevice mI2C = pms.openI2cDevice(I2C_DEVICE_NAME, I2C_ADDRESS); byte[] data = new byte[3]; mI2C.readRegBuffer(startAddress, data, data.length); mI2C.writeRegBuffer (startAddress, data, data.length)
  • 37. Universal Asynchronous Receiver Transmitter (UART) ● Every time you see the TX-RX pair, there’s a UART available! ● The simplest serial port used for expansion boards or even home appliances (often for logging) ● Features: point to point, asynchronous (no clock), full duplex ● Peripheral specs: boudrate, parity bit, data size, stop bit ● Physical Interface: 3 basic wires TX, RX, GND + 2 optional wires: request to send (RTS) and clear to send (CTS)
  • 38. UART: setup PeripheralManagerService pms = new PeripheralManagerService(); UartDevice uart = pms.openUartDevice(UART_DEVICE_NAME); mUart.setBaudrate(115200); // 8N1 mUart.setDataSize(8); mUart.setParity(UartDevice.PARITY_NONE); mUart.setStopBits(1); //enable/disable HW flow control mUart.setHardwareFlowControl (UartDevice.HW_FLOW_CONTROL_AUTO_RTSCTS); mUart.setHardwareFlowControl(UartDevice.HW_FLOW_CONTROL_NONE);
  • 39. UART: read/write mUart.write(buffer, buffer.length); mUart.read(buffer, buffer.length)); mUart.registerUartDeviceCallback(new UartDeviceCallback() { public boolean onUartDeviceDataAvailable(UartDevice uart) { byte[] buffer = new byte[20]; int count; try { while ((count = uart.read(buffer, buffer.length)) > 0) { Log.d("TAG", "Read " + count + " bytes from peripheral"); } } catch (IOException e) { Log.d("TAG", "Unable to access UART device");} return true; // Continue listening for more interrupts } public void onUartDeviceError(UartDevice uart, int error) { } });
  • 41. NFC badge reader [1/3 DEMO] private void readNFC() { try { FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("presenze"); PeripheralManagerService pms = new PeripheralManagerService(); UartDevice uart = pms.openUartDevice("UART1"); uart.setBaudrate(19200); uart.setDataSize(8); uart.setParity(UartDevice.PARITY_NONE); uart.setStopBits(1); byte[] readCMD = new byte[]{(byte) 0xAA, (byte) 0xBB, 0x02, 0x20, 0x22}; // prefix + 2 bytes byte[] noTAG_PREFX = new byte[]{(byte) 0xAA, (byte) 0xBB, (byte) 0x02}; // prefix + 1 byte to skip + 4 bytes ID + 1 byte end byte[] foundTAG_PREFX = new byte[]{(byte) 0xAA, (byte) 0xBB, (byte) 0x06};
  • 42. NFC badge reader [2/3 DEMO] byte[] prefix = new byte[3]; byte[] buffer = new byte[6]; byte[] data = new byte[4]; byte[] lastRead = new byte[4]; while (true) { uart.write(readCMD, 5); uart.read(prefix, 3); if (Arrays.equals(prefix, noTAG_PREFX)) { uart.read(buffer, 2); } else if (Arrays.equals(prefix, foundTAG_PREFX)) { uart.read(buffer, 1); // skip 20 uart.read(data, 4); if (!Arrays.equals(data, lastRead)) { myRef.child(Long.toString(System.currentTimeMillis())).setValue(Arrays.toString(data)); lastRead = Arrays.copyOf(data, 4); } uart.read(buffer, 1); // skip 0D } }
  • 43. NFC badge reader [3/3 DEMO] } catch (Exception e) { e.printStackTrace(); } } private void d(String message) { Log.d("LD17", message); } }
  • 44. Serial Peripheral Interface (SPI) ● Full duplex, synchronous, master-slave (HW) ● Params: Frequency, BPW, MSB/LSB, CLOCK mode ● Connection: ● 2 Bus lines ● Master Out Slave In (MOSI) ● Master In Slave Out (MISO) ● Clock [CLK] ● Slave selection pin [CS or SS] ● Fastest serial connection available: best to communicate with slave boards that have full (and low level) control of all sensor and actuators
  • 45. SPI PeripheralManagerService pms = new PeripheralManagerService(); mSpi = pms.openSpiDevice(SPI_DEVICE_NAME); mSpi.setMode(SpiDevice.MODE0); // MODE0 | MODE1 | MODE2 | MODE3 mSpi.setFrequency(500000); // 500 KHz mSpi.setBitsPerWord(8); // 8 BPW mSpi.setBitJustification(false); // MSB first // Write & read mSpi.write(buffer, buffer.length); byte[] response = new byte[32]; mSpi.read(response, response.length);
  • 46. 48 DEXTER BrickPi ● Raspberry Pi3 extension module that provides: – 4 Mindstorms NXT/EV3 Motor ports – 4 Mindstorms NXT/EV3 Sensor ports – Extra I2C sensor bus – SPI interface to Raspberry Pi3 – Uniform request/response binary protocol – Seamless power management (internal, external, both)
  • 47. Never forget to read the release notes!
  • 48. Never forget to read the release notes! List<String> portList = mManager.getGpioList(); for (String gpioName: portList) { Gpio gpio; if (gpioName.equals("BCM4") || gpioName.equals("BCM5") || gpioName.equals("BCM6")) { gpio = mManager.openGpio(gpioName); gpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW); gpio.setActiveType(Gpio.ACTIVE_HIGH); gpio.setValue(false); gpio.close(); } }
  • 49. 51 BrickPi & LEGO Rover (video)
  • 50. 52 Conclusion ● Android Things brings the power and richness of Android Platform to the IoT World ● Secure, portable, scalable, ready-for-the-cloud, ready-for-independence :-) ● Upcoming board with cellular network connectivity and near-to-wearable devices will open the doors to new classes of applications and services
  • 51. 53 Speaker ● Co-founder GULCh (21 years ago…) ● Manager @ Open Reply ● Technical writer ● Linux User since 1994 ● Android Developer since 2009 ● Billionaire (still to come) ● Reference – Twitter: @gerdavax – http://www.gerdavax.it – gerdavax presso la posta di Big G
  • 52. 54 Copyright and disclaimer ● This presentation has been written by Stefano Sanna and Giovanni Di Gialluca. It has been derived from “Android Things in action”, presented at Droidcon 2017 in Turin. ● This presentation is published under the Creative Commons License “Attribution-NonCommercial- ShareAlike 4.0 International” ● All brands, trademarks and technologies mentioned in this presentation are properties of respective owners and they have been used just for educational purpose.