- Waveshare E-Ink ESP32-WROOM-32E driver module
- Waveshare E-Ink display black/white 3.7 inch
- Waveshare SIM7600G-H Modem module
- M5Stack CardKB v1.1
- AmpRipper 4000 v1.0 PSU/BMS
- AdaFruit 1sLiPo 2500mAh battery
- UART (ESP32 <-> Modem)
- SPI (ESP32 <-> E-Ink)
- I2C (ESP32 <-> Keyboard)
- C/C++
- Arduino
- FreeRTOS
- Starting at Tele-Ink.ino
- Screen is initilized via Waveshare original code modified
- DisplayInit() Starts a new task that can read from a queue of display events
- DisplayTask performs updates on the screen while holding the EPD mutex
- ModemInit() Starts a new task and queue then attempts to connect to the module via "AT" -> TX
- ModemTask waits for commands in the queue and or reads incoming data
- ModemSendAT takes semaphore and the original task gives back (for response safety)
- KeyboardInit() Starts a new task that polls for incoming data on I2C 0x5F
- KeyboardTask doesnt need debounce (release = 1 stroke), and when a key is encountered, posts events for other tasks
- WiFi is underdeveloped at the moment but can poll for nearby networks or connect to one.
- All of the tasks have a timeout feature that will increase time between loops to save resources
- Replaced 471 SMD resistors on M5Stack keyboard with 472 (3.3v logic)
- Replaced SMD resistor on AmpRipper for 1A max batt charge rate
- Switch on ESP32 Driver board 1 = A 2 = ON