Kindle RePaper

Anyone interested in making this work with Imp?

It works with Raspberry Pi, Arduino why not Imp?
I’ve got the hardware and I’m ready to start rewriting the code…
Wanna help?

Did I mention it uses 20ua when the Imp is asleep and the display is ON?

I have been looking at e-ink displays for an outdoor display application. Do you intend to drive the EPD extension board directly from an imp? It needs quite a bit more i/o pins than the six the imp can offer, so some kind of i/o expansion is necessary, possibly using a i2C port expander. Do you have a hardware design ready for this, or are you still in the concept phase?

How about IMP-002? I have this chip in my parts bin:

The MCP23017 should work. It provides 16 extra i/o ports (or 14 extra, because you lose 2 to I2C). I would stick to the imp-001, much easier to prototype.

Do you have any experience with the RePaper dev board?
Adafruit has good docs on using it with a Arduino Mega:

Just to get an idea, I put together a schematic using the MCP23017 i/o expander to hookup the EDP extension board to an imp-001 (or April board). It turns out you only have one imp pin left after using SPI257 to connect to the SPI port of the EDP, and using I2C89 for the MCP23017. Pin 1 is used to read the temperature sensor on the EDP board, using the imp’s ADC.
The PWM signal for the EDP is delivered by a 555 timer, turned on/off by one output of the MCP23017. The other outputs are used for the slower i/o signals to the EDP. I’m using 8 outputs of the MCP23017, so you could also use a MCP23008 instead (which has 8 i/o instead of 16).
If you don’t need the SPI flash on the EDP (it’s useful to store graphic patterns, but not essential for the operation of the display), you don’t need the MISO signal of the SPI, and this pin can then be used to generate the PWM signal, obsoleting the 555 circuit, and freeing another pin on the MCP23017. The BUSY signal is also not strictly necessary.

Excellent! Thanks for your help! Now if only someone would write the code…

I am also considering using the Uno to talk to the EDP accepting serial data for the bitmap display. Which do you think would be more useful?

Another thought would be to limit the writeable area to the top 1/2. Using the existing Mega code on the Uno with a smaller buffer. This is ideal for text strings of more than 5 characters if you wanted it to fit on one line anyway. You wouldn’t need the bottom half. In this case I would accept a short string thru the UART from Imp. This would be the easiest modification of all since the code already exists on Uno! But only for the specific case where you want to display a string…

Oh I forgot to answer your question. I have the Adafruit dev board you linked.

Don’t think you need an I/O expander, it seems to just be SPI (4 lines, including CS), plus reset and busy lines (which you may be able to tie/ignore with some experimentation).

You could do the bitmap rendering on an agent (which has 1MB of memory available) then push down display data to the imp that renders strips.

Kevin in the office actually got one of these but we’ve not played with it yet :slight_smile:

Can you show us the circuit? You don’t need the 8 lines?

Which 8 lines are you talking about? I don’t see 8 lines on their datasheet?

Are you looking at the datasheet of the panel itself, or of its breakout board?


The breakout board needs more than 8 lines. The 1mb of memory on the host is not needed. Only a few kb are needed out of 60kb on the Imp.

Do we have enough pins to run this controller directly?

Looks like Yes!

The EDP board needs 12 connections, including power and ground, so it does not connect to the imp without using a i/o expander. The board from Embedded Artists is quite similar (it’s also a passive interface to the display, but more compact, and also cheaper), and requires 13 connections, according to their documentation:
The timing of signals to drive the display is quite complex, much more than just a SPI bus. There are several extra control signals for maintaining proper voltage levels, including a PWM signal. Moreover, the timing is temperature dependent, that’s why there is a temperature sensor on the board, which needs an ADC.
The SPI flash (I2C flash on the Embedded Artists board) is optional, not needed for the operation of the display itself.
See RePaper documentation:
Changing the display image involves several stages of writing old and new, and inverted versions of the image. It can be done, sure, but it’s a bit of work.

Thanks for clearing that up marcboon.
So I bought the easiest one from Adafruit?
I understand there are not enough pins to use Imp directly.

I suggest you first try to get the display working with an Arduino, using Adafruit’s tutorial. Once you got that running, you can try to port Adafruit’s library to the imp, using an i/o expander for the extra control signals, as in my example schematic. I won’t implement it myself any time soon.

Hmm, not sure you do need all that stuff - see the actual breakout board schematic here:

The panel interface IS just SPI.

SPI (bidirectional) - 4 lines
BUSY (my guess is you may not need this, especially if you’re not writing it flat out)

There are a few other things:


These could well be hard-wired or tied (eg discharge/reset could be related), possibly with the exception of PWM.

The breakout board has I2C that goes to the micro - not sure what it’s used for, but it doesn’t go direct to the display.

marcboon’s suggestion of getting it working with the tutorial on an arduino first is a good one though - especially for pretty much write-only interfacing, you want to have a working reference before you go changing stuff!

I actually spent some time wiring the Embedded Artist’s breakout to an April breakout board. Sadly, given the documentation that was available at the time PWM, RESET, BUSY and DISCHARGE had to be under software control (most of the timing figures were TBD in the datasheet). If you tie DISCHARGE one way it shorts a power supply to ground and if you tie it the other the display slowly fades.

I still have the display sitting on my desk with the intention of hooking it up to a Imp-002 but haven’t found the time, otherwise I think you will need the IO expander.

You guys are great! Saved me from buying the EA board. Can anyone verify what Brandon said? It’s not that I don’t trust you… :wink: