Hi flexcoders,

I wanted to drop a note to tell you about an Air app I just built that has a
couple unique features.  I built it to be a desktop app for Arduino (
http://arduino.cc) devices.  If you're not familiar with Arduino it's an
open source microelectronics hardware platform.  It makes it easy to program
micros to do things like attach sensors, control motors, robotics, etc.  The
possibilities are endless, and the Arduino subculture has really exploded in
the last few years.

If you're already a Flex dev. that likes messing with Arduino, this may be
interesting to you.

This app allows you to scan and connect to an Arduino-derivative, and
connect to it via Bluetooth Serial Port Profile.  It also provides a visual
App Store where you can browse and download an app specific to your
hardware, and the types of sensors you may have plugged into it.

So, for example, you could plug an infrared temperature sensor into the
device, and then go grab an app that works with that device and temp. sensor
and download it.

An app (may) consist of two parts:

a) Firmware for the microcontroller
b) A SWF module that can be dynamically loaded into the desktop container

These two components are meant to work with each other.  The firmware can
control things on the device or read sensors and report values, and the
module is a UI that allows you to interact with the firmware.  So, you can
program the device over the air using bluetooth, and load the module into
the desktop application container, and now you have a re-configurable
microcontroller that you can easily write, share, and deploy software to.

Here's some screenshots of the app: http://daisyworks.com/downloads.html  -
and you can download it there; although it probably isn't all that useful
unless you have the hardware.

I wrote some tutorials here: http://daisyworks.com/docs.html on how to write
your own firmware and UI for it.  The UI part should be very easy for the
anyone on this mailing list.  The firmware part is also trivially easy even
if you've never done it before.

--- a few technical details about the app's design for anyone curious:

* native installer for all 3 operating systems -- ant build script that will
create the installer executable with one command
* uses http://swizframework.org heavily, b/c I love swiz :)

You might be wondering how Air is interfacing with Bluetooth...that was the
kind of tricky part. I created an executable jar with an embedded Jetty
server.  The Jetty server exposes BlazeDS services using Spring-Flex.  This
is actually kind of cool b/c you can launch a full-fledged Java/BlazeDS
server just by double-clicking a jar file.  The installer packages the jar
with it, and when that app bootstraps itself, it starts the jar file itself
and starts communicating with it.  I use the bluecove java library to
scan/find/connect Bluetooth devices.

On the App Store, we just download the .hex firmware image and the .swf.  We
can now program the Arduino-derivative with the .hex file, and load the .swf
module into a container.  The application container provides the Tx/Rx
communication between the SWF module and the firmware on the device.

Note: today this only works with our own Arduino derivative hardware -- we
had to do a few tweaks to get the Firmware-Over-The-Air (FOTA) to work, but
it wouldn't be that hard to extend it to work with other Arduino boards.
 Our boards work with the Arduino SDK/libraries so there is no difference
from that standpoint.

I plan to make it FOSS

If you want to hack on some microelectronics and put your Flex skills to
work building UIs for the device, come and check it out.

Cheers,
davis

-- 
http://daisyworks.com

Reply via email to