🛒
0 товар.
0 руб.
Логотип

Интернет-магазин «Неглупый Дом»

☰
ИИ-консультант Wildberries OZON Яндекс Маркет
Поиск по сайту
Гугл таблица с ассортиментом

⏰ Проект: часы-будильник на DS1302, TM1637 и зуммере

Схема часов-будильника на DS1302, TM1637 и зуммере

Модуль DS1302 хранит время, индикатор TM1637 показывает его, активный зуммер включается в заданный час будильника.

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

DS1302 — отдельная микросхема часов реального времени (RTC) со своей батарейкой CR2032: она продолжает отсчитывать время даже когда Arduino обесточена или перепрошивается. Без неё Arduino "забывает" время при каждом отключении от питания, так как своих часов у неё нет — только счётчик миллисекунд с момента включения. DS1302 общается с Arduino по собственному трёхпроводному протоколу (отсюда библиотека ThreeWire, а не Wire).

Индикатор TM1637 — 4-разрядный дисплей со встроенным драйвером: сам "зажигает" нужные сегменты, а Arduino лишь посылает готовое число по двум проводам CLK и DIO. Активный зуммер самый простой: на нём уже есть свой генератор звука, достаточно подать HIGH на сигнальный пин.

Пошаговая сборка

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

  1. DS1302: CLK → D5, DAT → D4, RST → D2, VCC → 5V, GND → GND.
  2. TM1637: CLK → D3, DIO → D6, VCC → 5V, GND → GND.
  3. Активный зуммер: сигнал (часто подписан «S» или «+») → D7, второй контакт → GND. Не перепутайте активный зуммер с пассивным: активный пищит сам от подачи питания, пассивному нужен сигнал нужной частоты.
  4. При первой прошивке скетч сам запишет в DS1302 текущее время компьютера (строка с `__DATE__`/`__TIME__`) — дальше модуль держит время от своей батарейки.

Скетч

// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.

#include <ThreeWire.h>      // трёхпроводный протокол DS1302
#include <RtcDS1302.h>      // библиотека под часы реального времени DS1302
#include <TM1637Display.h>  // библиотека для индикатора TM1637

ThreeWire myWire(4, 5, 2);        // пины DAT, CLK, RST модуля DS1302
RtcDS1302<ThreeWire> Rtc(myWire); // объект часов поверх этой шины
TM1637Display display(3, 6);      // пины CLK, DIO индикатора
const int buzzerPin = 7;          // пин зуммера
const int alarmHour = 7;          // час будильника
const int alarmMinute = 0;        // минута будильника

void setup() {
  Rtc.Begin();                 // запускаем модуль часов
  pinMode(buzzerPin, OUTPUT);  // зуммер — выход
  if (!Rtc.IsDateTimeValid()) {
    // если часы ещё не настроены — берём время компьютера на момент компиляции
    Rtc.SetDateTime(RtcDateTime(__DATE__, __TIME__));
  }
}

void loop() {
  RtcDateTime now = Rtc.GetDateTime(); // читаем время из модуля
  int h = now.Hour();
  int m = now.Minute();

  display.showNumberDecEx(h * 100 + m, 0b01000000, true); // 0b01000000 — бит двоеточия

  digitalWrite(buzzerPin, (h == alarmHour && m == alarmMinute) ? HIGH : LOW);

  delay(1000); // обновляем раз в секунду
}
                

Библиотеки RtcDS1302 (от Makuna) и TM1637Display ставятся через Менеджер библиотек Arduino IDE.

Частые проблемы

Как улучшить проект

Товары по теме

Ещё модули для Arduino: Электронные модули.

← 🌡️ термометр на DS18B20 с выводом…🌱 автополив по датчику влажности… →

🎁 Купить весь комплект со скидкой 10%

Все 3 товара сразу: 237 ₽ 213 ₽ (экономия 24 ₽)

Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.

Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.

Корзина

Поиск


Пример: понижающий или DC-DC или mini360 или aw-023 или арт. OZ/WB/YA