안녕하세요
며칠전에 완성시킨 4.7" ePaper 액자가 작업완료 삼십분만에 고장나버려서(ㅠㅠ) 멘붕이 왔다가 그래도 작업진행과정은 여러분들과 공유해볼 가치가 있을것 같아 (눈물을 머금고 ㅠㅠ) 올립니다
1. 당초 집사람 생일(10월)까지 완성을 목표로 여유있게 23년 8월경에 구입한 Lilygo 4.7" ePaper 모듈입니다. esp32s3모듈과 배터리 충전 모듈이 온보드라 제 목적에 딱 맞아떨어집니다. 가격은 호주$80정도로 좀 나가는 편입니다.
2. 4000mAh짜리 대용량 Lipo도 그즈음 같이 구매했습니다. 어떻게든 최소 한달은 충전없이 작동하는게 당초 목표였었습니다
3. 액자에 띄울 이미지는 미리 홈서버의 공유폴더에 시간날때마다 업로드해두고 매일 한번씩 갱신하게끔 배쉬스크립트를 짜줍니다. 스크립트는 액자가 하루 한번 deep sleep에서 깨어나서 루틴을 수행하고 딥슬립에 재돌입전 마지막으로 MQTT를 날려주면 그걸 받아보고 작동하게끔 했습니다. 배쉬스크립트 아리까리해서 잘 짜기 쉽지않지만 요즘은 AI가 다 해주니까 아주 간단합니다.
4. 액자에 이미지띄우는 코드와 MQTT, 서버의 스크립트 등등만 잘 짜면 기본작동은 됩니다만 관건은 배터리입니다. 배터리 사용패턴을 역시 MQTT를 통해 influxDB에 읽어들이고 grafana로 그려줬습니다. 아래 그래프의 초록색점들을 보시면 대략 15일정도 작동하는걸 볼 수 있습니다. 당초 목표인 한달에는 한참 못미치지만 제 능력으론 여기까지인것 같아서 대충 이정도 선에서 만족하는것으로 했습니다. 프로젝이 일년 넘게 지연된게 다 이놈의 배터리/딥슬립때문이었답니다 (한편 그래프상의 노란선은 자작중인 다른 컨셉의 기기인데요 2000mah배터리로 거의 석달넘게 버팁니다@@)

5. 여기까지가 기초적인 작동방식이구요. 마누라 선물이다보니 외관을 예쁘게 꾸며야하겠기에 이번에 처음으로 도색을 시도합니다. 도색은 처음 해보는거라 고전을 거듭했습니다. 결과는 뭐 그럭저럭...



6. 작업하다가 실수로 보드의 리셋버튼을 부러트리는 사고를 쳤는데요 땜방으로 리셋버튼을 외부로 나오게끔 수정했는데 결과적으로 더 편리하게 됐습니다

7. 배터리는 뒷판에 고정됩니다. 뒷판에는 제 자작에 항상 등장하는 충전 indicator 투명아크릴봉이 설치됩니다. 뒷판고정은 M3 스크류 한개로 깔끔하게 됩니다.

8. 완성입니다. 이제 잘 포장해서 마누라한테 선물하고 사랑받는일(?)만 남았는데... ㅠㅠ
테스트도중 그만 사망하시고 말았습니다. ㅠㅠ

사망원인은 제 능력으론 알 수가 없습니다. 아마도 케이스에 보드를 맞춰서 우겨넣는(?) 과정에서 무언가 손상이 있었던게 아닌가 싶습니다. 위에 밝혔다시피 스위치를 부러뜨리는 등 여러가지 사건이 있었거든요. 아래 사진이 현재 상태인데 자세히 보시면 화면이 약간 흐릿해진것을 알 수 있습니다. 즉 무언가 하드웨어적인 문제가 발생된것 같고 그게 맞다면 제 능력으로 수리는 불가능하다고 봐야겠죠.
(이게 이페이퍼다보니 사망하셔도 화면은 떠있습니다)
이상입니다. 혹시라도 저것 비슷한걸 자작하실 분이 계시다면 나름 조금이나마 참고가 되시라고 올렸습니다. 배쉬스크립트와 아두이노코드도 자료실에 올리겠습니다.
즐거운 주말 마무리하세요. 감사합니다
이 정도면 어떨까요... 라지 사이즈가 999 라 엄두를 못 내고 있습니다. ㅠㅠ
7.5인치 만들 때에는 https://www.hackster.io/news/nerdiy-s-3d-printed-framework-turns-an-ikea-ribba-into-a-seeed-xiao-esp32c3-powered-epaper-dashboard-3d09f96f7936?s=32 를 보고 했습니다.
아마 이미 알고 계시겠지만, 2.66인치 e-ink의 경우 Waveshare의 위키에 가보니까 중국 한자는 fontXX.cpp로 만든 예제가 있고, 아두이노 코드에서 전자잉크로 출력하는 함수도 있는 것으로 봐서, 한글도 가능하지 않을까 하는 추측을 해봤습니다. 그리고 https://diyver.tistory.com/199 와 https://blog.naver.com/gilchida/223247806853 도 흥미롭네요...
MQTT는 저는 HA에 연동하여 테스트만해서 구체적으로 잘 모르지만 Gemini는 바이트 단위로 처리되므로 "송신 측에서 UTF-8로 인코딩하여 바이트 배열로 변환한 후 메시지의 페이로드에 담아 전송하고, 수신 측에서는 수신한 바이트 배열을 UTF-8로 디코딩하여 한글 텍스트로 복원하는 것이 일반적인 방법"라고 하고 합니다.
참고로 리눅스에 한글 쓰는 것은 최신판 우분투 리눅스는 너무 편했습니다. 과거에는 이것 저것 설정해야 하는 것과 달리 거의 한두가지만 설정하면 그냥 작동하는 수준이고 실사용도 괜찮다 생각이 들 정도였습니다.
1. Serial.flush(): 시리얼이 열려있으면 딥슬립에 못들어간다는 썰(?)이 있어서 추가했구요
2. epd_poweroff_all(): 이게 말씀하신 ePaper끄는 명령입니다
3. esp_sleep_enable_timer_wakeup(time2sleep * uS_TO_S_FACTOR): 타이머설정이구요
4. esp_deep_sleep_start(): 이게 마지막으로 딥슬립진입명령입니다
결국 딥슬립이란게 저이상 더 복잡하기는 힘들거같아서 프로그램상 오류일 가능성은 크지 않을것 같거든요. (epd_poweroff_all()은 정말 큰 효과가 있었습니다. 저거 없이는 하루이상 못가드라구요)
IoT당에는 올라오는글이 없어서 거의 안가는데 거기에 재밌는 글을 올리시는군요ㅎㅎ
왠지 도움은 안될 것 같고요, 돌다리도 두드려보자는 생각이었습니다. (추가)그림으로 첨부한 ChatGPT의견은 하드웨어쪽으로 원인을 보는 것 같습니다. 보드 사진을 줬더니, 저 보드는 저전력이 아닌 것 같다며, Ultra Low Power 보드로 교체하라고 추천도 해주네요. 예: TTGO T-Energy, Heltec Wireless Stick Lite (ePaper 핀은 따로 연결 필요하지만 deep sleep 전류가 10μA 수준). 친절한 ChatGPT입니다.
https://www.aliexpress.com/item/1005008234699949.html?spm=a2g0o.order_list.order_list_main.5.423c1802BLRIc5AliExpress
배터리 새는 문제나 클럭 늦게가는 문제를 의식한듯 저전력과 RTC내장을 내세우고 있어서 이번 한번만 더 속아보자고 그냥 질렀습니다. 어차피 릴리고+배터리 하면 가격은 비슷해지거든요. 이 기기는 스크린이 케이스에 안전하게 들어있어서 아무래도 조립중 실수로 망가뜨리는 일은 적을것 같구요
https://sharpdevices.com/memory-lcd/#1615975689583-4d044034-56d122b6-23f8
waveshare 같은 곳에서 아두이노용 키트도 팔고요. '백라이트 없이 사용해서 눈을 보호하겠다'와 같은 목적이 아니라면, eink보다 용도에 맞는 기술이라고 봅니다.
과거 무선키보드 등에서 저전력 디스플레이를 위해 eink를 종종 사용했었는데, 이제 모두 메모리 lcd로 넘어가는 추세입니다.
저도 요즘 알리에서 다양한 사이즈의 Lilygo ePaper 모듈들을 보고 있는데
머 어떻게 만질줄 몰라서 그냥 보는걸로 만족하고
걍 6" 이북리더기로 사진액자로 가끔 돌려쓰고 있습니다.
저도 릴리고 4.7인치 epaper 디스플레이를 주문해서 몇번 해먹어본 경험이 있어서 그러는데요,
혹시 esp32 장치를 컴퓨터에 연결했을 때 아예 인식이 안되는 수준으로 보드가 망가졌나요?
그나마 esp32가 인식이 되는 상태라면 부활시켜볼수도 있어서요
USB케이블을 연결하면 보드에 LED는 들어오지만 리셋버튼이 작동하지 않습니다
https://github.com/Xinyuan-LilyGO/LilyGo-EPD47/tree/esp32s3?tab=readme-ov-file
저 사이트에서 알려준대로 업로드모드는 Boot버튼과 Reset버튼 조합으로 들어가야하는데 이제는 더이상 작동 안하는것 같습니다ㅠㅠ 보통은 저 버튼조합을 해주면 윈도에서 바로 인식되거든요
무슨 방법이 있을까요ㅠㅠ
/Vollago