Оглавление:
Видео: Часы реального времени с Arduino: 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
В этом проекте мы сделаем часы с помощью модуля Arduino и RTC. Как мы знаем, Arduino не может отображать фактическое время, поэтому мы будем использовать модуль RTC для отображения правильного времени на ЖК-дисплее. Внимательно прочтите все шаги, это очень поможет вам в создании часового механизма.
Код DS3231 Arduino похож на код DS1307 и работает с обоими чипами RTC.
Код Arduino ниже не использует какую-либо библиотеку для DS3231 RTC, библиотека Wire предназначена для соответствия между Arduino и DS3231 с использованием соглашения I2C.
Ага! Многие инженеры-электронщики полагаются на него в своих временных проектах, но RTC не совсем надежен. Он работает от батареи и рано или поздно должен быть заменен. Применительно к проектам IoT он занимает ценные выводы SPI (последовательный периферийный интерфейс) и становится беспорядочным из-за спутанных проводов. Решение… А вот и наш герой NTP (сетевой протокол времени). NTP настолько точен, что получает время из Интернета. Мы собираемся работать с этим протоколом в режиме клиент-сервер. процесс настолько прост, что наш Nodemcu действует как клиент и запрашивает пакет NTP с сервера, используя UDP. В свою очередь, сервер отправляет пакет клиенту, который анализирует данные. NTP - это универсальный протокол синхронизации времени. Теперь давайте осветим рабочее место нашей лаборатории
Шаг 1. Необходимые компоненты
- Плата Arduino
- Плата DS3231 RTC
- ЖК-экран 16x2
- 2 кнопки
- Переменный резистор 10 кОм (или потенциометр)
- Резистор 330 Ом
- Батарейка типа таблетка 3 В
- Макетная плата
- Провода перемычки
Модуль RTC DS3231
Время - это существенное чувство, необходимое в этом быстро меняющемся мире людей. В реальном времени проект
Мы используем RTC (A. K. A Real-time clock)
RTC Часы реального времени (RTC) - это интегральная схема (IC), которая отслеживает текущее время. RTC заботится о времени в реальном режиме. RTC обычно используется в материнских платах компьютеров и встраиваемых системах и требует своевременного доступа.
Шаг 2: Подключение часов Arduino
- Подключите контакт SCL к модулю RTC к Arduino A5
- Подключите вывод SDA к модулю RTC к Arduino A4
- Подключите VCC к 5v и GND к GND
- Подключите кнопку к контакту 8.
- Подключите еще одну кнопку к контакту 9.
- Подключите RS ЖК-дисплея к контакту 2 Arduino.
- Подключите E ЖК-дисплея к контакту 3 Arduino
- Подключите D7 ЖК-дисплея к контакту 7 Arduino.
- Подключите D6 ЖК-дисплея к контакту 6 Arduino.
- Подключите D5 ЖК-дисплея к контакту 5 Arduino.
- Подключите D4 ЖК-дисплея к контакту 4 Arduino.
- Подключите VSS & K к GND
- Подключите VDD & A к 5v
- Подключите vo к выходному контакту потенциометра
Шаг 3: Код для часов Arduino с RTC
DS3231 работает только с форматом BCD, и для преобразования BCD в десятичное и наоборот я использовал 2 строки ниже (пример для минуты): // Преобразование BCD в десятичныйminute = (минута >> 4) * 10 + (минута & 0x0F);
// Преобразование десятичной дроби в BCDminute = ((минута / 10) << 4) + (минута% 10); void DS3231_display (): отображает время и календарь, перед отображением времени и календаря данные преобразуются из BCD в десятичный формат. избегайте blink_parameter ():
// Часы и календарь реального времени с кнопками настройки с использованием DS3231 и Arduino // Включить код библиотеки ЖК-дисплея #include // Включить код библиотеки Wire (необходим для устройств протокола I2C) #include // Подключения модуля ЖК-дисплея (RS, E, D4, D5, D6, D7) ЖК-дисплей LiquidCrystal (2, 3, 4, 5, 6, 7); void setup () {pinMode (8, INPUT_PULLUP); // button1 подключен к выводу 8 pinMode (9, INPUT_PULLUP); // button2 подключен к выводу 9 // настраиваем количество столбцов и строк ЖК-дисплея lcd.begin (16, 2); Wire.begin (); // Присоединяемся к шине i2c} char Time = "TIME:::"; char Calendar = "ДАТА: / / 20"; байт i, секунда, минута, час, число, месяц, год; void DS3231_display () {// Преобразуем двоично-десятичный код в десятичную секунду = (секунда >> 4) * 10 + (секунда & 0x0F); минута = (минута >> 4) * 10 + (минута & 0x0F); час = (час >> 4) * 10 + (час & 0x0F); дата = (дата >> 4) * 10 + (дата & 0x0F); месяц = (месяц >> 4) * 10 + (месяц & 0x0F); год = (год >> 4) * 10 + (год & 0x0F); // Время окончания преобразования [12] = секунда% 10 + 48; Время [11] = секунда / 10 + 48; Время [9] = минуты% 10 + 48; Время [8] = минута / 10 + 48; Время [6] = час% 10 + 48; Время [5] = час / 10 + 48; Календарь [14] = год% 10 + 48; Календарь [13] = год / 10 + 48; Календарь [9] = месяц% 10 + 48; Календарь [8] = месяц / 10 + 48; Календарь [6] = дата% 10 + 48; Календарь [5] = дата / 10 + 48; lcd.setCursor (0, 0); lcd.print (Время); // Отображение времени lcd.setCursor (0, 1); lcd.print (Календарь); // Отображение календаря} void blink_parameter () {byte j = 0; while (j 23) // Если часы> 23 ==> часы = 0 параметр = 0; if (i == 1 && параметр> 59) // Если минуты> 59 ==> минуты = 0 параметр = 0; if (i == 2 && параметр> 31) // Если дата> 31 ==> дата = 1 параметр = 1; if (i == 3 && параметр> 12) // Если месяц> 12 ==> месяц = 1 параметр = 1; if (i == 4 && параметр> 99) // Если год> 99 ==> год = 0 параметр = 0; sprintf (текст, "% 02u", параметр); lcd.setCursor (x, y); lcd.print (текст); задержка (200); // Ждем 200 мс} lcd.setCursor (x, y); lcd.print (""); // Отображаем два пробела blink_parameter (); sprintf (текст, "% 02u", параметр); lcd.setCursor (x, y); lcd.print (текст); blink_parameter (); if (! digitalRead (8)) {// Если кнопка (контакт №8) нажата i ++; // Увеличение 'i' для следующего параметра return parameter; // Возвращаем значение параметра и выходим}}} void loop () {if (! DigitalRead (8)) {// Если кнопка (контакт № 8) нажата i = 0; час = редактировать (5, 0, час); минута = редактировать (8, 0, минута); дата = редактировать (5, 1, дата); месяц = редактировать (8, 1, месяц); год = редактировать (13, 1, год); // Преобразование десятичной дроби в двоично-десятичное. Minute = ((minute / 10) << 4) + (minute% 10); час = ((час / 10) << 4) + (час% 10); дата = ((дата / 10) << 4) + (дата% 10); месяц = ((месяц / 10) << 4) + (месяц% 10); год = ((год / 10) << 4) + (год% 10); // Завершить преобразование // Записать данные в DS3231 RTC Wire.beginTransmission (0x68); // Запуск протокола I2C с адресом DS3231 Wire.write (0); // Отправляем адрес регистра Wire.write (0); // Сбрасываем сезоны и запускаем осциллятор Wire.write (minute); // Записываем минуту Wire.write (час); // Записываем час Wire.write (1); // Записываем день (не используется) Wire.write (date); // Записываем дату Wire.write (месяц); // Записываем месяц Wire.write (год); // Записываем год Wire.endTransmission (); // Остановка передачи и снятие задержки шины I2C (200); // Ждем 200 мс} Wire.beginTransmission (0x68); // Запуск протокола I2C с адресом DS3231 Wire.write (0); // Отправляем адрес регистра Wire.endTransmission (false); // перезапуск I2C Wire.requestFrom (0x68, 7); // Запрашиваем 7 байт у DS3231 и освобождаем шину I2C в конце чтения second = Wire.read (); // Считываем секунды из регистра 0 minute = Wire.read (); // Считываем минуты из регистра 1 час = Wire.read (); // Считываем час из регистра 2 Wire.read (); // Считываем день из регистра 3 (не используется) date = Wire.read (); // Считываем дату из регистра 4 month = Wire.read (); // Считываем месяц из регистра 5 year = Wire.read (); // Считываем год из регистра 6 DS3231_display (); // Время отображения и календарная задержка (50); // Ждем 50 мс}
Рекомендуемые:
Часы реального времени с использованием AT89s52: 3 шага
Часы реального времени с использованием AT89s52: ДОБРО ПОЖАЛОВАТЬ! Это shubham Tvedi, и сегодня я собираюсь разработать часы реального времени с использованием микроконтроллера At89s52. Микроконтроллер AT89S52 - сердце этого проекта. В качестве часов реального времени используется микросхема DS1307. Для этой микросхемы DS1307 требуется интерфейс I2C, но 89
Настройка часов реального времени DS3231 RTC (часов реального времени) точно, быстро и автоматически с помощью Java (+ -1 с): 3 шага
Установка часов реального времени DS3231 RTC (часов реального времени) точно, быстро и автоматически с использованием Java (+ -1 с): это руководство покажет вам, как установить время на часах реального времени DS3231 с помощью Arduino и небольшого приложения Java, которое использует последовательное соединение Arduino. Основная логика этой программы: 1. Arduino отправляет последовательный запрос
DS1307 Часы реального времени RTC с Arduino: 4 шага
DS1307 Часы реального времени RTC с Arduino: в этом руководстве мы узнаем о часах реального времени (RTC) и о том, как Arduino & Микросхема часов реального времени DS1307 собрана вместе как устройство отсчета времени. Часы реального времени (RTC) используются для контроля времени и ведения календаря. Чтобы использовать RTC, w
Создание часов с M5stick C с помощью Arduino IDE - Часы реального времени RTC с M5stack M5stick-C: 4 шага
Создание часов с M5stick C с помощью Arduino IDE | Часы реального времени RTC с M5stack M5stick-C: Привет, ребята, в этой инструкции мы узнаем, как сделать часы с помощью платы разработки m5stick-C m5stack, используя Arduino IDE. Таким образом, m5stick будет отображать дату, время и amp; неделя месяца на дисплее
Как сделать часы реального времени с помощью Arduino и TFT-дисплея - Arduino Mega RTC с 3,5-дюймовым TFT-дисплеем: 4 шага
Как сделать часы реального времени с помощью Arduino и TFT-дисплея | Arduino Mega RTC с 3,5-дюймовым TFT-дисплеем: посетите мой канал на Youtube. Введение: - В этом посте я собираюсь создать «Часы реального времени» с использованием 3,5-дюймового сенсорного ЖК-дисплея TFT, Arduino Mega 2560 и модуль DS3231 RTC… .Перед запуском… посмотрите видео с моего канала YouTube .. Примечание: - Если вы используете Arduin