Close
0%
0%

The Open Book Feather

An open hardware reading device

Similar projects worth following
The Open Book is an open-hardware device for reading books in all the languages of the world. It includes a large screen and buttons for navigation, as well as audio options for accessibility and ports to extend its functionality. Its detailed silkscreen, with the all the manic energy and quixotic ambition of a Dr. Bronner's bottle, aims to demystify the Open Book's own design, breaking down for the curious reader both how the book works, and how they can build one for themselves.

Links: [GitHub] [Patreon] [Twitter]

At the core of the Open Book is a SAMD51J19A microcontroller, a powerful ARM Cortex M4 with 512 KB of Flash and 192 KB of RAM. It has 51 pins of GPIO, and the Open Book uses all of them for peripherals and possibilities: 

  • A 400x300 black and white e-paper screen enables the core experience of, y'know, reading. 
  • A MicroSD slot allows for plenty of external storage for files. An offline copy of Wikipedia fits in 64 gigs — Hitchhiker's Guide, anyone?
  • User input comes from seven buttons on a shift register, plus an eighth button tied directly to one of the SAMD51's interrupt pins.
  • A dedicated flash chip for languages gives the book room to store glyphs and Unicode data for every language in the Basic Multilingual Plane (which is most of the languages in use today).
  • A 3.5mm audio jack:
    • Dual DACs allow for stereo audio output, and the SAMD51 is powerful enough to decode MP3 files on the fly (hello audiobooks)!
    • Raw input from a headset's in-line mic button lets the book detect up to four inline buttons, depending on the design of the headset...
    • ...and amplified mic input from the inline mic works with TensorFlow Lite to allow recognition of voice commands! Also, like, recording stuff. Rev 4 also adds the ability to shut down the mic, for power saving and privacy purposes.
  • A QSPI Flash chip and status Neopixel enable CircuitPython use cases.
  • STEMMA ports allow for the addition of I²C sensors and external analog or digital inputs. You can even run a Neopixel strip off of them, which makes for a decent reading light.
  • And of course it's a Feather, which means it's battery operated with built-in LiPo charging. It also has a full Feather header, which means you can add wings for everything from sensors to GPS to WiFi to LoRa.

Revision 4 of the board is solid! It adds the aforementioned mic shutdown pin, as well as a green LED to indicate full charge, and a voltage monitor on VBUS to determine whether the device is plugged in. I have Arduino board support here, and I'm working on a couple of libraries that support the book: a library called Open Book for interfacing with the device's peripherals, and a a library called Babel that sits between the language chip and an Adafruit_GFX subclass for multilingual typesetting. 

For (very infrequent) updates about the project, I've set up a mailing list here.

Open Book A1 Rev 04.brd

EAGLE board for Open Book A1 Rev 04

brd - 607.27 kB - 12/27/2019 at 06:53

Download

Open Book A1 Rev 04.sch

EAGLE schematic for Open Book A1 Rev 04

sch - 992.11 kB - 12/27/2019 at 06:53

See BOM
Download

  • End of year State of the Book

    joey castillo12/30/2019 at 18:38 0 comments

    Some quick notes on The Open Book at end of year. First: after a lot of people asked about donations, I made a Patreon page where folks can support the work. But whatever, on to the work itself: rev 4 was a success! The new features (mic shutdown, VBUS monitor, battery full LED) work as expected, and I've updated the Arduino core and the Open Book library with support for the new pinout. I also designed a basic 3D printed enclosure and another in laser-cut wood. Both are compatible with both the Open Book board and the eBook Wing (by rotating the back piece 180 degrees).

    I've expanded the custom e-ink driver I've been writing with waveforms for quick refresh, grayscale mode and partial refresh. Improving partial refresh is a TODO item; my current waveform causes temporary ghosting after a while, and I worry it may have negative long-term effects. But I sense that if I add an invert phase to BB and WW it will improve things (at the cost of a little bit of flickering).

    Oh! I also trained a TensorFlow Lite model to recognize voice commands on the inline mic, to show my current thinking for future accessibility work. Gives good demo, even if it has trouble with the word "left". 

    That's accomplishments. Now, a couple of challenges:

    • I have noticed a little bit of noise on the mic input when plugged in to USB power, and I think it has to do with the way I'm connecting the USB shield to the ground plane. When I do a revision for manufacturing, I will want to add an RC filter between the USB shield and the ground plane.
    • The right-angle buttons for previous and next page feel superfluous, and they're hard to press when the board is in a case. May omit them in the future, since they're relatively pricey.
    • On a couple of boards, the Lock button fell off after a while, which tells me there's a mechanical issue there. For now I'm just applying a bunch more solder to keep the right-angle buttons secure, but I need to find some buttons with pegs to alleviate the stress of repeated pressing, or devise some other method for supporting them.
    • I'm evaluating some very tiny white right-angle LED's in the hopes of perhaps implementing a front light, though there are some challenges there.

    Thanks, everyone, for your kind words and support, and happy new year! See you in the new decade.

View project log

Enjoy this project?

Share

Discussions

TG-Techie wrote 01/02/2020 at 02:29 point

great job

  Are you sure? yes | no

ostropest wrote 12/17/2019 at 22:20 point

You are write about Lora, what You are thinking about http://outernet.is

  Are you sure? yes | no

kwapiszon wrote 12/26/2019 at 21:15 point

better mesh wifi node (batman or https://disaster.radio )

  Are you sure? yes | no

ostropest wrote 12/17/2019 at 22:18 point

Is possible add AA power or other replace acummulator?

Is possible add solar panel? For example on other side (down). e-ink no needed more power. Solar panel are good options.

mruby need 450KiB RAM ;( if professor no have MMU and protect mode runing bash/ssh will be impossible in future.

  Are you sure? yes | no

agfa wrote 12/12/2019 at 15:12 point

Nice article, I always wanted to look at open sourse stuff like this one I think that I would use something like this project for my argumentative essay writing service from https://edubirdie.com/argumentative-essay-writing-service or for any other project in the future. Open book is a huge deal.

  Are you sure? yes | no

Ken Yap wrote 12/06/2019 at 04:29 point

@Starhawk I thought it might be something like that. Well whatever floats your boat and all the best.

  Are you sure? yes | no

Starhawk wrote 12/06/2019 at 05:38 point

Thanks! Feel free to hit me up in the chat sometime tho. I'm usually pretty lonely and bored... I live in a rent-controlled apartment in a small town, and I don't drive (never learned, due to some complications of my disability) so I don't get out much... also, although I can be remarkably opinionated (you may have noticed!) I try to be friendly and a bit of a wise@$$ most of the time.

  Are you sure? yes | no

Tom Nardi wrote 12/06/2019 at 00:01 point

Absolutely love this project, very happy to see it come to IO and also entered into the Feather contest.

  Are you sure? yes | no

oshpark wrote 12/04/2019 at 16:58 point

Fantastic project! 

  Are you sure? yes | no

sirmylesavery wrote 12/04/2019 at 14:23 point

Looks like a fascinating project! I've very interested to see how this evolves. The BOM looks broken to me, it does not list any of the components. However I have never used FindChips for BOM/components, I've always used Octopart, so the error may just be on my end.

(Edit): found the Github, which lists the components, as well as links to components.

  Are you sure? yes | no

Starhawk wrote 12/04/2019 at 00:15 point

How hard would it be to rework this for an ESP8266 board such as the ESP-12E or ESP12F? That would give the advantage of (presumably) a lower cost, since those ESP boards can be purchased for $5 or less, and would easily add WiFi capability, which, if done right, could potentially be used to pull/"stream" eBooks from remote storage -- a very cool thing indeed ;)

Also -- which eBook formats are supported here?

  Are you sure? yes | no

de∫hipu wrote 12/04/2019 at 09:17 point

Since it's a feather wing, you can simply just use a HUZZAH feather board with an ESP8266 on it. Not hard at all.

  Are you sure? yes | no

Starhawk wrote 12/04/2019 at 15:45 point

"SAMD51J19A"... ARM Cortex M4

"ESP8266"... sort of ARM-ish but by no means actual ARM.

de∫hipu... "yeah just swap em out, for sure the code will run fine instead of hemorrhaging errors like a clumsy hemophiliac on warfarin"

Me... https://m.imgur.com/t/futurama_fry/ocfuDzL

  Are you sure? yes | no

de∫hipu wrote 12/04/2019 at 16:04 point

There are two versions. One has the SAMD51, and that acts as a feather, so you can connect the ESP32 featherwing to it and use the Nina firmware to have WiFi on it, the other one is a featherwing, so you can put any feather you want on it.

  Are you sure? yes | no

Starhawk wrote 12/05/2019 at 17:38 point

Apologies, I missed your follow-up comment because I was not notified for some reason. I had missed the fact that there were two versions... sorry for the confusion. ESP32 is still not ESP8266 (duh) but I'd think they'd be at least somewhat interoperable.

  Are you sure? yes | no

joey castillo wrote 12/05/2019 at 17:33 point

Yep the initial wing did function with an ESP32 feather; I didn't do a whole lot of testing with it, but I sense the baseline level of functionality would work. 

With an ESP8266 I think you'd be pushing it; you would have SPI and I2C for the screen, buttons and SD, but each SPI device requires a chip select, and the screen also needs a pin for data/command (and really works better with pins for busy and reset), so I think you'd run out of GPIO pretty quick, even if you did get rid of the Feather header. It also only has one ADC and no DAC, so the headphone use case is out, as are the expansion ports on the side. The price thing might also be kind of a wash; at quantity the SAMD51 is $3.83, which feels like a lot of bang for your buck. 

> which eBook formats are supported here

This is more of a software question, and I don't want to overpromise. For the Arduino library and minimum viable software, I'm aiming to support plain text and maybe some minimal, Markdown-like formatting. I sense that the thing is powerful enough to do more, but software would have to be written to parse ePub and MOBI. PDF unfortunately is probably not going to happen, just because of the resolution (300x400) and color depth (1-bit) of the screen.

  Are you sure? yes | no

Starhawk wrote 12/05/2019 at 17:55 point

I already have a couple ESP8266 boards, a gift from a friend, which is why I was asking about that... re DAC, look up the concept of an R-2R DAC on Wiki -- I'd have to drive it from a shift register (the ubiquitous '595 comes to mind) because I/O pins, and tacking an LM386 or similar amplifier on the output would be almost certainly in order, but -- again -- I have all of those parts, and a minimal LM386 amp is exactly three parts -- a rheostat or pot on the input for volume control, the LM386 chip itself, and an electrolytic capacitor of anywhere between 10uF and 1000uF (depending on how much bass you want) on the output. That's pretty dang hard to mess up.

As an aside, ePub would be easy to support -- it's XHTML in a "mislabeled" ZIP archive with a few extra bits stuck in for various purposes. Unzip, grab the page/file order from the internal OPF file, and the Table Of Contents info from the NCX file, use that with a file concatenator to order everything into one very large XHTML doc, and then rip out all the tags. Done.

PDF would also be easy (!), given the plethora of freely available online tools to convert from that format into ASCII and Unicode text...

  Are you sure? yes | no

de∫hipu wrote 12/05/2019 at 22:17 point

There is nothing easy about parsing XHTML, especially with limited memory.

  Are you sure? yes | no

Starhawk wrote 12/06/2019 at 00:38 point

@de∫hipu -- who the #@!! said that the *device* should have to do the parsing...?! That's a bit dim, now, isn't it...? ;)

Instead, have a PC-side "loader" application... and, in this day and age, probably a phone/tablet app is also warranted...

/sigh

...yeah, I know, "who needs a friggin app for an eReader" -- like anyone is going to notice or care outside of the tinfoil hat crowd, and IMO they can quite honestly go screw, at least until they realize that there is absolutely no chance that lizard people from Mars are ever going to take over Earth, yeesh...

*ahem*

Anyhow, have the "loader" program/app parse (and if necessary, convert) the input files (*.txt, *.pdf through a webservice, and *.epub) into whatever format the device can accept, and then either dump the file to the device, or to remote storage with some sort of device-resident 'hook' (like a symlink, or, ironically, perhaps a better fit, at least metaphorically, would be the Windows *.lnk file, since that's an actual /file/ and not a sort of filesystem-approved version of HTML's meta-redirect function).

  Are you sure? yes | no

de∫hipu wrote 12/06/2019 at 11:21 point

Sure, Calibri already exists and can convert pretty much any e-book format to text files — but I wouldn't call that "e-pub support" on the side of the device then.

  Are you sure? yes | no

Ken Yap wrote 12/06/2019 at 04:05 point

Well seeing as my mugshot is used to illustrate the word scrounger in the dictionary I'm in no position to be critical but your plan seems a lot of trouble to go to to avoid buying a decent MCU for the task...

  Are you sure? yes | no

Starhawk wrote 12/06/2019 at 04:23 point

WHAT?!?! They told me *I* was gonna get that pic!!!

/joke

PM me if you want exact details, as I don't want to hijack this page, but the basic story is that, despite being a fairly intelligent young man, I am (quite legitimately) on Disability and thus forced to pinch pennies much harder than I'd like. Don't get me wrong, I'm grateful for what I get, but whatever idiot thought this was enough to live on without a very difficult time of it indeed... that fellow should be quite glad that stupidity is not a criminal offense.

Suffice it to say that I have the most infuriating set of abilities - every single talent and skill I have, comes with an unavoidable caveat or two that renders it utterly useless for any sort of activity that might induce monetary gain.

So I make do with what I can get... which, honestly, ain't much. I have a considerable quantity of stuff that only works because the massive layers of "temporary" bandaid fixes tend not to fall off all at once. This is also why my computer builds tend to go together with Dollar Tree superglue and 3M double stick foam tape far more than anything else...

  Are you sure? yes | no

de∫hipu wrote 12/03/2019 at 22:06 point

I'm really happy to see this project documented here, because I want to steal that display for my own projects! (And great work, by the way!)

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates