본문 바로가기
IT관련/ESP32

[ESP32] JPG Image 출력 시험

by TODORO 2019. 11. 13.

Smart home system에 사용할 controller로 ESP32를 정하고 준비중입니다.

오늘은 JPG 와 BMP 이미지를 표시해보기로 하고 작업을 해보았습니다.

240x320 jpg의 경우 100K가 넘고 BMP(24bit color)의 경우는 200K가 넘습니다.

저장은 두군데로 시험해 보았습니다.

하나는 SD card에 넣어서 시험해 보았고 다른 하나는 내부 SPI Flash에 저장 해서 표시하는 것으로 하였습니다.

SD CARD FS system

라이브러리는 TFT_eSPI를 기본 드라이버로 사용했고

SD는 아래 라이브러리를 사용했습니다.

#include <SPI.h> //-- SPI Library

#include <FS.h> //-- File System Library

#include <SD.h> //-- SD Card Library

#include <TFT_eSPI.h> //-- ILI9341 TFT LCD Library

#include <JPEGDecoder.h> // JPEG decoder library



기본 동작은 잘했습니다만 H/W 적으로 조금 불안하네요.

가끔 다운이 되버리는 상황이 발생합니다.

조금 더 동작시험을 해서 안정점을 찾아야 겠습니다.

SD Card에 있는 JPG Image를 불러내어 LCD에 표시하는 것은 생각보다 속도가 많이 늦네요.

250~350ms 정도 시간이 걸리네요.

이정도 속도로는 제가 생각한 것을 구현하기가 힘이 들어 보입니다.

SPI FLASH SPIFFS

다음에는 내장 SPI Flash에 저장하고 SPIFFS 로 읽어 보았습니다.

여기에는 TFT_eSPI Library를 만든 분이 올린 TFT_eFEX를 추가로 사영했습니다.

#include <FS.h> // FAT File system

#include <SPI.h> // SPI

#include <SPIFFS.h> // SPI FAT File System

#include <TFT_eSPI.h> // Hardware-specific library

#include <TFT_eFEX.h> // Include the extension graphics functions library

사용한 Library들입니다.

역시 동작은 문제 없고 SD보다는 조금 속도가 빠릅니다.

150~200ms 정도가 나옵니다.

하지만 이것도 역시 제가 원하는 속도 보다는 조금 느린 것 같습니다.

SD나 SPI Flash 모두 SPI Interface라서 속도에 한계가 있는 것 같습니다.

속도가 잘나오면 만들어 보고 싶은 것이 있었습니다만.

조금 미치지 못하네요.

여기에는 STM32 혹은 Orange board를 사용하는 것으로 계획을 세워보아야 겠습니다.

STM32F4 정도에 SDRAM 달고 이미지를 부팅하고 모두 SDRAM에 올리고 나서 사용하면 충분한 속도가 나올 것 같습니다.

동작속도를 확인해 볼수 있도록 스마트폰으로 대충 찍어 올려 보았습니다.

결론

SPI FLASH에 SPIFFS로 올렸는데 SPI에 FATS로도 올릴수 있는 것 같습니다.

이부분도 한번 시험을 해보아야 겠습니다.

지금 구상하고 있는 것은 ESP32마다 mDNS 와 Web Server를 구성하고 필요한 Image나 Java library들은 SPI Flash에 놀려 놓을 생각입니다.

다른 외부 서버도움 없이 혼자서 단독 동작이 가능하도록 할 생각이기 때문입니다.

네트웍도 깨지면 Self API도 구성해서 어떡하던지 단독으로 사용이 가능하도록 할 계획 이기 때문입니다.

기본은 단독 네트웍을 구성하는 것이고 Home에서 Local network상에서도 동작이 가능하고 이때는 Local Home server가 동작하고 연계동작이 가능한 모드 입니다.

Local Home server가 외부 인터넷에서는 가상 버츄얼 머신으로 동작시켜서 방화벽과 외부 인터페이스를 담당하게 할 생각입니다.

인터넷이 안될경우, Local Network이 안될경우(공유기 허브 문제등)에도 동작이 되어야 하기 때문입니다.

이마저도 안될경우 Local에 Manual switch를 써서라도 동작이 가능해야 한다는 것이 제 생각입니다.

인터넷이 안되거나 , 로칼 네트웍이 안되면 제어가 안되는 것들이 생각보다 무척 많습니다.

자주 발생하는 일은 아니겠지만 제 생각으로는 어떤 일이 있어도 고장나지 않으면 조작이 가능해야 한다고 생각하기 때문입니다.

일단 jQyery, jQuery mobile, 몇가지 Java library들은 올려 놓고 쓸 정도의 속도는 나오는 것 같습니다.

네트웍 속도는 어떨지 모르겠네요.

Arduino 모드 보다 espressif IDF상에서가 훨씬 속도가 빠르다고 하니 나중에 그쪽에서도 같은류의 시험을 해봐야 겠습니다.


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

[ESP32] SPIFFS 를 사용한 WebServer  (0) 2019.11.13
[ESP32] LCD Nixie module #1  (0) 2019.11.13
[ESP32] LCD 드라이버 선택(TFT_eSPI)  (0) 2019.11.09
[ESP32] 자료정리 (Pin map)  (0) 2019.11.09
[ESP32] 부품도착  (0) 2019.11.09

댓글