Upload
kinoma
View
1.760
Download
2
Tags:
Embed Size (px)
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
• “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