With all the fuss over Kindle Fire I thought it might be fun to see if the humble 8-Bit microtouch hardware would do a servicable job as an e-reader. With a bit of fiddling it turns out to be a quite capable if not entirely practical eBook.
There are hundreds of thousands of books available in the epub format. The format is essentially a collection html/css/jpeg files and xml metadata such as author/title/table of contents bundled into a zip file (If you want to look inside an epub file simply change ‘.epub’ extension to ‘.zip’ and double click). I thought it might be possible to build a reader for the microtouch that would directly read a standard epub but the code and memory requirements for things like jpeg/png/gif decoders, xml parsers and decompression overwhelmed the available 2.5k RAM/32k Flash. The alternative was to transcode into a format that retained all the structure of the epub in a form easily digestible by a small, 8-bit device.
The transcoding tool (epubgrider) reads standard epub format files and creates ‘.epb‘ files readable by the microtouch code. The transcoder has a rudimentary layout engine that formats and paginates the html content, mapping font sizes and styles to those appropriate for viewing on a 320×240 screen. It records and stores hyperlinks within the html and resizes and transcodes images from jpg/png/gif etc to a raw 16bit RGB format. The transcoder then packages text/images/links/fonts etc with a spatial index in a ‘.epb‘ file. The spatial index allows fast scrolling through books with thousands of pages – 8500 for the largest book I found. Fonts are stored along with book so in theory books can have any typeface they like – epubgrinder can generate anti-aliased bitmap fonts from outlines. ‘.epb‘ books can be bundled into ‘.bks‘ bookshelves. Both formats are based on ‘blob’ files, a simple hierarchical data format that is suitable for 8-bit micros with microSD cards.
The net result is a little handheld device with virtually any number of books containing any number of pages. When launched the app shows a scrolling list of available books. Touching a book opens it in the reader, touching the right edge scrolls by page, touching the black bar at the bottom returns to the book list and saves your place in the book. The reader supports illustrations, hyperlinks within books for navigation and footnotes.
As always code is posted at https://github.com/rossumur/microtouch. The epubgrinder tool is based on the QT framework, contains a microtouch simulator and runs on Windows, Mac and Linux. There are a number of interesting .epb books and .bks bookshelves in the microSD folder and in the books.zip file in the tools directory.
If you don’t want to build your own microtouch, the lovely folks at adafruit will sell you a prebuilt one.
until next time,
Rossum
Always impressed. Keep up the exceptional work.
Really great.
Where do you get your TFT LCD displays? I haven’t found too many good sources in the U.S. (Newhaven Display, DisplayTech, ?), and most Chinese suppliers prefer to deal in high volumes.
Awesome, as usual. And I can confirm that old people need more sleep.
Wonderful job, dude!
While the screen size is small, a pocket reader would be any awesome thing to have in, say, your pocket.
Protip: Market it before someone else does!
Awesome ! (even if Im not a big Qt fan)
lets try it 🙂
Do you have another microtouch related projet ?
Rossum, if you’re interested, I’d like to help by designing and maybe supplying a case for the microtouch. I think it would transform it…
james (at) diago.co.uk
Great work by the way…. 🙂
Put a “Don’t Panic” sticker onto it ;3
Hi – maybe it is late and I am too old to focus when the sun goes down, but I see the sources. However, can someone direct me to a parts list and schematic? Sorry if I seem like a dummy, but I just don’t see it.
Thanks
Glen
Hi , very cool project. I was interested in trying out the epubgrinder app
but I don’t know how to build it from sources and how do I run the simulator in ubuntu, Can you point me in the right direction please?
Hi I’ve just recently come across your projects and i’m in awe…
I hope to be able to undertake projects like these some day.
I’m going to teach myself.
I would like to know how to build the epubgrinder app and the microtouch sim for ubuntu.
can you point me in the right direction please?
pretty cool device – so much so it has sparked my interest in using it as a proof of concept platform for an idea i have,.
by the way who is the manufacturer of the lcd panel, would like to see if they have a 4 nch panel that could be retrofitted to the microtouch
Do all the apps run under the simulator?
I cannot seem to get them all to run, especially wiki and epub
Rossum – this is just great. do you guys provide support or consulting (or charity:-))
thanks.
Thank you for moving this fantastic blog!
😀
You are awesome!
😀
Hey, i love this. How much and from where can i buy it