My Tech Projects
Last updated: Mt. Desert Island, 3 Aug 2010 Notes
 
I'd like to play around with some microcontrollers.  These are small, portable, low-power processors dedicated to a particular task.  The two that look most interesting are:
  1. Arduino
       Pros:  Inexpensive, rich ecosystem and community,
    (likely) low power consumption, looks like fun.
       Cons: Relatively slow (16 MHz)
  2. Gumstix
       Pros:  Powerful processor, lots of memory, compact
    size, runs Linux.
       Cons: Power hungry?  TBD.
  On my hand are:
      a Gumstix Fire,
      an Arduino Nano, and
      an Arduino Duemilanove
  In the background is:
      a Tobi expansion board
      for the Gumstix
   along with an iPod Touch and Apple's Accessory API
 
I'm also interested in the various ways to organize, index, and generally analyze my website (well, websites in general).  I'd like to play around with semantic web constructs.  E.g. how are my photos of fishing boats in Peru related to photos of my dinghy and sail placement and graphs of sailboat characteristics?  I'd like to describe each of those with semantic markup linked to (public and private) ontologies, then graphically link and navigate (pun there?) between them.  Something for the future.  In the meantime, below is a webpage grapher that I found and am starting to fiddle with.
 
The projects:
  1. Camera Controller
  2. Portable Webcam
  3. Boat Performance Monitor
  4. Boat Security Monitor
  5. Simple Logic Analyzer
  6. System Load Monitor displayed on my iPod
  7. Webpage Grapher
  8.  
 
 Camera Controller
Last updated: Melbourne, 9 Feb 2010
 
Notion:
 
 
(a) An intervalometer is a device that helps you make a series of exposures with your camera.  For example, you could use it to take 1000 photos, each 15 minutes apart. Then combine them in post processing to make a time-lapse video.  Canon doesn't build an intervalometer feature into their EOS cameras.  I'd like a nice snazzy device that does this.
(b) Also, I'd like to be able to play around with triggerring the shutter on some special event - say a bird being detected in front of the lens.
(c) Finally, I'd like to have remote control over the camera.  With the ability to control all the camera's functions as well as to be able to preview the image and set the focus before the picture is taken.
 
Interesting problems:
 
  I think what would make this an interesting project is integrating the UI for all these functions on a snazzy device like the iPod.
 
Status:
 
  Here is a demo of the current GUI.  Note: you might need to zoom in or out a little in your browser for the demo pages to fit right.  (e.g. "<command> +" and "<command> -" on Firefox on a Mac, "<CTRL> +" and "<CTRL> -" on Windows, etc)  The buttons along the bottom of these mocked-up pages (as well as the "8.63 volts" drill-down button and the "?" button) are hooked up so please try them.  The other buttons would need to invoke functions on the Arduino so they don't work here.  This mocked-up demo should look OK with any web browser, but if you have an iPod Touch or iPhone, to see the actual look:
  • Go to the Safari browser on your iPod or iPhone.
  • Enter "svbreakaway.info/tp/cc/r.html" on the address bar and click on "Go" (or simply click on that link if you are viewing this page from your iPod/iPhone.. in that case, note the next step about adding it to your Home Screen).
  • When the "Remote Control" page is displayed, click on "+" on Safari's option bar, then "Add to Home Screen" and finally on "Add".  When you run it from your Home Screen, the pages layout properly - ie. without Safari displaying it's address bar.
  • You should see the button has been added to one of your Home Screen pages.  Click on it and you should have a fairly realistic demo.  Once again, the buttons along the bottom, the "8.63 volts" drill-down button on the "Admin" page, and the "?" button are hooked up and should work.  If you are on the "Admin" page and click on "Adm" again, it refreshes the page, causing the mock data to be refetched from the GoDaddy server (where svbreakaway.info is being hosted).  The data won't change, but the "Response time" on the "Admin" page is what your browser actually measures (to fetch the data from the server).  I'm seeing between 150 and 250 ms to the GoDaddy server from my iPod here in FL and around 120 ms to my Arduino.
Melbourne, 6 Mar 2010 
Video of my first version:
 
[7 Aug 2010 update: I'm back in the states, have my Arduino stuff and DSLR handy now, and am in the process of documenting the code and making it available for download.  First, I want to bring it up to date with any changes in the WiShield code and Arduino/Processing environment.]

 
 Portable Webcam
Last updated: Melbourne, 27 Jan 2010
 
Notion:
 
 
(a) The notion is a typical webcam (with video).  But where a user, via the web, is able to control where the camera is pointing.  And the camera should be portable so that I can move it around.
(b) Stereoptic vision?
(c) 360° field of view?
 
Interesting problems:
 
 
(a) OK, so one option is to simply interface this Logitech webcam to a microcontroller via a USB connection.  If the microcontroller has a WiFi interface, then it should be (relatively) easy to forward the resultant video stream to a host webserver nearby.  And then stream that to the end-user.  Likewise, the end-user controls where the webcam is pointing by sending commands in the other direction.  Sounds straightforward, and I'll probably implement this first.
(b) 3D televisions are apparently "the next big thing" in consumer electronics.  An interesting variation of this project would be a stereoptic webcam.  How about using 2 Logitech webcams for stereoptic vision, coordinated by the microcontroller, to make a 3D webcam.
(c) One of the things I'd like have is a 360° field of view. 
  • I guess one possibility would be building a "sphere" of webcams so that their images overlap.  Software in the microcontroller would stitch the images together and present a consolidated view to the end-user .. either with perspective "flattened out" or some sort of fish-eye or 360° view.
  • Another possibility might be a 360° panoramic lens, such as (a cheap eBay copy of) one of these from 0-360, EGG, or EyeSee360.  Or this from Olympus if they do come out with it.
  • A third possibility might be making the camera mobile, similar to the Logitech webcam but with a wider range of movement.  A simple webcam could be mounted on an arm that rotates on 2 asis - each axis controlled by a servo.  Or maybe mount the camera on a car in a bubble, with the wheels able to go forward-and-backward as well as side-to-side.
(a-c) (I assume) one of the challenges will be preventing the camera from "looking" directly at the sun.
 
Possible solution:
 
 
WiFi between the cam unit and Public Webserver is important.  And since I'd like to try Notions (b) or (c) mentioned in the section above, I want as powerful a microcontroller as possible.  Say, the Gumstix Overo Fire.
 
Status:
 
  Melbourne, 12 Mar 2010 
Woo-hoo!  The initial code is working.  Video coming soon..

 
 Boat Performance Monitor
Last updated: Melbourne, 27 Jan 2010
 
Notion:
 
 
My boat instrumentaton (boat speed, direction, & GPS position; wind speed & direction; and water depth) are all available via a network on the boat.
(a) The notion is to be able to display them on an iPod that could be worn in a handy spot (like on one of those iPod arm bands people use when exercising).
(b) Further, I would like to compile a history of the boat speed, under given conditions, to see if I am sailing as good as I have in the past under similar conditions and thus try to improve my skills.
(c) Further, I'd like to compare this with ideal (IMS) speed roses and with similar data that others might gather on their boats.
 
Interesting problems:
 
  The iPod user interface would make this snazzy, of course.  But what I think would make this real interesting is keeping the history of how the boat has performed in the past on that particular point of sail.  Ie. on that particular heading relative to the wind and that wind speed.  Then we could use that past performance as a benchmark - can we do better?  I think it would be very cool to have a public repository of performance data like this somewhere so that we could see how we compare with other boats - sort of a distributed, time-lagged sailing regatta.
 
Possible solution:
 
 
Ahh.  The good news is that I probably have all the components I need to put this together - an iPod Touch, a system I can use to host a webserver and integrate the instrumentation data, and finally the instruments themselves.

 
 Boat Security Monitor
Last updated: Melbourne, 27 Jan 2010
 
Notion:
 
 
Keep track of the boat via the web.  This includes sensing the weather, if there is water in the bilge, the battery state, security alarms, a security video webcam, etc.
 
Interesting problems:
 
  This can probably be done with various off-the-shelf products.  But I'm thinking I can do a better job creating an integrated dashboard specifically for my needs.  We'll see.
 
I'd reuse parts of the Portable Webcam and Boat Performance Monitor from above.
 
Possible solution:
 
 
The Arduino would take the readings from the sensors and give them to the server over a USB connection.  The wind conditions (speed & direction) would be from the existing Raymarine network.
 
 Webpage Grapher 
Last updated: Mt. Desert Island, 3 Aug 2010
 
I found a cool webpage grapher on http://www.aharef.info/static/htmlgraph/.  Kudos to Marcel Salathé and Jeffrey Traer Bernstein.  It creates a graphical depiction of the HTML tags on webpages.  The individual nodes are colored according to the HTML tag (blue for <a>, green for <div>, red for <table>, etc).
 
I added code to allow viewing more than one page.  So, each connected blob represents a different page on my website (red for /index.php, green for /about-me.php, blue for /sv-breakaway.php, etc).  The page you're now reading, /tp.php, is purple.  When the applet is running, it looks like spindly creatures under a microscope.  To me anyway.  In the future, I'd like to show the links between pages and add the ability to pick which pages to graph.
 
Following is a sample screen capture of the results (you can click on this screenshot to hopefully invoke the actual applet):

 
If you're having problems invoking the applet above, check to see if you have Java Applets enabled in your browser.  As a test, see if you can display the clock here (click on a time zone).
 
On a broadband network connection, the applet should take just a few seconds to load (the background turns black and the Start Button ( ) should appear in the upper left corner).  The animation should be fluid, updating the display quickly as each node is added.  If instead, it is refreshing the display in 1-second spurts with many nodes added between refreshes (as Opera and Chrome are doing for me on my Mac), then I'm sorry because the effect is totally spoiled :-(.
 
The applet was created using the current version (1.2.1) of Processing.  The embed code that Processing produced looks pretty robust.  If you are having a problem viewing it, I'd appreciate hearing what version of what browser you are using (email me at mike.as.admin@gmail.com).  Also, let me know what version of Java you're using, if you know it.
 
Here are results of my testing this applet with various browsers on my Mac and Vista systems:
 
  Mac OS X
(v10.6.4 and
Java 1.6.0_20 SE)
Windows Vista
(Home Premium w/ SP2
and Java 6u21 SE)
Firefox (v3.6.8) Working well Working well
IE (v7.0.6002) n/a Working well
Opera (v10.60) The animation is jerky - the display is only being refreshed once a second or so Working well
Chrome (v5.0.375) Working well
Safari (v5.0.1) Upon starting the applet, it is often slow to respond to the Start/Restart buttons n/a