Esquire 75th Anniversary E-ink Cover
Esquire magazine printed (assembled) 100,000 copies of their magazine with two simple segmented e-ink displays driven by a Microchip PIC12F629 microcontroller for their October 2008 special anniversary issue.
(Photo credit Esquire
magazine)
It was a letdown for many expectant nerds but when I saw the photo series in MAKE magazine and
realized it used a PIC I had to get a copy and play with
it. I added some hardware to allow access to the PIC
firmware after tearing the electronics out (including,
unfortunately, part of the front cover). First I added a
connector to allow attaching a Microchip ICD-2 programmer to the board. Then I
removed the 0-ohm resistor R7 and replaced it with a
switch to disconnect the battery from the PIC when I was
reading or loading code. And finally I added a reset
button on the pads thoughtfully left for that purpose by
the board designers.
ICSP Connector and Power Switch
The Esquire editors mention that they encourage hacking
and they thoughtfully left the code in the PIC
unprotected. I was able to read it out and and over the
course of a scotch or two I reverse engineered it. All
the time I have spent writing PIC assembly for my main
project has some benefit I guess. Based on the strange
little code segments I found (e.g. a goto to
the next line) it appears that the firmware designer
used a high-level language such as PICBASIC or C. In any event the code
is very simple. They use the retlw instruction
to build a series of 4 tables containing 16-bit data
words that are loaded into external shift registers to
drive the display. The firmware just indexes through the
tables. A sort-of interesting trick is the use of the
sleep instruction coupled with a
watchdog-timeout to save power between animation steps.
After loading the display the PIC sleeps until the WDT
expires at which point the PIC loads the next step in
the animation and sleeps again. There are two animations
in the firmware. The first one runs only once when the
PIC is first reset. It is 21 steps long. Each change on
the display generally requires two steps. The first step
erases any previously set e-ink segments. The second
step sets the new e-ink segment(s). The second animation
is repeated over and over. It is 210 steps long. I
thought about changing the animation but decided it was
too much work to make a better animation than Esquire
had already created. I decided to use the two spare
output pins on the PIC to drive LEDs and animate them
using another table in the firmware.
LEDs along the bottom of the board
The LEDs are driven by active
high outputs on the PIC through 200 ohm resistors to limit
the current to about 5 mA each. They are used to limit the
maximum current drawn from the battery to prevent possible
life-shortening damage to it. I added a jumper to
disable the LEDs because the hack consumes orders of
magnitude more power than the unmodified board and would
only last a few hours running continuously.
I'd love to hear about your hacks. Like S1axter, I've decided not to publish the reverse engineered firmware because I don't know its copyright status. However I'm happy to chat about what I found.
