0% found this document useful (0 votes)
39 views

Programming The Real World

The document discusses how programming and creating things is enjoyable for many people and how the maker movement has expanded creation opportunities. Software and hardware tools are now easier to use, cheaper, and more accessible, lowering the barriers for more people to program the physical world and interact with it.

Uploaded by

koutsour27
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
39 views

Programming The Real World

The document discusses how programming and creating things is enjoyable for many people and how the maker movement has expanded creation opportunities. Software and hardware tools are now easier to use, cheaper, and more accessible, lowering the barriers for more people to program the physical world and interact with it.

Uploaded by

koutsour27
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 62

Programming the real World

Peter Christensen http://pchristensen.com @christensenp

Why Do We Love Programming?


Challenge of problem solving Creating something that didnt exist before Seeing something work Show off our abilities ...but everybody loves those feelings!

Everybody Wants To Create

Artists...

Everybody Wants To Create

Athletes...

Everybody Wants To Create

Young and old...

Everybody Wants To Create

Politicians...
(no, really!)

Everybody Wants To Create

Engineers...

Everybody Wants To Create

Fashion designers...

Software is Different

Software is Different
Something about creating with software is qualitatively different How many pottery billionaires have you heard of lately? How many other young businesses have hundreds of millions of users?

Why Is Software Different?

vs
Software is design-only, with no marginal cost to reproduce

Why Is Software Different?

vs
Software has a lower barrier to participation.
What is the Hello World for surgery?

Why Is Software Different?

vs

Distribution is easier and cheaper

Why Is Software Different?

Tools and libraries let us abstract away non-core tasks

Why Is Software Different?

Communities and contribution tools allow us to build on the best work of others

Its Not Just For Software Anymore

The Maker Movement


Costs for hardware of all sorts are falling Resources for learning electronics and hardware are better than ever and improving The internet makes showing off your creations easier than ever Maker Faire - the biggest show and tell on Earth - http://makerfaire.com/

Maker Faire

Robot bugs that skitter, made with $10 of electronics

Maker Faire

Real-time visualization of dancing https://github.com/benMcChesney/ofxOpenVJ

Maker Faire

250 Fish and Lobsters Singing Beethovens 9th http://www.sashimitabernaclechoir.org/

Maker Faire
Coming Soon to a City Near You!

http://makerfaire.com/map/

The Maker Movement

New tools for design and experimentation Left: http://upverter.com for designing circuits Right: 3D printer for prototyping complex shapes

The Maker Movement

Tools and resources for learning L: Adafruit tutorials http://learn.adafruit.com/ C: LightUp augmented reality http://www.lightup.io/ R: littleBits kits http://littlebits.com/

The Maker Movement

DIY Projects Left: Roominate DIY Dollhouse Kits http://www.roominatetoy.com/ Right: Retro Gaming with Raspberry Pi
http://learn.adafruit.com/retro-gaming-with-raspberry-pi

Software Enables Intelligent Interaction With Abstract Things Hardware Enables Intelligent Interaction With Physical Things

Hardware Becoming Software


Hackers love to build hardware, and customers love to buy it. So if the ease of shipping hardware even approached the ease of shipping software, we'd see a lot more hardware startups. http://www.paulgraham.com/hw.html

Hardware Becoming Software


Shrinking marginal cost - cheaper hardware Broad participation - Maker movement Distribution - Kickstarter, Shopify Abstract non-core tasks - kits, more components Community and collaboration

Arduino
Arduino is an open-source electronics prototyping platform based on exible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists, and anyone interested in creating interactive objects or environments. - http://www.arduino.cc/

Arduino
Arduino IDE
Free, multiplatform Includes examples with documentation Compiles code and loads as rmware to any Arduino-compatible bord

Arduino

A family of compatible boards with different options for: extensibility, features, size, power, cost,

Electronics Crash Course

Electronics Crash Course


Electrons ow from negative to positive (current) If theres no path, the ow stops (circuit) You can put stuff in the circuit to use, alter, or react to the current Each component is like a function with inputs and outputs, and they chain together

Electronics Crash Course


Wire - connect 2 components, function argument Battery - provides current, run the program LED - side effect, output

http://electronicsclub.info/circuitsymbols.htm

Electronics Crash Course


On-off Switch boolean variable 2-Way Switch - if statement Resistor - input checking
http://electronicsclub.info/circuitsymbols.htm

Electronics Crash Course


Breadboard for prototyping Conductive strips underneath holes make easy connections Like a REPL or console
http://electronicsclub.info/circuitsymbols.htm

Electronics Crash Course


Wiring an Arduino circuit: schematic and pic

http://learn.adafruit.com/category/learn-arduino

Electronics Crash Course


Arduino code has 2 requires functions void setup() - run once when the board is powered up void loop() - runs repeatedly until the board is powered down Other functions allowed for clarity

Electronics Crash Course


/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */ // Pin 13 has an LED connected on most Arduino boards. // give it a name: int led = 13; // the setup routine runs once when you press reset: void setup() { // initialize the digital pin as an output. pinMode(led, OUTPUT); } // the loop routine runs over and over again forever: void loop() { digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level) delay(2000); // wait for a second digitalWrite(led, LOW); // turn the LED off by making the voltage LOW delay(2000); // wait for a second }

What About Javascript?

Javascript For Makers


Javascript rose to new popularity coincident with the Maker movement Maker projects use the web Projects made by non-developers, tinkerers, engineers - smart people new to software Hardware is event-based, so JS is a good t Javascript is a kind language for beginners - single numeric type, familiar syntax, type conversions

Javascript For Makers


Libraries
node-serialport - https://github.com/ voodootikigod/node-serialport Firmata - common rmware protocol for controlling microcontroller boards http://rmata.org/

Javascript For Makers


Libraries - JohnnyFive
button = new five.Button(8); // "down" the button is pressed button.on("down", function() { console.log("down"); }); // "hold" the button is pressed for specified time. // defaults to 500ms (1/2 second) button.on("hold", function() { console.log("hold"); }); // "up" the button is released button.on("up", function() { console.log("up"); });

Firmata library with component behavior events https://github.com/rwldrn/johnny-ve

Javascript For Makers


Enabling Libraries - JohnnyFive

http://www.youtube.com/watch?v=gFiL4xVINdw

Javascript For Makers

NodeBots: a full day event where JS developers team up and use soldering guns and parts nearby to create amazing robotic devices. http://nodebots.io/

Javascript For Makers


var arDrone = require('ar-drone'); var client = arDrone.createClient(); client.takeoff(); client .after(5000, function() { this.clockwise(0.5); }) .after(3000, function() { this.animate('flipLeft', 15); }) .after(1000, function() { this.stop(); this.land(); });

http://nodecopter.com/ http://www.youtube.com/watch?v=ymlbNEL5TQQ

Javascript For Makers


Miniature Hardware

Raspberry Pi

Beagle Bone Black

Small, inexpensive general purpose computers with ARM chips, USB and HDMI ports, run Linux and any software

Javascript For Makers


Where to Buy?
http://www.adafruit.com/ http://sparkfun.com/ http://www.hobbytronics.co.uk/

$$! !!! (?)


Not expensive to start: ~$30 for Arduino, ~$45 for Raspberry Pi or BeagleBone Kits for < $100 Whole pile of electronic parts and computers for < $200

$$! !!! (?)


Prototyping parts are reusable; you only incur more costs when you: break stuff (it happens) want new features (motors, sensors, etc) want to build more because you designed something useful

Advanced Electronic Design


Custom circuit design - Eagle, CAD, http://upverter.com Designs printed on a PCB (printed circuit board) Components assembled into nished hardware

Advanced Electronic Design


Designed circuits can be assembled by lots of manufacturers Upverter has manufacture integrated into their workow DIY tools are developing, improving

I Dont Know Electronics, What Can I Do?

What Can I Do?


Find a hardware project youre interested in Maker Faire, Kickstarter, Meetups, etc Add to software, improve software practices Source control, abstraction, testing, etc Miscellaneous contributions - documentation, etc

What Can I Do?


Build demo apps on hardware APIs Example: moj.io Plugs into car diagnostic port Sends geocoded logs over cellular network Expose API for building car data apps

How I Got Into Hardware

How I Got Into Hardware


No background except for 1 college class 15 yrs ago Went to YC Hardware hackathon in Feb 13 Got little done because I had so many basic questions Liked the project and team so I continued working on a prototype for Maker Faire I wrote software for a hardware project, so I contributed and learned a lot without slowing down the project

Tempo Automation
Heres the demo - it assembles circuit boards

http://www.youtube.com/watch?v=-jsQF-xFdJM https://www.facebook.com/video/embed? video_id=4184537549975

OpenROV
Started by guys looking for return on adventure Sold > 100 kits on Kickstarter Open, worldwide community

http://www.youtube.com/watch?v=GVp0zeH0H3Q

OpenROV
Node.js server serves cockpit web page, translates input into motor commands through Arduino I didnt buy a kit, so I cant write or test software for it I take and post notes from monthly dev calls, helps community

Concluding Thoughts
What would you make if you werent stuck inside the computer or the internet? What objects do you interact with daily that you could make smarter? What would you do if you could program the real world?

You are only limited by

your imagination.

What will

YOU
make?

You might also like