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.
  • 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 2 of the board is pretty solid! I have Arduino board support here, and I'm working on a couple of libraries that support the book: a library called Open Book in 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.