Андрей Смирнов
Время чтения: ~18 мин.
Просмотров: 0

Rtc ds3231

Введение

Как микроконтроллеры отслеживают время и дату? Обычный микроконтроллер обладает функцией таймера, который стартует от нуля при подаче напряжения питания, а затем начинает считать. В мире Arduino мы можем использовать функцию , чтобы узнать, сколько прошло миллисекунд с того времени, когда было подано напряжение питания. Когда вы снимете и снова подадите питания, она начнет отсчет с самого начала. Это не очень удобно, когда дело доходит до работы с часами и датами.

Вот здесь и будет удобно использование микросхемы RTC (Real Time Clock, часов реального времени). Эта микросхема с батарейкой 3В или каким-либо другим источником питания следит за временем и датой. Часы/календарь обеспечивают информацию о секундах, минутах, часах, дне недели, дате, месяце и годе. Микросхема корректно работает с месяцами продолжительностью 30/31 день и с високосными годами. Связь осуществляется через шину I2C (шина I2C в данной статье не обсуждается).

Если напряжение на главной шине питания Vcc падает ниже напряжения на батарее Vbat, RTC автоматически переключается в режим низкого энергопотребления от резервной батареи. Резервная батарея – это обычно миниатюрная батарея (в виде «монетки», «таблетки») напряжением 3 вольта, подключенная между выводом 3 и корпусом. Таким образом, микросхема по-прежнему будет следить за временем и датой, и когда на основную схему будет подано питание, микроконтроллер получит текущие время и дату.

В этом проекте мы будем использовать DS1307. У этой микросхемы вывод 7 является выводом SQW/OUT (выходом прямоугольных импульсов). Вы можете использовать этот вывод для мигания светодиодом и оповещения микроконтроллера о необходимости фиксации времени. Мы будем делать и то, и другое. Ниже приведено объяснение работы с выводом SQW/OUT.

Для управления работой вывода SQW/OUT используется регистр управления DS1307.

Ригистр управления DS1307
Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
OUTSQWERS1RS0
Бит 7: управление выходом (OUT)
Этот бит управляет выходным уровнем вывода SQW/OUT, когда выход прямоугольных импульсов выключен. Если SQWE = 0, логический уровень на выводе SQW/OUT равен 1, если OUT = 1, и 0, если OUT = 0. Первоначально обычно этот бит равен 0.
Бит 4: включение прямоугольных импульсов (SQWE)
Этот бит, когда установлен в логическую 1, включает выходной генератор. Частота прямоугольных импульсов зависит от значений битов RS0 и RS1. Когда частота прямоугольных импульсов настроена на значение 1 Гц, часовые регистры обновляются во время спада прямоугольного импульса. Первоначально обычно этот бит равен 0.
Биты 1 и 0: выбор частоты (RS)
Эти биты управляют частотой выходных прямоугольных импульсов, когда выход прямоугольных импульсов включен. Следующая таблица перечисляет частоты прямоугольных импульсов, которые могут быть выбраны с помощью данных битов. Первоначально обычно эти биты равны 1.
Выбор частоты прямоугольных импульсов и уровня на выводе SQW/OUT микросхемы DS1307
RS1RS0Частота импульсов и уровень на выходе SQW/OUTSQWEOUT
1 Гц1x
14,096 кГц1x
18,192 кГц1x
1132,768 кГц1x
xx
xx11

 Данная таблица поможет вам с частотой:

Выбор частоты прямоугольных импульсов DS1307
Частота импульсовБит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 0
1 Гц1
4,096 кГц11
8,192 кГц11
32,768 кГц111

Если вы подключили светодиод и резистор к выводу 7 и хотите, чтобы светодиод мигал с частотой 1 Гц, то должны записать в регистр управления значение 0b00010000. Если вам нужны импульсы 4,096 кГц, то вы должны записать 0b000100001. В этом случае, чтобы увидеть импульсы вам понадобится осциллограф, так как светодиод будет мигать так быстро, что будет казаться, что он светится постоянно. Мы будем использовать импульсы с частотой 1 Гц.

Enumerations

SQWAVE_FREQS_t

Symbolic names used with the squareWave() function (described below).

  • SQWAVE_NONE
  • SQWAVE_1_HZ
  • SQWAVE_1024_HZ
  • SQWAVE_4096_HZ
  • SQWAVE_8192_HZ
  • ALM1_EVERY_SECOND — causes an alarm once per second.
  • ALM1_MATCH_SECONDS — causes an alarm when the seconds match (i.e. once per minute).
  • ALM1_MATCH_MINUTES — causes an alarm when the minutes and seconds match.
  • ALM1_MATCH_HOURS — causes an alarm when the hours and minutes and seconds match.
  • ALM1_MATCH_DATE — causes an alarm when the date of the month and hours and minutes and seconds match.
  • ALM1_MATCH_DAY — causes an alarm when the day of the week and hours and minutes and seconds match.
  • ALM2_EVERY_MINUTE — causes an alarm once per minute.
  • ALM2_MATCH_MINUTES — causes an alarm when the minutes match (i.e. once per hour).
  • ALM2_MATCH_HOURS — causes an alarm when the hours and minutes match.
  • ALM2_MATCH_DATE — causes an alarm when the date of the month and hours and minutes match.
  • ALM2_MATCH_DAY — causes an alarm when the day of the week and hours and minutes match.

Проверка подключения модуля RTC

С включенным интерфейсом I2C мы можем проверить, работает ли наше соединение с модулем RTC.

Перед установкой чего-либо на Pi убедитесь, что прошивка вашего Pi обновлена. Зачастую ошибки, возникающие при установке зависимостей пакетов, происходят из-за устаревшей версии Pi.

$sudo apt-get update -y

$sudo apt-get upgrade -y

Нам нужно установить python-smbus i2c-tools, чтобы увидеть, обнаружил ли наш Raspberry Pi наше соединение I2C с модулем RTC.

На терминале нужно запустить:

$sudo apt-get install python-smbus i2c-tools

Затем:

$sudo i2cdetect -y 1

Для более старшего Pi 1, запустите:

$sudo i2cdetect -y 0

0x68 — это популярный адрес для часов реального времени, особенно для DS3231. Наличие #68 в адресе означает, что драйвер не использовал адрес. Если адрес UU, то он в настоящее время используется драйвером.

Подключение к Arduino

Что необходимо

  • компьютер с установленной Arduino IDE;
  • плата Arduino;
  • микросхема DS1307 или модуль RTC на ее основе;
  • перемычки;
  • макетная плата;
  • комплектующие из списка элементов.

Вы можете заменить плату Arduino на контроллер Atmel, но убедитесь, что у него достаточно входных и выходных выводов и есть аппаратная реализация интерфейса I2C. Я использую ATMega168A-PU. Если вы будете использовать отдельный микроконтроллер, то вам понадобится программатор, например, AVR MKII ISP.

Предполагается, что читатель знаком с макетированием, программированием в Arduino IDE и имеет некоторые знания языка программирования C. Обе программы, приведенные ниже, не нуждаются в дополнительном разъяснении.

Как сделать время на DS3231 отличным от часов Pi

Чтобы аппаратные часы DS3231 показывали другое время в сравнении с часами  Pi, мы можем использовать команду write_all().

«ds3231.write_all(seconds, minutes, hours, day, date, month, year, save_as_24h = True)»

Диапазон:

  • seconds , #секунды
  • minutes , #минуты
  • hours , #часы
  • day , #дни
  • date , #дата
  • month , #месяц
  • year #год

Используем тот же код, что выше, но заменяем ds3231.now() на ds3231.write_all():

import time
import SDL_DS3231

ds3231 = SDL_DS3231.SDL_DS3231(1, 0x68)
ds3231.write_all(29,30,4,1,3,12,92,True)
while True:

print “Raspberry Pi=\t” + time.strftime(%Y-%m-%d %H:%M:%S”)
print “Ds3231=\t\t%s” % ds3231.read_datetime()
time.sleep(10.0)

Получаем:

Мы видим, что дата и время DS3231 изменились. Но так как этот проект должен использовать RTC на нашем Raspberry Pi, то нам нужно кое-что сделать еще.

Версия с поддержкой настоящего RTC

официального сайта проектафорумеCHIPSTERДополнениепромо ролик

Functions for setting and reading the time

get(void)

Description

Reads the current date and time from the RTC and returns it as a time_t value. Returns zero if an I2C error occurs (RTC not present, etc.).

None.

Current date and time (time_t)

Example
time_t myTime;
myTime = RTC.get();

set(time_t t)

Description

Sets the RTC date and time to the given time_t value. Clears the oscillator stop flag (OSF) bit in the control/status register. See the function and also the DS323x datasheet for more information on the OSF bit.

t: The date and time to set the RTC to (time_t)

Example
//this example first sets the system time (maintained by the Time library) to
//a hard-coded date and time, and then sets the RTC from the system time.
//the setTime() function is part of the Time library.
setTime(23, 31, 30, 13, 2, 2009);   //set the system time to 23h31m30s on 13Feb2009
RTC.set(now());                     //set the RTC from the system time

read(tmElements_t &tm)

Description

tm: Address of a tmElements_t structure to which the date and time are returned.

I2C status (byte). Returns zero if successful. The date and time read from the RTC are returned to the tm parameter.

Example
tmElements_t tm;
RTC.read(tm);
Serial.print(tm.Hour, DEC);
Serial.print(':');
Serial.print(tm.Minute,DEC);
Serial.print(':');
Serial.println(tm.Second,DEC);
Description

Sets the RTC to the date and time given by a tmElements_t structure. Clears the oscillator stop flag (OSF) bit in the control/status register. See the function and also the DS323x datasheet for more information on the OSF bit.

Example
tmElements_t tm;
tm.Hour = 23;             //set the tm structure to 23h31m30s on 13Feb2009
tm.Minute = 31;
tm.Second = 30;
tm.Day = 13;
tm.Month = 2;
tm.Year = 2009 - 1970;    //tmElements_t.Year is the offset from 1970
RTC.write(tm);            //set the RTC from the tm structure

Подключение модуля MP1095 к Arduino

Для подключения к Arduino Mega 2560 различных устройств и датчиков я использую шилд под названием MEGA Sensor. И для использования шины I2C на нем выведены отдельные пины. Очень удобно, надо сказать.

На плате Arduino Mega дополнительные пины шины I2C соответствуют аналоговым выводам 20 и 21 (тоже самое справедливо и для Arduino Due). Для Arduino Uno это выводы 4 и 5, 2 и 3 в случае Arduino Leonardo. Ориентироваться нужно на названия пинов SDA и SCL.

  • VDD используется для питания микросхемы RTC для получения с него временных данных. Если напряжение +5 В отсутствует, микросхема переходит в спящий режим для сохранения и отсчета времени.
  • GND — земля (общий провод)
  • SCL — тактирующий вывод I2C интерфейса (нужен для коммуникации с часами реального времени)
  • SDA — вывод данных I2C интерфейса (нужен для коммуникации с RTC)
  • SQW (на некоторых аналогичных модулях RTC) — дополнительный выход прямоугольного сигнала частотой 32768 Гц. В большинстве случаев не используется.

Подключите аналоговый 20 пин Arduino Mega (аналоговый 4 пин для других плат Arduino) к выводу SDA модуля и 21 пин (5 — для других плат) к выводу SCL.  

Бесплатная книга

Блиц-советы

  1. В целях предотвращения столкновений с техническими средствами, на месте погружения нужно оставлять сигнальный буй.
  2. Чрезмерно долгое нахождение под водой способствует охлаждению тела, что приводит к спазмам голосовых щелей, исходом которого может быть остановка дыхания.
  3. Перед погружением непременно нужно проверять герметичность костюма.

Шаг 3. Код проекта

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

Вакансии

Программирование аппаратно-программных средств arduino, разработка чертежей в SolidWorks.

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

На этом всё, эта библиотека очень проста в использовании.

Комплектующие

Для реализации данного урока нам нужно совсем немного комплектующих — плата и часы реального времени:

  • Raspberry Pi Zero
  • DS3231

Программное обеспечение:

Raspbian

Примеры

  • TimeArduinoDue — Синхронизация времени с помощью RTC (для Arduino Due)
  • TimeGPS — Синхронизация времени с помощью GPS
  • TimeNTP — Синхронизация времени с помощью NTP-сервера
  • TimeNTP ESP8266WiFi — Синхронизация времени с помощью NTP-сервера и WiFi
  • TimeRTC — Синхронизация времени с помощью RTC (для остальных Arduino)
  • TimeRTCLog — Учет изменений состояний на контактах с помощью RTC
  • TimeRTCSet — Установка RTC-времени
  • TimeSerial — Настройка библиотеки Time при помощи последовательного порта
  • TimeSerialDateStrings — Настройка библиотеки Time при помощи последовательного порта (со строковыми сообщениями)
  • TimeTeensy3 — Синхронизация времени с помощью RTC на Teensy

Шаг 1: Что потребуется.

1. ESP-8266 Node MCU — AliExpress

2. Драйвер двигателя L298N: AliExpress

3. Набор проводов для подключения AliExpress

4. Автомобильная полно приводное шасси AliExpress

Приложение на Unity — https://github.com/MatthewHallberg/AR_Robot или Зеркало — https://github.com/robotoss/AR_Robot

Тестируем часы реального времени

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

Выберем пример скетча из меню Arduino IDE Файл → ОбразцыDS1307RTC → ReadTest и загрузим его в микроконтроллер

Отобразить/скрыть пример кода ReadTest

#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>

void setup()
{
Serial.begin(9600);
while (!Serial) ; // ожидаем ответа порта
delay(200);
Serial.println(«DS1307RTC Read Test»);
Serial.println(«——————-«);
}

void loop()
{
tmElements_t tm;

if (RTC.read(tm))
{
Serial.print(«Ok, Time = «);
print2digits(tm.Hour);
Serial.write(‘:’);
print2digits(tm.Minute);
Serial.write(‘:’);
print2digits(tm.Second);
Serial.print(«, Date (D/M/Y) = «);
Serial.print(tm.Day);
Serial.write(‘/’);
Serial.print(tm.Month);
Serial.write(‘/’);
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
}
else
{
if (RTC.chipPresent())
{
Serial.println(«The DS1307 is stopped. Please run the SetTime»);
Serial.println(«example to initialize the time and begin running.»);
Serial.println();
}
else
{
Serial.println(«DS1307 read error! Please check the circuitry.»);
Serial.println();
}
delay(9000);
}
delay(1000);
}

void print2digits(int number)
{
if (number >= 0 && number < 10)
{
Serial.write(‘0’);
}
Serial.print(number);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
 

voidsetup()

{

Serial.begin(9600);

while(!Serial);// ожидаем ответа порта

delay(200);

Serial.println(«DS1307RTC Read Test»);

Serial.println(«——————-«);

}
 

voidloop()

{

tmElements_ttm;

if(RTC.read(tm))

{

Serial.print(«Ok, Time = «);

print2digits(tm.Hour);

Serial.write(‘:’);

print2digits(tm.Minute);

Serial.write(‘:’);

print2digits(tm.Second);

Serial.print(«, Date (D/M/Y) = «);

Serial.print(tm.Day);

Serial.write(‘/’);

Serial.print(tm.Month);

Serial.write(‘/’);

Serial.print(tmYearToCalendar(tm.Year));

Serial.println();

}

else

{

if(RTC.chipPresent())

{

Serial.println(«The DS1307 is stopped. Please run the SetTime»);

Serial.println(«example to initialize the time and begin running.»);

Serial.println();

}

else

{

Serial.println(«DS1307 read error! Please check the circuitry.»);

Serial.println();

}

delay(9000);

}

delay(1000);

}
 

voidprint2digits(intnumber)

{

if(number>=&&number<10)

{

Serial.write(‘0’);

}

Serial.print(number);

}

Откроем окошко монитора последовательного порта и удостоверимся, что установленная скорость передачи соответствует 9600 бод.

У вас должно получиться что-то похожее

Выдается какие-то непонятные дата и время. Всякий раз, когда микросхема RTC обесточивается, происходит обнуление счетчика времени и мы будем наблюдать похожую картину.

Реальные часы реального времени

Библиотеки датчиков ардуино

Библиотека DHT

Библиотека, которая позволяет считать данные с температурных датчиков DHT-11 и DHT-22.

#include < DHT.h>

DHT dht(DHTPIN, DHT11); – инициализирует датчик (в данном случае DHT11).

dht.begin(); – запуск датчика.

float t = dht.readTemperature(); – считывание текущего значения температуры в градусах Цельсия.

Библиотека DallasTemperature

Предназначается для работы с датчиками Dallas. Работает совместно с библиотекой OneWire.

#include <DallasTemperature.h>

DallasTemperature dallasSensors(&oneWire); – передача объекта oneWire для работы с датчиком.

requestTemperatures() – команда считать температуру с датчика и

положить ее в регистр.

printTemperature(sensorAddress); – запрос получить измеренное значение температуры.

Библиотека Ultrasonic

Обеспечивает работу Ардуино с ультразвуковым датчиком измерения расстояния HC-SR04.

#include <Ultrasonic.h>

Ultrasonic ultrasonic (tig , echo) – объявление объекта, аргументы – контакт Trig и контакт Echo.

dist = ultrasonic.distanceRead(); – определение расстояния до объекта. Агрумент – сантиметры(СМ) или дюймы (INC).

Timing() – считывание длительности импульса на выходе Echo, перевод в необходимую систему счисления.

Библиотека ADXL345

Предназначается для работы с акселерометром ADXL345.

Пример использования:

#include <Adafruit_ ADXL345.h>

ADXL345_ADDRESS – создание объекта, указание его адреса.

ADXL345_REG_DEVID  – идентификация устройства.

ADXL345_REG_OFSX – смещение по оси Х.

ADXL345_REG_BW_RATE – управление скоростью передачи данных.

Библиотека BME280

Предназначается для работы с датчиком температуры, влажности и давления BME280.

Пример использования:

#include <Adafruit_BME280.h>

BME280_ADDRESS  – создание объекта BME280, указание его адреса.

begin(uint8_t addr = BME280_ADDRESS); – начало работы датчика.

getTemperature – получение измеренной температуры.

getPressure – получение измеренного давления.

Библиотека BMP280

Требуется для работы с датчиком атмосферного давления BMP280.

Пример использования:

#include <Adafruit_BMP280.h>

BMP280_CHIPID – создание экземпляра, указание его адреса.

getTemperature(float *temp); – получение измеренной температуры.

getPressure(float *pressure); – получение измеренного значения давления.

Библиотека BMP085

Требуется для работы с датчиком давления BMP085.

Пример использования:

#include <Adafruit_BMP085.h>

Adafruit_BMP085 bmp; – создание экземпляра BMP085.

dps.init(MODE_ULTRA_HIGHRES, 25000, true); – измерение давления, аргумент 25000 – высота над уровнем моря (в данном случае 250 м. над уровнем моря).

dps.getPressure(&Pressure); – определение давления.

Библиотека FingerPrint

Требуется для работы со сканером отпечатков пальцев.

Пример использования

#include <Adafruit_Fingerprint.h>

Adafruit_Fingerprint finger = Adafruit_Fingerprint(&mySerial); – объявление объекта Finger. Параметр – ссылка на объектр для работы с UART, кокторому подключен модуль.

finger.begin();  – инициализация модуля отпечатков пальцев.

Func_sensor_communication(); – вызов модуля отпечатков пальцев.

Модуль ZS-042 на базе RTC DS3231N

Представляют из себя законченный модуль ZS-042, который можно подключать к различным устройствам, не только к платформе Arduino.

Модуль построен на микросхеме DS3231SN, которая по сути и является часами реального времени. В отличии от старой модели часов, например на микросхеме DS1307, эти часы содержат внутренний кварцевый резонатор, благодаря чему часы имеют точный ход.

Расположение и назначение пинов на модуле ZS-042

ВыводОписание
32КВыход, частота 32 кГц
SQWПрограммируемый выход Square-Wave сигнала
SCLЛиния тактирования (Serial CLock)
SDAЛиния данных (Serial Data)
VCCПитание модуля
GNDЗемля

Описание ATMEL AT24C32N

AT24C32N — это EEPROM память на 32к от производителя Atmel, собранная в корпусе SOIC8, работающая по двухпроводной шине I2C. Адрес микросхемы 0x57, при необходимости легко меняется, с помощью перемычек A0, A1 и A2 (это позволяет увеличить количество подключенных микросхем AT24C32/64). Так как чип AT24C32N имеет, три адресных входа (A0, A1 и A2), которые могут находится в двух состояния, либо лог «1» или лог «0», микросхеме доступны восемь адресов. от 0x50 до 0x57.

Особенности модуля ZS-042:

  • Часы реального времени DS3231 с температурной компенсацией хода, календарь до 2100 года, с учетом високосного года.
  • 32 байт внешней EEPROM памяти.
  • Держатель для Li-Ion аккумулятора LIR2032 с возможностью зарядки. Модуль не поддерживает батареи типа CR2032 без доработки.
  • Интерфейс: I2C
  • Напряжение питания: 2,3 В — 5,5 В.
  • Габариты: 40 х 22 мм.

DS3231:

В основе модуля лежит микросхема RTC (Real Time Clock) DS3231 от Maxim. Это полноценные часы и календарь до 2100 года. Точность хода ±2ppm при температуре 0°C — +40°C. Часы могут работать в 24 или 12 часовом формате с отображением AM/PM. Также в наличии два будильника и датчик температуры.

EEPROM 24C32:

На модуле установлена микросхема EEPROM 24C32 объемом 32 байт, можно использован для хранения настроек, 24C32 использует I2C интерфейс. I2C адрес EEPROM можно изменить с помощью трех перемычек на плате, A0, A1 и A2.

Согласно спецификации, это 3 бита в конце 7-битного адреса

A0, A1 и A2 подтянуты к питанию, а значит адрес с не запаянными перемычками, 0b1010111 или 0x57.

Technical Notes

Internal system time is based on the standard Unix .
The value is the number of seconds since Jan 1, 1970.
System time begins at zero when the sketch starts.

The internal time can be automatically synchronized at regular intervals to an external time source.
This is enabled by calling the function — the provider argument is
the address of a function that returns the current time as a .
See the sketches in the examples directory for usage.

The default interval for re-syncing the time is 5 minutes but can be changed by calling the
method to set the number of seconds between re-sync attempts.

The Time library defines a structure for holding time elements that is a compact version of the C structure.
All the members of the Arduino structure are bytes and the year is offset from 1970.
Convenience macros provide conversion to and from the Arduino format.

Low-level functions to convert between system time and individual time elements are provided:

breakTime(time, &tm);  // break time_t into elements stored in tm struct
makeTime(&tm);         // return time_t from elements stored in tm struct

This DS1307RTC library provides an example of how a time provider
can use the low-level functions to interface with the Time library.

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации