A quick note: after many requests, I've set up a Patreon page where folks can support the work. I also plan to use it to post occasional notes and thoughts that don't fit into tweets. For less frequent updates about the Open Book and other Oddly Specific Objects, sign up for the mailing list here. I hate spam as much as the next guy (honestly probably a lot more) so I promise I'll only reach out when I have something to share that you'll want to hear about. Okay, on with the readme!
As a society, we need an open source device for reading. Books are among the most important documents of our culture, yet the most popular and widespread devices we have for reading — the Kobo, the Nook, the Kindle and even the iPad — are closed devices, operating as small moving parts in a set of giant closed platforms whose owners' interests are not always aligned with readers'.
The Open Book aims to be a simple device that anyone with a soldering iron can build for themselves. The Open Book should be comprehensible: the reader should be able to look at it and understand, at least in broad strokes, how it works. It should be extensible, so that a reader with different needs can write code and add accessories that make the book work for them. It should be global, supporting readers of books in all the languages of the world. Most of all, it should be open, so that anyone can take this design as a starting point and use it to build a better book.
In January 2020, the Open Book was named winner of Hackaday's Take Flight with Feather contest! This means that at some point in the near future, Adafruit will manufacture 100 of the boards, and they will be available for purchase at DigiKey.
The Open Book Rev 4 board is at 99%; the only hardware issue is that there is a slight buzzing sound on the headphone jack when plugged in to USB; when tied directly to ground, the USB cable's shield acts like an antenna, picking up RF noise from the environment. I plan to address this with an RC filter between the USB shield and the ground plane.
Software support has made great strides; on the Arduino side, the Open Book IL0398 driver has waveforms for 2-bit grayscale mode and a "quick" mode for turning pages, as well as initial support for partial refresh (though the API for this will change).
The Open Book also supports CircuitPython!
As of January 2020, this is where we are on the roadmap:
- Hardware: Build Feather Wing to validate peripheral hardware design.
- Hardware: Open Book Feather with SAMD51 processor, Flash memory, shift register for buttons, indicator LED, etc.
- Board support: UF2 Bootloader for Open Book
- Board support: Arduino core for Open Book
- Board support: CircuitPython board definition for Open Book.
- Software: Universal language support with Babel. Word wrap and pagination are WIP, but it's stable enough for general use.
- Software: Port Babel to CircuitPython.
- External dependencies: modify Adafruit EPD to support e-paper screens on secondary SPI bus.
- Software: minimum viable software for listing and selecting books as text files on SD card, reading a book, storing user's place.
- Hardware: Migrate Open Book PCB to KiCad.
The Open Book is a Feather-compatible SAMD51-based board inspired greatly by the Adafruit PyBadge. In addition to standard Feather features (3.3v logic, built in LiPo charging), it supports a variety of peripherals aimed at creating an accessible, universal text reading device. The PCB can be ordered directly from OSH Park at this link
Main features:
- 4.2" inch e-paper display with partial refresh, driven over a dedicated SPI bus.
- Seven buttons (directional pad, select button and page turn buttons) accessible via a shift register, as well as an eighth button (lock) connected to an interrupt pin on the SAMD51.
- A MicroSD slot on the main SPI bus, with SD card detect.
- LEDs to indicate charging and full status, plus a red LED for general blinking.
- A 2MB flash chip and Neopixel for CircuitPython support.
- A second 2MB Flash chip for universal language support with Babel.
- Access to two digital or analog pins via STEMMA-compatible ports with current and voltage protection.
- Access to an I2C interface via a third STEMMA-compatible port.
- Voltage monitors on both the battery and the USB power port.
- An audio combo jack with stereo audio output and raw microphone input.
- A MAX4466 microphone amplifier for amplified microphone input.
As the name implies, the intent of this board is to create an accessible open source device for reading books. These peripherals were chosen with this use case in mind (screen for displaying words; MicroSD for storing texts to read; Flash chip for language support; headphone jack for playing back audio books; microphone input for voice control). Having said that, this board is capable of more; you could turn it into a music player or voice memo recorder; use the STEMMA ports to add sensors and turn it into an air quality monitor; plug in an AirLift wing and have it display sports scores or transit alerts. I'm really curious what uses folks will come up with.
More documentation will come, but for the moment, a couple of other notes about intent: the design of the board prioritizes inexpensive components, to try to make it as affordable as possible. It also uses larger surface mount components than you might be expecting, specifically to make it easier for folks to build at home without a fancy pick and place. Resistors and capacitors are all 0805 or larger to make hand-placement more friendly, and where a chip was available in TSSOP and SOIC packages, I went with the SOIC. The only tricky parts are the flex connector and the SAMD51, which both have 0.5mm pitch. There was really no way around those. If this seems a bit outside your wheelhouse, read on.
The eBook wing does less than the Open Book Feather, mainly because it's limited to using only the pins available via the Feather header. Still, it packs quite a few features:
- Same 4.2" screen, this time driven over the main SPI bus.
- Eight buttons on an I2C port expander (more expensive than the shift register, but we don't have three pins to spare).
- MicroSD slot on the main SPI bus.
- 2MB Flash chip for Babel (not connected by default)
- 32kb SRAM for screen buffering
- I2C and pins A1 and A2 broken out as STEMMA ports with current and voltage protection.
- Mono headphone jack driven by A0.
The wing also leaves pins 11, 12 and 13 available so that it can stack with the AirLift FeatherWing.
Initially the eBook Wing was intended to just validate the ideas going into the Open Book, but after building a few of the Open Book board, I think it has a place as its own thing. It's a much simpler build, with fewer parts to place and more space to rework if need be. It also supports probably 80% of the desired use cases: screen, storage and buttons, language support, audio out and expansion ports. You lose mic input, but you can remedy that with a STEMMA-compatible microphone.
Basically, if you want to build your own book but don't have a reflow oven or aren't comfortable placing really fine-pitched parts, the wing is a way to DIY and let a Feather M4 handle the power and compute stuff.
A couple of notes on this. First off, the Feather connectors are ludicrously expensive compared to the rest of the BOM. More for a row of connectors than an entire microcontroller?! Ridiculous. If you're doing this as a DIY project, try ordering two of these 2x20 surface mount headers and cutting them down to the size you want; it'll shave almost $4 off the BOM, and they're much slimmer than the ones linked here. If you want a slim connector like that one, without the hassle of cutting things to size, Samtec has 2x12 and 2x16 slim headers with similar pricing at low volumes; still trying to figure out how to make this more reasonable.
Second, the 1µF capacitors. Strictly speaking, only the ones for the e-ink display need to be rated for 25V, but since pricing is so similar for 10V or 25V caps, I just grouped them all together so you don't have to worry about the distinction.
Finally, for the Flash chips, the GD25Q16C and GD25Q32C are 100% pin-compatible, which is to say that if you want more space for CircuitPython storage, feel free to use the larger chip for U4. It's twice the storage for an extra 25¢. You can also use the larger chip for Babel's U6; it won't function any differently right now, but I eventually plan to use that extra space to support the supplemental multilingual plane, including emoji!
OK, here's the rundown:
There are two optional right-angle SPST switches: BTN_NEXT_ALT and BTN_PREV_ALT. I recommend skipping these, but if you want them, the part number is TL3330AF130QG.
I've designed the Open Book A1 Rev 05 to address some small issues:
- There was a slight hum in the headphones when plugged in to USB. Addressed this by adding a resistor and a capacitor between the USB cable shield and the ground plane.
- The thru-hole button footprints weren't quite perfect, and prevented the buttons from mounting consistently flush with the board. A new button footprint should address that issue.
- I moved to new gull-wing buttons for reset and lock, which should improve their durability. Left the footprints for the old side-mount previous and next buttons as-is, but renamed them from BTN to DNP since their functions are covered by the thru-hole previous and next buttons. You can populate them if you want, but I'm planning to design enclosures as if they're not there.
- Moved the status Neopixel to the bottom, by the reset button, since it's especially useful for communicating bootloader status which often involves the reset function. It's also a right-angle LED now.
- Extended the inductor's solder pad out on either side, in the hopes of making hand-soldering easier (before, you could only solder that part with an oven or hot air).
- Finally, I fixed a minor typo in the silkscreen; UART is SERCOM5, not SERCOM0.
It's unclear whether I'll test this version of the board; the changes are so minor that I think it should "just work", and for the Take Flight with Feather run, there'll probably be a comopletely different revision that takes DFM concerns into account. I just wanted to make sure I updated the schematics in case folks wanted to build along at home.
The differences from the BOM above: