산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

Arduino 및 DS3231 실시간 클록 자습서

<메인 클래스="사이트 메인" id="메인">

이 Arduino Tutorial에서는 DS3231 Real Time Clock Module을 사용하는 방법을 배웁니다. 다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다.

개요

여기에 오는 첫 번째 질문은 Arduino 자체에 내장된 시간 측정기가 있는 경우 Arduino 프로젝트에 대해 실제로 별도의 RTC가 필요한 이유입니다. 요점은 RTC 모듈이 배터리로 실행되며 마이크로컨트롤러를 다시 프로그래밍하거나 주 전원을 분리하더라도 시간을 추적할 수 있다는 것입니다.

DS3231 실시간 시계

DS3231은 시, 분, 초는 물론 일, 월, 연도 정보를 유지할 수 있는 저가의 고정밀 실시간 시계입니다. 또한 윤년과 31일 미만의 달에 대한 자동 보상 기능이 있습니다.

<그림 클래스="aligncenter">

이 모듈은 3.3V 또는 5V에서 작동할 수 있으므로 많은 개발 플랫폼 또는 마이크로컨트롤러에 적합합니다. 배터리 입력은 3V이며 일반적인 CR2032 3V 배터리는 모듈에 전원을 공급하고 1년 이상 정보를 유지할 수 있습니다.

이 모듈은 Arduino 보드에 매우 쉽게 연결할 수 있는 I2C 통신 프로토콜을 사용합니다.

다음은 회로도입니다.

<그림 클래스="aligncenter">

따라서 우리에게 필요한 것은 4개의 와이어, 모듈에 전원을 공급하기 위한 VCC 및 GND 핀, 그리고 2개의 I2C 통신 핀 SDA 및 SCL뿐입니다.

아래 링크에서 이 Arduino 튜토리얼에 필요한 구성요소를 얻을 수 있습니다.

프로그래밍

모듈을 연결하면 실시간 시계와 함께 작동하도록 Arduino 보드를 프로그래밍해야 합니다. 그러나 Arduino와 I2C 모듈 간의 통신을 프로그래밍할 때 코드는 그렇게 작고 쉽지 않습니다. 다행히 인터넷에서 찾을 수 있는 DS3231 RTC용 라이브러리가 이미 여러 개 있습니다.

이 튜토리얼에서는 Henning Karlsen이 만든 라이브러리를 사용하기로 선택했습니다. 이 라이브러리는 Henning Karlsen의 웹사이트(www.rinkydinkelectronics.com)에서 찾아 다운로드할 수 있습니다.

따라서 라이브러리를 다운로드하고 설치하면 첫 번째 데모 예제를 사용하여 처음에 RTC 모듈의 시계를 활성화할 수 있습니다. 데모 예제 코드의 설정 섹션에서 처음에 요일, 시간 및 데이터를 설정하기 위해 주석을 제거해야 하는 세 줄이 있음을 알 수 있습니다.

// Code from the Demo Example of the DS3231 Library

void setup()
{
  // Setup Serial connection
  Serial.begin(115200);
  // Uncomment the next line if you are using an Arduino Leonardo
  //while (!Serial) {}
  
  // Initialize the rtc object
  rtc.begin();
  
  // The following lines can be uncommented to set the date and time
  //rtc.setDOW(WEDNESDAY);     // Set Day-of-Week to SUNDAY
  //rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(1, 1, 2014);   // Set the date to January 1st, 2014
}Code language: Arduino (arduino)

첫 번째 줄은 요일 설정, 두 번째 줄은 시, 분, 초 단위의 시간 설정, 세 번째 줄은 일, 월, 년 단위의 날짜 설정입니다.

이 코드를 업로드하면 세 줄을 다시 주석 처리하고 코드를 다시 업로드해야 합니다.

// Code from the Demo Example of the DS3231 Library

void loop()
{
  // Send Day-of-Week
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");
  
  // Send date
  Serial.print(rtc.getDateStr());
  Serial.print(" -- ");

  // Send time
  Serial.println(rtc.getTimeStr());
  
  // Wait one second before repeating
  delay (1000);
}Code language: Arduino (arduino)

코드의 루프 섹션을 살펴보면 이제 세 가지 사용자 정의 기능을 사용하여 RTC에서 정보를 가져와 직렬 모니터에 인쇄한다는 것을 알 수 있습니다. 다음은 직렬 모니터에 나타나는 방식입니다.

<그림 클래스="aligncenter">

이제 아두이노 전원을 뽑았다가 다시 연결하고 시리얼 모니터를 다시 실행해도 리셋되지 않고 시간이 계속 흐른다는 것을 알 수 있습니다.

이제 실시간 클럭이 실행되고 모든 Arduino 프로젝트에서 사용할 수 있습니다. 두 번째 예로 저는 LCD를 Arduino에 연결하고 그 위에 시간과 날짜를 인쇄했습니다.

<그림 클래스="aligncenter">

이 예시의 소스 코드는 다음과 같습니다.

/*
* Arduino DS3231 Real Time Clock Module Tutorial
*
* Crated by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
* DS3231 Library made by Henning Karlsen which can be found and downloaded from his website, www.rinkydinkelectronics.com.
*
*/
#include <DS3231.h>
#include <LiquidCrystal.h> // includes the LiquidCrystal Library 

DS3231  rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) 

void setup() { 
 rtc.begin(); // Initialize the rtc object
 lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display } 
}

void loop() { 
 lcd.setCursor(0,0);
 lcd.print("Time:  ");
 lcd.print(rtc.getTimeStr());
 
 lcd.setCursor(0,1);
 lcd.print("Date: ");
 lcd.print(rtc.getDateStr());
 
 delay(1000); 
}Code language: Arduino (arduino)

이것이 이 Arduino 튜토리얼의 전부입니다. 아래의 댓글 섹션에서 언제든지 질문하세요.


제조공정

  1. Arduino 관점 시계
  2. Arduino RFID 잠금 자습서
  3. 마스터 시계
  4. Arduino Temp. 3.2 디스플레이가 있는 모니터 및 실시간 시계
  5. 베를린 시계
  6. 시간 설정 및 알람 기능이 있는 TM1637 디지털 시계
  7. eDOT - Arduino 기반 정밀 시계 및 기상 관측소
  8. 실시간 시계가 있는 Arduino OLED 온도 디스플레이
  9. Arduino 지문 센서 자습서
  10. 로봇이 실시간으로 3D 변경 사항을 감지하고 공유합니다.