Paying Bills
PCBWay graciously offered to sponsor this this project. They are quite thorough with their file approval process to avoid any surprises once boards ship. Thanks PCBWay!
Introduction
NOTE: This is my best attempt to explain the project, but it's moving fast an constantly breaking. Read the project logs as I'll update them more frequently than this description. For the most up-to-date info, check the project's repository. Particularly the dev branch.
The goal of the project is simple: democratize e-books. Instead of repeating what I've already written, read the first project log to understand the ethos of this project.
Hardware Stack
If you read the note above, you know this project is moving fast. If you read the project log, you know I'm still trying to decide what hardware platform to use. Most versions are designed around the Raspberry PI HAT and carrier board, but there is a repository with code that runs on both the Raspberry Pi and Pine A64-LTS with no hardware changes.
The project works with two different e-papers: GDEW042T2 and GDEY042T81. Both are 4.2" displays and 4 color grayscale. The project also includes a touchscreen and backlight. FT6336 controls the touchscreen and TPS61165 controls the backlight. The carrier board PCB includes lithium ion battery charging and boosting using the BQ24075 (charger), BQ27441-G1 (fuel gauge), and TPS63701 (5V boost).
Software Stack
MuPDF
The heart of this project is MuPDF. A comprehensive document rendering library that supports just about every e-book format. It reads documents from the filesystem, lays out the document for the screen dimension, and outputs a pixel map. The library also compiles to 60+ MB so centering this project on a microcontroller is out of the question. This leads us to the next part of the technical stack.
LVGL
Light and Versatile Graphic Library is designed for embedded systems. I could've used the Linux frame buffer to drive the e-paper display, but writing the GUI with LVGL allows me to easily port to a microcontroller if I can squeeze down MuPDF capabilities to a flash chip. Also, sending LVGL widgets to the e-paper display was much more straight forward than the frame buffer device.
Calibre
Just about every e-book lover reading this has heard of Calibre, an all in one e-book management software. You can read e-books, edit metadata, purchase e-books, and even self-host a book server. The latter is how Calibre comes into this project. The software allows one to run a web server that makes a book library available on a local network or on the world wide web with port forwarding. Put you don't need Calibre to serve books. In fact, there's an open spec for digital distribution.
OPDS
The Open Publication Distribution System is an open, decentralized way to present machine-readable catalogs to eReader clients. If that went over your read, OPDS is to e-books as RSS feeds are to podcasts. That's an oversimplification, but it's my laymen explanation.
OPDS is how the project fetches books from Calibre, and thus, the project can fetch books from any OPDS compatible server. The first commercial book marketplace I plan to integrate with is Libreture, a bookshop and e-book cloud library.
Conclusion
I'll repeat the above disclosure: all of the above is probably out of date by the time you're reading this. Check the project logs and project repository for the latest info.
This is a fantastic idea! I can't even imagine how long it took you to implement this. For a writer who constantly works with many books while creating research papers for students at https://edubirdie.com/ the ability to set up an open source e-reader and access the books from your own server would be pretty helpful. I'll keep an eye on the project updates. Good luck