Add README.md

This commit is contained in:
Sofia 2026-06-04 20:59:57 +03:00
parent 5c1917fb6f
commit 46a86f05b3
2 changed files with 32 additions and 0 deletions

32
README.md Normal file
View File

@ -0,0 +1,32 @@
## 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:
- Base board: https://www.electrokit.com/en/adafruit-esp32-feather-v2
- LCD Screen: https://www.electrokit.com/en/1.3lcd-monterad-pa-kort
- 4G module: https://www.electrokit.com/en/4g-modul-monterad-pa-kort-clipper-lte-4g
- 16-button keypad: https://www.electrokit.com/en/keypad-16-buttons-4x4-matrix
- 16-pin IO expander: https://www.electrokit.com/en/16-output-i/o-expander-breakout-sx1509
Drivers for each of these peripherals are written manually.
- Driver for the LCD screen is found at [display.rs](./src/display.rs)
- Interfaces via SPI
- Driver for the 4G module is found at [at_commands.rs](./src/at_commands.rs)
- Interfaces via UART
- Driver for the IO expander is found at [sx1509.rs](./src/sx1509.rs)
- Interfaces via I2C
This project additionally uses [esp-hal](github.com/esp-rs/esp-hal) as the sole
abstraction layer between the board and the code itself. Also
[rusttype](https://gitlab.redox-os.org/redox-os/rusttype) is used for rendering
TTF-fonts, which is used to render text with the bundled OpenSans-font.
This project also utilizes [esp32 RTOS](https://docs.rs/crate/esp-rtos/latest)
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
<video controls src="./demo.mp4" alt="demonstration">

BIN
demo.mp4 Normal file

Binary file not shown.