10.1인치 스마트 캘린더 제작기
또 알리를 뒤지다가 이상한 녀석을 하나 구매했다. 10.1인치 1280 x 800 해상도 디스플레이에 Espressif社의 고성능 SoC인 ESP32 P4를 탑재한 녀석이다. 검색해보니 'Guition 10.1인치'라는 별명으로 불리더라.

케이스도 붙어있고, 고해상도의 큰 디스플레이도 붙어있으니 스마트 캘린더(또!)를 만들기 제격이라는 생각이 들었기에 잽싸게 구매 버튼을 눌렀다. 물론 ESP32P4에 대한 공부는 전혀 하지 않았다. 생성형 인공지능(AI)이라는 믿을만한 구석이 있었기 때문이다.


앞서 E-ink를 활용한 캘린더를 두 차례나 만들었지만, 또 다른 캘린더를 만든 이유는... 그냥 호작질꺼리가 끊기면 의욕이 떨어지는데, 마땅히 아이디어가 없으니 매번 울궈먹는거다.
다만, 이번엔 E-ink를 이용한 2번의 제작과는 달리 기기가 독립적으로 작동하도록 하는데 초점을 맞췄다. E-ink를 이용한 캘린더 제작엔 구글 캘린더의 ics 파일을 구글 앱스 스크립트로 파싱해 기기의 부담을 줄여주는 방식으로 코딩했다.
하지만 이번엔 앱스 스크립트 설정 같은 거 없게 만들고 싶었다. 제품화(?!)할 생각은 없지만, 나중에 누군가에게 특별한 선물을 하고 싶을 때 만들어서 줄 수 있지 않을까하는 생각에서다. 그래서 다음과 같이 구상했다.
- Guition 10.1인치에서 AP모드를 가동하고, 설정 페이지에 접속해 설정할 수 있도록 한다.
- 설정 페이지엔 다음과 같은 기능을 넣고자 했다.
- Wi-Fi 설정 기능
- 구글의 비공개 ics 주소 입력 기능
- 날씨를 받아오기 위한 위치 설정 기능
- 타임존 설정 기능
- 별도의 페이지를 만들어 Home Assistant 대시보드로도 작동할 수 있도록 할 것(추후 과제)
제조사 예제를 내려받아보니 Arduino-IDE를 이용한 것들, ESP-IDE를 이용한 것들이 이 보였다. 몇 차례 써본 적이 있는 Arduino-IDE를 이용해서 만들어보기로 했다. 제미나이와 챗GPT의 도움을 받아 아래와 같이 달력만 구현해봤다.

AI의 도움을 받아 추가 구현을 여러번 시도하다가 벽에 부딪혔다. 가로 모드 예제를 이용하면, 커널 패닉이 나는 것이었다. 검색해보니 가로 모드에 버그가 있다고도 했고, 원하는 기능을 구현하려면 ESP-IDE가 적합하다는 결론도 얻었다. 결국 Arduino-IDE를 버리고 ESP-IDE로 툴을 바꿨다.

날짜와 날씨, 일정을 표시할 Monthly View 달력을 우선 표시해봤다. 챗GPT가 VS Code에서 제조사 예제를 바탕으로 어떻게 수정하면 좋을지를 알려줬다. UI는 나중에 손보기로 하고, 차근차근 기능들을 구현해 갔다. (사실 이만큼 구현하는데도 짬짬이 하다보니 일주일이나 걸렸다)
우선 네트워크 기능부터 벽에 막혔다. ESP32P4는 다른 ESP32 시리즈와 달리 Wi-Fi나 블루투스가 내장돼 있지 않다고 했다. Wi-Fi와 블루투스는 함께 붙어있는 ESP32C6의 도움을 받아야 된단다. 기능 구현을 위해선 ESP32P4용 펌웨어는 물론, ESP32C6의 펌웨어도 입혀야 한다는 결론.

ESP32C6용 펌웨어를 입히기 위해 뒷판을 땄다. 아래쪽 안테나가 연결돼 있는 칩이 ESP32C6다. 바로 옆엔 RX, TX, GND 등 핀이 나와있다. 이걸 통해서 C6에 펌웨어를 입혀줬다. C6용 펌웨어 역시 챗GPT가 만들어줬다.

챗GPT와 엄청난 씨름 끝에 만들어진 1차 완성본.

현재 날씨와 내일 날씨를 아이콘으로 보여줄 수 있게 바꾸고, 달력에 표시된 시간에 꾸밈을 주고, 현재 시각도 조금 더 보기 좋게 바꾼 모습.

이건 AP 모드로 들어갔을 때 설정하는 화면.