Arduino WordClock 한글시계(feat. chatGPT) #1.하드웨어파트

XENO(제노)
7 min readMay 4, 2024

지난번 라즈베리파이 아케이드 게임기 제작 이후, 오랜만에 파고들 만한 프로젝트를 발견했다.

한글시계 프로젝트 https://github.com/suapapa/HangulClock

아두이노와 LED를 사용해 5분 단위로 현재시간을 한글로 표시하는 시계 제작 프로젝트다. 초 단위로 정보를 제공하는 일반적인 시계와 달리, 5분의 여백을 한글이라는 감성으로 제공한다는 점이 매력으로 다가왔다.

제작 난이도는 크게 높지 않다.
다만 하드웨어, 특히 아두이노와 GPIO 개념이 거의 초보 수준이라 하드웨어의 개념 이해를 위한 사전 학습시간이 무척 오래 걸렸다. GPIO의 개념, Arduino IDE 사용법과 프로그래밍 개념잡기, RTC는 어떻게 작동하고, 슬립모드와 인터럽트(Interrupt)의 개념, RGB와 RGBW는 무슨 차이인지 등…
여기에 더해, 시계 작동을 위한 소프트웨어-코드를 처음부터 직접 작성해야하는 복병이 등장했지만, 든든한 아군(?) 덕분에 아주 성공적으로 프로젝트를 마무리할 수 있었다. (#2.소프트웨어 파트 참고)
하드웨어 제작과 코딩을 병행하다보니 시간이 꽤 걸렸지만, 완성된 결과물을 보니 역시 또 하나의 추억을 만든 것 같아 뜻 깊었다. 무엇보다 코딩에 대한 막연함에서 벗어난 계기가 되었고, 여세를 몰아 다음에는 앱 프로젝트를 실행해 볼까도 싶었다.

이번에도 제작과정에서 얻은 정보들을 정리해본다. 이 또한 다른분들에게 도움이 될 수 있을듯 싶어서…

주요 부품
- Arduino Pro Mini(5V)
- LED Strip Light — SK6812 60LED
- DS3231 RTC(Real Time Clock)
- 한글 프린트 시트지/ 아크릴 판 / 소형액자
- Arduino Sketche / IDE
*옵션) FTDI232 USB Uploader / USB C 타입 충전모듈

준비물은 간단한다. 다만 각 부품의 작동방식을 공부하는데 많은 시간이…
왼쪽부터 DS3231 RTC / Arduino Pro Mini / FTDI232 USB / C-type 충전모듈

가. 하드웨어 제작 (Hardware) 파트

Arduino Pro Mini(5V)
- 아두이노 프로젝트에서 흔히 쓰이는 Arduino UNO 와 동일한 성능을 가지고 있으면서도 크기는 5분의 1 이하 수준으로 매우 작다. 이 모델은 작은 사이즈에 불필요한 입출력단자와 GPIO를 최소화해서 저-전력으로 작동한다. 작은 사이즈임에도 프리 레귤레이터가 내장되어 있어 3.3V 혹은 5V 제품에서도 RAW 핀을 사용해 최대 12V까지의 외부 전력까지 연결할 수 있다. 때문에 드론이나 소형기기 제작에 많이 사용되고 있다.
- 단, 외부 입출력 단자를 모두 없애고 GPIO 단자 역시 최소화 했기 때문에, 작성된 스케치 코드를 아두이노에 업로드 하기위해서는 FTDI 라는 다운로더 모듈이 별도로 필요하다. (USB 입/출력 단자가 있는 Arduino UNO, Arduino Nano 등을 사용한다면 FTDI 다운로더 모듈은 필요없다.)

Arduino Pro Mini — Downloader FTDI232 USB 연결하기(참고)

LED Strip Light — SK6812 60LED
- SK6812는 LED 프로젝트에서 많이 사용하는 WS2812B와 거의 완벽하게 호환되어 FastLED.h 라이브러리를 사용할 수 있다는 장점이 있다. (다만 완벽한 제어를 위해서는 Adafruit_NeoPiexl.h 라이브러리를 추천.)
- RGB코드 방식의 WS2812B는 흰색을 표현하기 위해서 RGB의 LED를 모두 켜야한다.(RGB(255,255,255) — 빛의 3원색…) 반면, SK6812는 RGBW 코드로, 흰색을 담당하는 W코드의 LED 하나만 켜도 되기 때문에 (RGBW(0,0,0,255) 저-전력으로 프로젝트를 구성할 수 있다. 특히 배터리로 동작해야 하는 경우, 저-전력 세팅은 배터리 수명에 엄청난 영향을 준다. 또한 흰색을 W코드로 직접 제어하기 때문에, RGB 방식에 비해 상대적으로 흰색의 표현이 더 정확하고 그 표현 범위도 넓다.

SK6812 LED 5x5 배치 후 납땜 / 각 칸의 빛 샘을 방지하기위해 3D프린터로 출력한 칸막이 설치

DS3231 RTC(Real Time Clock)
- 아두이노 시계 프로젝트의 대부분은 DS1302 RTC 모듈을 사용하고 있다. DS3231 대비 가격이 10분의 1 수준으로 저렴하고 PIN 연결이 간단해서 교육 프로그램과 초보자들이 많이 사용하고 있다. 그러나 치명적인 문제가 있는데, 시간을 체크하는 오실레이터가 외부에 노출되어 있어 시간 계산에 따라 오차가 발생한다. 한달 에 약 5분 정도의 오차가 발생한다고 한다. 1년이면 거의 1시간… (참고)
그래서 오차가 거의 없는 DS3231 모델로 변경했다.(고-스펙인 감이 없진 않지만) 여기에 더해, DS3231를 이용하면 저-전력(Sleep Mode)모드로 진입한 아두이노를 깨우기위해 SQW 핀을 이용한 Interrupt 제어가 가능하다.
참고로 DS3231은 I2C 통신을 위해 아두이노의 A4, A5의 아날로그 핀에 연결해야 한다. (참고. RTC 모듈 연결하기)

한글 자판/ 아크릴 판
이번에 제작하는 한글시계는 5X5 배열에 시간을 표시하는 방식으로, 뒷부분에 있는 LED 불빛이 비치도록 시트지에서 글자 부분을 제거해야 한다. 제도용 칼로 자르려니 깔끔하게 잘리지 않아 지저분하고, 레이저 커팅 업체에 문의했더니 단가가 너무 높아 포기.

지인에게 ‘실루엣 커팅기'를 빌려 검정색 시트지에 글자를 출력하여, 액자의 투명 아크릴 판에 붙여 깔끔하게 제작했다. 결과물은 대 만족!
LED 불빛이 투명아크릴 글자 사이로 직접 노출되는것을 방지하기위해 아크릴 뒷면에 종이호일을 붙여 불빛이 은은하게 표시되도록 하였다.

실루엣 커팅기로 시트지의 글자영역 컷팅/ 제도칼로 글자를 자르려면 답이 안나왔을 듯
실루엣 커팅기로 자른 시트지를 투명 아크릴에 붙이고…
LED 빛의 퍼짐을 위해 글자판 후면에 종이호일 부착

한 편으로 마무리 하려 했으나, 이번에도 글이 길어져 ‘#2 소프트웨어 파트’로 계속 이어갑니다.

Arduino WordClock 한글시계(with.chatGPT) #2.소프트웨어파트

--

--