본문 바로가기
Embedded System/소프트웨어 (C,C++)

[GUI & 터치스크린] LVGL 구현 관련 정리

by MachineJW 2024. 7. 31.

1. 하드웨어(H/W) 요소

(1) 터치스크린 패널 종류

종류 특징
저항막 (감압식) - 패널에 일정 압력을 가했을때(누르는 힘)에 의한 저항의 변화를 감지
- 필름이 접촉될 정도의 압력을 가해야 하기 때문에, 터치 인식률이 낮음
- 산업현장에서 장갑을 낀 손으로도 사용이 가능하기 때문에 산업 디스플레이에 주로 쓰임
정전용량식 - 패널에 전극 변화를 감지하여 인식
- 터치감도가 매우 좋으며, 중소형 모델에 적용하기도 적합함
- 대부분 모바일 스마트폰 터치스크린 패널에 사용되고 있음

 

(2) 터치스크린 보드의 구조 (LVGL 지원 보드)

 

  • 터치스크린 보드 형태의 구조는 대부분 이렇다.
  • 디스플레이 컨트롤 칩은 다양하며 드라이버가 이미 라이브러리에 구현되어 있기 때문에 구현 시 소스코드에서 해당 드라이버 헤더파일 주석을 해제하여 사용한다.

(3) 사용할 디스플레이 (4인치)

 

Display 모듈 컨트롤러 드라이버 터치 컨트롤러
4 인치 SPI 터치스크린 디스플레이 (감압식) ST7796 XPT2046

 

 

 

(4) 사용할 디스플레이 (7인치)

 

아두이노 IoT 용 정전식 터치 스크린 LCD 디스플레이 모듈, 와이파이 + BT ESP32-S3 개발 보드, TFT 800x48

Smarter Shopping, Better Living! Aliexpress.com

ko.aliexpress.com

회로도를 참고하여 XPT2046을 사용한 것을 확인

Display 모듈 컨트롤러 드라이버 터치 컨트롤러
ESP32-8048S070C (7인치) EK9716 XPT2046

2. 소프트웨어(S/W) 요소

LVGL을 사용하여 Arduino 펌웨어 구현시 링킹되는 구조

(1) LVGL

 

LVGL — Light and Versatile Embedded Graphics Library

We‘ve been using LVGL for our embedded graphics needs, and it has been used in a huge number of devices. We are very happy with its performance and its lightweight nature. We also highly appreciate the collaboration with LVGL‘s open source community.

lvgl.io

  • 오로지 임베디드에서 GUI 구현만을 위한 대규모 그래픽 구현 라이브러리 (C언어로 구현되어 있으며 오픈소스)
  • 사실상 코드만으로 구현이 가능하지만 UI 개발툴이 있음 (SQUARELINE STUDIO)
  • LVGL에서는 이미 이쁘게 UI로 구현되어있는 위젯(Widgets)이라는 개념이 있다. 아래에는 사용 가능한 위젯을 소개한다.
 

Widgets — LVGL documentation

© Copyright 2024, LVGL Kft. Last updated on Jul 31, 2024.

docs.lvgl.io

(2) SquareLine Studio

 

SquareLine Studio - Design and build UIs with ease

Next generation UI solution for individuals and professionals to design and develop beautiful UIs for your embedded devices quickly and easily. We also do services like UI design, implementation and consulting.

squareline.io

  • LVGL 라이브러리 자체는 무료이지만 GUI 디자인 툴은 라이센스가 있다. (개인라이센스 - 무료, 상업라이센스 - 유료)
  • 디자인 작업 후 내보내기를 하면 LVGL로 구현된 그래픽이 구현되기 위한 코드가 생성된다. (어디까지나 디자인만)
  • Arduino 환경에서 사용하기 위해서는 디자인 툴에서 넘겨받은 코드에서 드라이버 셋팅 후 상호작용 가능하다.
  • 해당 디자인 툴에서 LVGL의 위젯 일부분이 지원하지 않는다. (구현하고 싶다면 직접 코드를 사용하여 구현해야한다.)