Again... just because of fun, I decided to build device as small as possible, able to display text from FAT formatted local storage on display, with USB extension to charge battery and load/edit files.


My design goal was slightly complicated by using local PCB cheap supplier with two layer 8/8 mils technolgy - 6/6 mils would help a lot, four layers would allow better miniaturization.

I set PIC24FJ64GB002 as a core of Microreader, with DEP096032 OLED display. This is 96*32 pixels white OLED with SSD1307 driver. 24LC1025 serves as non-volatile storage. MCP73831 is Li-Ion charger and LMR62014 is 3,3/12V step-up converter for OLED pixels. In fact, there is nothing unusual and most of Microreader's features is hidden in firmware.

After battery plug-in, microreader jumps into offline-mode. If there is USB connection, it sets USB mode. In USB mode Li-Ion battery is charged (chargin/charged state is displayed) and Microreader starts USB MSD enumeration. After a while, it should set up new disk drive with 64kB capacity (actual free space depends on what filesystem you use). You can copy any files you like on Microreader, but only plain text files are supported for off-line viewing. When you unplug Microreader from USB, you are in off-line mode. Use three keys as Up, Select and Down keys (key placement is obvious). You can browse files and view content of file with Select key. Up and Down keys does its job here too, Select key returns you to file list. Holding Up and Down together for a second shuts device off. Holding Up key wakes Microreader from sleep. Holding Select while powering-up drings device into USB HID bootloader mode and standard Microchip HID bootloading software can be used to upload new firmware.

Technical note - SSD1307 works in SPI or I2C mode, I choose I2C mode and it wasn't the best option. Its I2C implementation is somehow flaky and sometimes master end up with locked I2C engine, SDA permanently in low state. I had to implement "hack", where - if this condition is detected (bus collision bit is set) - firmware shuts down I2C engine and master does up to 9 bitbanged clock pulses on SCL line, watching SDA line. When SDA line returns to high level (slave released it), it enables hardware I2C, then issues start condition followed by stop condition.

Microreader on youtube
Microreader on picassa
Schematics in pdf format
PCB gerber files
Bootloader - here and firmware, ver. 1 to be uploaded by bootloader is here
For now, there are no sources (messy as usual), but if you ask me, I can send it
A bit more about Microreader is here - if you can read Slovak

Updated 26.8.2012
Back to topics