ESP

ESP32C3 Super Mini / ST7796S TFT LCD -3

찬영_00 2025. 1. 12. 10:02

먼저 일반적인 사진은 jpg or png가 많다.

여기서 방법은 2가지이다. jpg decoder를 해서 lcd 화면에 띄울거냐, 아니면 bmp를 변환한 것을 sd카드에 넣어서 사용할거냐

장단점은 존재한다.

종류 장단점
jpg 손실 압축 형식을 사용하므로 BMP보다 파일 크기가 작지만, 디코딩이 더 복잡함
따라서 추가적인 디코딩 과정이 필요함
bmp 무압축 또는 간단한 압축 방식이라서 데이터 구조가 단순하여 디코딩이 쉬움
따라서 TFT 라이브러리에서 기본적으로 지원됨

 

jpg가 파일 크기가 작으니 SD 카드에서 읽는 속도가 더 빠를 수 있지만 일단 bmp로 진행해보겠다.

(jpg 디코더를 사용할거면 다음 라이브러리를 이용해봐라 https://github.com/Bodmer/TJpg_Decoder)

bmp의 데이터 형식은 다음 블로그를 참고하자

https://makeutil.tistory.com/172

 

[C] BITMAP(.bmp) 파일 정보 출력

블로그 검색 상위에 jpeg 저장방법이 오랫동안 유지되는 걸로 봐서 이런것도 같이 올려본다. 그리고 jpeg로 저장할 때는 libjpeg 또는 libjpeg-dev 와 같은 라이브러리를 설치하여야 빌드가 가능하다.

makeutil.tistory.com

이것을 알아야 코드를 짤 수 있다.

 

코드는 깃허브에 올려둘테니 참고바란다.

https://github.com/PCY00/arduino/blob/main/project/stm32/%EC%9E%A1%EB%8B%A4%ED%95%9C%EC%9D%BC%EC%83%81/%EB%94%94%EC%A7%80%ED%84%B8%EC%82%AC%EC%A7%84%EC%9D%B8%ED%85%8C%EB%A6%AC%EC%96%B4/Test/ST7796S_SD.ino

 

arduino/project/stm32/잡다한일상/디지털사진인테리어/Test/ST7796S_SD.ino at main · PCY00/arduino

Contribute to PCY00/arduino development by creating an account on GitHub.

github.com

 

대부분의 코드에 주석을 달아두었으니 응용해서 써도 된다.

아직 최종 목표에 가지 않아 계속 업데이트 할 예정이다.

 

jpg to bmp는 다음 링크를 이용하자

https://convertio.co/kr/

 

Convertio — 파일 변환기

300가지 이상의 포맷 지원 저희는 300가지 이상의 서로 다른 파일 포맷 간의 25600가지 이상의 서로 다른 변환을 지원합니다. 다른 어떤 변환기보다 많은 수입니다. 신속 및 간단 페이지에 간단히

convertio.co

 

생각보다 이미지를 띄우는 속도가 매우 느리다.

이부분에서 생각한건 현재 320x480인 jpg 41kb를 변환 했을 때 bmp는 450kb정도 된다.

esp32C3 super mini의 flash메모리는 4mb정도 되니, 몇개정도를 flash메모리에 불러오는 작업을 해서 속도를 늦쳐봐야겠다.

 

SD에서 사진을 불러오는 것은 다음 영상에서 구현한것을 올려두었다.

https://youtube.com/shorts/zIYwrHou7oM?feature=share