Как подключить часы реального времени к ардуино

от admin

Arduino и часы RTC DS3231

DS3231 – микросхема часов реального времени, которая при наличии внешнего автономного питания считает время и всегда готова поделиться им с микроконтроллером. Основные характеристики:

  • Питание: 2.3.. 5.5V
  • Потребление: 180 мкА
  • Потребление батарейки: 0.8 мкА
  • Считает часы, минуты, секунды, число, месяц, год, день недели
  • Встроенный календарь до 2100 года
  • Встроенный термометр, точность ±3°С
  • Свой автономный источник питания: батарейка CR2025 или

В продаже можно найти несколько вариантов модулей на базе DS3231.

В наборе GyverKIT:

  • Партии 0, 1 и 2 комплектовались мини-версией модуля (второй слева на картинке выше)
  • Партия 3 и далее – самый левый модуль синего цвета

Подключение

Модуль подключается к шине I2C согласно распиновке микроконтроллера:

  • GND > GND
  • VCC > VCC
  • Arduino: SDA – A4, SCL – A5
  • Wemos: SDA – D2, SCL – D1

У мини-версии модуля пины подписаны немного иначе:

  • + > VCC
  • – > GND
  • D > SDA
  • C > SCL

Библиотеки

    от adafruit
  • Моя библиотека microDS3231

В примерах на этом сайте мы будем использовать microDS3231 как гораздо более лёгкую и оптимальную. Библиотека идёт в архиве к набору GyverKIT, а свежую версию всегда можно установить/обновить из встроенного менеджера библиотек Arduino по названию microDS3231. Краткая документация находится по ссылке выше, базовые примеры есть в самой библиотеке.

Примеры

Чтобы автоматически установить время на модуле, можно прошить следующую программу:

Она установит дату и время, равное времени компиляции программы, то есть текущее. После этого можно работать с модулем, например выведем дату и время разными способами:

Часы реального времени DS1302 и DS1307 Ардуино

DS1307 и DS1302 Arduino — это модуль часов реального времени RTC (Real Time Clock) с возможностью бесперебойного питания от литиевой батареи. Рассмотрим схему подключения модуля часов к плате Ардуино и программу, которую можно использовать для установки нужной даты и времени. Мы также включили описание универсальной библиотеки iarduino_RTC.h для работы с модулями DS1302, DS1307 и RTC DS3231.

Необходимые компоненты:

  • Arduino Uno / Arduino Nano / Arduino Mega
  • модуль ds1302 / ds1307 / ds3231
  • дисплей lcd 1602 i2c
  • коннекторы
  • скачать библиотеку iarduino_RTC.h и LiquidCrystal_I2C.h

Ориентация во времени полезна при создании устройства для автоматического полива растений, включения света или, например, отопления дома по строгому расписанию. Платы семейства Arduino не имеют встроенных часов, поэтому если вы хотите, чтобы микроконтроллер выполнял задачи в определенное время суток, вам придется использовать модуль реального времени ds1302 или похожий модуль ds1307 и ds3231.

DS1307 и DS3231 Arduino распиновка, характеристики

DS1307 и DS3231 Arduino распиновка, характеристики

Характеристики DS1302 RTC (datasheet)

  • Напряжение питания: от 2 В до 5,5 В
  • Потребляемый ток: 300 мА при напряжении 2 В
  • RST: контакт начала/окончания последовательной связи
  • CLK: контакт тактового генератора последовательной связи
  • DAT: Контакт последовательной передачи данных
  • Рабочая температура: от -40℃ до +80℃

Характеристики DS1307 RTC (datasheet)

  • Напряжение питания: от 4,5 В до 5,5 В
  • Потребляемый ток: 1,5 мА
  • Порт связи: I2C
  • Максимальная частота передачи: 100 КГц
  • Рабочая температура: от 0℃ до +70℃

Модуль ds1302 подключается к Arduino через пять контактов. Контакты VCC и GND отвечают за питание модуля от 5 В. Выводы CLK, DAT и RST подключаются к цифровым выводам микроконтроллера. Чип имеет низкое энергопотребление и может отсчитывать время с точностью до нескольких секунд. Модули ds1307 и ds3231 RTC (Real Time Clock) подключаются к микроконтроллеру Ардуино с помощью протокола i2c (SDA, SCL).

Как подключить модуль часов DS1302 к Ардуино

Как подключить модуль часов DS1302 к Ардуино

LCD 1602 i2c Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Рассмотрим несколько вариантов подключения модуля часов реального времени к Arduino с дисплеем lcd 1602 i2c. Первый вариант использует протокол SPI для модуля ds1302. Время и дата отображаются на мониторе порта Arduino IDE и на жидкокристаллическом дисплее. В программе следует снять комментарий с того модуля, который вы используете. После внесения всех изменений, загрузите следующий скетч в микроконтроллер.

Скетч для часов реального времени DS1302

Как подключить модуль часов DS1307 к Ардуино

Как подключить модуль часов DS1307 к Ардуино

DS1307 i2c Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VCC 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

Модули реального времени ds1307 и ds3231 подключены к плате Arduino по протоколу i2c, как и дисплей LCD 1602. Контакт SDA подключен к порту A4, а контакт SCL — к порту A5 микроконтроллера Arduino Uno. При подключении любого модуля по I2C к плате Arduino Mega необходимо использовать порты SDA (вывод 20) и SCL (вывод 21). А в программе необходимо снять комментарий в строке с нужным для вас модулем.

Скетч для часов реального времени DS1307

Как подключить модуль часов DS3231 к Ардуино

При подключении модуля ds3231 используется шина i2c — SDA (A4) и SCL (A5), в скетче необходимо только указать, какой модуль используется. Схема подключения модуля ds3231 к Ардуино не отличается от схемы подключения часов реального времени ds1307. При необходимости, вы можете использовать программу для сканера шины i2c для просмотра адреса подключенных устройств, установленные производителем.

Описание команд библиотеки iarduino_RTC.h

Модуль часов реального времени DS1302 Arduino

begin();
— инициализация модуля

settime(секунды, минуты, часы, день, месяц, год, день недели);
— год указывается без учета века, в формате 0-99
— часы в 24-часовом формате, от 0 до 23
— день недели — это число от 0 — воскресенье до 6 — суббота

gettime();
— получить время и дату
— gettime(«d-m-Y, H:i:s, D»); ответит строкой «12-06-2020, 18:30:05, Fri».

варианты вызова функции gettime:
s — секунды от 00 до 59 (два символа)
i — минуты от 00 до 59 (два символа)
h — часы (12-часовой формат) от 01 до 12 (два символа)
H — часы (24-часовой формат) от 00 до 23 (два символа)
d — день месяца от 01 до 31 (два символа)
D — будний день с пн по сб (три символа)
m — месяц от 01 до 12 (два символа)
M — месяц с января по декабрь (три символа)
Y — год от 2000 до 2099 (четыре символа)
y — год от 00 до 99 (два символа)

Заключение. К часам на базе модуля реального времени RTC Arduino можно добавить отображение температуры от датчика DHT22 и функцию будильника. Модуль Real Time Clock позволяет значительно расширить функции микроконтроллера для выполнения задач в определенное время суток. Если у вас появились вопросы по сборке и программированию часов с дисплеем — оставляйте их в комментариях к статье.

Arduino Mega Server и часы реального времени

image

В этой статье вы узнаете как Arduino Mega Server работает со временем и как можно создавать проекты на Ардуино, которые имеют привязку к реальному времени, вне зависимости от того, установлен ли в них «железный» RTC-модуль или нет. Все вопросы работы с реальным временем на Ардуино будут подробно разобраны и после прочтения этой статьи вы станете настоящим «мастером часовых дел».

Суть вопроса

Любой мало-мальски серьёзный проект на Ардуино должен иметь представление о текущем реальном времени. Например, показания датчиков должны быть привязаны ко времени (иначе никакой статистики и даже элементарных графиков невозможно будет построить), контроллер должен производить те или иные действия в зависимости от текущего времени суток, выходных, праздников и т. д. Если ваш контроллер не имеет представления о реальном времени, то он превращается в простой автомат, который может производить только элементарные действия по жёстко заданной программе.

Поскольку Arduino Mega Server это мощная и развитая система, то такое положение дел (отсутствие работы с реальным временем) меня, да и всех остальных пользователей системы, никак не могло устроить. Поэтому вопрос интеграции в систему RTC был одним из первых на повестке дня.

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

Всё бы ничего, но ни у меня, ни у большинства пользователей AMS не было того самого «железного» модуля RTC, поэтому было принято решение сделать «ход конём» и, в качестве временной меры, организовать часы реального времени, работающие внутри системы, без настоящего физического модуля. Что и было с успехом реализовано.

Итак, как организовать виртуальный RTC, без настоящего модуля. Существует замечательная библиотека Time Library которая и выполняет львиную долю работы по обеспечению нас точным временем. Для начала работы с ней, её нужно скачать, разархивировать и поместить на стандартное место всех библиотек среды Arduino, а именно, в папку:

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

Как это работает

Принцип очень простой. Библиотека «запускает» виртуальные часы «внутри» контроллера и предоставляет возможность синхронизировать их множеством способов, на выбор. Вы можете выбрать тот способ, который вам больше подходит. Поскольку Arduino Mega Server это сетевое устройство, то был выбран вариант синхронизации часов через сеть с серверами точного времени. Это могут быть сервера в Интернет или сервера в локальной сети, на которых работает соответствующая служба. Например, в базовом варианте AMS часы синхронизируются с сервером MajorDoMo, и для этого ничего настраивать не нужно, всё работает «из коробки».

Итак, для того, чтобы это заработало, нужно в начале скетча подключить соответствующие библиотеки.

Файл Time.h это собственно библиотека для работы со временем, а остальные файлы необходимы для работы с сетью и для синхронизации времени по протоколу NTP (библиотека Ethernet тоже должна быть у вас установлена).

Далее, вам нужно указать IP-адрес сервера, с которым вы хотите синхронизировать время

и соответствующий порт

но тут есть один момент: порт 8888 подходит для синхронизации в локальной сети, а в Интернет большинство серверов по нему не отвечает, поэтому, если вы планируете синхронизировать время с серверами точного времени в Интернет, то лучше установить порт 123:

осталось только указать временную зону

и создать объект EthernetUDP

На этом подготовительные операции можно считать законченными и можно описывать нужную вам функциональность работы со временем. Функция инициализации:

Здесь нужно обратить внимание на функцию

Эта функция устанавливает источник синхронизации времени (в данном случае это NTP синхронизация через сеть). Но это может быль любой другой источник, например, физический модуль RTC. Выполнение этой функции приводит к установке источника синхронизации (на будущее) и, одновременно, к самой синхронизации времени через этот источник. Именно в момент выполнения этой функции у вас в системе «появляется» точное время.

В самой библиотеке есть ещё одна интересная функция,

которая позволяет задать нужный интервал между синхронизациями (задаётся в секундах, сами синхронизации происходят автоматически, без какого-либо участия с вашей стороны).

image

Теперь вы можете пользоваться точным временем внутри скетча Ардуино, например, выводить в Serial монитор события не просто, а привязанными к конкретному точному времени. Делается это при помощи функции timeStamp():

которая является обёрткой для функции serialRTC():

Разбор механизма передачи и отображения времени в веб-интерфейсе AMS выходит за рамки данного повествования и достоин отдельной статьи и, если будет интерес, то можно будет написать продолжение и во всех подробностях объяснить, как происходит «магия» отображения времени в веб-интерфейсе Arduino Mega Server.

image

Собственно, всё. Так были организованы виртуальные часы реального времени в AMS вплоть до 0.12 версии включительно и так же вы можете организовать работу с точным временем в своих проектах, даже если у вас нет физического модуля часов реального времени. Но это ещё не конец истории, а скорее, только начало.

/*
Modul Virtual RTC
part of Arduino Mega Server project
*/

IPAddress timeServer(192, 168, 2, 8);
unsigned int localPort = 8888; // local port to listen for UDP packets
EthernetUDP Udp;

const int timeZone = 4;
time_t prevDisplay = 0; // when the digital clock was displayed

void rtcInit() <
Udp.begin(localPort);
Serialprint(«Waiting for NTP sync… \n»);
setSyncProvider(getNtpTime);
modulRtc = 1;
>

void rtcWorks() <
if (timeStatus() != timeNotSet) <
if (now() != prevDisplay) < // update the display only if time has changed
setLifer();
prevDisplay = now();
//digitalClockDisplay();
>
>
>

Читать:
Почему невыгодно транспортировать бытовое напряжение

void printDigits(int digits) <
if(digits < 10) <
Serial.print(‘0’);
>
Serial.print(digits);
>

void serialRTC() <
Serial.print(year());
Serial.print(«-«);
printDigits(month());
Serial.print(«-«);
printDigits(day());
Serial.print(» «);
printDigits(hour());
Serial.print(«:»);
printDigits(minute());
Serial.print(«:»);
printDigits(second());
>

void timeStamp() <
serialRTC();
Serial.print(» «);
>

void printRTC() <
serialRTC();
Serial.println();
>

const int NTP_PACKET_SIZE = 48; // NTP time is in the first 48 bytes of message
byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming & outgoing packets

time_t getNtpTime() <
while (Udp.parsePacket() > 0); // discard any previously received packets
Serialprint(«Transmit NTP request\n»);
sendNTPpacket(timeServer);
uint32_t beginWait = millis();
while (millis() — beginWait < 1500) <
int size = Udp.parsePacket();
if (size >= NTP_PACKET_SIZE) <
Serialprint(«Receive NTP response\n»);
Udp.read(packetBuffer, NTP_PACKET_SIZE); // read packet into the buffer
unsigned long secsSince1900;
// convert four bytes starting at location 40 to a long integer
secsSince1900 = (unsigned long)packetBuffer[40] << 24;
secsSince1900 |= (unsigned long)packetBuffer[41] << 16;
secsSince1900 |= (unsigned long)packetBuffer[42] << 8;
secsSince1900 |= (unsigned long)packetBuffer[43];
return secsSince1900 — 2208988800UL + timeZone * SECS_PER_HOUR;
>
>
Serialprint(«No NTP response\n»);
return 0; // return 0 if unable to get the time
>

// send an NTP request to the time server at the given address
void sendNTPpacket(IPAddress &address) <
// set all bytes in the buffer to 0
memset(packetBuffer, 0, NTP_PACKET_SIZE);
// Initialize values needed to form NTP request
// (see URL above for details on the packets)
packetBuffer[0] = 0b11100011; // LI, Version, Mode
packetBuffer[1] = 0; // Stratum, or type of clock
packetBuffer[2] = 6; // Polling Interval
packetBuffer[3] = 0xEC; // Peer Clock Precision
// 8 bytes of zero for Root Delay & Root Dispersion
packetBuffer[12] = 49;
packetBuffer[13] = 0x4E;
packetBuffer[14] = 49;
packetBuffer[15] = 52;
// all NTP fields have been given values, now
// you can send a packet requesting a timestamp:
Udp.beginPacket(address, 123); //NTP requests are to port 123
Udp.write(packetBuffer, NTP_PACKET_SIZE);
Udp.endPacket();
>

void showDuration(time_t duration) <
// prints the duration in days, hours, minutes and seconds
Serialprint(» (duration «);
if(duration >= SECS_PER_DAY) <
Serial.print(duration / SECS_PER_DAY);
Serialprint(» day «);
duration = duration % SECS_PER_DAY;
>
if(duration >= SECS_PER_HOUR) <
Serial.print(duration / SECS_PER_HOUR);
Serialprint(» hour «);
duration = duration % SECS_PER_HOUR;
>
if(duration >= SECS_PER_MIN) <
Serial.print(duration / SECS_PER_MIN);
Serialprint(» min «);
duration = duration % SECS_PER_MIN;
>
Serial.print(duration);
Serialprint(» sec) \n»);
>

void checkEvent(time_t* prevEvent) <
time_t duration = 0;
time_t timeNow = now();

if (*prevEvent > 0) <
duration = timeNow — *prevEvent;
>
if (duration > 0) <
showDuration(duration);
>
*prevEvent = timeNow;
>

Приятная неожиданность

Я бы ещё долго не занялся интеграцией модулей RTC в систему (хватает и других актуальных задач), но тут, в рамках технологического сотрудничества с нашим проектом, компания CHIPSTER предоставила для тестирования и интеграции в AMS оборудование, среди которого оказались Ethernet модули на чипе W5500 и… модуль часов реального времени на чипе DS3231, что оказалось как нельзя более кстати и послужило толчком для интеграции модулей RTC в систему.

Оказалось, что компания CHIPSTER не только торгует электронным оборудованием, но и разрабатывает собственные изделия для Arduino и автоматизации под торговой маркой Geegrow и имеет большие планы на будущее в этом направлении, в частности, у неё есть проект по выпуску специализированной версии Arduino Mega 2560 с расширенными возможностями и «заточенной» специально под Arduino Mega Server. И, если эта плата будет выпущена, то это будет очень интересное событие. Но вернёмся к часам реального времени.

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

Поскольку модуль RTC оказался у меня под руками, то грех было бы не интегрировать его в систему. Благо это оказалось совсем несложно благодаря всё той же Time Library. Но обо всём по порядку.

Для тех, кто не знает, модули реального времени бывают двух типов — «обычные» (как правило, на чипе DS1307) и «продвинутые» (на чипе DS3231, который мне и достался). Разница между ними заключается в том, что первые не очень точные и могут «убегать» очень быстро и очень сильно, а вторые это высокоточные часы с нормированным уходом не более двух минут в год, то есть реально применимые на практике. А точность достигается благодаря более сложной схемной реализации и встроенной термокомпенсации.

Но программно обе версии модулей совместимы и работать с библиотекой и кодом будут и те и другие. Разница будет только в точности хода.

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

Физическое подключение

Теперь давайте поговорим о том, как физически подключить модуль RTC к Arduino Mega Server или к вашему проекту на Ардуино. Сразу скажу, что это очень просто и вам понадобятся всего два резистора и несколько проводов.

Подключение тривиально: вам нужно найти на своём модуле четыре контакта — GND («земля»), VCC (напряжение питания), SCL (синхросигнал), SDA (данные). Остальные контакты используются в редких и специфических случаях и вы на них можете не обращать внимания.

image

Итак, вывод GND подключаем к «земле», вывод VCC — к напряжению питания контроллера. Здесь всё просто и никаких вопросов возникать не должно.

С остальными выводами дело обстоит ненамного сложнее. Модуль RTC общается с контроллером по интерфейсу I2C, у которого всего два провода: синхронизация и данные и в контроллерах Arduino уже предусмотрены контакты для подключения этого интерфейса. У Arduino Uno это A4 (SDA) и A5 (SCL), а у arduino Mega это D20 (SDA) и D21 (SCL).

Единственная тонкость заключается в том, что выводы SCL и SDA нужно «подтянуть» к источнику питания через резисторы 4,7 КОм. Если у вас нет точно такого номинала, то можно использовать резисторы из диапазона 2 КОм — 10 КОм.

image

Программная поддержка

Теперь осталось только дописать поддержку модуля в коде AMS или вашего проекта. Как я уже сказал, это будет очень просто потому, что с модулем будет работать всё та же библиотека Time Library. Правда нам нужно будет добавить ещё одну библиотеку, а именно DS1307RTC Library. Её тоже распаковываем и помещаем в стандартную папку для библиотек:

Добавляем в код вашего скетча следующие строки

Теперь мы во всеоружии и можем приступать к написанию кода самого скетча, работающего с физическим модулем RTC. В функции

и внутреннее время Arduino Mega Server (или вашего контроллера) будет синхронизироваться с «железным» контроллером RTC, а не с серверами в Интернет или локальной сети. Таким образом, вызывая функции setSyncProvider(getNtpTime) и setSyncProvider(RTC.get) вы можете манипулировать источниками синхронизации времени и синхронизировать время так, как вам будет угодно, в зависимости от различных условий.

Ещё одна функция, о которой вам необходимо знать, это

которая позволяет узнать синхронизировано ли время и в зависимости от данного условия предпринять нужные действия.

Тонкий момент

Нужно различать две вещи: время, идущее в «железном» модуле RTC и время, идущее в вашем контроллере. Это не одно и то же. «Главным» для вас является время в контроллере, а время в модуле является лишь источником для синхронизации.

Но! поскольку время в физическом RTC тоже постепенно «уходит», то его тоже нужно подстраивать, синхронизируя с более точными источниками, например, с серверами в Интернет.

Поэтому, оптимальный алгоритм должен быть такой: если есть возможность, то синхронизируем все часы с серверами в Интернет, если сеть недоступна, то начинаем синхронизировать время в контроллере с модулем RTC, как только появляется сеть — переходим опять на синхронизацию через Интернет.

Если вы находитесь в экстремальных условиях, без доступа к каким-либо источникам синхронизации, то можно вручную время от времени корректировать ход «железных» часов.

Давайте, для примера, рассмотрим функцию синхронизации внутренних часов контроллера и модуля RTC через сеть:

Здесь мы сначала получаем точное время по сети

затем, в случае удачи, устанавливаем его в модуль RTC

а затем уже из этого модуля устанавливаем время контроллера

Начальный запуск

Но и это ещё не всё. Существует ещё проблема начального запуска, когда модуль RTC только подключён, но время в нём не выставлено и синхронизироваться с ним поэтому нельзя. Нужно каким-то образом выставить в нём правильное время. В Arduino Mega Server существует два способа решения этой проблемы: можно синхронизировать физический RTC через сеть (если доступны сервера точного времени) или при помощи утилиты Arduino Serial Commander.

Для установки времени в модуле RTC достаточно… нажать на кнопку. Всё остальное сделают за вас два молодца по имени Arduino Mega Server и Arduino Serial Commander. Если вы не пользуетесь AMS, а разрабатываете свой собственный проект, можете взять код из дистрибутива Arduino Mega Server (код доступен и полностью свободен) или поискать решение этой проблемы в Интернет (там есть несколько вариантов решения).

image

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

Arduino Mega Server, начиная с версии 0.13, поддерживает «железный» RTC. Скачать последнюю актуальную версию вы можете с официального сайта проекта, а задать возникшие вопросы можно на форуме.

И, конечно, я выражаю признательность компании CHIPSTER за сотрудничество и предоставленное для тестирования и интеграции оборудование (о модуле W5500 и о ускорении сетевой работы AMS я расскажу вам в одной из следующих статей).

Дополнение. Открыт канал на Youtube и вот промо ролик Arduino Mega Server, который демонстрирует работу с реальной системой.

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

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

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

Технические параметры HX711:

► Микросхема: DS1302;
► Номинальное напряжение: 2-5.5 В;
► Потребляемый ток: менее 300 нА;
► Рабочая частота: 32.768 кГц;
► ОЗУ: 31 байт;
► Габариты: 44 × 23 × 11 мм;
► Вес: 7 грамм.

Краткий обзор модуля DS1307

Основная и единственная микросхема на модуле, это DS1302, как еще называют «Real Time Clock» (Часы Реального Времени), сокращенно RTC. Данная микросхема поддерживает секунды, минуты, часы, день недели, дата, месяц и год информацию, а так же следит за количеством дней в месяце и делает поправку на високосный год. Микросхема работает в 24-часовом или 12-часовом формате с индикатором AM/PM.

На плате, кроме микросхемы DS1302, установлен кварц на 32,768 кГц и бокс для батарейки тика CR2032. Для связи и подачи питания, предусмотрен пяти контактный разъем, шагом 2,54 мм.

Назначение контактов:
Vcc и GND — Питание модуля, 2 — 5.5 В;
CLK — Вход тактовой частоты последовательных данных.
DAT — Ввод/вывод последовательных данных
RST — Включение логике RTC

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

Необходимые детали:
► Arduino UNO R3 x 1 шт.
► Часы реального времени на DS1302, RTC x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.

Описание:
В примере покажу как подключить модуль DS1302 к Arduino UNO. В скетче установим текущие время и затем прочитаем его, полученные данные отправим в последовательный порт.

Подключение:
Схема не сложная, необходимо пять проводов, сначала подключаем шину Vcc и GND от модуля DS1302 к выводам Arduino 5 В и GND (можно и запитать и от 3.3 В), затем подключим CLK, DAT, RST от модуля DS1302 к выводам Arduino 6, 7, 8 (при необходимости, выводы можно поменять). Схема собрана, для удобства приведу принципиальную схему подключения.

Установка библиотек:
Для работы с модулем необходимо установить библиотеку «RTC by Makuna», для этого, перейдите в Скетч —> Подключить библиотеку —> Управление библиотеками.

В строке поиска введите «1302», найдите библиотеку « RTC by Makuna » и установите данную библиотеку.

Программа:
Теперь запускаем среду разработку Arduino IDE и загружаем скетч в контроллер.

Похожие публикации