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 모듈 버전에 따라 라이브러리가 동작하지 않는 문제점이 있습니다
구성 배선도
사용된 예제소스
사용된 라이브러리
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 시계를 만들어 볼 수 있습니다
'Arduino(아두이노) 활용 강좌' 카테고리의 다른 글
Arduino Uno 로 25V 전압센서 여러개를 사용해서 여러개의 전압 측정해 보기 (0) | 2018.12.18 |
---|---|
Arduino Uno 로 APDS-9960 제스쳐 센서를 사용해 방향별 제스쳐 감지시 LED 제어해 보기 (0) | 2018.12.15 |
아두이노 ESP8266 GPIO 와이파이 쉴드를 사용해서 웹으로 LED 제어해보고 조도센서 출력값 변화 확인해 보기 (0) | 2018.11.27 |
Arduino Uno 로 HC-06 블루투스 슬레이브 모듈을 사용해 안드로이드 스마트폰 앱으로 28BYJ-48 스테핑 모터 제어해 보기 (0) | 2018.11.24 |
Arduino Uno 로 LJ12A34Z/BX 근접 스위치 센서를 사용해서 근접 금속감지 경보기 만들어 보기 (0) | 2018.11.10 |
댓글