This page and its subpages are about work that I do for fun or pro-bono--hobbies and volunteer gigs, basically.

Current "Just for Fun" Projects

  • Read about the R2-D2 my boys and I are building. There's a world-wide club of R2 builders that publishes plans and details. It's an ambitious (and expensive) project, but a great teaching tool for mechanical design, materials science, electronics, and of course, all kinds of artistic skills.
  • I'm building a working replica of the Apollo Guidance Computer. I've always been intrigued by the guidance computer used on the Apollo missions. What better way to answer that than to build one. The actual software used is now in the public domain, and there is a very good emulator for the CPU written in C, so it's possible to run the original AGC programs on a $30 Raspberry Pi (and yes, the Pi is far faster than the AGC ever was). The majority of what I will be building is the DSKY, the display-keyboard interface. It's not a complex hardware project, but I'm using Eagle for the schematic capture and board design, and Fusion360 for the parts--I'm new to both, so throwing myself into something detailed is, I feel, a great way to learn the tools.

Recent Software Projects

Vera Home Automation

I've written and support several plugins for the Vera home automation gateway/controller. Read about those here.

Open Source

  • lexp.js - A lightweight infix expression parser I wrote for a JavaScript project. While it's possible to evaluate expressions directly in JavaScript, ensuring security can leave one wondering if all the holes are plugged, and perhaps finding out the hard when one is not. The lexp.js project addresses this by creating a limited grammar and contained execution environment. This project can be found on GitHub.
  • luaxp - An outgrowth of lexp.js that was born when I started implementing the SiteSensor plugin for Vera Home Automation, luaxp is an infix expression parser written entirely in Lua. It is found on GitHub.

Hardware Projects

  • In the final stages of productizing RAVE, the Relay And Valve Expansion board for pool controls. This simple, cost-effective boards extends the capabilities of pool controls when the number of devices that need relay or valve actuator control exceeds the number of ports available on the controller. It is designed to be simple for pool installers to use to easily implement definitive control of the increasing number of devices modern pools have: more lights, waterfalls, fountains, fire features, etc. It also provides simple implementation of interlocking of devices, to prevent running pumps when dry, etc.
  • PiUPS -- This is a new project. When I was building the Halloween Photo Booth with my boys, I couldn't find an adequate solution for a simple, integrated DC UPS for a Raspberry Pi 3 B+. This board offers a battery-backed 2.5A supply (it's actually 3A). It safely charges a LiOn or LiPo battery, and switches quickly to battery power on brownout or blackout of the source supply. It has a low-battery signal to the Pi, so you know when it's time to do an orderly shutdown. The board conforms to the HAT (Hardware Attached on Top) form factor for RPi 3s (any version), but will work with any model RPi, Arduinos, and other controllers that take a 5V power supply.
  • LightShow16 -- Another idea from the Halloween Photo Booth project. Our booth had two 4-port opto-isolated MOSFET driver boards to drive the LEDs needed by the project. That worked great, but a natural evolution is a 16-port device, with on-board PWM control, to offload the Pi (or Arduino, or whatever). The processor uses I2C to control LightShow16's channels. The board drives up to a total of 144W of LEDs simultaneously (max 96W per channel), and is also capable of driving DC motors, actuators, and other devices.

Older Projects (Archive)

Information about some of my older projects can be found here.