Рубрики
Проекты на STM32

Подключение модуля часов реального времени DS3231 к плате STM32F103C8 (Blue Pill)

В этом проекте мы рассмотрим подключение модуля часов реального времени (RTC) DS3231 к плате STM32F103C8 (Blue Pill) и будем отображать считанные значения времени и даты на 0,96-дюймовом OLED-дисплее.

Мы будем использовать модуль часов реального времени (RTC) DS3231 для отслеживания правильного времени и даты и отображения их на OLED-дисплее, используя плату STM32F103C8 в качестве микроконтроллера.

Альтернативная микросхема для DS3231 — DS1307. Модуль DS3231 имеет встроенные функции сигнализации, а также датчик температуры с разрешением 0,25 и точностью ±3°C.

Ранее на нашем сайте мы уже рассматривали проекты на основе других микроконтроллеров (плат), в которых использовался модуль DS3231 (DS1307):

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

  1. Плата разработки STM32F103C8 (STM32 Blue Pill) (купить на AliExpress).
  2. Модуль часов реального времени DS3231 (купить на AliExpress).
  3. OLED дисплей с интерфейсом I2C и диагональю экрана 0.96 дюйма (купить на AliExpress — для данного проекта выбирайте вариант дисплея с 4 контактами).
  4. Макетная плата.
  5. Соединительные провода.

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

DS3231 — это недорогие, но чрезвычайно точные часы реального времени (RTC) I²C со встроенным кварцевым генератором с температурной компенсацией (TCXO) и кристаллом. Устройство имеет разъем для батареи и поддерживает точный отсчет времени даже когда основное питание устройства прерывается.

RTC сохраняет информацию о секундах, минутах, часах, дне, дате, месяце и годе. Дата в конце месяца автоматически корректируется для месяцев с менее чем 31 днем, включая поправки на високосный год. Часы работают в 24-часовом или 12-часовом формате с активным индикатором AM/PM. Предусмотрены два программируемых будильника времени суток и программируемый выход прямоугольной волны.

Прецизионный температурно-компенсированный опорный источник напряжения и схема компаратора контролируют состояние VCC для обнаружения сбоев питания, обеспечения сброса выходного сигнала и автоматического переключения на резервный источник питания при необходимости. Кроме того, активно-низкий вывод RST модуля контролируется как вход кнопки для генерации сброса микропроцессора.

Основные характеристики модуля:

1. Высокоточные часы реального времени полностью управляют всеми функциями хронометража.
2. Часы реального времени отсчитывают секунды, минуты, часы, дату месяца, месяц, день недели и год с компенсацией високосного года до 2100 года.
3. Точность ±2 ppm от 0 °C до +40 °C.
4. Точность ±3,5 ppm от -40 °C до +85 °C.
5. Выход цифрового датчика температуры: точность ±3 °C.
6. Регистр для подстройки под старение.
7. Выход RST с активным низким значением/вход для устранения дребезга кнопки сброса.
8. Два будильника времени суток.
9. Программируемый выходной сигнал прямоугольной формы.
10. Простой последовательный интерфейс, подключаемый к большинству микроконтроллеров.
11. Быстрый (400 кГц) интерфейс I2C.
12. Вход резервного аккумулятора для непрерывного хронометража.
13. Работа в режиме низкого энергопотребления продлевает время работы от резервного аккумулятора.
14. Работа при напряжении 3,3 В.
15. Диапазоны рабочих температур: коммерческие (от 0 °C до +70 °C) и промышленные (от -40 °C до +85 °C).
16. Одобрено Underwriters Laboratories® (UL).

Схема проекта

Схема подключения модуля часов реального времени DS3231 к плате STM32F103C8 (Blue Pill) представлена на следующем рисунке. Как видите, схема достаточно проста и ее легко можно собрать на макетной плате.

DS3231 и OLED-дисплей оба являются модулями I2C. Поэтому нам нужно всего 2 контакта для их подключения. Итак, подключите линию передачи данных (SDA) к контакту B7 STM32F103C8, а линию синхронизации (SCL) — к контакту B6 STM32F103C8. Подайте 3,3 В на OLED и RTC-модуль через контакт 3,3 В платы STM32F103C8. Вы также можете использовать питание 5 В для DS3231 и OLED-модуля.

Исходный код программы

Исходный код для подключения модуля RTC DS3231 к STM32 приведен ниже. Программа написана в Arduino IDE. Вам необходимо установить плату STM32 в Arduino IDE. Вы можете скопировать код и загрузить его непосредственно на плату STM32. Для загрузки кода вы можете использовать последовательный метод или использовать отладчик ST link или модуль J-Link. Но перед этим вам понадобятся несколько библиотек. Поэтому сначала загрузите и добавьте библиотеки.

1. Adafruit_SSD1306: https://github.com/adafruit/Adafruit_SSD1306
2. Adafruit_GFX: https://github.com/adafruit/Adafruit-GFX-Library
3. RTClib: https://github.com/adafruit/RTClib

Тестирование работы проекта

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *