다시 만든 시계. 한글시계 with 러스트
By Homin Lee
지난 번에 완성한 한글시계 에 몇가지 아쉬운 점이 있어 처음부터 새로 만들어 봤습니다. 바뀐 점은 다음과 같습니다.
- 하드웨어 변경: SBC(RaspberryPi) -> MCU(ESP32S2)
- 광원 변경: LED Matrix -> LED Strip (Apa102 aka. Dotstar)
- 패널 변경: 에폭시 동판 -> 아크릴판 + OHP 필름
- 프로그래밍 언어 변경: Go -> Rust
- 디버그를 위한 OLED 디스플레이 추가
- 3D 프린팅을 사용한 케이스
저장소는 기존의 한글시계 저장소를 그대로 사용하였고 몇가지 추가 변경이 있었습니다.
/rusty_hangulclock
: eps-idf-hal 을 사용한 러스트로 새로 작성한 ESP32S2용 소스코드 추가/case
: 케이스의 3D 모델링 파일들 추가/tool
: 패널 이미지를 만드는 파이썬 스크립트를 Python3를 지원하도록 업데이트
시간순으로 제작 사진 첨부 합니다.
우선 패널의 패딩을 포함하여 전체 크기를 예측해 보았습니다.
크리스 마스 트리 장식에 사용하려고 구매한 5M 150ea LED 스트립의 LED 간격을 재 보니 33mm 로 5x5의 한글시계를 만들었을 패널 크기가 165mmx165mm 로 적당했습니다.
3D 프린터가 감당할 수 있는 크기입니다.
모든 3D 디자인은 OpenScad를 사용해 서포트 없이 출력할수 있게 했습니다.
PETG가 반투명이라 빛 샘 현상을 막기 위해 내부를 은색으로 도색했습니다.
LED 스트립은 그림과 같이 지그재그로 연결했습니다. 4선의 Dotstar 말고 3선의 NeoPixel 스트랩을 샀으면 납땜을 덜 할 수 있어서 좋았을 걸 했습니다.
LED 패널의 뒷면에는 OLED와 ESP32S2 보드를 장착했습니다. RaspberryPi 같은 SBC는 아무것도 안해도 5V 2A 를 사용하는데 ESP32S2는 MCU라 조명 다 키고 OLED 까지 켜져 있어도 5V 100mA 도 채 사용하지 않더라구요. 허허
부팅도 SBC와 달리 똑딱 되서 역시 간단한 어플리케이션에는 MCU가 답이구나 했습니다. SBC가격만 몇 만원 하던 것에서 MCU를 사용하면 몇 천원으로 비용도 대폭 절감됩니다.
안 터지나 테스트 해 보고,
전면 패널은 2mm 투명 아크릴판 두 장 사이에 OHP 필름으로 인쇄한 한글시계의 5x5 배결을 두 장 (한 장만 사용하니 빛이 새더라고요), 빈 A4용지 하나를 겹쳐 저렴하면서도 완성도를 높일 수 있었습니다.
완성된 모습. 편안~
ESP32S2는 WiFi가 포함되어 있는 MCU이기 때문에 SNTP를 사용해 정확한 시간을 맞추는것이 가능했습니다.
예전에 시도해 봤을때는 여러 주변기기 (DotStar, OLED) 를 위한 Crate 들이 ESP의 HAL과 호환이 깨져있어서 아쉬웠는데 이번에 다시 해 보니 Rust Embedded 생태계가 많이 탄탄해 졌더군요.
꼭 ESP용으로 작성된 Crate 를 사용해야 되는게 아니라 Embedded-HAL 을 만족하는 것들은 모두 사용할 수 있어서 STM이나 NXP용 예제 코드에서 사용법을 참고해 전체 코드를 수월하게 작성 할 수 있었습니다.
코드는 기본 동작만 확인한 상태로 추후 아무때나 업데이트 될 수 있습니다.
원 저자로 인터넷에서 여러 분들이 만든 많은 한글 시계에 역으로 영감을 받을 수 있어서 영광이었습니다.
처음 한글시계를 만들때 보다 환경도 좋아지고 저도 노련?해져서 많은 시간과 비용을 절약할 수 있었습니다. :)
아직 국내에는 MCU에 러스틑 사용하는 분들이 많지 않은 것 같은데, SBC에 Go가 딱이듯, MCU에는 러스트가 참 좋더라고요. 국내 Embedded Rust 생태게도 더 무르익기를 바래 봅니다.
끝!