A MicroPython driver for ESP32-S3 devices to control ST7789 and compatible displays via ESP_LCD parallel and SPI interfaces.
s3lcd is a MicroPython driver for ESP32-S3 microcontrollers that enables control of ST7789 and compatible LCD displays. It provides a high-level API for drawing graphics, text, and images, leveraging ESP-IDF's ESP_LCD interfaces for efficient parallel and SPI communication. The driver solves the problem of adding rich visual interfaces to embedded projects without requiring low-level hardware programming.
Embedded developers and hobbyists using ESP32-S3 boards with ST7789 displays who want to create graphical user interfaces in MicroPython. It's particularly useful for those working on IoT devices, wearables, or embedded systems needing display output.
Developers choose s3lcd for its comprehensive feature set, including alpha blending, hardware scrolling, and image support, all optimized for ESP32-S3. It offers better performance than pure Python drivers by using C and DMA, while maintaining MicroPython's ease of use.
ESP_LCD based MicroPython driver for ESP32-S3 Devices with ST7789 or compatible displays.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Uses ESP_LCD with DMA for Intel 8080 parallel and SPI buses, enabling efficient data transfer without CPU overhead, as highlighted in the interface support.
Includes alpha blending, hardware scrolling, JPG/PNG rendering, and multiple font types, providing a rich set of features for embedded interfaces, evidenced by the advanced primitives.
Offers ready-to-use settings for popular boards like LilyGo T-Display-S3 and M5STACK, reducing setup time for common hardware, as listed in the multi-device examples.
Supports both Intel 8080 parallel and SPI interfaces with extensive configurable parameters, allowing adaptation to various wiring schemes, per the I80_BUS and SPI_BUS methods.
Explicitly warned as a work in progress with potential bugs and documentation gaps, making it unstable for critical projects and requiring extra debugging effort.
Requires compiling MicroPython from source with custom modules, involving multiple steps like cloning repositories and setting USER_C_MODULES, which is tedious for quick prototyping.
DMA configuration options like dma_rows can starve other functions like WiFi by consuming heap memory, necessitating careful tuning to avoid system issues, as noted in the parameter descriptions.