본문 바로가기
Arduino(아두이노) 활용 강좌

Arduino Uno 로 DS1302 RTC 모듈과 MAX7219 (8X8) 도트 매트릭스 모듈을 이용해 시계 만들어 보기

by 오마이엔지니어 2018. 12. 11.
반응형

Arduino Uno 로 DS1302 RTC 모듈과 MAX7219 (8X8) 도트 매트릭스 모듈을 이용해서 간단하게

시계를 만들어 보는 프로젝트 입니다


MAX7219 (8X8) 도트 매트릭스 모듈은 8-Digit LED 드라이버 MAX7219 칩  max7219.pdf 을 기반으로 제작된
8열 8행의 디스플레이 모듈 입니다
아두이노 나 AVR, PIC, STM 등의 마이크로 컨트롤러로 손쉽게 제어 가능하기 때문에 유용합니다
또한 입, 출력 인터페이스로 제작되어 여러개의 매트릭스 모듈을 연결해서 사용이 가능합니다


<8X8 매트릭스 모듈 이미지>



<8X8 매트릭스 모듈 상세사양>



DS1302 RTC 모듈은 DS1302 Trickle-Charge Timekeeping Chip DS1302 Datasheet.pdf 기반의 RTC (Real Time Clock) 모듈 입니다 
간단한 직렬 인터페이스를 통해 마이크로컨트롤러 와 통신하며
실시간으로 년도, 월, 날짜, 요일, 시간, 분, 초의 정보를 제공 합니다

(31일 보다 작은달은 조정 됨-윤년 보정)




사용된 부품

Arduino Uno R3 (Italy)
MAX7219 (8X8) 도트 매트릭스 모듈 - 2개
DS1302 RTC 모듈

점퍼케이블


주의! DS1302 모듈 버전에 따라 라이브러리가 동작하지 않는 문제점이 있습니다

구성 배선도


사용된 예제소스

example code.txt

GitHub 에서 다운로드 하기

사용된 라이브러리

DotMatrixClock-master.zip

LedControl-1.0.6.zip


DotMatrixClock-master 라이브러리와 LedControl-1.0.6 라이브러리를 첨부하였습니다

라이브러리 추가 방법은 Arduino IDE 설치하기 포스팅을 참조해 주세요


DotMatrixClock-master 라이브러리를 설치하고 아두이노 IDE 하단에 잘못된 라이브러리가 들어있다는 메세지가 나오면
폴더내의 doc 폴더를 삭제해 주면 해결됩니다 (그냥 놔둬도 컴파일 이나 업로드 하고 테스트 하는 데는 전혀 문제 없습니다)


주의사항
첨부된 라이브러리를 설치하고 DotMatrixClock-master 폴더내 ---> src ---> DotMatrixClock ---> DotMatrixClock.ino
순으로 클릭해서 테스트를 진행 하세요
ds1302.h 파일과 DotMatrixClock.ino 파일이 같은 폴더내에 있지 않으면 컴파일 에러가 날 수 있습니다
위 첨부된 example code 는 참고만 해주세요

예제코드를 살펴보면  MAX7219 8X8 매트릭스 모듈과 아두이노 보드가 연결되는 핀 설정을 확인할수 있습니다
pin 12 : DIN 
pin 11 : CLK 
pin 10 : CS

DS1302 RTC 모듈과 아두이노 보드가 연결되는 핀 설정을 확인할수 있습니다 

pin 6 : SCLK // Arduino pin for the Serial Clock
pin 7 : IO   // Arduino pin for the Data I/O
pin 8 : CE   // Arduino pin for the Chip Enable
7번핀은 DAT, 8번핀은 RST 에 연결하였습니다 (위 구성배선도 참조)

#include "LedControl.h"
#include "ds1302.h"
두개의 라이브러리를 사용합니다

LedControl lc=LedControl(12,11,10,2);

void loop() {
  ds1302_struct rtc;
  char buffer[80];     // the code uses 70 characters.

  // Read all clock data at once (burst mode).
  DS1302_clock_burst_read( (uint8_t *) &rtc);

  sprintf(buffer, "Time = %02d:%02d:%02d, ", \
    bcd2bin(rtc.h24.Hour10, rtc.h24.Hour), \
    bcd2bin(rtc.Minutes10, rtc.Minutes), \
    bcd2bin(rtc.Seconds10, rtc.Seconds));
  Serial.print(buffer);

  sprintf(buffer, "Date(day of month) = %d, Month = %d, " \
    "Day(day of week) = %d, Year = %d", \
    bcd2bin(rtc.Date10, rtc.Date), \
    bcd2bin(rtc.Month10, rtc.Month), \
    rtc.Day, \
    2000 + bcd2bin(rtc.Year10, rtc.Year));
  Serial.println( buffer);

  printNumber10(1, bcd2bin(rtc.h12.Hour10, rtc.h12.Hour));
  printNumber(0, bcd2bin(rtc.Minutes10, rtc.Minutes));
  //printNumber(0, bcd2bin(rtc.Seconds10, rtc.Seconds));

  delay(1000);
}

프로젝트 동영상


동영상에서 보면 알수 있듯이 1분 정도 오차가 생겼습니다

비슷한 사양의 DS3231 RTC 모듈을 사용하면 더 정확하게 테스트 가능하다고 하는것 같습니다
이렇게 아두이노와 RTC 모듈 그리고 매트릭스 모듈이 있으면 간단하게 시계를 만들어볼 수 있습니다

아크릴 판넬이나 케이스까지 추가해 주면 나름 그럴사한 DIY 시계를 만들어 볼 수 있습니다


LedControl-1.0.6.zip
0.01MB
DS1302 Datasheet.pdf
0.26MB
max7219.pdf
0.18MB
example code.txt
0.0MB
DotMatrixClock-master.zip
0.2MB
반응형

댓글