Arduinos, application servers, and me: Adventures in and out of the cloud

183
© 2013 IBM Corporation Arduinos, Application Servers, and me

Transcript of Arduinos, application servers, and me: Adventures in and out of the cloud

© 2013 IBM Corporation

Arduinos,!Application Servers,!

and me

© 2013 IBM Corporation@holly_cummins

© 2013 IBM Corporation@holly_cummins

?

© 2013 IBM Corporation@holly_cummins

© 2013 IBM Corporation@holly_cummins

© 2013 IBM Corporation@holly_cummins

© 2013 IBM Corporation@holly_cummins

© 2013 IBM Corporation@holly_cummins

© 2013 IBM Corporation@holly_cummins

© 2013 IBM Corporation@holly_cummins

“Computers in the future may weigh no more than 1.5 tons.”

!Popular Mechanics,

1949 !

© 2013 IBM Corporation@holly_cummins

“I think there is a world market for maybe five computers.”

Thomas Watson chairman of IBM

1943

© 2013 IBM Corporation@holly_cummins

Then: HARDware

© 2013 IBM Corporation@holly_cummins

Now: Everyware

© 2013 IBM Corporation@holly_cummins

Next: Connected-ware

© 2013 IBM Corporation@holly_cummins

Why care about the Internet of Things?

© 2013 IBM Corporation@holly_cummins

Why care about the Internet of Things?

It’s the future.

© 2013 IBM Corporation@holly_cummins

Why care about the Internet of Things?

It’s the future.“This could really benefit my business.”

© 2013 IBM Corporation@holly_cummins

Why care about the Internet of Things?

It’s the future.“This could really benefit my business.”

“This is so FUN and COOL and OOH I made it LIGHT UP!”

© 2013 IBM Corporation@holly_cummins

Poll-time.

© 2013 IBM Corporation@holly_cummins

Hmm.We’ll come back to this.

© 2013 IBM Corporation@holly_cummins

Working with IoT

© 2013 IBM Corporation@holly_cummins

Working with IoT: step 1

© 2013 IBM Corporation@holly_cummins

Working with IoT: step 1

“No, I did NOT mean jot. I meant iot. Gah!”

© 2013 IBM Corporation@holly_cummins

Working with IoT: step 1

“No, I did NOT mean jot. I meant iot. Gah!”

© 2013 IBM Corporation@holly_cummins

Working with IoT: step 2

Get some kit

© 2013 IBM Corporation@holly_cummins

Taxonomy of embedded devices

© 2013 IBM Corporation@holly_cummins

Taxonomy of embedded devices

Microcontroller

© 2013 IBM Corporation@holly_cummins

Taxonomy of embedded devices

MicrocontrollerSort-of-a-computer

© 2013 IBM Corporation@holly_cummins

Taxonomy of embedded devices

MicrocontrollerSort-of-a-computer

Microprocessor

© 2013 IBM Corporation@holly_cummins

Taxonomy of embedded devices

MicrocontrollerSort-of-a-computer

MicroprocessorReally-a-computer

© 2013 IBM Corporation@holly_cummins

The microcontroller zoo

© 2013 IBM Corporation@holly_cummins

The microcontroller zoo

PIC (£2)

© 2013 IBM Corporation@holly_cummins

The microcontroller zoo

PIC (£2)Arduino (£23)

© 2013 IBM Corporation@holly_cummins

The microcontroller zoo

PIC (£2)Arduino (£23)Arduino-compatible (£9)

© 2013 IBM Corporation@holly_cummins

The microcontroller zoo

PIC (£2)Arduino (£23)Arduino-compatible (£9)NetDuino (£48)

© 2013 IBM Corporation@holly_cummins

The microcontroller zoo

PIC (£2)Arduino (£23)Arduino-compatible (£9)NetDuino (£48).NET micro platform

© 2013 IBM Corporation@holly_cummins

Arduino

© 2013 IBM Corporation@holly_cummins

Arduino No on-board ethernet

© 2013 IBM Corporation@holly_cummins

Arduino No on-board ethernet

Thing, but no internet

© 2013 IBM Corporation@holly_cummins

Arduino No on-board ethernet

Thing, but no internetCan buy an ethernet shield (£10)

© 2013 IBM Corporation@holly_cummins

Arduino No on-board ethernet

Thing, but no internetCan buy an ethernet shield (£10)Can buy wi-fi shield (£36, and no WPA2)

© 2013 IBM Corporation@holly_cummins

Arduino No on-board ethernet

Thing, but no internetCan buy an ethernet shield (£10)Can buy wi-fi shield (£36, and no WPA2)Can buy a raspberry pi (£20)

© 2013 IBM Corporation@holly_cummins

Arduino No on-board ethernet

Thing, but no internetCan buy an ethernet shield (£10)Can buy wi-fi shield (£36, and no WPA2)Can buy a raspberry pi (£20)Can find a raspberry pi in a drawer (free!)

© 2013 IBM Corporation@holly_cummins

The single board computer zoo

© 2013 IBM Corporation@holly_cummins

The single board computer zoo

Rasberry pi (£25)

© 2013 IBM Corporation@holly_cummins

The single board computer zoo

Rasberry pi (£25)No wi-fi

© 2013 IBM Corporation@holly_cummins

The single board computer zoo

Rasberry pi (£25)No wi-fiNo flash storage

© 2013 IBM Corporation@holly_cummins

The single board computer zoo

Rasberry pi (£25)No wi-fiNo flash storageNo pins

© 2013 IBM Corporation@holly_cummins

The single board computer zoo

Rasberry pi (£25)No wi-fiNo flash storageNo pins

Netduino (£48)

© 2013 IBM Corporation@holly_cummins

The single board computer zoo

Rasberry pi (£25)No wi-fiNo flash storageNo pins

Netduino (£48).NET based

© 2013 IBM Corporation@holly_cummins

The single board computer zoo

Rasberry pi (£25)No wi-fiNo flash storageNo pins

Netduino (£48).NET based

pcDuino (£50)

© 2013 IBM Corporation@holly_cummins

The single board computer zoo

Rasberry pi (£25)No wi-fiNo flash storageNo pins

Netduino (£48).NET based

pcDuino (£50)BeagleBone black (£42)

© 2013 IBM Corporation@holly_cummins

The single board computer zoo

Rasberry pi (£25)No wi-fiNo flash storageNo pins

Netduino (£48).NET based

pcDuino (£50)BeagleBone black (£42)

© 2013 IBM Corporation@holly_cummins

Raspberry Pi

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25Huge community

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25Huge community

Well-supported

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25Huge community

Well-supportedSlow

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25Huge community

Well-supportedSlow

Limited RAM

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25Huge community

Well-supportedSlow

Limited RAMOld-model processor

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25Huge community

Well-supportedSlow

Limited RAMOld-model processorSD storage

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25Huge community

Well-supportedSlow

Limited RAMOld-model processorSD storage

Needs Arduino for IoT applications

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25Huge community

Well-supportedSlow

Limited RAMOld-model processorSD storage

Needs Arduino for IoT applicationsUSB is not my friend

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25Huge community

Well-supportedSlow

Limited RAMOld-model processorSD storage

Needs Arduino for IoT applicationsUSB is not my friend

Insufficient power for reliable wi-fi

© 2013 IBM Corporation@holly_cummins

Raspberry Pi£25Huge community

Well-supportedSlow

Limited RAMOld-model processorSD storage

Needs Arduino for IoT applicationsUSB is not my friend

Insufficient power for reliable wi-fiContention if used for wi-fi and Arduino

© 2013 IBM Corporation@holly_cummins

pcDuino

© 2013 IBM Corporation@holly_cummins

pcDuino£50

© 2013 IBM Corporation@holly_cummins

pcDuino£50Powerful

© 2013 IBM Corporation@holly_cummins

pcDuino£50Powerful

1 GHz ARM A7Cortex Dual core

© 2013 IBM Corporation@holly_cummins

pcDuino£50Powerful

1 GHz ARM A7Cortex Dual core1 GB RAM

© 2013 IBM Corporation@holly_cummins

pcDuino£50Powerful

1 GHz ARM A7Cortex Dual core1 GB RAM4 GB Flash Storage

© 2013 IBM Corporation@holly_cummins

pcDuino£50Powerful

1 GHz ARM A7Cortex Dual core1 GB RAM4 GB Flash Storage

On-board wi-fi

© 2013 IBM Corporation@holly_cummins

pcDuino£50Powerful

1 GHz ARM A7Cortex Dual core1 GB RAM4 GB Flash Storage

On-board wi-fiArduino-compatible pins (sort of)

© 2013 IBM Corporation@holly_cummins

pcDuino£50Powerful

1 GHz ARM A7Cortex Dual core1 GB RAM4 GB Flash Storage

On-board wi-fiArduino-compatible pins (sort of)

© 2013 IBM Corporation@holly_cummins

pcDuino£50Powerful

1 GHz ARM A7Cortex Dual core1 GB RAM4 GB Flash Storage

On-board wi-fiArduino-compatible pins (sort of)Connectors for battery (sort of)

© 2013 IBM Corporation@holly_cummins

pcDuino£50Powerful

1 GHz ARM A7Cortex Dual core1 GB RAM4 GB Flash Storage

On-board wi-fiArduino-compatible pins (sort of)Connectors for battery (sort of)

© 2013 IBM Corporation@holly_cummins

Going mobile

© 2013 IBM Corporation@holly_cummins

Going mobile

PcDuino battery

interface

© 2013 IBM Corporation@holly_cummins

Going mobilePopular

embeddable battery

PcDuino battery

interface

© 2013 IBM Corporation@holly_cummins

Going mobilePopular

embeddable battery

PcDuino battery

interface

© 2013 IBM Corporation@holly_cummins

Going mobilePopular

embeddable battery

PcDuino battery

interface

JST-PH

© 2013 IBM Corporation@holly_cummins

Going mobilePopular

embeddable battery

PcDuino battery

interface

JST-PH

© 2013 IBM Corporation@holly_cummins

Going mobilePopular

embeddable battery

PcDuino battery

interface

JST-PHJST-SH

© 2013 IBM Corporation@holly_cummins

BeagleBone black£42!1 GHz processor!Not arduino-compatible out of the box

© 2013 IBM Corporation@holly_cummins

Arduino Yún

© 2013 IBM Corporation@holly_cummins

Arduino Yún £57

© 2013 IBM Corporation@holly_cummins

Arduino Yún £57A microcontroller …

© 2013 IBM Corporation@holly_cummins

Arduino Yún £57A microcontroller …sharing a chip with an Atheros microprocessor

© 2013 IBM Corporation@holly_cummins

Arduino Yún £57A microcontroller …sharing a chip with an Atheros microprocessor

… that runs Linux (limited)

© 2013 IBM Corporation@holly_cummins

Arduino Yún £57A microcontroller …sharing a chip with an Atheros microprocessor

… that runs Linux (limited)… and has WiFi and ethernet

© 2013 IBM Corporation@holly_cummins

Embedded devices are changing

Modern microcontrollers are more powerful than microprocessors from a few years ago

© 2013 IBM Corporation@holly_cummins

Why is more powerful better?

You can do more!!You can know less!

© 2013 IBM Corporation@holly_cummins

Why is more powerful better?

You can do more!!You can know less!different things

© 2013 IBM Corporation@holly_cummins

Why is less powerful better

© 2013 IBM Corporation@holly_cummins

Why is less powerful better

Smaller

© 2013 IBM Corporation@holly_cummins

Why is less powerful better

SmallerLower power consumption

© 2013 IBM Corporation@holly_cummins

Why is less powerful better

SmallerLower power consumptionCheaper!

© 2013 IBM Corporation@holly_cummins

Why is less powerful better

SmallerLower power consumptionCheaper!Can buy a PIC microcontroller for £2

© 2013 IBM Corporation@holly_cummins

Why is more powerful better?

You can have an application server!!JPA!Rest!WebSockets!CDI

© 2013 IBM Corporation@holly_cummins

Ubiquitous computing++

© 2013 IBM Corporation@holly_cummins

Ubiquitous computing++

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

A great fit for embeddables

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

A great fit for embeddablesVery very lightweight

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

A great fit for embeddablesVery very lightweight

50 MB download

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

A great fit for embeddablesVery very lightweight

50 MB download60 MB footprint for biggish JEE app

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

A great fit for embeddablesVery very lightweight

50 MB download60 MB footprint for biggish JEE appStarts in under 5s

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

A great fit for embeddablesVery very lightweight

50 MB download60 MB footprint for biggish JEE appStarts in under 5s

Entirely modular and dynamic

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

A great fit for embeddablesVery very lightweight

50 MB download60 MB footprint for biggish JEE appStarts in under 5s

Entirely modular and dynamicPowered by OSGi …

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

A great fit for embeddablesVery very lightweight

50 MB download60 MB footprint for biggish JEE appStarts in under 5s

Entirely modular and dynamicPowered by OSGi …(originally designed for embedded systems)

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

A great fit for embeddablesVery very lightweight

50 MB download60 MB footprint for biggish JEE appStarts in under 5s

Entirely modular and dynamicPowered by OSGi …(originally designed for embedded systems)

No restarts!

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

Free tools

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

Free toolsFree for development

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

Free toolsFree for developmentNew licensing: free for small-scale production

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

Free toolsFree for developmentNew licensing: free for small-scale productionUp 2 GB RAM free per organisation

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

Free toolsFree for developmentNew licensing: free for small-scale productionUp 2 GB RAM free per organisationA great fit for embedables

© 2013 IBM Corporation@holly_cummins

WebSphere Liberty Profile

Free toolsFree for developmentNew licensing: free for small-scale productionUp 2 GB RAM free per organisationA great fit for embedables

Unlikely to use 2 GB RAM on a raspberry pi

© 2013 IBM Corporation@holly_cummins

Where have I seen this before?

© 2013 IBM Corporation@holly_cummins

Cloud-Embeddable convergence

© 2013 IBM Corporation@holly_cummins

Cloud-Embeddable convergence

Density

© 2013 IBM Corporation@holly_cummins

Cloud-Embeddable convergence

Density

© 2013 IBM Corporation@holly_cummins

Cloud-Embeddable convergence

Small download

Density

© 2013 IBM Corporation@holly_cummins

Cloud-Embeddable convergence

Small downloadSmall memory

footprint

Density

© 2013 IBM Corporation@holly_cummins

Cloud-Embeddable convergence

Small downloadSmall memory

footprint

Density Elasticity

© 2013 IBM Corporation@holly_cummins

Cloud-Embeddable convergence

Small downloadSmall memory

footprint

Density Elasticity

© 2013 IBM Corporation@holly_cummins

Cloud-Embeddable convergence

Small downloadSmall memory

footprint

Density Elasticity

© 2013 IBM Corporation@holly_cummins

Enable and disable function

Cloud-Embeddable convergence

Small downloadSmall memory

footprint

Density Elasticity

© 2013 IBM Corporation@holly_cummins

Enable and disable functionFor extra points, do it

dynamically

Cloud-Embeddable convergence

Small downloadSmall memory

footprint

Density Elasticity

© 2013 IBM Corporation@holly_cummins

Enable and disable functionFor extra points, do it

dynamicallyEasy install

Cloud-Embeddable convergence

Small downloadSmall memory

footprint

Density Elasticity

© 2013 IBM Corporation@holly_cummins

Enable and disable functionFor extra points, do it

dynamicallyEasy install

Easy uninstall

Cloud-Embeddable convergence

Small downloadSmall memory

footprint

Density Elasticity

© 2013 IBM Corporation@holly_cummins

© 2013 IBM Corporation@holly_cummins

Managing headless devices

© 2013 IBM Corporation@holly_cummins

Managing headless devices

© 2013 IBM Corporation@holly_cummins

Managing headless devices

Most single-board computers accessible with HDMI display and USB keyboard.

© 2013 IBM Corporation@holly_cummins

Managing headless devices

Most single-board computers accessible with HDMI display and USB keyboard.

Works fine…

© 2013 IBM Corporation@holly_cummins

Managing headless devices

Most single-board computers accessible with HDMI display and USB keyboard.

Works fine…If you have a display and

cable and keyboard

© 2013 IBM Corporation@holly_cummins

Managing headless devices

Most single-board computers accessible with HDMI display and USB keyboard.

Works fine…If you have a display and

cable and keyboardIf the display drivers

support the display

© 2013 IBM Corporation@holly_cummins

Managing headless devices

Most single-board computers accessible with HDMI display and USB keyboard.

Works fine…If you have a display and

cable and keyboardIf the display drivers

support the display

© 2013 IBM Corporation@holly_cummins

Workflow for “pi and seek”

© 2013 IBM Corporation@holly_cummins

Workflow for “pi and seek”

Ethernet cable

© 2013 IBM Corporation@holly_cummins

Workflow for “pi and seek”

Ethernet cable

DHCP

© 2013 IBM Corporation@holly_cummins

Workflow for “pi and seek”

Ethernet cable

DHCP

Network sharing

© 2013 IBM Corporation@holly_cummins

Getting a connection

© 2013 IBM Corporation@holly_cummins

Finding the IP addressmy-mac:~ holly$ ifconfig | grep -A3 bridge100bridge100: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 options=3<RXCSUM,TXCSUM> ether 3e:07:54:e0:26:64 inet 192.168.2.1 netmask 0xffffff00 broadcast 192.168.2.255!my-mac:~ holly$ nmap -sn 192.168.2.0/24!Starting Nmap 6.47 ( http://nmap.org ) at 2015-02-28 16:26 GMTStrange error from connect (65):No route to hostNmap scan report for 192.168.2.3Host is up (0.00056s latency).Nmap done: 256 IP addresses (1 host up) scanned in 4.16 seconds

© 2013 IBM Corporation@holly_cummins

A bit of textile engineering.

© 2013 IBM Corporation@holly_cummins

A bit of textile engineering.

© 2013 IBM Corporation@holly_cummins

Ta-daa!

© 2013 IBM Corporation@holly_cummins

Ta-daa!

Presenting: The WebSphere Sphere

© 2013 IBM Corporation@holly_cummins

Ta-daa!

Presenting: The WebSphere Sphere

(“the cuddly application server”)

© 2013 IBM Corporation@holly_cummins

Remind you of anything?

© 2013 IBM Corporation@holly_cummins

Um. But it’s lumpy.

© 2013 IBM Corporation@holly_cummins

Um. But it’s lumpy.Software faults can be corrected without re-typing the whole program.

© 2013 IBM Corporation@holly_cummins

Um. But it’s lumpy.Software faults can be corrected without re-typing the whole program.

Lucky software engineers.

© 2013 IBM Corporation@holly_cummins

Um. But it’s lumpy.Software faults can be corrected without re-typing the whole program.

Lucky software engineers.Iterative development of physical things is hard.

© 2013 IBM Corporation@holly_cummins

It’s a computer case

© 2013 IBM Corporation@holly_cummins

Architecture

Sensors

SSID: WebSphereembedded

application server

© 2013 IBM Corporation@holly_cummins

Interfacing the ball to the computer

LED sequins

© 2013 IBM Corporation@holly_cummins

Soft circuits

Conductive thread !Stainless steel!Sewable!

£6.78

© 2013 IBM Corporation@holly_cummins

Soft-hard connections

Normal jumper lead!Strip connector off one side!Solder to sewable eye

© 2013 IBM Corporation@holly_cummins

The physical world

© 2013 IBM Corporation@holly_cummins

The physical worldShorts

© 2013 IBM Corporation@holly_cummins

The physical worldShortsExtra-bad on a pcDuino, because they take down whole computer

© 2013 IBM Corporation@holly_cummins

The physical worldShortsExtra-bad on a pcDuino, because they take down whole computer

Loose connections

© 2013 IBM Corporation@holly_cummins

The physical worldShortsExtra-bad on a pcDuino, because they take down whole computer

Loose connectionsExtra bad in something sealed

© 2013 IBM Corporation@holly_cummins

Shields

© 2013 IBM Corporation@holly_cummins

Shields

Daughter-boards for Arduino

© 2013 IBM Corporation@holly_cummins

Shields

Daughter-boards for ArduinoRe-arrange pins

© 2013 IBM Corporation@holly_cummins

Shields

Daughter-boards for ArduinoRe-arrange pinsProvide extra function

© 2013 IBM Corporation@holly_cummins

Shields

Daughter-boards for ArduinoRe-arrange pinsProvide extra functionProvide mechanical protection if a computer is crammed inside a ball

© 2013 IBM Corporation@holly_cummins

Let’s have a play

http://10.12.5.15:9080/sphere

© 2013 IBM Corporation@holly_cummins

But is it really IoT?

© 2013 IBM Corporation@holly_cummins

But is it really IoT?Definitely embedded.

© 2013 IBM Corporation@holly_cummins

But is it really IoT?Definitely embedded.Very very embedded.

© 2013 IBM Corporation@holly_cummins

But is it really IoT?Definitely embedded.Very very embedded.

One thing.

© 2013 IBM Corporation@holly_cummins

But is it really IoT?Definitely embedded.Very very embedded.

One thing. Network, but not internet.

© 2013 IBM Corporation@holly_cummins

But is it really IoT?Definitely embedded.Very very embedded.

One thing. Network, but not internet.No machine-to-machine.

© 2013 IBM Corporation@holly_cummins

M2MMQTT!Lightweight messaging protocol!OASIS standard!Widely supported!Widely used

© 2013 IBM Corporation@holly_cummins

Revised architecture

© 2013 IBM Corporation@holly_cummins

Revised architectureSame source

© 2013 IBM Corporation@holly_cummins

!

Demo-time (again)

sphere.mybluemix.net/ www.wasdev.net

© 2013 IBM Corporation@holly_cummins

Bluemix and IoT foundation // parse VCAP_SERVICES String VCAP_SERVICES = System.getenv("VCAP_SERVICES");! JSONObject vcap = new JSONObject(VCAP_SERVICES); JSONArray json = vcap.getJSONArray("iotf-service"); JSONObject credentials = json.getJSONObject(0).getJSONObject( "credentials"); String host = (String) credentials.get("mqtt_host"); Integer port = (Integer) credentials.get("mqtt_u_port"); …! MqttClient client = new MqttClient(uri, id); MqttConnectOptions opts = new MqttConnectOptions(); opts.setUserName(username); opts.setPassword(password.toCharArray()); client.connect(opts); client.setCallback(this); client.subscribe("iot-2/type/+/id/+/evt/+/fmt/+");

© 2013 IBM Corporation@holly_cummins

www.wasdev.net

!

Any questions? !

www.wasdev.net @holly_cummins

Come see the Liberty car on the IBM stand today and tomorrow …