1.6 KiB
1.6 KiB
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
- 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.