이 아두이노 튜토리얼에서는 DS3231 실시간 시계 모듈 사용법을 배웁니다. 아래 비디오를 시청하거나 작성된 튜토리얼을 읽어보세요.
개요
아두이노 자체에도 내장 시간 유지 기능이 있는데 왜 별도 RTC 모듈이 필요할까요? RTC 모듈은 배터리로 작동해 메인 전원이 끊기거나 마이크로컨트롤러를 재프로그래밍해도 시간을 계속 유지할 수 있기 때문입니다.
DS3231 실시간 시계
DS3231은 저렴하면서도 높은 정확도의 실시간 시계로 시, 분, 초는 물론 요일, 월, 년 정보도 유지합니다. 윤년과 31일 미만인 달도 자동 보정합니다.
모듈은 3.3V 또는 5V로 작동해 다양한 개발 플랫폼과 마이크로컨트롤러에 적합합니다. 배터리 입력은 3V이며 일반적인 CR2032 3V 배터리로 1년 이상 모듈 전원 공급과 정보 유지가 가능합니다.
모듈은 I2C 통신 프로토콜을 사용해 아두이노 보드 연결이 매우 간편합니다.
회로도는 다음과 같습니다:
필요한 것은 4가닥 와이어뿐입니다: 전원용 VCC, GND와 I2C 통신용 SDA, SCL.
필요한 부품은 아래 링크에서 구할 수 있습니다:
DS3231 실시간 시계……………..
아두이노 보드 ……………………………
브레드보드와 점퍼 와이어 ………
프로그래밍
모듈 연결 후 아두이노 보드를 프로그래밍해 실시간 시계와 통신하게 해야 합니다. 하지만 아두이노와 I2C 모듈 간 통신 프로그래밍은 코드가 그리 간단하지 않습니다. 다행히 DS3231 RTC용 라이브러리가 인터넷에 여러 개 공개되어 있습니다.
이 튜토리얼에서는 Henning Karlsen이 만든 라이브러리를 사용하며, 그의 웹사이트(www.rinkydinkelectronics.com)에서 다운로드할 수 있습니다.
라이브러리 다운로드 및 설치 후 첫 번째 데모 예제로 RTC 모듈의 시계를 처음 활성화할 수 있습니다. 데모 예제 코드의 setup 섹션에서 요일, 시간, 날짜를 처음 설정하기 위해 주석 처리된 세 줄을 볼 수 있습니다.
// DS3231 라이브러리 데모 예제 코드
void setup() {
Serial.begin(115200);
// 아두이노 레오나르도 사용 시 다음 줄 주석 해제
//while (!Serial) {}
// rtc 객체 초기화
rtc.begin();
// 다음 줄들 주석 해제해 날짜와 시간 설정
//rtc.setDOW(WEDNESDAY); // 요일을 수요일로 설정
//rtc.setTime(12, 0, 0); // 시간을 12:00:00으로 설정 (24시간 형식)
//rtc.setDate(1, 1, 2014); // 날짜를 2014년 1월 1일로 설정
}코드 언어: Arduino (arduino)
첫 줄은 요일 설정, 두 번째 줄은 시/분/초 설정, 세 번째 줄은 일/월/년 설정입니다.