A practical guide to connecting hardware to Flex


Published on

WebDU 2009 session looking at the revolution in low cost easy to program embedded computing. It focuses on the arduino open source hardware and software platform and zigbee network modules and how both of these can be easily connected up to Adobe Flex.

Published in: Technology, Education
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • Welcome name is etc. Hands who are developers, Flex developers. Give book away? I will show you how EASY it is to connect hardware to Flex and show you how you can do it.
  • Keen interest in electronics but never studied it. Did start off in the bad old machine code days. Connecting hardware used to be difficult. Now this is fairly easy and straight forward to do. There’s been several trends that have made this easy.
  • Computers are everywhere. Hands up who have one computer, 2 or 3, 4 or more? Microwave dishwasher, DVD, TVs etc etc are computers. They are not just general purpose ones. The processors in PC of a decade ago now run home appliances. These CPUs use to cost $1000 now cost $10. SMT technology. SPI an I2C Interfaces - more like lego where you can plug blocks of circuits together. Cheap low volume mean more niche and specialised products etc
  • EEPROMS taken out of circuit erased under UV light for 15 min or so, then burnt in a special programmer 10 min or so. Put back in circuit. Test and repeat. Now it USB plug and play. Coding in machine code it’s hard to do and difficult to debug. Improve in processor speed and capacity and compilers mean you can code in high level languages. OS = Tools updated more often.
  • Devices that can easily communicate with each other. Xbee/ZigBee modems are good example. In 5 years time we May think of mobile phones the same way we think of copper phone connections. Explain mesh networks.
  • Ubiquitous computing - idea of countless small low powered low cost smart devices that are everywhere. They interact with their environment and we hardly notice they are there. Are we there? What is now possible? ...... Today I going to look on one open source product the Arduino.

  • Italian. Software/IDE is open source. Explain hardware OS. Plans for building it are freely available and you can make up your own versions of the hardware. Fast = 20Mzh 386. 20 MIPS! Power 20-100mw.
  • $20-$40 US. $30 US. ATmega of chip by Atmel AVR line. 32K flash memory 2K ram 1K EEPROM. 8 bit RISC chip run at 20Mzh == equiv to a fast 386. Less than 5 years CPU that cost $1000’s now the equiv cost $10’s - next 5 years the same is likely to happen.
  • Some of the form factors. Diecimila (standard prototyping), Lillypad (wearable can be sown into clothing), Sanguino (more memory and IO), Mini (postage stamp).
  • Some of the form factors. Diecimila (standard prototyping), Lillypad (wearable can be sown into clothing), Sanguino (more memory and IO), Mini (postage stamp).
  • Some of the form factors. Diecimila (standard prototyping), Lillypad (wearable can be sown into clothing), Sanguino (more memory and IO), Mini (postage stamp).
  • Ethernet shields, prototype shield, GPS shields, home made LED shield.
  • Ethernet shields, prototype shield, GPS shields, home made LED shield.
  • Ethernet shields, prototype shield, GPS shields, home made LED shield.
  • Linux, Mac and PC. Current version 0015. Language is bases on wiring which is based on processing. New versions have tweaks, support for new boards and faster and more libraries. Generally no changes to core language.
  • Simple IDE to write code, manage sketches (projects), compile and upload to the hardware via USB.
  • Digital input and output can turn things on and off or detect if thinks are on or off. Anlog inputs can read light, temperate etc etc. No analog outputs but they can be simulated via PWM. Good for dimming leds. Libraries include ethernet, led matrix, LCD display.
  • Show Arduino IDE and code, upload software to arduino. Show leds flashing on and off.
  • All arduino programs has 2 main functions setup + loop
  • For digital inputs set pin mode to INPUT and use digitalRead function.
  • Flash player virtual machine no connection to USB etc. To make Flex talk to arduino and vice versa there needs to be layers of commuication.
  • Need 3 layers. Serial communication built into arduino using serial library.
  • Firmata based on midi. Simple binary protocol one or two bytes per command. AS3 glue Flex/AS3 library that does teh gard work for you.
  • Load firmata software up to Arduino. Run code from Flex builder.

  • 250 kbps data rate depending on distance. Voice OK video probably not, data no issue. Ordinary 1mW 35mA trans 100m $20. Pro 60mW 150mA trans 1.6km $30. 50mA receive. Sleep mode nothing. Can last months or years on a small battery! New pro hardware upto 60Km! Configure via AT commands.

  • Mesh can automatically can form self healing dynamic networks. 100’s or 1000’s of nodes.
  • Japanese arduino clone. Written more for Flash than Flex not event based so generally need to do some sort of polling.
  • Demo. Show code. Give to audience member?

  • Demo. Show code.

  • While easy there are issues!
  • Make you a better programmer. Limits of memory and speed.

  • End slides here! URLs in book. CD software give away. Code on blog.

  • A practical guide to connecting hardware to Flex

    1. 1. Connecting Hardware to Flex A practical guide to connecting open source hardware to Flex Justin Mclean Class Software Friday, 22 May 2009
    2. 2. Who am I? • Director of Class Software for 10 years • Developing and creating web applications for 15 years • Programming for 25 years • Adobe solution partner • Adobe certified developer and trainer in Flex and ColdFusion Friday, 22 May 2009
    3. 3. Electronics Trends • Low cost small components • More complex components with simple standard interfaces • Cheap low volume board manufacture Friday, 22 May 2009
    4. 4. Computing Trends • Easier to program • Use of high level languages • Software tools • Open source Friday, 22 May 2009
    5. 5. Communication Trends • Low cost long range wireless • Mesh networks Friday, 22 May 2009
    6. 6. Are We There Yet? • Low cost fast devices • It’s easy to communicate between devices and computers • Can build complex systems from off the shelf components • Commercial and open source products and kits are available Friday, 22 May 2009
    7. 7. Arduino Open source hardware and software platform Friday, 22 May 2009
    8. 8. Arduino Platform • Open source hardware and software platform • Easy to program • Hardware is flexible, fast, low power and low cost Friday, 22 May 2009
    9. 9. Arduino Hardware • Comes in a number of shapes sizes • Low cost • Easy to program • Easy to extend Friday, 22 May 2009
    10. 10. Arduino Boards Friday, 22 May 2009
    11. 11. Arduino Boards Friday, 22 May 2009
    12. 12. Arduino Boards Friday, 22 May 2009
    13. 13. Arduino Boards Friday, 22 May 2009
    14. 14. Arduino Shields Friday, 22 May 2009
    15. 15. Arduino Shields Friday, 22 May 2009
    16. 16. Arduino Shields Friday, 22 May 2009
    17. 17. Arduino Shields Friday, 22 May 2009
    18. 18. Arduino Software Platform • Open source cross platform IDE • Alpha but very stable • Code in high level C like language • Updated frequently • Growing and active community Friday, 22 May 2009
    19. 19. Arduino IDE Friday, 22 May 2009
    20. 20. Arduino Code • C like high level language • Inbuilt functions to read and set digital and analog inputs and outputs • Includes libraries to perform common hardware or software tasks Friday, 22 May 2009
    21. 21. Led Shield Demo Friday, 22 May 2009
    22. 22. Led Shield Demo Friday, 22 May 2009
    23. 23. Setup and Loop Functions • Setup function called once void setup() { ... } • Loop function called over and over again void loop() { ... } Friday, 22 May 2009
    24. 24. Setting Digital Outputs • Set digital pin as output in setup pinMode(pin, OUTPUT); • Digital outputs turned on or off in setup or loop digitalWrite(pin, HIGH); digitalWrite(pin, LOW); Friday, 22 May 2009
    25. 25. Flex Flex to Arduino communication Friday, 22 May 2009
    26. 26. Layers of Communication • Flex to proxy via an Actionscript library • Proxy to USB communication • USB to arduino Friday, 22 May 2009
    27. 27. Computer Arduino Flex Code Arduino Function Calls and Code Events TCP/IP USB AS3 Glue USB Proxy Firmata Socket Cable Flex to Arduino Friday, 22 May 2009
    28. 28. Flex Led Demo Friday, 22 May 2009
    29. 29. AS3Glue Digital Output • Create arduino instance var arduino:Arduino = new Arduino(); • Set digital pin as output arduino.setPinMode(pin, Arduino.OUTPUT); • Turn digital output on arduino.writeDigitalPin(pin, Arduino.HIGH); Friday, 22 May 2009
    30. 30. AS3Glue Events • Uses Flex events for digital inputs. • Listen for changes via event listener arduino.addEventListener (ArduinoEvent.DIGITAL_DATA, onReceiveData); public function onReceiveData(event:ArduinoEvent):void { } Friday, 22 May 2009
    31. 31. Wireless Communication Wireless communication with XBee modems Friday, 22 May 2009
    32. 32. XBee Modems • Hardware wireless modem • Low cost • Consume very little power • Good range • Easy to configure Friday, 22 May 2009
    33. 33. XBee Modem Friday, 22 May 2009
    34. 34. XBee Networks • Point to point • Point to multipoint • Mesh/Peer to peer Friday, 22 May 2009
    35. 35. Funnel IO • Arduino based hardware • Java server • Flex library Friday, 22 May 2009
    36. 36. Funnel Digital Output Friday, 22 May 2009
    37. 37. Funnel Digital Output Friday, 22 May 2009
    38. 38. Funnel Digital Output Friday, 22 May 2009
    39. 39. Setting Digital Output • Create FIO instance var fio:Fio = new Fio([1], Fio.FIRMATA); • Turn digital output on or off by setting value fio.ioModule(1).digitalPin(pin).value = 1; Friday, 22 May 2009
    40. 40. Funnel Analog Graph Friday, 22 May 2009
    41. 41. Funnel Analog Graph Friday, 22 May 2009
    42. 42. Reading Analog Input • Not event based, need to use timer • Read analog value same way as digital value value = ioModule(1).analogPin(pin).value; Friday, 22 May 2009
    43. 43. Issues • Debugging can be hard • No simulator • Memory, power and speed limits • Need a little electronic knowledge Friday, 22 May 2009
    44. 44. Why do this? • Expose yourself to new ideas and new ways of solving problems • Involves interaction with the real world • Encourages creativity • Platform limits improves programming skill Friday, 22 May 2009
    45. 45. It’s Fun! Friday, 22 May 2009
    46. 46. Questions? Ask now, see me after the session or email me at justin@classsoftware.com Friday, 22 May 2009
    47. 47. Useful Sites List of useful hardware of software sites Friday, 22 May 2009
    48. 48. Software Sites • Arduino http://www.arduino.cc for software, user forum and playground • AS3Glue http://code.google.com/p/as3glue/ • Funnel IO http://funnel.cc/ Friday, 22 May 2009
    49. 49. Hardware Sites • Little Bird Electronics (Australian) - http:// www.littlebirdelectronics.com/ • Jaycar (Australian) http://jaycar.com.au/ • Adafruit Industries (US) http:// www.adafruit.com/ • Spark Fun (US) http://www.sparkfun.com/ • Electronic Goldmine (US) http://www.goldmine- elec.com/ Friday, 22 May 2009
    50. 50. Other Sites • Lady Ada http://www.ladyada.net/ • Evil Mad Scientist http:// www.evilmadscientist.com/ • NY Resistor http://www.nycresistor.com/ • Make Zine http://makezine.com/ Friday, 22 May 2009