Skip to content
/ InkLink Public

Real-time Collaborative E-Paper Canvas

License

Notifications You must be signed in to change notification settings

Nicell/InkLink

Repository files navigation

InkLink

Real-time Collaborative E-Paper Canvas

A collaborative drawing system with a web interface that syncs to an e-paper display.

Key Features

  • Real-time collaborative drawing interface
  • Web-based access from any device
  • E-paper display sync every 3 minutes
  • Multi-user support via WebSocket
  • Tri-color display support (black, white, and red)

InkLink

Try out the web demo here

Read my blog post to get an overview of the project

This project uses a 7.5" tri-color e-paper display to display the drawing from the web interface. The website is real-time and supports multiple concurrent users with websockets. The e-paper display will update every three minutes.

Hardware Setup

Total cost: ~$45-$85

Required Components

Assembly Instructions

  1. Print the three case components
  2. Place the display in the front
  3. Put the back plate on, feed the ribbon cable through the hole
  4. Glue the back plate to the front
  5. Place the ESP32 on the back plate and hot glue it in place
    • Placement is right above the hole with the headers touching the back plate
    • Test placement with the cover on top before gluing
  6. Put the micro USB to USB-C adapter into the microcontroller
  7. Place the cover over the microcontroller
  8. Glue the cover to the back plate

Software Setup

E-Paper Display Setup

  1. Install CircuitPython on the ESP32 board:

  2. Install required CircuitPython libraries:

    • Download the Adafruit CircuitPython Library Bundle for your version of CircuitPython
    • Install the following libraries to your lib folder with the web file manager:
      • adafruit_connection_manager
      • adafruit_requests
  3. Copy the CircuitPython files to your device through the web file manager or code editor:

    • waveshare7in5bv3.py
    • draw.py - Make sure to set the host variable to your server's domain
    • bmpread.py
  4. Once you're ready to test, edit code.py to run draw.py

    import draw

Server Setup

  1. Clone the repository:

    git clone <repository-url>
    cd inklink
  2. Deploy using Docker Compose:

    docker compose up -d
  3. (Optional) Set variables:

    • VITE_WEB_TITLE - The title of the web interface (build time variable)
    • CLEAR_CRON - The cron schedule for clearing the drawing (e.g. 0 6 * * 1 for every Monday at 6am)
  4. Update the hostname in draw.py to your server's domain

License

This project is licensed under the MIT License - see the LICENSE file for details.