본문 바로가기
ESP32

[강좌]ESP32 4.3" TFT-LCD HMI - 8. lvgl + PlatformIO example

by 소나무기운 2023. 4. 11.
반응형

[2023/04/11] First Start.

소나무 기운 ,  전자제품 개발/생산

[강좌]ESP32 4.3" TFT-LCD HMI -8. lvgl + PlatformIO example

이번엔 lvgl 라이브러리를 PlatformIO를 사용하여 작업하는 방법을 소개합니다.

 

platformIO를 사용하면 장점이 있습니다.

 

첫째 : 컴파일 시간을 단축할 수 있습니다.

         Arduino IDE 에서는 매번 모든 라이브러리를 컴파일 합니다. lvgl을 사용할 경우 소스가 워낙 많다 보니. 컴파일 시간이 상당히 많이 필요합니다. (대략 10분정도)

 

둘재 : 사용한 라이브러리를 별도로 관리할 수 있습니다.
         PlatformIO 프로젝트 폴더 내의 라이브러리 위치에 사용하는 라이브러를 별도로 관리하도록 하고 있습니다. 가장 마지막에 사용한 개발환경과 라이브러리를 계속 유지할 수 있어서 오랜 시간이 흐른 뒤에도 프로그램의 유지보수가 쉽습니다.

 

 

PlatformIO는 VSCode를 사용합니다.

VSCode설치, PlatformIO설치, 프로젝트 생성 실행, lvgl 예제 프로그램 사용해 보기 등의 작업들을 진행해 보겠습니다.

 

 

 

VSCode 설치

다운로드 페이지에서 운영체제에 맞는 제품을 다운로드하여 설치하면 됩니다.

 

https://code.visualstudio.com/download

공식 다운로드 페이지 입니다.

 

Download Visual Studio Code - Mac, Linux, Windows

Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.

code.visualstudio.com

 

 

 

PlatformIO 설치

PlatformIO 는 다양한 마이크로컨트롤러와 다양한 플랫폼을 지원하는 통합 개발 환경입니다.

C++과 Python을 모두 지원합니다.

 

VSCode가 기본 에디터로 사용되며 VSCode의 Extention에서 설치하여 사용할 수 있습니다.

 

공식 홈페이지는 https://platformio.org/ 입니다.

https://platformio.org/

 

PlatformIO is a professional collaborative platform for embedded development

Open source, cross-platform IDE and Unified Debugger. Static Code Analyzer and Remote Unit Testing. Multi-platform and Multi-architecture Build System. Firmware File Explorer and Memory Inspection.

platformio.org

2023년 04월 11일 기준 1,519 디바이스를 지원하다고 홍보하고 있습니다.

 

VSCode의 Extention에서 PlatformIO를 검색하면 위 이미지 처럼 보입니다.

설치하시면 되겠지요.

 

설치가 완료되시면 위 이미지 왼쪽 아래처럼 벌 머리 같은 아이콘이 생깁니다.

 

 

Helo world! 프로젝트 생성

VSCode 에서 왼쪽 아이콘이 나열된 곳의 PlatformIO 아이콘을 선택합니다.

Create New Project 선택합니다.

New Project 선택합니다.

EPS32-S3 보드를 사용하여 시험합니다. 

"Espressif ESP32-S3-DevKitC-1-N16R8V (16MB QD, 8MB ..." 보드를 선택해줍니다.

보드파일 추가해 줘야합니다.

https://github.com/handledexception/platform-espressif32/tree/esp32-s3-devkitc-1-n16r8v/boards

 

GitHub - handledexception/platform-espressif32: Espressif 32: development platform for PlatformIO

Espressif 32: development platform for PlatformIO. Contribute to handledexception/platform-espressif32 development by creating an account on GitHub.

github.com

아두이노 플랫폼을 사용할 겁니다.

프로젝트 이름은 적당히 넣어주세요.

 

프로젝트를 생성 중입니다.

platformio.ini파일이 열리며 새로운 프로젝트가 만들어졌습니다.

ini파일에 대한 정보는 https://docs.platformio.org/page/projectconf.html 을 참고하시면 됩니다.

시리얼 포트관련 설정을 추가해 줍니다. 시리얼 선택방법은 이미지에서 COM21이라는 부분을 클릭하면 현재 연결되어 있는 시리얼 포트들 중에 고를 수 있습니다.

 

이렇게 코드를 짜고 "->" 이 표시를 눌러 주면 됩니다.

Hello, world! 라고 잘 표시되는 것 보이시죠?

이 화면에서 보이는 Build, Upload, Monitor 등 명령어를 눌러서 실행해도 됩니다.

 

 

lvgl 예제 사용

lvgl 관련 예제를 PlatformIO에서 컴파일 해 보고자 합니다.

 

기본 개념은

-- 예제파일의 내용을 main.cpp에 복사해 넣습니다.

-- PlatformIO lib폴더에 사용할 library를 복사해 넣습니다.

   이번 예제에서 사용할 라이브러리는 

          Arduino_GFX-master

          lvgl

          XPT2046_Touchscreen-master

 

lvgl은 예제의 안내처럼 lvgl폴더에 

lv_conf.h파일을 복사해 줍니다.

 

이렇게 세가지 입니다.

보이는 것 처럼 lib폴더와 src폴더가 있습니다.

src폴더의 main.cpp에서 setup(), loop()폴더로 시작합니다.

 

 

한번 컴파일 후 다운로드 한 다음 main.cpp의 내용을 조금 수정하여 다시 다운로드 해 보면 속도가 훨씬 빠른 것을 볼수 있습니다.

 

 

 

 

 

 

PlatformIO 프로젝트 폴더 구조

PlatformIO프로젝트의 폴더 구조은 아래 그림과 같습니다.

우선 맨 아래부터

platformio.ini 파일에는 개발보드 선택, 업로드 시리얼 포트 선택 등등의 관련 설정을 할 수 있습니다.

 

src : 소스 폴더가 위치합니다.

include : 헤더 파일이 위치합니다.

lib : 라이브리 파일이 위치합니다.

 

include, lib 폴더에는 README파일이 있습니다.

라이브러리 폴더 밑에 라이브러리를 넣는 방법, 헤더파일 넣고 참조하는 방법등이 자세하게 적혀 있습니다.

 

 

 

 

마무리

이제 PlatformIO를 사용하여 빠르게 개발을 진행하고 온전하게 개발 관련자료(라이브러리)를 보관할 수 있습니다. 새로운 개발환경에 대한 두려움을 가지지 말고 시험삼아 한번씩이라도 꼭 사용해 보세요.

 

개발시 문제점

PlatformIO를 사용한 lvgl demo 프로그램 컴파일 후 라이팅하면 demo프로그램이 동작할때 백라이트가 어른어른 거리는 현상이 생깁니다. 현재 생각하기로는 PlatformIO의 Espresif 플랫폼의 버전이 낮아서 그런드 합니다.

그래서 PlatformIO로 개발을 한 후 arduino ide에서 재 컴파일하여 사용하였습니다.

 

 

참고문헌

 

다음에는  SqureLine Studio를 사용하여 GUI를 만들어 ESP32-S3에 넣는 방법에 대해서 알아보겠습니다.

SqureLine Studio 포토샾 사용하듯 간단하게 GUI를 생성하고 코드화 할 수 있습니다.

 

 
 

 

 

틀린 부분이나 질문은 댓글 달아주세요.

즐거운 하루 보내세요. 감사합니다.

 

 

반응형

댓글