Делаем реальные часы при помощи чипа Arduino DS3231

Я обнаружил, что использование чипа RTC DS3231 чрезвычайно сложно с Arduino. Простая установка времени довольно сложна, не говоря уже о коде. Но я нашел отличную и удобную библиотеку, которая действительно улучшает использование чипа DS3231.

Делаем реальные часы при помощи чипа Arduino DS3231

Шаг 1: Соединения

Конечно, сначала вам нужно подключить чип. Это очень просто, сделайте это в соответствии с рисунками ниже:

VCC -> Arduino 5V
GND -> Arduino GND
SCL -> SCL or A5
SDA -> SDA or A4

Насколько я знаю, в Arduino UNO и MEGA имеются специальные выходы SCL и SDA. Есть также два других контакта 32K и SQW, но мы не будем их использовать, поскольку мы получим полную функциональность через интерфейс I2C.

Шаг 2: Библиотека

Мы будем использовать библиотеку Хеннинга Карлсена, которая реально классная. Большое спасибо ему за это! Существуют некоторые основные функции, такие как время и дата чтения, время и дата записи. Загрузить библиотеку можно здесь:

http://www.rinkydinkelectronics.com/library.php?id=73

Шаг 3: Код

Я просто использую примерный эскиз из библиотеки, который будет содержать множество комментариев:

// DS3231_Serial_Easy
// Copyright (C)2015 Rinky-Dink Electronics, Henning Karlsen. All right reserved
// web: http://www.RinkyDinkElectronics.com/
//
// A quick demo of how to use my DS3231-library to 
// quickly send time and date information over a serial link
//
// To use the hardware I2C (TWI) interface of the Arduino you must connect
// the pins as follows:
//
// Arduino Uno/2009:
// ----------------------
// DS3231:  SDA pin   -> Arduino Analog 4 or the dedicated SDA pin
//          SCL pin   -> Arduino Analog 5 or the dedicated SCL pin
//
// Arduino Leonardo:
// ----------------------
// DS3231:  SDA pin   -> Arduino Digital 2 or the dedicated SDA pin
//          SCL pin   -> Arduino Digital 3 or the dedicated SCL pin
//
// Arduino Mega:
// ----------------------
// DS3231:  SDA pin   -> Arduino Digital 20 (SDA) or the dedicated SDA pin
//          SCL pin   -> Arduino Digital 21 (SCL) or the dedicated SCL pin
//
// Arduino Due:
// ----------------------
// DS3231:  SDA pin   -> Arduino Digital 20 (SDA) or the dedicated SDA1 (Digital 70) pin
//          SCL pin   -> Arduino Digital 21 (SCL) or the dedicated SCL1 (Digital 71) pin
//
// The internal pull-up resistors will be activated when using the 
// hardware I2C interfaces.
//
// You can connect the DS3231 to any available pin but if you use any
// other than what is described above the library will fall back to
// a software-based, TWI-like protocol which will require exclusive access 
// to the pins used, and you will also have to use appropriate, external
// pull-up resistors on the data and clock signals.
//

#include 

// Init the DS3231 using the hardware interface
DS3231  rtc(SDA, SCL);

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
}

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);
}

Шаг 4: Готово

А на этом всё, эта библиотека очень проста в использовании. Хорошего дня!

Ардуино+