Here are some of the fun projects I've worked on in the past few years, in reverse chronological order. This page only shows physical projects; writing projects are documented elsewhere. Because of the large number of graphics and embedded videos, this page will load slowly; please be patient. The videos are hosted on YouTube; if you are accessing this page from behind corporate filtering, you may not be able to see them.

Project 609

Project 609 Portable LED Billboard (click for larger image)

This project is a simple LED billboard, with a couple of interesting twists. I can't describe the application exactly, but as you'll see from the video, besides playing back canned messages, the project also accepts input entered by hand using a keyboard. This project was developed around a PIC microcontroller using Microchip's C18 C compiler.

Here are a couple of demonstration videos of the project (the sparkles are an artifact of the camera; also please note you can view a higher resolution version by clicking on the video directly):

Project 602

Project 602 Wedding Gift

This was a one-off project made as a wedding gift. It has a lot of functions - two servos control mechanical doors covering up various parts of the display, and there's an embedded MP3 audio/MP4 video player that's under the control of my microcontroller. Except for the shadow box, this project was made entirely out of recycled components - scrap pieces of foamcore, basswood, discarded servos (not qualified for flight use but fine for this application), and assorted cellphone parts.

Here's a video showing one function of the project (you can view a higher resolution version by clicking on the video directly; you can also see some videos of the other functions on my YouTube channel):

Project 532

Project 532 Cuneiclock

This is a very fun project. The goal was to create the digital clock we would have on our wrists if we still used the cuneiform, base-60 number system used by the Babylonians. The project is built around a recycled cellphone LCD (this model is available in large quantities) and uses an MSP430F2012 microcontroller; code is written in C using IAR tools. It was a considerable challenge to fit all the font data into this micro. Power consumption also had to be kept to a minimum - the calculated (and, by this time, tested) battery life is approximately 12 months on a single set of alkaline AAs.

Not shown in this picture is a clay housing that was built for the prototype.

As a matter of interest, the housing you see there didn't originally contain the display used in this project; it was simply a conveniently sized/shaped piece of plastic to keep everything together.

Here's a video showing the clock running, starting from 10:12:10, and ending at 10:13:11 (you can view a higher resolution version by clicking on the video directly):

Project 531 screenshot

Project 531 VGA Video Under $1.50

The goal of this project was to develop a module, costing less than $1.50, that can be retrofitted to a monitor or projector and display the owner's name for recovery if the article is stolen.

This project was developed around an MSP430F2012 microcontroller, and prototyped on the $3.00 T2012 evaluation board. It was written in hand-crafted assembly language and implements the entire VGA video generation system in software and a handful of passive components.

531 is now released to the public domain and will soon become an Engineering Teachable project.

Project 419

Project 419 Vending Machine Controller (click for larger image)

Control system for a candy vending/manufacturing machine. Sequences currency acceptance, product selection and manufacture (see videos of the Twisted Tarts machine in action), and provides interesting lighting and audio effects. Field-upgradable using standard SD cards. The board is quite open-ended in design and has been used by the customer for various other applications, experimental models, etc.

The board is based around an Atmel ATmega128 microcontroller, with the circuit, PCB layout and firmware being developed entirely by myself (firmware was written in C). Incorporates my free DOSFS FAT-compatible filesystem code.

Digi-Frame DF-1710

Digi-Frame DF-1710 Digital Picture Frame

The DF-1710 was a large, wall-mounted 17" digital picture frame with very advanced connectivity and playback options. It had a CD-ROM drive, two USB ports, and wired Ethernet connectivity. We sold it with a WiFi option as well. The product could play back all kinds of media files; HTML, JPEG, MPEG, AVI, MP3, and had advanced scripting capabilities that allowed you to program very complicated slideshows. You could control the device either using a set of buttons on the bottom of the frame (removed in some later versions), an infra-red remote control, or entirely over the Internet.

This project was based around a standard Geode (x86-compatible) single-board biscuit computer. I selected the computer, built a custom BIOS for it, built a custom Linux distribution and wrote all the playback and remote administration software, in addition to designing the glue circuitry that patched the IR remote, pushbuttons and other hardware into the SBC.

This, and the larger 23" (but functionally identical) DF-2300 was Digi-Frame's flagship product for a couple of years; it kept the doors open and revenue coming in for quite a while. They were used mainly in advertising applications, but quite a few were also bought by wealthy consumers.

Digi-Frame DF-560

Digi-Frame DF-560 and DF-390 Digital Picture Frames

These were the first two projects I created when I came to the United States. The DF-560 was the second digital picture frame to be released on the US market (Sony's Cyberframe being the first by a few months). The DF-390 was the first battery-powered digital frame released in the US.

DF-390 and 560 are based on a Winbond W90215 microcontroller (PA-RISC core with PC-style Super I/O and PCI bus interface on-chip). The circuit was designed by myself, partly based on the Ez@TV Internet appliance reference design. The operating system, including filesystem and low-level I/O drivers for the SmartMedia and CompactFlash slots, was developed entirely by myself. Both products implement JPEG decoding in software, with various special effects (sepia tone, different decode qualities, animated effects). The entire GUI is orientation-sensitive - on any screen, you can tilt the frame from portrait to landscape orientation and everything - fonts, menus, icons and the entire screen layout - will immediately adjust for the new orientation. Numerous tricks are performed to keep the memory requirements down and improve performance.