본문 바로가기
IT관련/ESP32

[ESP32] LCD 드라이버 선택(TFT_eSPI)

by TODORO 2019. 11. 9.

#스마트홈 시스템을 꾸며보려고 합니다.

거기에 사용할 컨트롤러로 ESP32를 정하고 관련 정리를 해나가고 있습니다.


ESP32는 나름 내부 메모리가 크고 SPI Flash 혹은 SPI PSRAM을 부착 할수가 있어 메모리 용량문제는 어느정도 해결 될 것 같습니다.

또한 MCU도 나름 빠른 놈이라 Display에 적당히 작은 TFT LCD모듈을 사용해도 좋을 것 같습니다.

예전에 사놓았던 240 x 320 2.4" TFT LCD를 붙여보고 있습니다.

여기에 쓸만한 드라이버를 고르던중 쓸만한 라이브러리를 골라 당분간 사용하기로 했습니다.

TFT_eSPI

원래는 Adafruit_ILI9341 와 Adafruit_GFX 를 사용하려고 했었습니다만.

이부분은 이전 포스팅에서와 같이 이미 올려 보았습니다만.

개인적으로 소스가 좀 복잡하게 꼬인 느낌이라 추가 하기 위해 분석을 하려면 머리가 아팠습니다.

유튜브좀 살펴보다보니 쓸만한 라이브러리가 있더군요.

"TFT_eSPI"라는 라이브러리 입니다.


TFT_eSPI가 속도도 좀 더 빠르고 소스도 아주 깔끔하게 정리가 된 것 같아 이것을 사용하기로 결정 했습니다.

포팅도 아주 간편하군요.

[설치폴더]/TFT_eSPI\User_Setups에 있는 "Setup1_ILI9341.h" 를 수정해서

[설치폴더]/TFT_eSPI 의 "User_Setup.h"를 엎어 쓰면 됩니다.

백업해놓고 직접 고치셔도 되구요.

#define TFT_CS 17 // Chip select control pin D8

#define TFT_DC 16 // Data Command control pin

#define TFT_RST 5 // Reset pin (could connect to NodeMCU RST, see next line)

저는 ESP32의 HW SPI를 사용하므로 위와 같이 일반 GPIO를 사용하는 CS와 D/C, Reset 핀들에 위와 같이 할당을 해주었습니다.

#define _mosi 23 // goes to TFT MOSI

#define _sclk 18 // goes to TFT SCK/CLK

#define _miso 19 // goes to TFT Miso

SPI는 위 신호를 사용했습니다.

#define SPI_FREQUENCY 40000000

#define SPI_READ_FREQUENCY 40000000

SPI 속도는 40MHz로 설정 했습니다.

나머지는 Default로 사용했습니다.

내부 구조를 보니 나중에 한글 구현하기가 편해 보입니다.

드라이버에 통합 하는 것보다는 TFT_eSPI Function들을 이용하는 서브 라이브러리 형태로 만들어야 겠습니다.

기구부분 관련

Maker 활동에서 LCD를 사용하면 Case 만들기 난이도가 급 상승해 버립니다.

LCD창은 뚫어주어야 하고 전체적으로 가공 정밀도도 엄청 높아야 합니다.

S/W작업하면서 케이스 전면 배젤에 부착하는 부분도 디자인 하고 모델링해 보기로 했습니다.

일단 Maker 활동상 금형은 언감 생심이고 3D 프린터로 너저분 하게 만드는 것도 싫어서 Wood를 사용하고 CNC를 사용해서 가공하기로 했습니다.

밀도가 조금 높은 수종을 사용하면 충분히 이쁘게 만들 수 있지 않을까 생각하기 때문 입니다.

먼저 LCD를 모델링할려다 보니 조금 양이 되서 검색해 보았습니다.

grapcad에 어떤분이 만들어 올린 것이 있더군요 ^^..



다운 받아서 Fusion 360에 임포트를 했습니다.

LCD화면에 이미지가 없어서 적당한 것 받아서 material을 다시 만들어 주었습니다.



만들려면 한참 걸릴것 같았는데 올려주신분께 감사드립니다.


원본에서는 터치 IC가 없었는데 빈공간이 조금 썰렁해 보여서 만들어 주었습니다.

XP2031 입니다.


일단 10T Wood로 만들어 보았습니다.

전면에는 밋밋하면 레이저로 테두리와 Logo나 글씨등을 각인 하면 될 것 같습니다.

뒷면엔 LCD장착을 위해 포켓 가공을 해주었습니다.

각진 부분이 많아 Dogbone 작업도 해주었습니다.

3mm 엔드밀로 가공하는 것을 기준으로 했습니다.

LCD를 장착한 모습입니다.

고정은 나사못으로 할려고 합니다.

밀도가 높은 Wood를 쓰고 나사못으로 4곳을 고정해주면 크게 문제가 없을 것 같습니다.

전면 모습입니다.

이것 저것 Sample을 올려 시험해 보았습니다.

생각보다 속도가 아주 잘나오는 것 같습니다.

한글올리고 JPG, BMP 정리 하면 될 것 같습니다.

이부분은 SPIFFS를 기준으로 하고 혹 속도 문제가 있으면 SD/MMC도 동원해야 할 것 같습니다.

시간내서 TFT_eSPI 함수들 살펴보고 정리좀 해봐야 겠습니다.

일단 한글 올리고 다음에 SPIFFS에서 이미지 파일 읽어와 올리고 문제가 되면 SD/MMC에서 읽어오기까지 진도가 나가야 할 것 같습니다.


'IT관련 > ESP32' 카테고리의 다른 글

[ESP32] LCD Nixie module #1  (0) 2019.11.13
[ESP32] JPG Image 출력 시험  (0) 2019.11.13
[ESP32] 자료정리 (Pin map)  (0) 2019.11.09
[ESP32] 부품도착  (0) 2019.11.09
[ESP32] 전용 DOWN LOADER  (0) 2019.11.09

댓글