User Tools

Site Tools


A Hardware Expansion Project


I design and sell a product that incorporates a wireless remote control for controlling the aiming and firing of a camera. I was intrigued by the idea of using a calculator as the remote control, so I set out to see what was possible.


The HP 20b has the keyboard, the LCD, the processing power and the memory size I need. It lacks a few things I needed for my application, though:

  • no RF wireless link
  • not enough battery capacity to power the radio
  • no easy way to link to data files stored on a PC
  • no easy way to add other circuitry

The approach I took was to make a custom circuit board that supports these features. To connect it to the HP 20b, I designed a second board that is soldered to the serial port pads of the 20b board. These boards have mating connectors, allowing them to plug together.

Here's my modified HP 20b next to my expansion board:

I soldered a small connector board to the serial port pads at the bottom of the HP 20b board. Wires were added to bring the extra I/O lines down to the connector board. I also added a 16 pin connector for JTAG. I needed a more accurate time base for the serial interface, so I added a 32.768 KHz crystal to the pads provided on the 20b. Some of the ribs inside the case were milled off to give more clearance for the connector board.

The expansion board plugs into the connector board and screws go through three existing holes in the gray plastic case. The expansion board replaces the black battery cover, so it adds no thickness to the calculator. At the top of the expansion board is an XBee Pro radio, a MiniSD card reader, a LiPo battery, a power circuit, and a charger for the battery. A standard digital camera cable connects the Mini USB connector on the expansion board to a PC for charging the LiPo battery.

Here's the system fully assembled. The black plastic housing is a standard off-the-shelf box and is a perfect fit for this application.

Link for the schematics for this design. «- link does not work for some reason.


For software development, I used IAR Embedded Workbench for ARM v5.20 with a J-Link pod for programming and debug. During development, I modified the calculator by bringing out lines for a reset switch and connections for AA batteries. The J-Link uses a 20 pin connector, but if we ignore pins 17-20, the other pins connect fine to the 20b without any other modifications to the signals.

I had no need for calculator functionality, so all the code is flash-resident and completely replaces the factory calculator firmware. All my code was written from scratch, so it differs somewhat from the previously posted source others have posted here. When I get time, I will upload the code here.

The System in Use

Here's a short video of the system in action remotely controlling the pan, tilt and shutter of a camera Click here if the embedded video above is not seen. This system can have multiple programmable configuration files (on the MiniSD card) for setting up things like the pan and tilt motions. It can use a hobby servo, switch contacts, infrared or CHDK to trigger the shutter. It can run user-written scripts for automating things like multi-image panoramas. Its big brother also transmits full color video back to the remote, but obviously, that's not going to happen here on a 6 pixel high calculator LCD :-D


The HP 20b can be made into a general-purpose control platform with the addition of some additional circuitry. Although this may be a useful idea for one-off home projects, it's probably not something that you would want to do for more than one or two systems. Perhaps in the future HP will offer something similar with a true expansion bus. If so, I think there would be a large number of applications suited for something like that.

Scott Armitage

20b/expansion_board.txt · Last modified: 2008/09/15 13:26 by sarmitage