ESP32-S3-Touch-LCD-4는 현재 Arduino IDE 와 ESP-IDF 라는 두 가지 개발 도구 및 프레임워크를 제공하여 유연한 개발 옵션을 제공하므로 프로젝트 요구 사항과 개인적인 습관에 따라 적합한 개발 도구를 선택할 수 있습니다.



- ESP32-S3N16R8
The SoC with WiFi and Bluetooth, up to 240MHz operating frequency, integrated 8MB PSRAM and 16MB Flash - SW6106
Battery charging/discharging management chip - TJA1051T/3/1J
CAN transceiver - SP3485
RS485 transceiver - PCF85063
RTC chip - TCA9554PWR
IO expansion chip - XL1509-ADJE1 power chip
Supports 7~36V DC power input - 3.5mm 10pin screw terminal slot
for installing 3.5mm 10pin screw terminal block - RTC battery header
for connecting rechargeable RTC battery (only supports rechargeable RTC battery) - USB Type-C port
ESP32-S3 USB interface, for power supply, burning program and printing logs - TF card slot
- PH2.0 Lithium battery header
PH2.0 2P connector, for 3.7V Lithium battery, supports charging and discharging - Buzzer
sound-producing peripheral - RS485 and CAN terminal resistor selection
close by defaul - Power supply indicator
- BOOT button
- RESET button
- PWRKEY button
Power ON/OFF button when using battery for power supply


개발 도구 - 아두이노 IDE

아두이노 IDE는 편리하고 유연하며 시작하기 쉬운 오픈 소스 전자 프로토타이핑 플랫폼입니다. 간단한 학습 후 빠르게 개발을 시작할 수 있습니다. 또한 아두이노는 전 세계적으로 큰 사용자 커뮤니티를 보유하고 있어 풍부한 오픈 소스 코드, 프로젝트 예제 및 튜토리얼은 물론 복잡한 기능을 캡슐화한 다양한 라이브러리 리소스를 제공하여 개발자가 다양한 기능을 신속하게 구현할 수 있도록 지원합니다.
ESP-IDF

ESP-IDF(정식 명칭은 Espressif IDE)는 Espressif Technology에서 ESP 시리즈 칩용으로 개발한 전문 개발 프레임워크입니다. C 언어로 개발되었으며, 컴파일러, 디버거, 플래싱 도구 등을 포함하고 있습니다. 명령줄이나 통합 개발 환경(예: Espressif IDF 플러그인이 설치된 Visual Studio Code)을 통해 개발할 수 있습니다. 플러그인은 코드 탐색, 프로젝트 관리, 디버깅 등의 기능을 제공합니다.
이 두 가지 개발 방식에는 각각 장점이 있으며, 개발자는 필요와 숙련도에 따라 선택할 수 있습니다. 아두이노는 배우기 쉽고 빠르게 시작할 수 있어 초보자나 비전문가에게 적합합니다. ESP-IDF는 전문적인 배경을 가진 개발자나 고성능을 요구하는 개발자에게 더 나은 선택입니다. ESP-IDF는 더욱 고급 개발 도구와 복잡한 프로젝트 개발을 위한 뛰어난 제어 기능을 제공하기 때문입니다.
구성 요소 준비
ESP32-S3-터치-LCD-4 x1
TF 카드 1개
USB 케이블 (A형-C형) 1개
USB-RS485 양방향 변환기 1개
USB-CAN 어댑터 분석기 1개

사용하기 전에 목차를 살펴 문서 구조를 빠르게 파악하는 것이 좋습니다. 원활한 사용을 위해 자주 묻는 질문 (FAQ)을 꼼꼼히 읽어 발생 가능한 문제를 미리 파악해 두시기 바랍니다. 문서 내 모든 자료는 쉽게 다운로드할 수 있도록 하이퍼링크로 제공됩니다.
아두이노 작업하기
이 장에서는 아두이노 IDE 설정, ESP32 보드 관리, 관련 라이브러리 설치, 프로그램 컴파일 및 다운로드, 데모 테스트 등 아두이노 개발 환경 설정에 대해 소개합니다. 이를 통해 사용자가 개발 보드를 숙달하고 2차 개발을 용이하게 할 수 있도록 돕는 것을 목표로 합니다.

여기부터는 알아서 하세요. 누구나 하기 싫을 때도 있는 겁니다. 그런데 하다보니 다 올렸네요. 규율!
환경 설정
Arduino IDE를 다운로드하고 설치하세요.
공식 웹사이트를 방문하려면 클릭하고 , 해당 시스템과 시스템 비트를 선택하여 다운로드하십시오.

설치 프로그램을 실행하고 모든 기본 설정을 설치하세요.
환경 설정은 Windows 10 시스템에서 수행되며, Linux 및 Mac 사용자는 Arduino-esp32 환경 설정 가이드를 참조하십시오.
Arduino-ESP32를 설치하세요
아두이노 IDE와 함께 사용하는 ESP32 관련 마더보드의 경우, 먼저 Espressif Systems의 esp32 라이브러리를 설치해야 합니다.
일반적으로 온라인 설치를 권장합니다 . 온라인 설치가 실패할 경우 오프라인 설치를 사용하십시오 .
아두이노-ESP32 설치 방법은 아두이노 보드 관리자 튜토리얼을 참조하십시오.
ESP32-S3-Touch-LCD-4 개발 보드 설치 설명서
| Board name | Board installation requirements | Version number requirements |
| ESP32-S3-Touch-LCD-4 | "Install Offline" / "Install Online" | 3.0.7 |
라이브러리 설치
아두이노 라이브러리를 설치할 때는 일반적으로 온라인 설치 와 오프라인 설치 두 가지 방법이 있습니다 . 라이브러리 설치에 오프라인 설치가 필요한 경우, 제공된 라이브러리 파일을 사용해야 합니다. 대부분의 라이브러리는 아두이노 소프트웨어의 온라인 라이브러리 관리자를 통해 쉽게 검색하고 설치할 수 있습니다. 하지만 일부 오픈 소스 라이브러리나 사용자 정의 라이브러리는 아두이노 라이브러리 관리자와 동기화되지 않아 온라인 검색을 통해 설치할 수 없습니다. 이 경우, 해당 라이브러리는 오프라인에서 수동으로 설치해야 합니다.
라이브러리 설치 방법은 Arduino 라이브러리 관리자 튜토리얼을 참조하십시오.
ESP32-S3-Touch-LCD-4 라이브러리 파일은 샘플 프로그램에 포함되어 있습니다. 여기를 클릭하면 ESP32-S3-Touch-LCD-4 데모 페이지로 이동합니다.
Demo
- ESP32-S3-Touch-LCD-4 Demo
- ESP32-S3-Touch-LCD-4-V2 V3 Demo
- ESP32-S3-Touch-LCD-4-V4 Demo
- ESP32-S3-LCD-4 Demo
ESP32-S3-Touch-LCD-4 라이브러리 파일 설치 안내
| Library Name | Description | Version | Library Installation Requirements |
| ESP32_Display_Panel | ST7701, GT911 driver library | v0.1.8 | "Install Online" or "Install Offline" |
| ESP32_IO_Expander | TCA9554 IO expansion chip driver library | v0.0.4 | "Install Offline" (return value of IOExpander_Library changed) |
| lvgl | LVGL graphical library | v8.4.0 | "Install Online" requires copying the demos folder to src after installation. "Install Offline" is recommended |
| lv_conf.h | LVGL configuration file | —— | "Install Offline" |
첫 번째 아두이노 데모를 실행하세요
ESP32와 아두이노를 처음 접하고, 아두이노 ESP32 프로그램을 만들고, 컴파일하고, 플래싱하고, 실행하는 방법을 모른다면, 아래 설명을 참고하세요. 도움이 되기를 바랍니다!
새 프로젝트 실행을 아래 단계로 진행하세요.
1. Arduino IDE를 실행하고 파일 -> 새 스케치를 선택합니다.

다음과 같은 코드를 입력합니다.
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Hello, World!");
delay(2000);
}
프로젝트를 저장하려면 파일 -> 다른 이름으로 저장을 선택합니다. 팝업 메뉴에서 프로젝트를 저장할 경로를 선택하고 Hello_World와 같은 프로젝트 이름을 입력한 다음 저장을 클릭합니다.

컴파일 및 데모 플래싱
해당 개발 보드를 선택합니다. ESP32S3 마더보드를 예로 들어 설명합니다.
① 드롭다운 메뉴에서 다른 보드 및 포트 선택을 클릭합니다.
② 필요한 개발 보드 모델인 ESP32S3 개발 모듈을 검색하여 선택합니다.
③ COM 포트를 선택합니다.
④ 선택 사항을 저장합니다.

ESP32S3 메인보드에 USB 포트만 있는 경우, 다음 그림과 같이 USB CDC를 활성화해야 합니다.

프로그램 컴파일 및 업로드:
① 프로그램을 컴파일합니다. ② 프로그램을 컴파일하고 다운로드합니다. ③ 다운로드가 완료되었습니다.

시리얼 모니터 창을 열면 데모 프로그램이 2초마다 "Hello World!"를 출력합니다. 작동 결과는 다음과 같습니다.

데모는 다음과 같은 순서로 진행됩니다.

ESP32-S3-터치-LCD-4 데모
| Demo | Basic Description | Dependency Library |
| 01_PanelTest | Test the RGB screen | GFX_Library_for_Arduino |
| 02_LVGL_Porting | Test the RGB touch screen | GFX_Library_for_Arduino, Arduino DriveBus |
| 03_Rotation | Test RS-485 seat | GFX_Library_for_Arduino |
| 04_RS485_Test | Test RS-485 seat | GFX_Library_for_Arduino |
| 05_TWAIreceive | Test CAN seat | GFX_Library_for_Arduino |
| 06_TWAItransmit | Test CAN seat | SensorLib, GFX_Library_for_Arduino |
| 07_SD_Test | Test TF card slot | LVGL |
ESP32-S3-Touch-LCD-4는 직접 모델 선택을 지원합니다.
ESP32-S3-LCD-1.69를 예로 들어보겠습니다.

아두이노 프로젝트 매개변수 설정
화면을 사용하는 예제 프로그램은 다음과 같이 구성해야 합니다.
PSRAM활성화되어 있으며, 일부 버전은 OPI PSRAM으로 설정되어 있습니다.

컴퓨터에 연결한 후 BAT_PWR 버튼을 눌러 전원을 켜세요. 전원이 켜진 상태에서 BAT_PWR 버튼을 두 번 클릭하면 전원이 꺼집니다.
01_패널테스트
하드웨어 연결: USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.

코드 분석
setup():
시리얼 포트를 초기화하고 시작 정보를 출력합니다.
객체를 생성 ESP_Panel하고 패널을 초기화합니다.
패널의 각 구성 요소(LCD, 터치, 백라이트)에 대한 정보를 얻으세요.
해당 컴포넌트의 존재 여부에 따라 백라이트 켜고 끄기, LCD 새로 고침 완료 콜백 함수 설정, 컬러바 테스트 수행 등의 상응하는 작업을 수행합니다.
loop():
터치 구성 요소가 있는 경우 터치 지점 정보를 읽습니다.
측정 결과에 따라 다양한 처리가 수행됩니다. 성공하면 터치 포인트 정보가 출력되고, 실패하면 오류 메시지가 출력됩니다.
터치 인터럽트가 활성화되어 있지 않은 경우, 잦은 읽기를 방지하기 위해 일정 시간 동안 지연시키십시오.
터치 구성 요소가 존재하지 않으면 1000밀리초를 지연시키고 "IDLE 루프"를 출력합니다.
결과 시연
코드를 플래싱한 후 화면에 파란색, 녹색, 빨간색 줄무늬가 나타나는 것을 확인할 수 있습니다. (코드 플래싱 후 화면에 반응이 없으면 Arduino IDE의 도구 메뉴에서 PSRAM(8MB OPI) 활성화 설정이 올바른지 확인하십시오.)

02_LVGL_포팅
하드웨어 연결: USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.
코드 분석
setup():
확장 프로그램 초기화:
특정 매개변수를 사용하여 확장기 객체를 생성하고, 확장기를 초기화한 후 시작을 시도합니다. 초기화에 실패하면 다른 매개변수를 사용하여 다시 시도합니다. 성공하면 시리얼 포트를 통해 성공 메시지가 출력됩니다.
시리얼 포트 및 핀 설정:
16번 핀을 출력으로 설정하고 로우 레벨로 초기화한 다음, 시리얼 포트를 초기화하고 전송 속도를 115200으로 설정한 후 제목과 "시작" 정보를 출력합니다.
패널 장치 초기화:
객체를 생성 ESP_Panel하고 패널을 초기화한 후 패널 장치를 시작합니다. 화면 찢김 방지 기능이 활성화된 경우 LVGL 설정에 따라 RGB 버스 매개변수를 설정합니다.
LVGL 초기화 및 사용자 인터페이스 생성:
LVGL을 초기화하고, 패널의 LCD 및 터치 객체를 전달하고, 정보를 출력하고, LVGL 상호 배제 잠금을 설정합니다(LVGL API는 스레드 안전하지 않으므로). 간단한 레이블을 생성하고 텍스트를 제목으로 설정한 후 화면 중앙에 표시하고, LVGL 위젯 예제를 보여주는 함수를 호출한 다음 상호 배제 잠금을 해제합니다.
결과 시연
코드를 플래싱한 후에는 일련의 터치스크린 조작을 수행할 수 있으며, 이는 사용자가 LVGL을 포팅하는 것을 위한 데모입니다. (코드 플래싱 후 화면이 반응하지 않으면 Arduino IDE의 도구 메뉴에서 PSRAM(8MB OPI) 활성화 설정을 확인하십시오.)

03_회전
하드웨어 연결
USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.
코드 분석
setup():
이 모듈은 IO 확장기 초기화, 하드웨어 및 직렬 통신 구성, 패널 장치 및 LVGL 초기화, 그리고 전체 프로그램의 초기화 진입점인 사용자 인터페이스 생성 등을 담당합니다.
rotateDisplay():
이 함수는 디스플레이 인터페이스를 회전하는 데 사용됩니다. 이 함수는 포인터 타입 lv_disp_t과 회전 각도 매개변수를 받습니다.
디스플레이 설정을 수정할 때 스레드 안전성을 확보하기 위해 LVGL의 상호 배제 잠금을 설정하십시오.
이 기능을 사용하여 lv_disp_set_rotationLVGL 디스플레이의 회전 각도를 설정하십시오.
해당 함수를 사용하여 lv_label_set_text_fmt회전 각도를 표시하는 레이블 텍스트를 현재 회전 각도로 업데이트하세요.
상호 배제 잠금을 해제하여 프로그램의 다른 부분이 LVGL API에 계속 액세스할 수 있도록 합니다.
onRightBtnClickCallback():
버튼의 클릭 콜백 함수는 사용자의 좌우 버튼 클릭 동작에 응답하여 화면 회전을 제어하는 데 사용됩니다.
오른쪽 버튼을 클릭하면 이 함수는 현재 회전 상태를 확인합니다. 현재 회전 각도가 0이면 LV_DISP_ROT_270회전 각도를 0 LV_DISP_ROT_NONE(회전 없음)으로 설정하고, 그렇지 않으면 회전 각도를 1만큼 증가시킵니다.
rotateDisplay 실제로 화면 회전 작업을 수행하려면 해당 함수를 호출하십시오.
onLeftBtnClickCallback():
왼쪽 버튼을 클릭하면 이 함수는 현재 회전 상태를 확인합니다. 현재 회전 각도가 이면 LV_DISP_ROT_NONE회전 각도를 0 LV_DISP_ROT_270(회전 없음)으로 설정하고, 그렇지 않으면 회전 각도를 1만큼 감소시킵니다.
rotateDisplay 실제로 화면 회전 작업을 수행하려면 해당 함수를 호출하십시오.
결과 시연

04_RS485_테스트
하드웨어 연결
USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.
그림과 같이 개발 보드를 USB-RS485 변환기 에 연결하십시오.

코드 분석
setup():
Serial2.begin(115200, SERIAL_8N1, 43, 44);UART2를 초기화하고, 전송 속도를 115200으로 설정하고, 데이터 형식을 8비트 데이터, 패리티 비트 없음, 정지 비트 1로 설정하고, 송신 핀으로 GPIO43(RXD), 수신 핀으로 GPIO44(TXD)를 지정합니다.
loop() :
`check` 함수를 사용하여 UART2에 읽을 데이터가 있는지 확인하고 Serial2.available(), `read` 함수를 사용하여 데이터를 읽은 Serial2.read()다음, 특정 조건이 충족되면 버퍼에서 데이터를 `sent` 함수를 사용하여 전송함으로써 Serial2.println(buffer)UART2 데이터의 수신 및 전송을 구현합니다.
결과 시연
시리얼 포트 디버깅 도우미를 열어 ESP32-S3-Touch-LCD-4 장치로 메시지를 보내면, 장치는 수신된 메시지를 시리얼 포트 디버깅 도우미로 반환합니다.

05_TWAI수신
하드웨어 연결
USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.
그림과 같이 개발 보드를 USB-CAN-A 에 연결하십시오.

코드 분석
기능 개요:
정보 출력을 위한 직렬 통신을 초기화합니다.
GPIO 핀을 출력으로 구성하십시오.
CAN(Controller Area Network) 버스 드라이버(TWAI)를 설치하고 시작한 다음, 지정된 RX_PIN(0) 및 TX_PIN(6) 핀에 연결하고 모니터 모드로 설정합니다.
메인 루프에서 CAN 드라이버가 설치되어 있으면, 경보가 발생했는지 확인하고, 오류 수동 상태, 버스 오류, 수신 큐 가득 참 등 다양한 경보 상황을 처리합니다. 데이터 경보 수신이 발생하면 수신된 CAN 메시지를 처리합니다.
중요 인터페이스 및 핀 설명:
RX_PIN(0) 및 TX_PIN(6): CAN 버스 트랜시버 연결용 핀
GPIO_OUTPUT_PIN_SEL(GPIO15 및 GPIO16에 해당): 특정 GPIO 핀을 출력 모드로 구성하는 데 사용됩니다.
결과 시연
ESP32-S3-Touch-LCD-4는 USB-CAN-A_TOOL 이 메시지를 보낼 때까지 기다립니다. 메시지가 성공적으로 수신되면 시리얼 포트로 출력됩니다.



06_TWAI전송
하드웨어 연결
USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.
그림과 같이 개발 보드를 USB-CAN-A 에 연결하십시오.

코드 분석
기능 개요:
정보 출력을 위한 직렬 통신을 초기화합니다.
특정 GPIO 핀(RX_PIN 및 TX_PIN)을 출력 모드로 구성합니다.
CAN(Controller Area Network) 버스 드라이버(TWAI)를 설치하고 시작한 다음, 지정된 RX_PIN(0) 및 TX_PIN(6) 핀에 연결하고 응답 없음 모드로 설정합니다.
CAN 알람을 재구성하여 특정 상태를 감지하고 관련 경고 및 버스 오류 경고를 전송하도록 합니다.
메인 루프에서 CAN 드라이버가 설치되어 있으면 경보 발생 여부를 확인하고 다양한 경보 상황을 처리하는 동시에 정기적으로 CAN 메시지를 전송합니다.
중요 인터페이스 및 핀 설명:
RX_PIN(0) 및 TX_PIN(6): CAN 버스 트랜시버 연결용 핀
GPIO_OUTPUT_PIN_SEL: 특정 GPIO 핀을 출력 모드로 설정하는 데 사용되며, 여기서는 RX_PIN과 TX_PIN에 적용됩니다.
결과 시연
시리얼 포트 출력을 통해 CAN 메시지 전송이 성공적으로 완료되었음을 확인할 수 있습니다. USB-CAN-A_TOOL 을 구성한 후에 는 ESP32-S3-Touch-LCD-4가 시작 시 전송하는 CAN 메시지를 관찰할 수 있습니다.

USB-CAN-A_TOOL을 자세히 살펴보면 ESP32-S3-Touch-LCD-4에서 전송된 CAN 메시지를 확인할 수 있습니다.

07_SD_테스트
하드웨어 연결
USB 케이블을 사용하여 개발 보드를 컴퓨터에 연결하세요.
TF 카드를 보드에 삽입하세요

코드 분석
TF 카드 초기화 및 감지
TF 카드를 초기화합니다
TF 카드를 특정 핀( SDMMC_CLK, SDMMC_CMD, SDMMC_DATA)에 설정하여 초기화합니다. 초기화에 실패하면 프로그램은 무한 루프에 진입하여 TF 카드가 성공적으로 마운트될 때까지 추가 작업이 실행되지 않도록 합니다.
TF 카드 종류 및 크기를 감지합니다.
TF 카드 종류(MMC, SDSC, SDHC 등)를 감지하고 정보를 출력하여 사용자가 연결된 TF 카드의 구체적인 사양을 파악할 수 있도록 합니다. 동시에 TF 카드의 용량을 MB 단위로 출력하여 사용자가 저장 용량을 쉽게 알 수 있도록 합니다.
TF 카드 디렉토리의 내용을 나열하세요
이 함수를 호출하면 listDirTF 카드 루트 디렉터리 아래의 파일과 디렉터리 목록이 표시되어 사용자가 TF 카드에 저장된 내용을 직관적으로 이해할 수 있도록 도와주고, 이후 파일 작업 및 관리를 편리하게 해줍니다.
결과 시연
ESP32-S3-Touch-LCD-4는 TF 카드의 종류와 크기를 식별한 후 추가, 삭제, 수정 및 조회와 같은 파일 작업을 수행할 수 있습니다.

ESP-IDF와 협력하기
이 장에서는 Visual Studio 및 Espressif IDF 플러그인 설치, 프로그램 컴파일, 예제 프로그램 다운로드 및 테스트를 포함한 ESP-IDF 환경 설정 방법을 소개하여 사용자가 개발 보드를 숙달하고 2차 개발을 용이하게 할 수 있도록 돕습니다. ESP-IDF-flow-01.png
환경 설정
Visual Studio를 다운로드하고 설치하세요.
VSCode 공식 웹사이트 의 다운로드 페이지를 열고 , 해당 시스템 및 시스템 비트를 선택하여 다운로드하세요.

설치 패키지를 실행한 후에는 나머지 구성 요소는 기본적으로 설치되지만, 향후 사용 경험을 위해 1, 2, 3번 항목을 선택하는 것이 좋습니다.

처음 두 항목을 활성화하면 파일이나 디렉터리를 마우스 오른쪽 버튼으로 클릭하여 VSCode를 직접 열 수 있으므로 이후 사용자 경험이 향상됩니다.
세 번째 항목이 활성화되면 VSCode를 여는 방법을 선택할 때 VSCode를 직접 선택할 수 있습니다.
환경 설정은 Windows 10 시스템에서 수행되며, Linux 및 Mac 사용자는 ESP-IDF 환경 설정 가이드를 참조하십시오.
Espressif IDF 플러그인을 설치하세요
일반적으로 온라인 설치를 권장합니다 . 네트워크 문제로 온라인 설치가 실패할 경우 오프라인 설치를 사용하십시오 .
Espressif IDF 플러그인 설치 방법에 대한 자세한 내용은 Espressif IDF 플러그인 설치를 참조하세요.
Espressif IDF 버전 ≥ v5.3.1
첫 번째 ESP-IDF 데모를 실행하세요
ESP32와 ESP-IDF를 처음 접하고 ESP-IDF ESP32 프로그램을 생성, 컴파일, 플래싱 및 실행하는 방법을 모른다면, 이 글을 펼쳐서 살펴보세요. 도움이 되기를 바랍니다!
시민

ESP32-S3-터치-LCD-4 데모
데모 기본 설명
| Demo | Basic Description |
| 01_RS485_Test | Test RS-485 seat |
| 02_SD_Test | Test TF card slot |
| 03_RTC_Test | Test RTC clock and RTC interrupt |
| 04_TWAIreceive | Test CAN seat |
| 05_TWAItransmit | Test CAN seat |
| 06_LVGL_Proting | Test RGB touch screen |
01_RS485_테스트
하드웨어 연결
USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.
그림과 같이 개발 보드를 USB-RS485 변환기 에 연결하십시오.

코드 분석
echo_task():
먼저, 보드율, 데이터 비트, 패리티 비트, 정지 비트, 하드웨어 흐름 제어 등을 포함한 UART 매개변수를 구성했습니다.
다음으로 UART 드라이버를 설치하고, UART 핀을 설정하고, 데이터 수신을 위한 임시 버퍼를 할당합니다.
무한 루프에서 UART로부터 데이터를 읽고, 읽은 데이터를 다시 UART에 쓰고, 데이터가 수신되면 로그 정보를 기록합니다.
결과 시연
시리얼 포트 디버깅 도우미를 열어 ESP32-S3-Touch-LCD-4 장치로 메시지를 보내면, 장치는 수신된 메시지를 시리얼 포트 디버깅 도우미로 반환합니다.

02_SD_테스트
하드웨어 연결
USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.
TF 카드를 보드에 삽입하세요

코드 분석
waveshare_sd_card_init():
이 함수는 주로 TF 카드를 초기화하는 데 사용됩니다. 먼저 I2C를 초기화하고, I2C 제어 칩을 통해 TF 카드의 CS 핀을 풀다운합니다. 다음으로, 마운트 실패 시 포맷 여부, 최대 파일 개수, 할당 단위 크기 등 TF 카드 마운트 옵션을 설정합니다. 그 후, SPI 버스를 초기화하고 설정된 SPI 버스와 마운트 옵션을 사용하여 TF 카드 파일 시스템을 마운트합니다. 마운트가 성공하면 ESP_OK를 반환하여 TF 카드 초기화가 완료되었음을 나타냅니다.
waveshare_sd_card_test():
이 함수는 TF 카드의 기능을 테스트하는 데 사용됩니다. 먼저 초기화된 TF 카드의 정보를 출력합니다. 그런 다음 파일을 생성하고, 데이터를 파일에 쓰고, 파일 이름을 변경한 후, 변경된 파일의 내용을 읽습니다. 다음으로 파일 시스템을 포맷하고 포맷 후 파일이 삭제되었는지 확인합니다. 마지막으로 새 파일을 생성하고 내용을 읽은 후, 테스트가 완료되면 TF 카드를 마운트 해제하고 SPI 버스 리소스를 해제합니다.
결과 시연
프로그래밍이 성공적으로 완료되면 시리얼 포트를 통해 저장 카드에 대한 정보(이름, 종류, 용량, 최대 지원 주파수 등)가 출력됩니다. 그 후 파일을 생성하고, 파일에 데이터를 쓰고, 파일 이름을 변경하고, 변경된 파일을 읽습니다.

ESP-IDF의 시리얼 모니터를 직접 사용할 수도 있습니다.
03_RTC_테스트
하드웨어 연결
USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.
코드 분석
app_main():
먼저 현재 시간과 알람 시계 인터럽트 플래그 등을 포함한 몇 가지 변수를 저장하는 데 사용되는 구조체를 정의합니다.
다음으로, 칩을 초기화하고, 초기 시간과 알람 시간을 설정하고, 알람 기능을 활성화하고, 인터럽트 입력 핀과 인터럽트 핸들러를 초기화합니다. 무한 루프에서 현재 시간을 읽어 문자열로 변환하여 출력합니다. 클록 인터럽트가 발생하면 인터럽트 플래그를 초기화하고 필요에 따라 알람을 다시 활성화합니다. 또한 알람이 울렸다는 메시지를 출력합니다. 루프 내에는 1초의 지연 시간이 있습니다.
일반적으로 간단한 알람 시계 기능이 구현되며, 시간 판독 및 알람 응답은 PCF85063A 칩의 동작 및 인터럽트 처리를 통해 구현됩니다.
결과 시연
깜빡임이 성공적으로 완료되면 시간이 설정되고 알람이 시작되며, 현재 시간을 읽어 알람 시계에 입력될 때까지 기다립니다.
시리얼 포트 터미널에 관련 정보가 출력됩니다.

04_TWAI수신
하드웨어 연결
USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.
그림과 같이 개발 보드를 USB-CAN-A 에 연결하십시오.

코드 분석
waveshare_twai_receive():
드라이버가 설치되어 있지 않으면 일정 시간 기다린 후 실패 상태로 돌아갑니다.
발생한 알림을 읽고 TWAI 상태 정보를 확인하세요.
오류 수동 경보, 버스 오류 경보, 수신 큐 오버플로 경보 등 다양한 경보 유형 발생 시 해당 로그 정보를 출력하고 관련 상태 정보를 출력합니다.
수신 데이터 알림이 발생하면 메시지가 반복문 내에서 수신되고, handle_rx_message 함수가 호출되어 수신된 각 메시지를 처리합니다. 마지막으로 성공 상태가 반환됩니다.
결과 시연
ESP32-S3-Touch-LCD-4는 USB-CAN-A_TOOL 이 메시지를 보낼 때까지 기다립니다. 메시지가 성공적으로 수신되면 시리얼 포트로 출력됩니다.


시리얼 포트 디버깅 도우미를 열면 Esp32-s3-touch-lcd-7이 CAN 메시지 수신을 시작한 것을 확인할 수 있습니다. (수신 오류가 발생하면 재설정 및 소프트웨어 재시작을 여러 번 수행해 보세요. 잠시 기다려 주시기 바랍니다.)

다음과 같은 오류가 발생하면 시리얼 모니터를 클릭하고 디버깅 도구를 사용하여 데이터를 다시 전송하십시오. (재설정 버튼을 누른 후에도 시리얼 모니터를 다시 클릭해야 하는 경우가 있습니다.)

05_TWAI전송
하드웨어 연결
USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.
그림과 같이 개발 보드를 USB-CAN-A 에 연결하십시오.

코드 분석
waveshare_twai_transmit():
드라이버가 설치되어 있지 않으면 일정 시간 기다린 후 실패 상태로 돌아갑니다.
발생한 알림을 읽고 TWAI 상태 정보를 확인하세요.
수동 오류 경보, 버스 오류 경보, 전송 실패 경보 및 전송 성공 경보를 포함한 다양한 경보 유형에 따라 해당 로그 정보를 출력하고 관련 상태 정보를 출력합니다.
메시지를 보낼 시점인지 판단하고, 시점이 적절하다면 메시지를 보내고 마지막 전송 시간을 업데이트합니다.
결과 시연
시리얼 포트 출력은 CAN 메시지 전송이 성공했음을 나타냅니다. USB-CAN-A_TOOL 을 구성한 후에 는 ESP32-S3-Touch-LCD-4가 시작 시 전송하는 CAN 메시지를 확인할 수 있습니다.

USB-CAN-A_TOOL을 자세히 살펴보면 ESP32-S3-Touch-LCD-4에서 전송된 CAN 메시지를 확인할 수 있습니다.

06_LVGL_프로팅
하드웨어 연결
USB 케이블을 사용하여 보드를 컴퓨터에 연결하세요.

코드 분석
app_main():
Waveshare ESP32-S3 RGB LCD를 초기화한 다음, TCA9554 IO 확장 칩의 2번 핀을 사용하여 출력 레벨을 높음/낮음으로 조절하여 화면 백라이트를 제어합니다.
그다음 LVGL 데모 콘텐츠를 표시하려는 메시지를 출력합니다. LVGL API는 스레드로부터 안전하지 않으므로 먼저 뮤텍스를 잠급니다.
lv_demo_stress그런 다음 , lv_demo_benchmark, lv_demo_music, lv_demo_widgets, 또는 example_lvgl_demo_ui 등과 같은 다양한 LVGL 데모를 실행하도록 선택할 수 있습니다.
마지막으로 상호 배제 잠금을 해제합니다.
결과 시연
코드를 플래싱한 후에는 일련의 터치스크린 조작을 수행할 수 있으며, 이는 LVGL 포팅에 적합한 데모 프로그램입니다. 이 예제는 LVGL의 화면 찢김 방지 기능을 추가하여 Arduino IDE 방식보다 더 나은 사용자 경험을 제공합니다.

RGB LCD 드라이버에 대한 자세한 내용은 다음 링크 를 참조하십시오.
GT911 드라이버는 다음 링크 를 참조하세요.
펌웨어 플래싱 및 삭제
현재 데모 버전은 테스트 펌웨어를 제공하며, 이 펌웨어를 직접 플래싱하여 온보드 장치가 제대로 작동하는지 테스트할 수 있습니다.
bin 파일 경로:
...\ESP32-S3-Touch-LCD-4-Demo\펌웨어\bin
Resources
Schematic Diagrams
- ESP32-S3-Touch-LCD-4 Schematic diagram
- ESP32-S3-Touch-LCD-4-V2 Schematic diagram
- ESP32-S3-Touch-LCD-4-V3 Schematic diagram
- ESP32-S3-Touch-LCD-4-V4 Schematic diagram
Project Diagrams
Demo
- ESP32-S3-Touch-LCD-4 Demo
- ESP32-S3-Touch-LCD-4-V2 V3 Demo
- ESP32-S3-Touch-LCD-4-V4 Demo
- ESP32-S3-LCD-4 Demo
Datasheets
ESP32-S3
Display
Other Components
Software Tools
Arduino
VScode
Debugging Tool
Firmware flashing tool
Other Resource Links
- ESP32-Arduino official documentation
- ESP32-Arduino official resources
- ESP-IDF official resources
- LVGL official documentation
자주 묻는 질문
질문: 드라이버 라이브러리 지원을 더 늘리고 싶습니다.
답변:
이 저장소를 구독하고 요구 사항을 설명하는 이슈를 제기할 수 있습니다. 엔지니어들이 최대한 빨리 요청을 검토할 것입니다: ESP32-display-support
질문: 버전별 차이점이란 무엇인가요?
답변:
스크린 라인 아래에 스크린 인쇄가 되어 있으며, 스크린 인쇄가 없는 것은 V1.0 버전이고, 스크린 인쇄가 있는 것은 해당 버전입니다.

질문: CAN 통신에서 송수신이 실패하는 이유는 무엇입니까?
답변:
V1.0 버전에서 구성 요소 5개를 제거하면 문제가 해결될 수 있습니다.200px-ESP32-S3-터치-LCD-4-faq-02.png

V2.0 버전에서 구성 요소 3개를 제거하면 문제가 해결될 수 있습니다.200px-ESP32-S3-Touch-LCD-4-faq-03.png

질문: 광범위 전압 전원 공급 장치가 화면을 터치할 수 없는 이유는 무엇입니까?
답변:
1. 광범위 전압 전원 공급 장치를 사용할 때 SW6106의 I2C 신호가 낮아 I2C 장치를 인식하지 못하는 경우가 있습니다. 리튬 배터리를 연결하여 사용하는 것이 좋습니다. 리튬 배터리를 연결할 수 없는 경우 SW6106의 I2C 라인을 차단하십시오.

질문: 일정 시간이 지나면 전원이 꺼지고 PWR 표시등이 켜지지 않는 이유는 무엇인가요?
답변:
1. SW6106은 경부하 감지 기능을 가지고 있습니다. 해결 방법은 I2C를 통해 0x3C 장치의 전원이 켜질 때마다 0x38 레지스터에 0x0A 값을 기록하도록 초기화하거나, 1초 간격으로 0x3C 장치의 0x03 레지스터에 0x01 값을 기록하여 경부하 차단을 제어하는 것입니다.
질문: 내 보드가 왜 전원이 켜지지 않나요?
답변:
1. 설계 초기 단계에서 배터리 기능(SW6106 방식)과 전원 켜짐 기능(MOS)을 고려하여, 전원이 켜질 때 USB 포트에서 회로 기판으로 전원이 공급되도록 이상적인 다이오드를 배치했습니다. 하지만 컴퓨터의 USB, Type-C 등 고속 충전 프로토콜을 지원하는 포트를 전원으로 사용할 경우, 전압이 상승하여 TVS(극성 트랜지스터)가 소손되거나 단락될 수 있습니다. 이는 정상적인 보호 회로 현상이며, 이때 연기가 나고 화면이 어두워지며 전원 표시등이 깜빡거릴 수 있습니다. 이러한 경우에는 아래 그림과 같이 TVS와 MOS 튜브를 제거해야 합니다. 회로는 최대 20V의 고속 충전 전압을 견딜 수 있도록 검증되었으므로, 제거하는 것이 더 안전합니다.

2. TVS 및 MOS 튜브를 제거한 후에는 개발 보드의 전원을 켜도 불이 들어오지 않으며, BAT_PWR 버튼을 눌러야 전원이 켜집니다. 부팅 상태에서 BAT_PWR 버튼을 두 번 클릭하면 전원이 꺼집니다.
질문: 깜빡임이 작동하지 않은 이유는 무엇입니까?
답변:
1. 시리얼 포트가 사용 중일 경우 프로그래밍이 실패합니다. 시리얼 포트 모니터를 끄고 다시 플래싱하십시오.
2. ESP32 프로그램이 충돌하면 플래싱이 실패합니다. 이 경우 개발 모듈의 전원을 완전히 끄고 BOOT 버튼을 길게 누른 다음 전원을 켜서 강력 다운로드 모드로 진입한 후 플래싱을 진행해야 합니다. 플래싱이 완료되면 다운로드 모드가 자동으로 종료되지 않으므로, 전원을 껐다가 다시 켜야 합니다.
질문: 내가 사용하는 COM 포트를 어떻게 확인하나요?
답변:
Windows:
(1) 장치 관리자를 통해 보기: Windows + R 키를 눌러 실행 대화 상자를 엽니다. devmgmt.msc를 입력하고 Enter 키를 눌러 장치 관리자를 엽니다. 포트(COM 및 LPT) 섹션을 확장하면 모든 COM 포트와 현재 상태가 표시됩니다.
(2) 명령 프롬프트를 사용하여 보기: 명령 프롬프트(CMD)를 엽니다. mode 명령을 입력하면 모든 COM 포트의 상태 정보가 표시됩니다.
(3) 하드웨어 연결 확인: 외부 장치를 COM 포트에 연결한 경우 일반적으로 해당 장치는 포트 번호를 사용하며, 연결된 하드웨어를 확인하여 사용 중인 포트를 확인할 수 있습니다.
Linux:
(1) dmesg 명령을 사용하여 보기: 터미널을 엽니다.
(2) ls 명령을 사용하여 보기: 모든 직렬 장치를 나열하려면 ls /dev/ttyS* 또는 ls /dev/ttyUSB*를 입력합니다.
(3) setserial 명령을 사용하여 보기: 모든 직렬 장치의 구성 정보를 보려면 setserial -g /dev/ttyS*를 입력합니다.
질문: 제공된 라이브러리를 어떻게 포팅하나요? 또는 자체 LCD 화면을 어떻게 개발하나요? 구동 방법은 어떻게 되나요?
답변:
본 제품에 사용된 LCD 화면 디스플레이 칩은 ST7701이고 터치 칩은 GT911입니다. 아두이노 또는 ESP-IDF의 예제를 직접 참조하시기를 권장합니다.
질문: 코드를 좀 봐주실 수 있나요? 코드를 수정하는 데 도움을 주실 수 있나요?
답변:
본 제품은 개발 보드로, 완제품이 아닙니다. 제품 생태계는 ESP32 코어에 속하며, 매우 성숙한 생태계와 사용자 친화적인 개발 환경을 제공합니다. 코드 수정은 지원하지 않으므로, 개발자 여러분의 창의력을 발휘하여 직접 개발해 보시기 바랍니다. 궁금한 점이 있으면 엔지니어에게 문의해 주세요.
저희 제품이 마음에 드시고 하드웨어, 케이스, 소프트웨어 등을 대량으로 맞춤 제작하고 싶으시다면 영업팀에 문의해 주세요.

질문: 코드를 문제없이 성공적으로 플래싱했는데 왜 아무런 출력도 나타나지 않나요?
답변:
Type-C 인터페이스를 사용하는 다양한 개발 보드의 회로도를 확인하고 그에 따라 출력을 처리하십시오.
USB 직접 출력을 지원하는 개발 보드의 경우 printf 함수를 사용하여 출력을 인쇄할 수 있습니다. 시리얼 출력을 지원하려면 USB CDC On Boot 기능을 활성화하거나 HWCDC를 선언해야 합니다.
UART-USB 변환 기능을 갖춘 개발 보드의 경우, printf 함수와 Serial 함수 모두 출력에 사용 가능하며, 부팅 시 USB CDC를 활성화할 필요가 없습니다.
질문: VS Code의 ESP-IDF 플러그인을 사용하여 프로젝트를 컴파일할 때 픽셀 오프셋 및 고스트 현상이 발생하면 어떻게 해야 하나요?

답변:
이 현상은 VS Code ESP-IDF 플러그인을 사용하여 컴파일할 때 재현됩니다. ESP-IDF 터미널 명령줄을 사용하면 솔루션을 컴파일하고 플래싱할 수 있습니다. 참고: VS Code ESP-IDF 터미널에서도 오류가 발생할 수 있습니다.
질문: SquareLine Studio를 사용하여 인터페이스를 디자인하는 방법은 무엇입니까?
답변:
SquareLine Studio 튜토리얼을 참조하세요.
질문: 공장 초기화는 어떻게 하나요?
답변:
공장 초기화 bin 파일을 플래싱하세요. 펌웨어 플래싱 및 삭제 방법을 참조하십시오.
질문: TF 카드 없이도 저희 제품을 사용할 수 있나요?
답변:
네, TF 카드 관련 기능만 사용할 수 없고, 다른 기능에는 영향이 없습니다.
질문: 화면 문제
답변:
본 제품은 화면과 후면 패널이 일체형으로 접착되어 있습니다. 정상적인 사용을 위해 사용자가 임의로 분해하거나 접착층을 뜯어내지 않도록 주의하십시오. 분해로 인해 화면이 손상될 경우 수리가 불가능합니다.
질문: 예제 프로그램 RS485_Test에서 데이터는 전송만 가능하고 수신은 되지 않습니다. 이 문제를 어떻게 해결할 수 있을까요?
답변:
IDF 버전 문제로 인해 RS485 통신이 제대로 작동하지 않을 수 있습니다.
ESP-IDF 환경: v5.5.2로 업그레이드하는 것을 권장합니다.
Arduino 환경: esp32 패키지 버전을 v3.0.7로 다운그레이드하는 것을 권장합니다.
문서 출처를 여기에 링크로 연결합니다. 어떤 때는 하기 싫을 때가 있는 겁니다. 당신도 틀림없이 그럴 때가 있을 겁니다. 그런데도 다 했네요. 이런 걸 쉬운 말로 규율이라고 합니다. ^^
'개발자 > 부품' 카테고리의 다른 글
| Elecrow AI 스타터 키트 Jetson Orin Nano (0) | 2026.02.14 |
|---|---|
| 자동 다리미 기계 - 마케팅 잘 하려면 참고할 것 (0) | 2026.02.12 |
| ATtiny13A, ATtiny25, ATtiny45, ATtiny85 프로그래머 HW-260 (0) | 2026.02.11 |
| M5Stack AI 피라미드 컴퓨팅 박스 리눅스 AI 미니 PC (0) | 2026.02.07 |
| RUBIK Pi 3는 개발자를 위해 퀄컴 AI 플랫폼, 루빅 파이 3 (1) | 2026.02.05 |
| ACS712 홀 효과 기반 선형 전류 센서 (0) | 2026.02.02 |
| 전위차계 PT10 500ohm 육각 구멍 가변 저항 스위치 (0) | 2026.01.30 |
| 4G/5G 및 GPS를 탑재한 ESP32 (0) | 2026.01.30 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩