hardware prototyping for software developers

42
Hardware Prototyping for Software Developers Andy Carle, PhD @PrototypingAndy @Kinoma kinoma.com

Upload: kinoma

Post on 16-Jul-2015

1.756 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Hardware Prototyping for Software Developers

Hardware Prototypingfor Software Developers

Andy Carle, PhD@PrototypingAndy@Kinoma kinoma.com

Page 2: Hardware Prototyping for Software Developers

Scope: Connected Devices

Page 3: Hardware Prototyping for Software Developers

Two Goals

Expand the Developer Pool

Improve Outcomes for Existing Developers

Page 4: Hardware Prototyping for Software Developers

Two Solutions

ToolsProcess

@Kinoma

Page 5: Hardware Prototyping for Software Developers

KinomaP L AT F O R M R U N T I M E

@Kinoma

Page 6: Hardware Prototyping for Software Developers

Today’s IoT Developer Landscape

Native Language

Developers

Processing Developers

Node.js & Python DevelopersWeb Front-End Developers Product Designers

@Kinoma

Page 7: Hardware Prototyping for Software Developers

ITERATE

ITERATE

ITERATE

Making It: The Old (Current) Way

Ship it!

Get funding

Prototype on Arduino

(Processing)

Prototype on BeagleBone/Raspberry Pi

(Interpreted languages)Prove concept Abandon

all progressLearn that platform

isn’t production-ready

Learn native language

Re-build it all on target platform

A YEAR LATER

@Kinoma

Page 8: Hardware Prototyping for Software Developers

ITERATE

ITERATE

ITERATE

Making It: The Old (Current) Way

Ship it!

Get funding

Prototype on Arduino

(Processing)

Prototype on BeagleBone/Raspberry Pi

(Interpreted languages)Prove concept Abandon

all progressLearn that platform

isn’t production-ready

Learn native language

Re-build it all on target platform

A YEAR LATER

The Chasm of Despair

@Kinoma

Page 9: Hardware Prototyping for Software Developers

Waterfall

Verification

Maintenance

Requirements Product requirements document

Design Software architecture

Implementation Software

@Kinoma

Page 10: Hardware Prototyping for Software Developers

We Should Be Doing Better

DESIGN PROTOTYPE TESTITERATE

Software Simulation

Hardware Simulation

Prototyping Hardware

Custom Hardware

DESIGN PROTOTYPE TESTITERATE

DESIGN PROTOTYPE TESTITERATE

DESIGN PROTOTYPE TESTITERATE

@Kinoma

Page 11: Hardware Prototyping for Software Developers

Process Goals• Preserve progress between prototypes – Application code – I/O libraries – Look and feel

• Make user tests as authentic as possible • Small jumps between prototype generations – Cost – Time

@Kinoma

Page 12: Hardware Prototyping for Software Developers

Software SimulationSoftware

Kinoma PlatformRuntime (KPR)

Native

Interpreted

HTML

Mobile app framework

Android

iOS

@Kinoma

Page 13: Hardware Prototyping for Software Developers

Hardware SimulationSoftware

Simulated Hardware

Kinoma PlatformRuntime (KPR)

Native

Interpreted

HTML

Mobile app framework

Android

iOS

Kinoma simulator

Simulatorfor Arduino

CPU emulator (e.g. QEMU)

Android simulator

iOS simulator

@Kinoma

Page 14: Hardware Prototyping for Software Developers

Off-the-Shelf Prototyping HardwareSoftware

Simulated Hardware

Prototyping Hardware

Kinoma PlatformRuntime (KPR)

Native

Interpreted

HTML

Mobile app framework

Android

iOS

Kinoma simulator

Simulatorfor Arduino

CPU emulator (e.g. QEMU)

Android simulator

iOS simulator

Kinoma Create

Arduino

Galileo

PIC Dev

Raspberry Pi

BeagleBone

Android + IOIO× ×@Kinoma

Page 15: Hardware Prototyping for Software Developers

(Affordable) Custom HardwareSoftware

Simulated Hardware

Prototyping Hardware

Custom Hardware

Kinoma PlatformRuntime (KPR)

Native

Interpreted

HTML

Mobile app framework

Android

iOS

Kinoma simulator

Simulatorfor Arduino

CPU emulator (e.g. QEMU)

Android simulator

iOS simulator

Kinoma Create

Arduino

Galileo

PIC Dev

Raspberry Pi

BeagleBone

Android + IOIO

Marvell ARM

x86

MIPS

ARM× × ×

?

××××

?

@Kinoma

Page 16: Hardware Prototyping for Software Developers

• Saving time allows you to focus on

• Industrial design

• Companion app

• User testing

• Community building

• Crowdfunding campaign management

• Investor relations

• Building a brand

Don’t Re-engineer: Expand Priorities

@Kinoma

Page 17: Hardware Prototyping for Software Developers

Tools: Getting Started

Language Platform@Kinoma

Page 18: Hardware Prototyping for Software Developers

The “Right” Tools Are Arcane

@Kinoma

Page 19: Hardware Prototyping for Software Developers

“Just Make it Work” vs “Make it Useable”

@Kinoma

Page 20: Hardware Prototyping for Software Developers

☑ Web (Desktop)

☑ Mobile (Apps and Web)

☑ Server

☐ Embedded

JavaScript’s One Frontier Left to Conquer

@Kinoma

Page 21: Hardware Prototyping for Software Developers

We are preaching the religion of JavaScript for embedded and Internet of Things development.

• Performance

• Memory

• User scripting

• Familiar syntax

• JavaScript coders build cool stuff fast

JavaScript is Ready for the Challenge

@Kinoma

Page 22: Hardware Prototyping for Software Developers

Popular Frameworks Aren’t IoT Ready• Browser-based solutions: Too heavy for IoT devices

• Node.js: Server solution being shoehorned into the embedded space

• Qt: Designed for desktop, too much of a catch-all of features

• Lua: Less popular than assembly and COBOL, so difficult to find talent and no significant ecosystem

@Kinoma

Page 23: Hardware Prototyping for Software Developers

Manage the hardware

• Power • Sensors • Schedulers

@Kinoma

Page 24: Hardware Prototyping for Software Developers

Manage the hardware

Operate theuser interface

• Power • Sensors • Schedulers

• Buttons • Lights • Screens

@Kinoma

Page 25: Hardware Prototyping for Software Developers

Manage the hardware

Operate theuser interface

Coordinatecommunication

• Power • Sensors • Schedulers

• Buttons • Lights • Screens

• Network • Devices • Cloud

@Kinoma

Page 26: Hardware Prototyping for Software Developers

Digitalmedia

Manage the hardware

Operate theuser interface

Coordinatecommunication

• Photos • Music • Video

• Power • Sensors • Schedulers

• Buttons • Lights • Screens

• Network • Devices • Cloud

@Kinoma

Page 27: Hardware Prototyping for Software Developers

@Kinoma

Page 28: Hardware Prototyping for Software Developers

@Kinoma

Page 29: Hardware Prototyping for Software Developers

Usability as a First-Order Design Goal

@Kinoma

Page 30: Hardware Prototyping for Software Developers

Kinoma Create

@Kinoma

Page 31: Hardware Prototyping for Software Developers
Page 32: Hardware Prototyping for Software Developers
Page 33: Hardware Prototyping for Software Developers

Assembling your Raspberry Pi enclosure is relatively straightforward if you’ve ever built any t-slot based laser cut stuff before, but here’s a full guide…

@Kinoma

Page 34: Hardware Prototyping for Software Developers

@Kinoma

Page 35: Hardware Prototyping for Software Developers
Page 36: Hardware Prototyping for Software Developers
Page 37: Hardware Prototyping for Software Developers

Kinoma Create

@Kinoma

Page 38: Hardware Prototyping for Software Developers

Kinoma Create

@Kinoma

Page 39: Hardware Prototyping for Software Developers
Page 40: Hardware Prototyping for Software Developers
Page 41: Hardware Prototyping for Software Developers

Thank you!Andy Carle, PhD

@PrototypingAndy@Kinoma

kinoma.com

Page 42: Hardware Prototyping for Software Developers

• “Inclinometer on Arduino” photo from flickr.com/27164521@N00, used under CC Attribution 2.0 Generic license

• “BeagleBone” photo from flickr.com/embecosm, used under CC Attribution-ShareAlike 2.0 Generic license

• Programming languages image from http://geoawesomeness.com/learning-gis-programming-an-overview/

• Raspberry Pi enclosure photo from http://www.built-to-spec.com/blog/kit-instructions/new-raspberry-pi-enclosure-assembly/

• Raspberry Pi enclosure photo from http://www.raspberrypi.org/forums/viewtopic.php?t=6424

• Raspberry Pi enclosure photo from http://www.ikeahackers.net/2013/05/raspberry-pi-pruta-case.html

Credits