Your Life in X is an embedded Rust project that displays a visual timeline of your life on an e-paper display. Inspired by Bryan Braun's Your Life in Weeks, this project renders a similar visualization on an tricolor e-ink display using an ESP32-C3 microcontroller. The goal is to provide a tangible, always-on representation of life's progress, leveraging embedded Rust as a learning experience.
This project runs on:
- Microcontroller: ESP32-C3
- E-Paper Display: WeAct Studio 2.9-inch
- E-Paper Driver Library: A fork of
weact-studio-epd, modified for 2.9-inch display development
| E-Paper Pin | ESP32-C3 Pin |
|---|---|
| DC | 21 |
| RST | 22 |
| BUSY | 23 |
| CS/SS | 15 |
| SCK | 6 |
| MISO | Not used |
| MOSI | 7 |
your-life-in-x/
├── esp/ # ESP32-C3 firmware
├── simulation/ # Desktop simulation version
├── weact-studio-epd/ # Fork of EPD driver
├── your-life-in-x/ # Core logic for rendering the life timeline
├── docs/ # Documentation and images
└── flake.nix # Nix-based development setup
This project is written in Rust and leverages several embedded development crates:
embedded-graphics– Drawing primitives for e-ink displaysdisplay-interface-spi– SPI interface for the displayembedded-hal– Abstraction for embedded hardware interfacesesp-hal– ESP32 hardware abstraction layerweact-studio-epd– E-paper display driver (forked for 2.9-inch support)
You can use the nix flake present in the project or install:
- Rust toolchain (install via
rustup) cargo-espflashfor flashing the firmware
-
Install dependencies:
rustup target add riscv32imc-unknown-none-elf cargo install cargo-espflash
-
Clone the repository and navigate to the ESP firmware directory:
git clone https://github.com/jmarcelomb/your-life-in-x.git cd your-life-in-x/esp -
Flash the firmware:
cargo run --release /dev/ttyUSB0
(Replace
/dev/ttyUSB0with the correct serial port.)
For quick development and testing, you can run a simulation version on your PC:
cd simulation
cargo runI created Your Life in X as a hands-on embedded Rust project to improve my skills and explore real-world applications of Rust in microcontroller-based systems. This project combines low-power hardware, SPI communication, and graphics rendering to bring a simple but thought-provoking visualization to life.
This project is licensed under MIT OR Apache-2.0, following the same dual-license model as Rust itself.
