이탈리안 워드 클럭(Word Clock) 제작: 아두이노 나노 + 네오픽셀 + LCD + RTC
프로젝트 개요
이탈리아 거주자로서 이탈리아어로 시간을 알려주는 '워드 클럭(Word Clock)'을 제작했습니다. '자벨린 워드 클럭(Javelin Word Clock)' 튜토리얼에서 영감받아 일부 수정했습니다. 기본 시간 표시 외에 가족(고양이 포함) 생일 축하 메시지 기능도 추가했습니다. 프레임은 이케아 립바(RIBBA) 액자를 활용하고, 내부 구조는 집에서 구할 수 있는 재료로 만들었습니다.
주요 구성품
- 아두이노 나노 R3 (Arduino Nano R3)
- 네오픽셀(NeoPixel) 스트립 144개 (12×12 매트릭스)
- 16×2 I2C LCD 디스플레이 (시간 설정용)
- RTC 모듈 (DS1307 등)
- 12mm 푸시버튼 × 4 (메뉴, +, -, 백라이트용)
- 저항: 10kΩ ×3, 475Ω ×1
- 다이오드 1N4007 ×3 (역극성 보호, 네오픽셀 전원 차단, 5V 강하용)
- DC-DC 스텝다운 컨버터 (가변)
- 이케아 립바 액자, 게비스(Gewiss) 박스 커버 150×110, 알루미늄 스트립 230×10×1mm
전자 회로 설계
RTC로 정확한 시간을 유지합니다. 시간 설정을 위해 버튼 3개(P1: 메뉴/설정, P2: +, P3: -)와 16×2 LCD를 추가했습니다. 버튼은 풀다운(Pull-down) 회로로 아두이노에 연결됩니다. LCD 백라이트는 별도 버튼으로만 켜지도록 점퍼 대신 버튼을 달아 전력 절약했습니다. 다이오드 D1은 역극성 보호, D2는 스케치 업로드 시 네오픽셀 과전류 방지용 전원 차단, D3은 네오픽셀 전압을 5V로 맞춰주는 역할을 합니다. 회로도, 프리칭(Fritzing), PCB 레이아웃 파일 제공.
LED 매트릭스 구성
12×12 글자 매트릭스(면적 200mm)에 네오픽셀 스트립 144개를 지그재그(Zigzag) 패턴으로 연결했습니다(좌상단에서 시작해 우측으로, 다음 행은 좌측으로). 3D 프린터가 없어 알루미늄 스트립으로 격자(grid)를 만들고, 접착 스펀지로 LED와 격자를 절연하며 빛 번짐도 방지했습니다. 아세테이트 필름에 인쇄한 글자 패턴(잉크스케이프로 제작)을 격자 위에 올리고, 그 위에 LED 패널을 얹는 구조입니다.
사용 라이브러리
- RTClib (RTC)
- LiquidCrystal_I2C (LCD)
- Adafruit_NeoPixel (네오픽셀)
코드 구조 (5개 주요 파트)
DisplayDateTime(): LCD에 날짜/시간 표시
HourClock(): 패널에 '시' 표시 (이탈리아어 단어)
MinuteClock(): 패널에 '분' 표시 (5분 단위 단어 + 1~4분 보정용 숫자)
Auguri(): 가족 생일 축하 메시지 표시 (보라색)
paintWord(arrWord[], color): 지정된 LED 인덱스 배열에 색상 적용 (핵심 함수)
시간 표시 예시:
- "SONO LE ORE DIECI E VENTI 4" → 10:24 (10시 20분 + 4분)
- "SONO LE DIECI MENO QUINDICI 2" → 09:47 (10시 15분 전 + 2분)
주간(07~19시)은 최대 밝기(255), 야간은 1/10 밝기(25)로 자동 조절됩니다. 분 단위 색상도 5분 주기로 흰색→노랑→초록→파랑→빨강 순환합니다.
조립 순서
- 액자 분해 및 유리 세척
- 아세테이트 필름 인쇄물 삽입
- 종이 인쇄물 삽입
- 알루미늄 격자 삽입
- LED 패널 삽입
- 제어 박스보다 약간 큰 합판 조각을 바닥에 깔고 자타공 나사로 제어 박스 고정
주의: 두 인쇄물(아세테이트+종이) 정렬이 정확히 맞아야 글자가 선명합니다.
설치 및 소감
거실 벽에 걸었더니 인테리어와 잘 어우러져 멋집니다. 이탈리아어 워드 클럭이라는 독창성에 가족 생일 기능까지 더해 개인화된 시계가 되었습니다.
소스 코드 및 설계 파일
- 전체 코드:
Italian WordClock (아두이노 스케치, 본문 참조)
- 패턴 SVG:
wordklock_aWvuaZRw4N.svg
- 회로도:
wordklock_JBoZPYrsYr.fzz (프리칭), 이미지 파일