이것저것 알아보다가 결국은 LCD에 표시되는 부분은 1~2초 정도 걸려도 SD카드를 활용하는 방법으로 했다.
큰 이유로는
1. 내가 구현하고자하는 것이 디지털 액자이기 때문에 굳이 사진이 빠르게 나오지 않아도 된다.
그렇다고 너무 늦게 나와도 안되는데 1~2초 정도면 충분하다고 생각된다.
2. 적은 공간의 Flash를 가진 보드이다 보니 여러개의 사진을 저장하는데 어려움이 있다.
따라서 외부 저장공간인 SD카드를 사용하는게 좋다고 생각했다.
이러한 이유로 SD카드를 활용하기로 했다.
그럼 여기서 문제가 발생한다.
SD카드에 많은 양의 사진을 저장할 경우 그것들은 어떤 방식으로 선택할 것인가?
위 방법에 대해서는
첫째, 가변 저항을 활용하여 얻는 값에 따라 범위를 설정하여 값이 범위 안에 오면 해당 사진을 띄울까?
둘째, 버튼을 사용하여 그냥 랜덤 or 순서대로 사진을 띄울까?
셋째, esp32에 내장된 wifi를 이용하여 WebServer를 실행시켜 안에서 SD카드에 접근하고, 파일명에 따라 사진을 출력할까?
일단 첫번쨰 방법부터 설명하자면 출력되는 값이 요동치기 때문에 나오는 값에 1000개의 평균 값을 해주었다.
그러니 값은 어느정도 안정이 되었지만, 사람이 조절하기엔 한번에 많은 값이 훅훅 넘어간다.
따라서 사람이 조절하기엔 범위를 크게 잡아야하고, 그러면 최종적으로 SD카드에 많은 사진을 저장해도, 가변 저항의 제한된 값에 따라 사진갯수가 제한된다.
그럼 두번째 방법은?
이것은 사진 갯수가 제한되지 않지만 원하는 사진이 너무 뒤에 있거나 안나올경우, 사진이 하나 출력되는데 1~2초인데..
너무 시간낭비이다. 그렇다고 버튼을 많이 설치하는 것도 GPIO핀 부족으로 어렵다.
그럼 마지막 3번째 방법이다.
3번째 방법은 시간낭비, 사진갯수 제한을 최소화한다.
하지만 여전히 단점은 있다.
ESP32자체의 Webserver이기 때문에 보드와 사용자가 같은 네트워크를 써야하고, 그래야 해당 웹페이지에 접근이 가능하다.
하지만 이는 내가 개발하고자 하는 집에서 인터리어처럼 두고 사용하는 디지털액자이기에 상관이 없어진다.
따라서 3번째 방법으로 진행했다.
코드 설명은 나중에 하기로 하고 일단 코드 공유후 구현 영상을 보여주겠다.
코드를 업로드 후 실행하면 시리얼모니터에 다음과 같이 ip주소를 준다.
로컬 네트워크라 가릴 필요는 없지만 그냥 가렸다.
그리고 해당 주소에 들어가면 다음과 같이 표시된다 ( SD카드와 연결되어 있어야함 )
DIR은 디렉토리를 말하는 것으로 폴더이다.
1 폴더 안에 있는 1.bmp사진을 띄워 보겠다.
1로 들어가면 현재 위치가 변경되고 폴더안에 파일이 있는 것을 볼 수 있다.
여기서 1.bmp를 체크하고 Display를 누르면 LCD에 뜨는 것을 볼 수 있다.
아래 영상에서 확인해보자
(위 방법에서의 단점은 이름보고 사진을 알아야하는 부분인데, 이부분은 sd카드 리더기를 활용하여 먼저 사진들을 확인한 후에 그 이름을 찾아서 Display하는 방식이 좋을 것 같다. 이유는 wifi를 쓰면서 SD카드에서 많은 사진들을 미리보이게 하는 것은 로딩시간이 압도적으로 많이 걸릴 것 같다..)
클라우드 서버를 사용하여 사진을 저장하고 가져올까하다가 토이프로젝트인 만큼 SD카드를 활용한점 양해바란다.
'ESP' 카테고리의 다른 글
ESP32C3 Super Mini / ST7796S TFT LCD -4 (0) | 2025.01.18 |
---|---|
ESP32C3 Super Mini / ST7796S TFT LCD -3 (0) | 2025.01.12 |
ESP32C3 Super Mini / SD리더기 (0) | 2025.01.11 |
ESP32C3 Super Mini / ST7796S TFT LCD -2 (0) | 2025.01.09 |
ESP32C3 Super Mini / ST7796S TFT LCD -1 (0) | 2025.01.08 |