An Arduino, an Application, Server, and me - Adventures In and Out of the Cloud by Holly Cummins

A presentation at Coding Serbia in October 2015 in Novi Sad, Serbia by Holly Cummins

Slide 1

Slide 1

Arduinos, Application Servers, and me Holly Cummins @holly_cummins © 2015 IBM Corporation

Slide 2

Slide 2

#arduinoappserver @holly_cummins

Slide 3

Slide 3

? #arduinoappserver @holly_cummins

Slide 4

Slide 4

#arduinoappserver @holly_cummins

Slide 5

Slide 5

#arduinoappserver @holly_cummins

Slide 6

Slide 6

#arduinoappserver @holly_cummins

Slide 7

Slide 7

#arduinoappserver @holly_cummins

Slide 8

Slide 8

#arduinoappserver @holly_cummins

Slide 9

Slide 9

“I think there is a world market for maybe five computers.” Thomas Watson chairman of IBM 1943 #arduinoadventures @holly_cummins

Slide 10

Slide 10

Then: HARDware #arduinoadventures @holly_cummins

Slide 11

Slide 11

Now: Everyware #arduinoadventures @holly_cummins

Slide 12

Slide 12

Next: Connected-ware #arduinoadventures @holly_cummins

Slide 13

Slide 13

Why care about the Internet of Things? #arduinoadventures @holly_cummins

Slide 14

Slide 14

Why care about the Internet of Things? This could really benefit my business #arduinoadventures @holly_cummins

Slide 15

Slide 15

Why care about the Internet of Things? This could really benefit my business #arduinoadventures This is so FUN and COOL and OOH I made it LIGHT UP!” @holly_cummins

Slide 16

Slide 16

Poll-time. #arduinoadventures @holly_cummins

Slide 17

Slide 17

Hmm. Can we be more precise? #arduinoadventures @holly_cummins

Slide 18

Slide 18

A bit of textile engineering. #arduinoadventures @holly_cummins

Slide 19

Slide 19

A bit more textile engineering. #arduinoadventures @holly_cummins

Slide 20

Slide 20

Ta-daa! #arduinoadventures @holly_cummins

Slide 21

Slide 21

Ta-daa! Presenting: The WebSphere Sphere #arduinoadventures @holly_cummins

Slide 22

Slide 22

Ta-daa! Presenting: The WebSphere Sphere (“the cuddly application server”) #arduinoadventures @holly_cummins

Slide 23

Slide 23

Remind you of anything? #arduinoadventures @holly_cummins

Slide 24

Slide 24

Not really. It’s very lumpy, isn’t it? #arduinoadventures @holly_cummins

Slide 25

Slide 25

Software faults can be corrected without re-typing the whole program. #arduinoadventures @holly_cummins

Slide 26

Slide 26

It’s a computer case #arduinoadventures @holly_cummins

Slide 27

Slide 27

Interfacing the ball to the computer LED sequins #arduinoadventures @holly_cummins

Slide 28

Slide 28

Soft circuits #arduinoadventures @holly_cummins

Slide 29

Slide 29

Soft circuits Conductive thread #arduinoadventures @holly_cummins

Slide 30

Slide 30

Soft circuits Conductive thread £6.78 #arduinoadventures @holly_cummins

Slide 31

Slide 31

Soft circuits Stainless steel Conductive thread £6.78 #arduinoadventures @holly_cummins

Slide 32

Slide 32

Soft circuits Stainless steel Conductive thread £6.78 #arduinoadventures Solderable @holly_cummins

Slide 33

Slide 33

Soft circuits Stainless steel Conductive thread £6.78 Solderable Sewable #arduinoadventures @holly_cummins

Slide 34

Slide 34

Architecture Sensors embedded application server #arduinoadventures @holly_cummins

Slide 35

Slide 35

Let’s have a play SSID: sphere password: websphere #arduinoadventures @holly_cummins

Slide 36

Slide 36

Let’s have a play http://192.168.8.1/sphere SSID: sphere password: websphere #arduinoadventures @holly_cummins

Slide 37

Slide 37

The physical world useful stuff #arduinoadventures @holly_cummins

Slide 38

Slide 38

The physical world useful stuff #arduinoadventures @holly_cummins

Slide 39

Slide 39

The physical world useful stuff Short #arduinoadventures @holly_cummins

Slide 40

Slide 40

The physical world useful stuff Short pcDuino #arduinoadventures @holly_cummins

Slide 41

Slide 41

The physical world useful stuff Short pcDuino #arduinoadventures @holly_cummins

Slide 42

Slide 42

The physical world useful stuff #arduinoadventures @holly_cummins

Slide 43

Slide 43

The physical world useful stuff #arduinoadventures @holly_cummins

Slide 44

Slide 44

The physical world useful stuff Loose connection #arduinoadventures @holly_cummins

Slide 45

Slide 45

The physical world sealed unit useful stuff Loose connection #arduinoadventures @holly_cummins

Slide 46

Slide 46

#arduinoadventures @holly_cummins

Slide 47

Slide 47

“Loose” connection #arduinoadventures @holly_cummins

Slide 48

Slide 48

What’s running it? #arduinoadventures @holly_cummins

Slide 49

Slide 49

Ubiquitous computing++ #arduinoadventures @holly_cummins

Slide 50

Slide 50

Ubiquitous computing++ #arduinoadventures @holly_cummins

Slide 51

Slide 51

Cloud-Embeddable convergence #arduinoadventures @holly_cummins

Slide 52

Slide 52

Cloud-Embeddable convergence Density #arduinoadventures @holly_cummins

Slide 53

Slide 53

Cloud-Embeddable convergence Density Small download Small memory footprint #arduinoadventures @holly_cummins

Slide 54

Slide 54

Cloud-Embeddable convergence Density Elasticity Small download Small memory footprint #arduinoadventures @holly_cummins

Slide 55

Slide 55

Cloud-Embeddable convergence Density Elasticity Enable and disable function …dynamically Small download Small memory footprint #arduinoadventures Easy install Easy uninstall @holly_cummins

Slide 56

Slide 56

But is it really IoT? #arduinoadventures @holly_cummins

Slide 57

Slide 57

But is it really IoT? #arduinoadventures @holly_cummins

Slide 58

Slide 58

But is it really IoT? Thing #arduinoadventures @holly_cummins

Slide 59

Slide 59

But is it really IoT? Embedded thing #arduinoadventures @holly_cummins

Slide 60

Slide 60

But is it really IoT? Very very embedded thing #arduinoadventures @holly_cummins

Slide 61

Slide 61

But is it really IoT? Network, but not internet Very very embedded thing #arduinoadventures @holly_cummins

Slide 62

Slide 62

But is it really IoT? #arduinoadventures @holly_cummins

Slide 63

Slide 63

But is it really IoT? No machine-tomachine #arduinoadventures @holly_cummins

Slide 64

Slide 64

M2M #arduinoadventures @holly_cummins

Slide 65

Slide 65

#arduinoadventures @holly_cummins

Slide 66

Slide 66

Revised architecture #arduinoadventures @holly_cummins

Slide 67

Slide 67

Revised architecture IBM IoT Foundation #arduinoadventures @holly_cummins

Slide 68

Slide 68

Revised architecture IBM IoT Foundation #arduinoadventures Same source code @holly_cummins

Slide 69

Slide 69

http://sphere.mybluemix.net/sphere #arduinoadventures @holly_cummins

Slide 70

Slide 70

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/+”); #arduinoadventures @holly_cummins

Slide 71

Slide 71

Working with IoT #arduinoadventures @holly_cummins

Slide 72

Slide 72

Working with IoT: step 1 #arduinoadventures @holly_cummins

Slide 73

Slide 73

Working with IoT: step 1 “No, I did NOT mean jot. I meant iot. Gah!” #arduinoadventures @holly_cummins

Slide 74

Slide 74

Working with IoT: step 1 “No, I did NOT mean jot. I meant iot. Gah!” #arduinoadventures @holly_cummins

Slide 75

Slide 75

Working with IoT: step 2 #arduinoadventures @holly_cummins

Slide 76

Slide 76

Working with IoT: step 2 Get some kit #arduinoadventures @holly_cummins

Slide 77

Slide 77

Taxonomy of embedded devices #arduinoadventures @holly_cummins

Slide 78

Slide 78

Taxonomy of embedded devices Microcontroller #arduinoadventures @holly_cummins

Slide 79

Slide 79

Taxonomy of embedded devices Microcontroller Microprocessor #arduinoadventures @holly_cummins

Slide 80

Slide 80

Taxonomy of embedded devices Microcontroller Microprocessor Sort-of-a-computer #arduinoadventures @holly_cummins

Slide 81

Slide 81

Taxonomy of embedded devices Microcontroller Microprocessor Sort-of-a-computer Really-a-computer #arduinoadventures @holly_cummins

Slide 82

Slide 82

The microcontroller zoo #arduinoadventures @holly_cummins

Slide 83

Slide 83

The microcontroller zoo #arduinoadventures @holly_cummins

Slide 84

Slide 84

The microcontroller zoo PIC £2 #arduinoadventures @holly_cummins

Slide 85

Slide 85

The microcontroller zoo PIC £2 NetDuino £48 #arduinoadventures @holly_cummins

Slide 86

Slide 86

The microcontroller zoo Arduino £23 PIC £2 NetDuino £48 #arduinoadventures @holly_cummins

Slide 87

Slide 87

The microcontroller zoo Arduino £23 Arduino-compatible £9 #arduinoadventures PIC £2 NetDuino £48 @holly_cummins

Slide 88

Slide 88

Arduino #arduinoadventures @holly_cummins

Slide 89

Slide 89

Arduino £23 #arduinoadventures @holly_cummins

Slide 90

Slide 90

Arduino Ethernet £23 #arduinoadventures @holly_cummins

Slide 91

Slide 91

Arduino £23 #arduinoadventures @holly_cummins

Slide 92

Slide 92

Arduino NO Ethernet £23 #arduinoadventures @holly_cummins

Slide 93

Slide 93

Arduino NO Ethernet NO Wi-fi £23 #arduinoadventures @holly_cummins

Slide 94

Slide 94

Arduino NO Ethernet NO Wi-fi £23 #arduinoadventures Internet of Things @holly_cummins

Slide 95

Slide 95

Arduino NO Ethernet NO Wi-fi £23 #arduinoadventures Things @holly_cummins

Slide 96

Slide 96

Connecting an Arduino to the Internet #arduinoadventures @holly_cummins

Slide 97

Slide 97

Connecting an Arduino to the Internet #arduinoadventures @holly_cummins

Slide 98

Slide 98

Connecting an Arduino to the Internet Ethernet shield #arduinoadventures @holly_cummins

Slide 99

Slide 99

Connecting an Arduino to the Internet Ethernet shield £10 #arduinoadventures @holly_cummins

Slide 100

Slide 100

Connecting an Arduino to the Internet Ethernet shield £10 #arduinoadventures @holly_cummins

Slide 101

Slide 101

Connecting an Arduino to the Internet Ethernet shield £10 #arduinoadventures Wi-fi shield @holly_cummins

Slide 102

Slide 102

Connecting an Arduino to the Internet Ethernet shield £10 Wi-fi shield £36 #arduinoadventures @holly_cummins

Slide 103

Slide 103

Connecting an Arduino to the Internet Ethernet shield £10 Wi-fi shield £36 #arduinoadventures @holly_cummins

Slide 104

Slide 104

Connecting an Arduino to the Internet Ethernet shield £10 Wi-fi shield £36 #arduinoadventures Raspberry pi @holly_cummins

Slide 105

Slide 105

Connecting an Arduino to the Internet Ethernet shield £25 £10 Wi-fi shield £36 #arduinoadventures Raspberry pi @holly_cummins

Slide 106

Slide 106

Connecting an Arduino to the Internet Ethernet shield free £10 Wi-fi shield £36 #arduinoadventures Raspberry pi @holly_cummins

Slide 107

Slide 107

#arduinoadventures @holly_cummins

Slide 108

Slide 108

Managing headless devices #arduinoadventures @holly_cummins

Slide 109

Slide 109

Managing headless devices #arduinoadventures @holly_cummins

Slide 110

Slide 110

Managing headless devices HDMI display #arduinoadventures @holly_cummins

Slide 111

Slide 111

Managing headless devices HDMI display USB keyboard #arduinoadventures @holly_cummins

Slide 112

Slide 112

Managing headless devices #arduinoadventures @holly_cummins

Slide 113

Slide 113

Managing headless devices #arduinoadventures @holly_cummins

Slide 114

Slide 114

Managing headless devices #arduinoadventures @holly_cummins

Slide 115

Slide 115

Managing headless devices #arduinoadventures @holly_cummins

Slide 116

Slide 116

Workflow for “pi and seek” #arduinoadventures @holly_cummins

Slide 117

Slide 117

Workflow for “pi and seek” Ethernet cable #arduinoadventures @holly_cummins

Slide 118

Slide 118

Workflow for “pi and seek” Ethernet cable DHCP #arduinoadventures @holly_cummins

Slide 119

Slide 119

Workflow for “pi and seek” Ethernet cable Network sharing DHCP #arduinoadventures @holly_cummins

Slide 120

Slide 120

Getting a connection #arduinoadventures @holly_cummins

Slide 121

Slide 121

Finding the IP address my-mac:~ holly$ ifconfig | grep -A3 bridge100 bridge100: 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 GMT Strange error from connect (65):No route to host Nmap scan report for 192.168.2.3 Host is up (0.00056s latency). Nmap done: 256 IP addresses (1 host up) scanned in 4.16 seconds #arduinoadventures @holly_cummins

Slide 122

Slide 122

The single board computer zoo #arduinoadventures @holly_cummins

Slide 123

Slide 123

Raspberry Pi #arduinoadventures @holly_cummins

Slide 124

Slide 124

Raspberry Pi £25 #arduinoadventures @holly_cummins

Slide 125

Slide 125

Raspberry Pi GPIO pins SD storage Oldish CPU £25 RAM (some) USB #arduinoadventures @holly_cummins

Slide 126

Slide 126

Raspberry Pi GPIO pins SD storage Oldish CPU £25 RAM (some) USB (not my friend) #arduinoadventures @holly_cummins

Slide 127

Slide 127

Raspberry Pi SD storage GPIO pins (no analog pins) Oldish CPU £25 RAM (some) USB (not my friend) #arduinoadventures @holly_cummins

Slide 128

Slide 128

Raspberry Pi 2 #arduinoadventures @holly_cummins

Slide 129

Slide 129

Raspberry Pi 2 £30 #arduinoadventures @holly_cummins

Slide 130

Slide 130

Raspberry Pi 2 GPIO pins SD storage New CPU £30 RAM (more) USB #arduinoadventures @holly_cummins

Slide 131

Slide 131

Raspberry Pi 2 GPIO pins SD storage New CPU £30 RAM (more) USB (more) #arduinoadventures @holly_cummins

Slide 132

Slide 132

Raspberry Pi 2 SD storage GPIO pins (no analog pins) New CPU £30 RAM (more) USB (more) #arduinoadventures @holly_cummins

Slide 133

Slide 133

BeagleBone black #arduinoadventures @holly_cummins

Slide 134

Slide 134

BeagleBone black £42 #arduinoadventures @holly_cummins

Slide 135

Slide 135

BeagleBone black Ethernet 1 GHz CPU 2 Microcontrollers £42 #arduinoadventures 4 GB flash storage 512 MB RAM @holly_cummins

Slide 136

Slide 136

Arduino Yún #arduinoadventures @holly_cummins

Slide 137

Slide 137

Arduino Yún £57 #arduinoadventures @holly_cummins

Slide 138

Slide 138

Arduino Yún Atheros microprocessor Ethernet Arduino microcontroller Wi-fi £57 #arduinoadventures @holly_cummins

Slide 139

Slide 139

pcDuino #arduinoadventures @holly_cummins

Slide 140

Slide 140

pcDuino #arduinoadventures @holly_cummins

Slide 141

Slide 141

pcDuino £60 #arduinoadventures @holly_cummins

Slide 142

Slide 142

pcDuino Battery connector Wi-fi Dual-core CPU 4 GB flash storage £60 #arduinoadventures “Arduino-ish” pins 1 GB RAM @holly_cummins

Slide 143

Slide 143

#arduinoadventures @holly_cummins

Slide 144

Slide 144

PcDuino battery interface #arduinoadventures @holly_cummins

Slide 145

Slide 145

Popular embeddable battery PcDuino battery interface #arduinoadventures @holly_cummins

Slide 146

Slide 146

Popular embeddable battery PcDuino battery interface #arduinoadventures @holly_cummins

Slide 147

Slide 147

Popular embeddable battery JST-PH PcDuino battery interface #arduinoadventures @holly_cummins

Slide 148

Slide 148

Popular embeddable battery JST-PH PcDuino battery interface #arduinoadventures @holly_cummins

Slide 149

Slide 149

Popular embeddable battery JST-PH JST-SH PcDuino battery interface #arduinoadventures @holly_cummins

Slide 150

Slide 150

“The board features a difficult-to-get JST-SH connector. You won’t find a battery with a ready-made fivepin JST-SH connector. ” http://wt.tuxomania.net #arduinoadventures @holly_cummins

Slide 151

Slide 151

“The board features a difficult-to-get JST-SH connector. You won’t find a battery with a ready-made fivepin JST-SH connector. ” !&!^@*! http://wt.tuxomania.net #arduinoadventures @holly_cummins

Slide 152

Slide 152

#arduinoadventures @holly_cummins

Slide 153

Slide 153

#arduinoadventures @holly_cummins

Slide 154

Slide 154

Power. #arduinoadventures @holly_cummins

Slide 155

Slide 155

You can do more. #arduinoadventures @holly_cummins

Slide 156

Slide 156

You can know less. #arduinoadventures @holly_cummins

Slide 157

Slide 157

You can know different things. #arduinoadventures @holly_cummins

Slide 158

Slide 158

You can know different things. #arduinoadventures @holly_cummins

Slide 159

Slide 159

But … #arduinoadventures @holly_cummins

Slide 160

Slide 160

£30 #arduinoadventures @holly_cummins

Slide 161

Slide 161

£2 #arduinoadventures @holly_cummins

Slide 162

Slide 162

#arduinoadventures @holly_cummins

Slide 163

Slide 163

Size #arduinoadventures @holly_cummins

Slide 164

Slide 164

#arduinoadventures @holly_cummins

Slide 165

Slide 165

A power brick #arduinoadventures @holly_cummins

Slide 166

Slide 166

A power brick (sorry) #arduinoadventures @holly_cummins

Slide 167

Slide 167

Then again … #arduinoadventures @holly_cummins

Slide 168

Slide 168

You can have an application server! #arduinoadventures @holly_cummins

Slide 169

Slide 169

#arduinoadventures @holly_cummins

Slide 170

Slide 170

#arduinoadventures @holly_cummins

Slide 171

Slide 171

#arduinoadventures @holly_cummins

Slide 172

Slide 172

#arduinoadventures @holly_cummins

Slide 173

Slide 173

#arduinoadventures @holly_cummins

Slide 174

Slide 174

Any questions? www.wasdev.net www.wasdev.net @holly_cummins #arduinoadventures @holly_cummins