Programming Custom ESP32 Board

Overview

Started in March 2024, resolved PCB design faults, enabled high-resolution imaging on the ESP32 without external RAM, and made the SD reader and touch LCD functional. Then made a demo of the embedded GUI design with their existing images made on Figma design.

Objectives

This project was broken down into 4 main objectives

  1. First Milestone – Take a snapshot of high-resolution images with EYE-SPI camera with their custom designed ESP32-S3 board without PSRAM
  2. Second Milestone – Save images on SD their SD card through any event trigger (button)
  3. Third Milestone – Make their TFT ILI9340 screen functional and then find a driver for touch screen and record the inputs
  4. Fourth Milestone – Transfer all their Figma designed images to their TFT LCD screen and transition slides when clicking on button

First Milestone

  • Issue: Camera wasn’t working at all and unable to take high-resolution images without PSRAM
  • Solution:
    • Analyzed their PCB design through Altium software and realized their camera pinouts were all inverted and corrected the alignment according to manufacturer pinouts – MAJOR ISSUE RESOLVED
    • Took the picture with the highest resolution with the ESP32 built-in camera web server to make sure that images were captured with PSRAM (through another ESP32 module)
    • Then finally transitioned to disabling PSRAM feature through software, and then took their ESP32 board and followed the same experiment and it worked.

Second Milestone

  • Issue: Record the high-res images into the SD Card without PSRAM
  • Solution:
    • First made sure that SD Card was working with their custom pinouts and SPI protocol was functional
    • Recorded the high-resolution image capture and then saved into SD Card

Third Milestone

  • Issue: Their LCD wasn’t turning on and secondly their touch screen wasn’t working for several weeks
  • Solution:
    • First identified the LCD driver by using the LCD internal register to identify the driver name. Turns out the driver name was different than expected. So the LCD had to be changed to the expected name i.e. ILI9340
    • LCD was functional with the changed driver with the required dimensions, background color
    • Touch screen driver was extracted through their own git repository by looking into the history of commit session and what their previous developer used after he dropped off. Then after getting the driver name, the touch screen was then functional

Fourth Milestone

  • Issue: Transition figma designs into embedded GUI using any version of the software
  • Solution:
    • I sued SquareLine Studio and keeping the same LVGL version used by the previous developer
    • Extracted all png images into compatible LVGL C files
    • Put all the png files into the editor and created the transitions according to the client and then exported the files for platformIO to work on
    • Built the final code on PlatformIO and then final version of the code to the client.