Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale ›...

52
Justin Mclean, Class Software Flex and the Arduino platform Connecting Hardware to Rich Internet Applications Tuesday, 1 June 2010

Transcript of Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale ›...

Page 1: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Justin Mclean, Class Software

Flex and the Arduino platform

Connecting Hardware toRich Internet Applications

Tuesday, 1 June 2010

Page 2: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Who am I?

Director of Class Software for 10 + yearsDeveloping and creating web applications for 15

yearsProgramming for 25 yearsAdobe community professional in FlexAdobe certified developer and trainer in ColdFusion

and FlexBased in Sydney Australia

Tuesday, 1 June 2010

Page 3: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Electronics Trends

Low cost componentsSmall componentsComplex components with simple standard interfaces

Tuesday, 1 June 2010

Page 4: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Computing Trends

Easier to programUse of high level languagesSoftware toolsOpen source

Tuesday, 1 June 2010

Page 5: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Are We There Yet?

Low cost fast devicesIt’s easy to communicate between devices and

computersCan build complex systems from off the shelf

components

Tuesday, 1 June 2010

Page 6: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino

Overview of the Arduino Platform

Tuesday, 1 June 2010

Page 7: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Platform

Open source hardware and software platformEasy to programHardware is flexible, fast, low power and low cost

Tuesday, 1 June 2010

Page 8: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Hardware

Comes in a number of shapes sizesLow costEasy to extendDigital inputs/outputsAnalog inputs

Tuesday, 1 June 2010

Page 9: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Boards

Tuesday, 1 June 2010

Page 10: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Boards

Tuesday, 1 June 2010

Page 11: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Boards

Tuesday, 1 June 2010

Page 12: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Boards

Tuesday, 1 June 2010

Page 13: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Shields

Tuesday, 1 June 2010

Page 14: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Shields

Tuesday, 1 June 2010

Page 15: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Shields

Tuesday, 1 June 2010

Page 16: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Shields

Tuesday, 1 June 2010

Page 17: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Software Platform

Open source cross platform IDEAlpha but very stableUpdated frequentlyGrowing and active community

Tuesday, 1 June 2010

Page 18: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino Code

C like high level languageInbuilt functions to read and set digital and analog

inputs and outputsIncludes libraries to perform common hardware or

software tasksOnce uploaded programs are permanent

Tuesday, 1 June 2010

Page 19: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Arduino IDE

Tuesday, 1 June 2010

Page 20: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Led Shield Demo

Tuesday, 1 June 2010

Page 21: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Led Shield Demo

Tuesday, 1 June 2010

Page 22: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Issues

Debugging can be hardNo simulatorMemory, power and speed limits Helps to have a little electronics knowledge

Tuesday, 1 June 2010

Page 23: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

How Arduinos can communicate with the world

Connecting Arduinos to the Web

Tuesday, 1 June 2010

Page 24: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Connection Methods

Direct to computer (USB)Wireless (XBee modems)Ethernet or WiFi“The Cloud”

Tuesday, 1 June 2010

Page 25: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Supported Languages

Flash and FlexProcessingPythonRubyJavaC, C++, C# and Objective C.NET

Tuesday, 1 June 2010

Page 26: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Flex

Flex to Arduino direct connection

Tuesday, 1 June 2010

Page 27: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Layers of Communication

Flex to proxy via an Actionscript libraryProxy to USB communicationUSB to arduino

Tuesday, 1 June 2010

Page 28: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Flex to Arduino

USB Proxy FirmataAS3 Glue

Flex Code Arduino

USBCable

TCP/IPSocket

Computer Arduino

Function Calls and Events

Code

Tuesday, 1 June 2010

Page 29: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Flex Led Demo

Tuesday, 1 June 2010

Page 30: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

AS3Glue Digital Output

Create arduino instancevar arduino:Arduino = new Arduino();

Wait for firmware versionSet digital pin as output

arduino.setPinMode(pin, Arduino.OUTPUT);Turn digital output on

arduino.writeDigitalPin(pin, Arduino.HIGH);

Tuesday, 1 June 2010

Page 31: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Danger Shield Demo

Tuesday, 1 June 2010

Page 32: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

AS3Glue Analog Input

Turn on analog reportingarduino.setAnalogPinReporting(pin, Arduino.ON);Listen for changes via event listener

arduino.addEventListener(ArduinoEvent.ANALOG_DATA, onReceiveData);

public function onReceiveData(event:ArduinoEvent):void { ....}

Tuesday, 1 June 2010

Page 33: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Ethernet

Using Arduino Ethernet Shields

Tuesday, 1 June 2010

Page 34: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Ethernet Shields

Allow direct internet connectionNo dedicated PC neededShields need a little configCan act as web server or client

Tuesday, 1 June 2010

Page 35: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Ethernet Shields

Tuesday, 1 June 2010

Page 36: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Ethernet Shields

Tuesday, 1 June 2010

Page 37: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Ethernet Shields

Tuesday, 1 June 2010

Page 38: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Web Servers

Simpler than you thinkA web server:

Listens for connectionsParse requestsSend back status messages/resources requested

Tuesday, 1 June 2010

Page 39: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

HTTP Requests

Start with request “GET index.html HTTP/1.1”Optional headers “Accept-Language: en”Empty lineOptional message body (POST and other requests)

Tuesday, 1 June 2010

Page 40: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Web server codeEasy to modify

Ethernet Arduino Code

Tuesday, 1 June 2010

Page 41: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Ethernet Demo

Tuesday, 1 June 2010

Page 42: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Rich Internet Applications

Ideas on how and where to use this technology

Tuesday, 1 June 2010

Page 43: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Environmental Monitoring

Indoors or outdoorsWide range of sensorsSleep mode/low power consumption

Tuesday, 1 June 2010

Page 44: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Home Automation

Power and utilities monitoringControlling Lights and Heating/CoolingGarden watering/monitoring

Tuesday, 1 June 2010

Page 45: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Security and Safety

Security systemsLocation reportingBike jackets

Tuesday, 1 June 2010

Page 46: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Why do this?

Expose yourself to new ideas and new ways of solving problems

Involves interaction with the real worldEncourages creativityMakes you a better programmer

Tuesday, 1 June 2010

Page 47: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

It’s Fun!

Tuesday, 1 June 2010

Page 48: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Questions?

Ask now, see me after session or email [email protected]

Slides and code can be found athttp://blog.classsoftware.com/

Tuesday, 1 June 2010

Page 49: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Useful Sites

List of useful hardware and software sites

Tuesday, 1 June 2010

Page 50: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Software Sites

Arduino http://www.arduino.cc for software, user forum and playground

Ethernet Shields http://arduino.cc/en/Reference/Ethernet

Pachhub http://www.pachube.com/

Tuesday, 1 June 2010

Page 51: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Hardware Sites

Spark Fun (US) http://www.sparcfun.com/Adafruit Industries (US) http://www.adafruit.com/Electronic Goldmine (US) http://www.goldmine-

elec.com/

Tuesday, 1 June 2010

Page 52: Justin Mclean, Class Software Connecting Hardware to Rich ...classsoftware.com › webinale › webinale2010_hardware.pdf · Based in Sydney Australia Tuesday, 1 June 2010. Electronics

Other Sites

Lady Ada http://www.ladyada.com/Evil Mad Scientist http://www.evilmadscientist.com/NY Resistor http://www.nycresistor.com/Make Zine http://www.makezine.com/

Tuesday, 1 June 2010