아두이노 듀(Due) + 3.2″ TFT로 만드는 실시간 시계 & 온도 모니터
프로젝트 개요
educ8s.tv의 닉(Nick)이 3.2″ 컬러 TFT 디스플레이(HX8357B/C 컨트롤러)를 아두이노 듀(Due)와 결합해 실시간 시계(RTC)와 온도 모니터를 만드는 튜토리얼입니다. 화면 상단에 현재 날짜·시간, 중앙에 현재 온도, 하단에 측정된 최고/최저 온도를 표시하며, 기본 도형만으로 깔끔한 UI를 구성했습니다. 아두이노 메가(Mega)도 사용 가능하지만 듀의 속도와 메모리 이점을 활용했습니다.
필요 부품 (약 $24)
- 아두이노 듀 (Arduino Due) ~$14
- 3.2″ 컬러 TFT 디스플레이 (HX8357B/C, SD 카드 슬롯 내장) ~$8
- DS3231 RTC 모듈 (배터리 포함) ~$2
- 메일 헤더 핀, 와이어
DS3231 RTC 모듈 특징
- 초저전력으로 배터리만으로 수년간 시간 유지
- 온도 보정 크리스털 발진기(TCXO) 내장으로 높은 정확도
- I2C 인터페이스로 간편 연결
- 내부 온도 센서 탑재 (별도 온도 센서 불필요)
- 24시간/12시간 포맷, 알람, 스퀘어파 출력 지원
TFT 디스플레이 설정
- 해상도: 480×320 픽셀
- 3.3V 레귤레이터 내장으로 5V/3.3V 로직 모두 호환
- 라이브러리: TFT_HX8357_Due (User_Setup.h에서 HX8357C 드라이버 선택 시 라인 13 주석, 라인 14 주석 해제)
배선 방법
아두이노 듀 기준:
- DS3231: VCC → 3.3V, GND → GND, SDA → SDA(20번), SCL → SCL(21번)
- TFT: 아두이노 듀 헤더에 직접 장착 (일부 핀은 미연결로 둠)
메일 헤더 핀을 구부려 RTC 모듈과 연결하면 브레드보드 없이도 간단히 조립 가능합니다.
소프트웨어 구현
필수 라이브러리: TFT_HX8357_Due, Sodaq_DS3231
초기 시간 설정
최초 1회 RTC에 현재 시간을 기록해야 합니다. setRTCTime() 함수 내 날짜/시간을 수정하고 setup()에서 호출해 업로드한 뒤, 다시 호출부를 주석 처리하고 재업로드합니다.
void setRTCTime(){
DateTime dt(2016, 4, 4, 13, 56, 30, 1); // 연, 월, 일, 시, 분, 초, 요일
rtc.setDateTime(dt);
}
void setup(){
rtc.begin();
tft.init();
tft.setRotation(1);
tft.fillScreen(0xC618);
delay(100);
printUI();
setRTCTime(); // 최초 1회만 활성화
}
메인 루프
void loop(){
float temperature = rtc.getTemperature(); // DS3231 내장 온도 센서 읽기
getAndPrintTime(); // 날짜/시간 표시
printTemperature(temperature); // 현재 온도 표시
if(temperature > maxTemperature) {
maxTemperature = temperature;
updateMaxTemperature(); // 최고 온도 갱신
}
if(temperature < minTemperature) {
minTemperature = temperature;
updateMinTemperature(); // 최저 온도 갱신
}
delay(1000);
}
마무리 및 향후 계획
저비용·간단 코드로 실용적인 기기 제작이 가능함을 보였습니다. 향후 더 많은 센서, 그래프 표시, 와이파이 기능을 추가해 고급 기상 관측소로 발전시킬 예정입니다. 아두이노 듀의 빠른 속도와 대용량 메모리가 이런 확장에 이상적입니다. 여러분의 아이디어나 의견은 댓글로 남겨주세요!
참고 자료