android things - the iot platform for everyone

Post on 21-Jan-2018

441 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Rebecca Franksriggaroo.co.za

@riggaroo

TheIoTplatformforeveryone

Hello

Rebecca Franks

Android Engineering Lead at Dynamic Visual Technologies

Google Developer Expert for Android

riggaroo.co.za

@riggaroo

Expectation vs Reality

What is Android Things?

Android Things is an extension of the Android platform for IoT and embedded devices.

CamerasGatewaysHVAC ControlSmart Meters

Point of SaleInventory ControlInteractive AdsVending Machines

Security SystemsSmart DoorbellsRoutersEnergy Monitors

Asset TrackingFleet ManagementDriver AssistPredictive Service

Ideal for powerful, intelligent devices that need to be secure.

How is Android Things different?

Android Studio

Android SDKs& Developer Tools

Firebase Libraries

Google Cloud Platform SDKs

Any other compatible Android/Java libraries...

IoT Developer Console

Automatic Security Updates

Signed Images Verified Boot

Easy and Secure Deployment

SoMArchitecture

Google Managed BSP

Scaling to Production

Android Things for Developers

Displays are Optional

Consider Alternate UI

Cons

● Only Dev Preview

● Weave not yet available for Android Things

● Very new - Not many examples online - mostly Python

● Some APIs not supported - ie hardwareAcceleration

● Closed Source

Electronics Basics

Components

Breadboard - Construction base for prototyping electronics

Jumper Wire - Used to interconnect the components of a breadboard

LEDs - Emits visible light when an electric current passes through it

Push Switches - Allows electricity to flow between its two contacts

Components

Resistor -Used to reduce current flow

Source: http://www.electronicshub.or g/resistor-color-code/

Components

and many more...

Ohm’s Law

The current through a conductor between two points is directly proportional to the voltage across the two points.

V = I * R V is Voltage (volts)I is Current (amps) R is Resistance (ohms)

I = 0.023AV = 5V

R = 5V / 0.023A R = ± 217 ohms

Building an Android Things app

Pinout Diagram

Fritzing Diagrams

Integrating with Hardware

GPIO

PWM

I2C

SPI

UART

Input

Sensors

GPS

Peripheral Driver

Library

Peripheral I/O

User Drivers

Let’s try live coding..

In case of emergency

● A Raspberry Pi 3 or alternative - Running Android Things

● Create standard project in Android Studio

● Add to app level build.gradle:

provided 'com.google.android.things:androidthings:...'

Getting Started

<application ...>

<uses-library android:name="com.google.android.things"/>

<activity ...>

...

<!-- Launch activity automatically on boot -->

<intent-filter>

<action android:name="android.intent.action.MAIN"/>

<category android:name="android.intent.category.IOT_LAUNCHER"/>

<category android:name="android.intent.category.DEFAULT"/>

</intent-filter>

</activity>

</application>

AndroidManifest.xml

Button button = new Button("BCM6", Button.LogicState.PRESSED_WHEN_LOW);

button.setOnButtonEventListener(new Button.OnButtonEventListener() {

@Override

public void onButtonEvent(final Button button, final boolean pressed) {

//...

Log.i(TAG, "Button value changed:" + pressed);

ledGpio.setValue(pressed);

}

});

Button Press

compile 'com.google.android.things.contrib:driver-button:0.2'

//get access to the pin

PeripheralManagerService service = new PeripheralManagerService();

ledGpio = service.openGpio("BCM6");

ledGpio.setDirection(Gpio.DIRECTION_OUT_INITIALLY_LOW);

ledGpio.setValue(true);

//remember to close the peripheral

ledGpio.close();

Turn on an LED

Turn it on or off using Firebase Realtime DB

FirebaseDatabase.getInstance().getReference("ledKitchen")

.addValueEventListener(new ValueEventListener() {

@Override

public void onDataChange(final DataSnapshot dataSnapshot) {

Boolean value = (Boolean) dataSnapshot.getValue();

ledGpio.setValue(value);

//.. handle exceptions

}

//..

});

Demo

Other Examples

https://github.com/riggaroo/android-things-distributed-piano

Distributed Piano

https://github.com/riggaroo/android-things-electricity-monitor

Firebase Realtime Database

Electricity Monitor

final DatabaseReference onlineRef = firebaseDatabase.child(".info/connected");

final DatabaseReference isPowerOnRef = firebaseDatabase.child("/online");

onlineRef.addValueEventListener(new ValueEventListener() {

@Override

public void onDataChange(final DataSnapshot dataSnapshot) {

if (dataSnapshot.getValue(Boolean.class)) {

isPowerOnRef.setValue(true);

isPowerOnRef.onDisconnect().setValue(false);

}

}

//..

});

Electricity Monitor - Firebase

https://github.com/androidthings/sample-tensorflow-imageclassifier

Image Classifier

Image Classifier

Rebecca Franksriggaroo.co.za@riggaroo

Google's IoT Developers Communityhttps://g.co/iotdev

Google's IoT Solutionshttps://iot.google.com

Android Things SDKhttps://developer.android.com/things

Rebecca Franksriggaroo.co.za@riggaroo

www.devconf.co.za/rate

● https://www.myelectronicslab.com/tutorial/raspberry-pi-3-gpio-model-b-block-pinout/

● https://developers.google.com/weave/● https://techcrunch.com/2015/10/24/why-iot-security-is-so-critical/● https://github.com/androidthings/sample-simplepio/● https://developer.android.com/things/index.html● https://github.com/riggaroo/android-things-electricity-monitor● https://github.com/riggaroo/android-things-distributed-piano● https://github.com/riggaroo/android-things-button-examples

Links & References

top related