Readable Project (2020)

A low-cost, replicable, and decentralized library system

dimension: 11”x9.8”
medium: RaspberryPi, Arduino, keyboard, RFID-sensor, jailbroken Kindle


I was commissioned to develop an RFID-based library system for an independent research studio to promote workplace reading and communication. Unlike traditional C++ or web-based systems, this version operates entirely on Raspberry Pi, making it accessible and easy to customize. By forgoing administrator-user permission hierarchies, it fosters an open and communicative environment tailored to the studio’s needs, creating a relaxed and enjoyable learning experience.




"I love that there’s no ‘admin’ role here. If I want to add a book or help a friend, I can just do it. It creates such an open and welcoming environment—it truly feels like a library for everyone.”  

— one of the participants






System Setup - Hardware

    1. RFID Reader: it can recognize user cards and stickers on the books.
    2. VeriNanoC (programmed in Arduino): an Arduino compatible board. It receives RFID data and sends it to the buffer of RaspberryPi.
    3. Raspberry Pi (programmed in Python): a small single-board computer based on Linux system. It is where the code for the whole system runs.
    4. Kindle: this jailbroken kindle is used to remotely login into the terminal of Raspberry Pi. It serves as the screen and trackpad of Raspberry Pi.
    5. Numeric keyboard: it can be used as another way to type something in the command line, other than touching the screen of kindle.
    6. Thermal printer (not shown on the sketch): it prints out people’s borrowing and returning record in real time. The printouts fade after a few months.

The thermal printer sitting on the bookshelf with a roll of paper showing all the recent borrowing/returning records.
translation: Maggie finished reading the book “How to Win Friends and Influence People” by Dale Carnegie in 9 days.



System Setup - Software
Flow chart showing the user process and the structure and function of python files



Main menu of the system shown on the e-ink screen of kindle
Codes are open-sourced on GitHub repo: Maggie-29/readable_project


Data Storage

Apart from the .py files, I stored all kinds of data produced in SQLite in the file Library.db, with three tables altogether.

    • BOOKNAME.db stores all the book info in the system.
    • PERSONNAME.db stores all the user info in the system.
    • allData.db stores all the returning/borrowing records.