이 Arduino 기반 실시간 시계는 I2C 프로토콜에서 작동 하는 RTC IC DS1307 을 사용하여 실시간으로 표시하는 디지털 시계 입니다. 실시간 시계는 정전 후에도 작동한다는 것을 의미합니다. 전원이 다시 연결되면 꺼진 시간과 지속 시간에 관계없이 실시간으로 표시됩니다. 이 Arduino 알람 시계 프로젝트에서 우리는 16x2 LCD 모듈을 사용하여 "시, 분, 초, 날짜, 월 및 연도"형식으로 시간을 표시했습니다. 알람 옵션도 추가되었으며 알람 시간을 설정할 수 있습니다. 알람 시간이 arduino의 내부 EEPROM에 저장되면 재설정 또는 정전 후에도 저장됩니다. 실시간 시계는 일반적으로 컴퓨터, 주택, 사무실 및 전자 장치에서 실시간으로 업데이트되는 데 사용됩니다.
I2C 프로토콜은 두 개의 와이어를 사용하여 두 개 이상의 장치를 단일 시스템에 연결하는 방법이므로이 프로토콜을 두 개의 와이어 프로토콜 이라고도 합니다. 단일 장치 또는 프로세서에 127 개의 장치를 통신하는 데 사용할 수 있습니다. 대부분의 I2C 장치는 100Khz 주파수에서 실행됩니다.
마스터에서 슬레이브에 데이터 쓰기 단계 (슬레이브 수신 모드)
- START 조건을 슬레이브로 보냅니다.
- 슬레이브 주소를 슬레이브로 보냅니다.
- 쓰기 비트 (0)를 슬레이브로 보냅니다.
- 슬레이브로부터 수신 된 ACK 비트
- 단어 주소를 슬레이브로 보냅니다.
- 슬레이브로부터 수신 된 ACK 비트
- 데이터를 슬레이브로 보냅니다.
- 슬레이브로부터 ACK 비트를 받았습니다.
- 마지막으로 슬레이브에게 STOP 조건을 보냅니다.
슬레이브에서 마스터로 데이터 읽기 단계 (슬레이브 전송 모드)
- START 조건을 슬레이브로 보냅니다.
- 슬레이브 주소를 슬레이브로 보냅니다.
- 읽기 비트 (1)를 슬레이브로 보냅니다.
- 슬레이브로부터 수신 된 ACK 비트
- 슬레이브로부터 데이터 수신
- 슬레이브로부터 ACK 비트를 받았습니다.
- STOP 조건을 슬레이브로 보냅니다.
이 RTC DS1307 IC 기반 디지털 시계 를 구축하기 위해 여기에서 Arduino Pro Mini를 사용했지만 Arduino Uno 또는 Arduino Nano와 같은 다른 Arduino 모델도 사용할 수 있습니다. Arduino 보드 인 DS1307 RTC IC와 함께 16x2 LCD 모듈을 사용하여 시간 및 날짜, 수정 발진기, 7805 전압 조정기, 부저 및 몇 개의 트랜지스터와 저항을 표시했습니다.
회로도 및 설명
이 Arduino 기반 디지털 시계 회로에서는 IC DS1307, Arduino Pro Mini Board 및 16x2 LCD 모듈의 세 가지 주요 구성 요소를 사용했습니다.
여기서 arduino는 ds1307에서 시간을 읽고 16x2 LCD에 표시하는 데 사용됩니다. DS1307은 2 줄을 사용하여 시간 / 날짜를 arduino에 보냅니다. 부저는 알람 표시에도 사용되며 알람이 활성화되면 경고음이 울립니다. 이 실시간 클록의 작동을 이해하기 위해 아래에 블록 다이어그램이 나와 있습니다.
회로도에서 볼 수 있듯이 DS1307 칩 핀 SDA 및 SCL은 데이터 및 클록 라인에서 기본값 HIGH를 유지하는 풀업 저항으로 arduino 핀 SDA 및 SCL에 연결됩니다. 의 32.768KHz 수정 발진기가 정확한 일초 지연을 발생 DS1307 칩에 접속되고, 3 볼트의 전지는 또한 핀 (3)에 접속되어 RD 정전 후에 실행 시간을 유지의 DS1307 (BAT). 16x2 LCD는 4 비트 모드에서 arduino와 연결됩니다. 제어 핀 RS, RW 및 En은 arduino 핀 2, GND 및 3에 직접 연결되고 데이터 핀 D0-D7은 arduino의 4, 5, 6, 7에 연결됩니다. 버저는베이스에 1k 저항이있는 NPN BC547 트랜지스터를 통해 arduino 핀 번호 13과 연결됩니다.
세 개의 버튼 즉, INC 및 Next는 활성 로우 모드에서 arduino의 핀 12, 11 및 10에 알람을 설정하는 데 사용됩니다. 설정 버튼을 누르면 알람 설정 모드가 활성화되며 이제 INC 버튼을 이용하여 알람을 설정해야하며 다음 버튼을 사용하여 숫자로 이동합니다. 알람이있는이 실시간 시계의 전체 브레드 보드 설정은 아래 이미지에 나와 있습니다. AVR 마이크로 컨트롤러로 디지털 알람 시계에 대한 자세한 자습서를 확인할 수도 있습니다.
프로그램 설명
이 실시간 시계를 프로그래밍하기 위해 DS1307에서 시간 / 날짜를 추출하고 LCD에 표시하기 위해 다음과 같은 라이브러리를 사용했습니다.
그리고 RTC, LCD 및 입력 출력의 초기화는 설정 루프에서 수행됩니다.
읽기 시간, 알람 설정 등 나머지는 무효 루프 구간에서 수행됩니다.