Hacking a bathroom scale

I decided to keep closer track of my weight. As a geek, that means some kind of spreadsheet or database, and as a programmer, the thought of having to enter day manually seems wrong somehow.

So the obvious next step was to find a bathroom scale that I could modify so as to record data.

I had to go through a couple of different scales before I found one that would work. In particular, I found that LCD models were very difficult to modify (at least, without an oscilloscope), but models which use a 7-segment LED display are pretty easy to hack.

I found a Taylor 9865 at Target for $18. There is already a nicely documented hack of this scale online (link to follow), and I followed it somewhat, although a lot of the details were left as an exercise for the reader, like the tie points for soldering to, and how to decode the output from LEDs into numerals. The author included firmware, but as it was not a direct arduino build (the author used an atmega but the code was generic avr c), I decided to go it alone on the code part.

I was able to trace the points where the LEDs got their signal, and found the four transistors where the individual digits are driven. I soldered wires to each of these points, as well as the scale’s connections to the 9v battery.

I spent a little time figuring out the data coming off the wires, and realized that the transistors were all held LOW unless the digit was on. I got the wires swapped around until they were outputting digits left to right and also segments in standard 7-segment LED order, clockwise starting at the top segment, ending with the center segment and decimal point.

I bitmasked the pin data, and then figured out which values would code to various numerals. Once I got the timing all done, the circuit suddenly started working! I got it to the point where it would output the scale’s displayed weight to the serial monitor. Works like a charm, and the circuit and code went together in under a day of messing around with it.

Now that I have good output, the next step is to figure out how to get the output somewhere useful. There are a number of ways to do this. A wireless solution seems better than a wired one. At the moment, I am leaning toward simply writing to an SD card, and then seeing if I can convince an Eye-Fi card to forward the data. This seems like it might not work (they are designed for camera data and may only take jpeg data), so xbee or wifi or RF or Bluetooth may need to be the final solution.

The solution will need to use a minimal set of pins, as there are only eight pins left on the arduino. I left tx/rx available, as well as the sda/sdc pins for i2c, and the four spi pins as well. That should cover most communications rigs, but if things need to be squeezed more, I will have to use a 595 or other buffer to get the job done.

Pretty soon, I will have a bathroom scale fit for a maker.

This entry was posted in Electronics, Making and tagged . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *