BPI-Centi-S3 is our new small size ESP32-S3 development board with 1.9-inch color screen on board!
key features
- ESP32-S3,Xtensa® 32 bit LX7
- 2M PSRAM, 8M FLASH
- 2.4G WIFI ,Bluetooth 5 ,Bluetooth mesh
- GPIO , PWM , I2C , SPI , RMT , I2S , UART ,USB , JTAG
- 1 * ST7789 screen, 1.9 inches, 170*320 resolution, 8bit 8080 parallel port
- 1 * Rotary Encoder
- 1 * Buzzer
- 1 * full color LED
- 1 * JST SH 1mm 4-Pin I2C connector
- 2 * JST SH 1mm 6-Pin
- 1 * USB Type-C
- 1 * MX 1.25mm 2-Pin battery connector, support charging
- 2 * M3 screw holes
Screen
There is a 1.9-inch TFT LCD color screen on the front of BPI-Centi-S3 with a resolution of 170*320. The driver chip is ST7789V3, which is connected to the ESP32S3 chip through an 8-bit parallel interface.
The ST7789 C module driver has been integrated in the factory firmware, from:
russhughes/st7789s3_esp_lcd , The MIT License
Thanks to russhughes for the open source, you can check the compilation method and all API interfaces in his GitHub README.
Preparation
show jpg image
The sst7789 driver library has a method to display pictures in jpg format, which is very friendly to us who are learning for the first time.
jpg method
jpg(jpg_filename, x, y)
Draws a JPG file at the given x and y coordinates, which are the upper left corner of the image.
This method requires an additional 3100 bytes of memory for its working buffer.
Prepare a jpg file of the appropriate size
Choose any picture you like, and crop it to a picture with a length of 320 pixels and a width of 170 pixels, or a picture smaller than this size.
There are a large number of optional picture editing tools in various smart terminal devices and various operating systems, and you can use your favorite tools for editing.
Here I recommend a free-to-use Web online image editing tool, Pixlr X.
Put the cropped picture into our local MicroPython working folder and rename it to pic_1.jpg
, the method of uploading the picture to the MicroPython device refers to using mpbridge in the terminal .
A cropped image is prepared here.
jpg method use case
Use the jpg method in the main.py script.
""" BPI-Centi-S3 170x320 ST7789 display """ import st7789 import tft_config import gc def main(): try: tft = tft_config.config(rotation=1) tft.init() tft.jpg("pic_1.jpg", 0, 0) tft.show() gc.collect() except BaseException as err: err_type = err.__class__.__name__ print('Err type:', err_type) from sys import print_exception print_exception(err) finally: tft.deinit() print("tft deinit") main()
After uploading main.py, reset the device and you can see the picture on the screen.
We can prepare a few more jpg files of suitable size to design a loop, and rotate the pictures on the screen of BPI-Centi-S3 like a slide show.
""" BPI-Centi-S3 170x320 ST7789 display """ import st7789 import tft_config import gc import time pic_list = ["pic_1.jpg", "pic_2.jpg", "pic_3.jpg", "pic_4.jpg", "pic_5.jpg"] def main(): try: tft = tft_config.config(rotation=1) tft.init() while True: for pic in pic_list: tft.jpg(pic, 0, 0) tft.show() gc.collect() time.sleep(1) except BaseException as err: err_type = err.__class__.__name__ print('Err type:', err_type) from sys import print_exception print_exception(err) finally: tft.deinit() print("tft deinit") main()