ESP32-S3 Development Board (1.28inch Round Touch LCD) (WS-25098)

This is a placeholder topic for “ESP32-S3 Development Board (1.28inch Round Touch LCD)” comments.

ESP32-S3 Development Board, with 1.28inch Round Touch LCD, Compact size, Accelerometer And Gyroscope Sensor…

Read more

1 Like

Don’t bother with the LVGL library until you have the TFT-eSPI library up and running. You will need to modify the setup header file and change the pin numbers for this to work. The pin numbers are the GPIO numbers.

2 Likes

//Below is what worked for my User_Setup.h file.

#define USER_SETUP_INFO “User_Setup”

#ifdef ILI9341_DRIVER
#undef ILI9341_DRIVER
#endif

#define GC9A01_DRIVER

#define TFT_WIDTH 240
#define TFT_HEIGHT 240

#define TFT_MISO 12
#define TFT_MOSI 11
#define TFT_SCLK 10
#define TFT_CS 9 // Chip select control pin
#define TFT_DC 8 // Data Command control pin
#define TFT_RST 14
#define TFT_BL 2
#define TFT_BACKLIGHT_ON HIGH

#define LOAD_GLCD
#define LOAD_FONT2
#define LOAD_FONT4
#define LOAD_FONT6
#define LOAD_FONT7
#define LOAD_FONT8
#define LOAD_GFXFF

#define SMOOTH_FONT
#define USE_HSPI_PORT
#define SPI_FREQUENCY 80000000

2 Likes

I have only so far been able to get LVGL V8.4.0 and below working.

2 Likes

Hi @Luke43156 - welcome to the forums :slight_smile:

Thanks for posting your findings for a working build. It looks like somewhere along the way an update was made to LVGL that was not backwards compatible with this build. That version is really valuable information.

Appreciate ya :call_me_hand:
- Michael

1 Like

i bricked my ESP32-S3-touch-lcd-128 using examples from Arduino. now it’s black screen. computer still reads that it’s connected, but i’m stuck, any tips? thank you

Do you have a known good firmware for it, if so you could try to flash that back to the device.

Im guessing the device is not really bricked, just no running good firmware.

As I have not used the device, I am guessing an RS232 port shows up via a USB-RS232 chip.

If it is failing to go into boot mode then you may need to force into bootloader mode.
i.e. ensure boot pin is pulled low on/when power up, then see if you can flash it.

Edit:
Just noticed it has the boot and reset buttons, so while holding the boot button down, press and release the reset button… that should force it into boot loader mode.

Hi @Michael99645 and @Tyson285128

You will find firmware for that screen at this Github repo.

If you’re wanting to test the device here’s some micropython code I put together to display the current time on the screen

# This file is executed on every boot (including wake-boot from deepsleep)
#import esp
#esp.osdebug(None)
#import webrepl
#webrepl.start()

#https://github.com/russhughes/gc9a01_mpy/tree/main 

import network
import vga1_bold_16x32 as font
import gc9a01
import tft_config
import time
import urequests
import ujson
import machine

# set up some variables with our wifi details, replace these with your Wi-Fi credentials
ssid = "xxxxxx"
password = "*******"

tft = tft_config.config(tft_config.TALL)


# this function connects the pico to a wifi network
def connect():
    #Sets up wireless module instance, turn on the wireless hardware, and then connect with our credentials
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    wlan.connect(ssid, password)
    # We print the status of the connection here to help see whats going on
    while wlan.isconnected() == False:
        print("Connecting, please wait...")
        time.sleep(1)
    # Once it completes the while true loop, we will print out the Pico's IP on the network
    print("Connected! IP = ", wlan.ifconfig()[0])
    

def fetch_text_from_website(site):
    response = urequests.get(site)
    data = ujson.loads(response.text)
    response.close()
    return data['date'], data['time']

try:
    connect()
    # define the site we want to try to connect to
    site = "http://date.jsontest.com"
    print("Querying: ", site)
    # Query the site and store it in r, then we convert it from a JSON string
    
except OSError as e:
    # and if it fails, we will close the connection and let us know in the shell.
    r.close()
    print("Error: connection closed")

def main():

    tft.init()
    date_text, time_text = fetch_text_from_website(site)
    tft.rotation(0)
    tft.fill(0)
    fg = gc9a01.color565(255, 255, 255)
    bg = gc9a01.color565(0, 0, 0)
    for _ in range(128):
        tft.text(font, date_text, 50, 80, fg, bg) #syntax for this is #tft.text(font, whats is to be printed, column, row, foreground, background)
        tft.text(font, time_text, 40, 130, fg, bg) #syntax for this is #tft.text(font, whats is to be printed, column, row, foreground, background)
    time.sleep(10)
    tft.fill(0)
    machine.deepsleep()
main()