Hardware Prototyping for Software Developers

Preview:

Citation preview

Hardware Prototypingfor Software Developers

Andy Carle, PhD@PrototypingAndy@Kinoma kinoma.com

Scope: Connected Devices

Two Goals

Expand the Developer Pool

Improve Outcomes for Existing Developers

Two Solutions

ToolsProcess

@Kinoma

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

@Kinoma

Today’s IoT Developer Landscape

Native Language

Developers

Processing Developers

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

@Kinoma

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

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

Waterfall

Verification

Maintenance

Requirements Product requirements document

Design Software architecture

Implementation Software

@Kinoma

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

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

Software SimulationSoftware

Kinoma PlatformRuntime (KPR)

Native

Interpreted

HTML

Mobile app framework

Android

iOS

@Kinoma

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

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

(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

• 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

Tools: Getting Started

Language Platform@Kinoma

The “Right” Tools Are Arcane

@Kinoma

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

@Kinoma

☑ Web (Desktop)

☑ Mobile (Apps and Web)

☑ Server

☐ Embedded

JavaScript’s One Frontier Left to Conquer

@Kinoma

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

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

Manage the hardware

• Power • Sensors • Schedulers

@Kinoma

Manage the hardware

Operate theuser interface

• Power • Sensors • Schedulers

• Buttons • Lights • Screens

@Kinoma

Manage the hardware

Operate theuser interface

Coordinatecommunication

• Power • Sensors • Schedulers

• Buttons • Lights • Screens

• Network • Devices • Cloud

@Kinoma

Digitalmedia

Manage the hardware

Operate theuser interface

Coordinatecommunication

• Photos • Music • Video

• Power • Sensors • Schedulers

• Buttons • Lights • Screens

• Network • Devices • Cloud

@Kinoma

@Kinoma

@Kinoma

Usability as a First-Order Design Goal

@Kinoma

Kinoma Create

@Kinoma

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

@Kinoma

Kinoma Create

@Kinoma

Kinoma Create

@Kinoma

Thank you!Andy Carle, PhD

@PrototypingAndy@Kinoma

kinoma.com

• “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

Recommended