본문 바로가기
IT/Platform

[TFT LCD] ili9488 LVGL 재도전 #2

by 블랙오닉스 2024. 11. 1.

2024.11.01

구글링 하다보니 UI 생성하는 다른 툴이 있다.

https://www.envox.eu/studio/studio-introduction/

 

EEZ Studio | EEZ

For communication with instruments, the so-called IEXT (Instrument EXTension) is used. EEZ Studio has an online catalog of approved IEXTs for the EEZ H24005, EEZ BB3 and several other well-known manufacturers’ instruments. New IEXTs can be created in EEZ

www.envox.eu

완전 무료라 다운받아서 만들어 봤다.

녹칸다님 강의를 참고하여 진행하다가 여러가지 시행착오

0. eez에서 생성되는 파일은 lvgl, tft_espi 라이브러리가 없다.

1. git을 이용하여 lvgl, TFT_eSPI 다운로드

https://git-scm.com/

 

Git

 

git-scm.com

git clone https://github.com/lvgl/lvgl
git clone https://github.com/Bodmer/TFT_eSPI

2. PlatformIO에서 프로젝트 생성 (esp32-cam)

3. git으로 받은 2개의 디렉토리를 lib로 이동

4. EEZ에서 생성된 library/ui 를 lib로 이동

5. EEZ에서 생성된 ui를 src/main.cpp로 복사

계속 컴파일에러가 난다.

여러가지 에러를 정리했지만 함수이름이 다르다는 에러에서 중단

git 으로 받은 lvgl이 9.x 이다

 

프로젝트 구조는


녹칸다님 블로그에서 받은 PlatformIO 프로젝트를 수정해서 시도

https://bota.tistory.com/2308

 

[LVGL#1] 녹칸다와 함께 ESP32보드와 각종 LCD(ILI9341, GC9A01)로 LVGL 시작해보기!(녹칸다의 LVGL 튜토리얼

(1부)https://youtube.com/live/i59r1DkzH9Q(2부)https://youtube.com/live/FkIznLVIY1U  **원래는 동영상 1개인데 라이브방송중 블루스크린이 떠서 2개로 나뉘어짐 **원래는 동영상 1개인데 라이브방송중 블루스크

bota.tistory.com

esp32-cam 으로 도전하다가 Program Board를 빼면 전원 연결도 힘들고, Touch를 위한 포트 부족으로 포기

집에 있는 LOLIN-D32로 도전

컴파일 완료후 다운로드에서 포트 인식 문제

CH340 드라이버 설치해도 포트 인식 안됨 -> 케이블 문제, 얇은 케이블들은 전원만 연결된 것 같다.

 


정상 동작하는 PlatformIO.ini와 수정된 코드이다.

esp32dev 와 lolin_d32 모두 된다.

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
[env:lolin_d32]
platform = espressif32
board = lolin_d32
framework = arduino

 

TFT_eSPI/User_Setup.h

그대로 사용하고 ILI9488로만 변경

// #define ILI9341_2_DRIVER     //녹칸다가 가진 ILI9341
#define ILI9488_DRIVER
...
//ILI9341연결법(SPI)
//VSPI(X), HSPI(O)
#define TFT_MOSI 13 // In some display driver board, it might be written as "SDA" and so on.
#define TFT_SCLK 14
#define TFT_CS   15  // Chip select control pin
#define TFT_DC   2  // Data Command control pin
#define TFT_RST  12  // Reset pin (could connect to Arduino RESET pin)
#define SPI_FREQUENCY  27000000
#define SPI_READ_FREQUENCY  20000000
#define SPI_TOUCH_FREQUENCY  2500000
#define USE_HSPI_PORT

main.cpp

화면 사이즈만 변경

#include <Arduino.h>
#include <lvgl.h>
#include <TFT_eSPI.h>
#include <ui.h>
...
static const uint16_t screenWidth  = 480;
static const uint16_t screenHeight = 320;

연결 방법도 정리

TFT_LCD의 JP1을 연결하여 3.3V 전원 입력을 받는다.

ESP32 TFT_LCD (JP1=short)
3.3V 1: VCC 3.3V
GND 2: GND
15 3: CS
12 4: RESET
2 5: DC/RS
13 6: SDI(MOSI)
14 7: SCK
N.C 8: LED (3.3V)
N.C 9: SDO(MISO)
25 10: T_CLK
33 11: T_CS
32 12: T_DIN
34 13: T_DO
N.C 14: T_IRQ (N.C)

 


2024.11.02

Touch도 테스트

https://bota.tistory.com/2312

 

[LVGL#5] 터치IC(XPT2046)가 장착된 ILI9341로 LVGL시작해보기!(녹칸다의 LVGL)

https://youtube.com/live/x_dfcz63atI [LVGL#5] 터치IC(XPT2046)가 장착된 ILI9341로 LVGL시작해보기!(녹칸다의 LVGL) 녹칸다의 LVGL 시리즈이다! 이번편은 touch가 가능한 ili9341 LCD를 이용해서 LVGL을 작동시켜보도록

bota.tistory.com

main.cpp에 touch pin 설정이 있는데 39가 이상하다. 34로 바로 수정해서 테스트

#include <Arduino.h>
#include <lvgl.h>
#include <TFT_eSPI.h>
#include <ui.h>
#include <TFT_Touch.h>

// #define DOUT 39  /* Data out pin (T_DO) of touch screen */
#define DOUT 34  /* Data out pin (T_DO) of touch screen */
#define DIN  32  /* Data in pin (T_DIN) of touch screen */
#define DCS  33  /* Chip select pin (T_CS) of touch screen */
#define DCLK 25  /* Clock pin (T_CLK) of touch screen */

TFT_eSPI/User_Setup.h 도 수정

#define ILI9488_DRIVER 
...
#define TFT_MOSI 13 // In some display driver board, it might be written as "SDA" and so on.
#define TFT_SCLK 14
#define TFT_CS   15  // Chip select control pin
#define TFT_DC   2  // Data Command control pin
#define TFT_RST  12  // Reset pin (could connect to Arduino RESET pin)
//#define TFT_BL 27 //녹칸다가 백라이트컨트롤핀을 3.3V에서 27번으로 옮김!

 

컴파일 정상

업로드 후 serial monitor 실행

터치하면 뭔가 나온다.

BAUD값이 안맞는 것 같아 설정을 찾아 수정 했지만 9600 만 된다.

[env:custom_monitor_speedrate]
monitor_speed = 115200

메뉴얼을 찾아 터미널에서 커맨드 입력

 pio device monitor --baud 115200

혹시나 싶어서 스피드 설정 위치를 바꾸니 된다.

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200