diff --git a/README.md b/README.md new file mode 100644 index 0000000..97fdabd --- /dev/null +++ b/README.md @@ -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 + +