A simple phone-like device operating on an ESP32-board using Rust
Go to file
2026-06-04 20:59:57 +03:00
.cargo Initialize 2026-05-12 18:08:26 +03:00
src Add text wrapping 2026-06-04 20:23:18 +03:00
.clippy.toml Initialize 2026-05-12 18:08:26 +03:00
.gitignore Initialize 2026-05-12 18:08:26 +03:00
build.rs Initialize 2026-05-12 18:08:26 +03:00
Cargo.lock Add multithreading 2026-05-17 03:13:08 +03:00
Cargo.toml Add multithreading 2026-05-17 03:13:08 +03:00
demo.mp4 Add README.md 2026-06-04 20:59:57 +03:00
README.md Add README.md 2026-06-04 20:59:57 +03:00
rust-toolchain.toml Initialize 2026-05-12 18:08:26 +03:00

Phone-like device using esp32

This is a hobby project of mine where I try to recreate a simple phone-like device using an ESP32-board using Rust and some additional hardware listed below:

Drivers for each of these peripherals are written manually.

  • Driver for the LCD screen is found at display.rs
    • Interfaces via SPI
  • Driver for the 4G module is found at at_commands.rs
    • Interfaces via UART
  • Driver for the IO expander is found at sx1509.rs
    • Interfaces via I2C

This project additionally uses esp-hal as the sole abstraction layer between the board and the code itself. Also rusttype is used for rendering TTF-fonts, which is used to render text with the bundled OpenSans-font.

This project also utilizes esp32 RTOS to run two threads on the two seperate cores on the device. One core processes outward-facing state control and rendering, while the other processes I/O, such as keypad presses and communication with the 4G-module.

Demonstration