## 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