Оглавление:
Видео: Настройка часов реального времени DS3231 RTC (часов реального времени) точно, быстро и автоматически с помощью Java (+ -1 с): 3 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Это руководство покажет вам, как установить время на часах реального времени DS3231 с помощью Arduino и небольшого Java-приложения, которое использует последовательное соединение Arduino.
Основная логика этой программы:
1. Arduino отправляет последовательный запрос.
2. Программа на Java смотрит, какой день / месяц /… запросил arduino, и отправляет соответствующие данные обратно.
3. После того, как вся необходимая информация собрана, Arduino сохраняет данные в DS3231.
Модуль DS3231 RTC
Модуль DS3231 RTC - это относительно дешевый модуль RTC с высокой точностью. (несколько минут в год)
Существуют разные разновидности, основная функциональность которых одинакова с небольшими отличиями.
Подробное сравнение можно найти здесь: Сравнение DS323x | maximintegrated.com
Купить DS3231: DS3231 | ebay.com
Лист данных: DS3231 Лист данных | maximintegrated.com
Лист данных: DS1307 Лист данных | maximintegrated.com
Необходимые детали
1x Arduino (Nano, Uno, MEGA и т. Д.)
4x перемычки
1x модуль DS3231 (модуль DS1307)
Шаг 1. Подключение
Подключите DS3231, как показано на изображении выше. Конечно, вы можете сделать это без использования макета, но это будет немного сложнее. Я использовал Arduino Nano для демонстрации, но Uno или MEGA тоже должны работать. (Другие тоже могут работать, но мне лень подтверждать)
- Ардуино -> DS3231
- A4 -> SCL
- A5 -> ПДД
- 5 В -> VCC
- GND -> GND
Шаг 2: Код Arduino
Загрузите файл.ino снизу и загрузите его на свой Arduino (в моем случае - Nano).
Для правильной работы скетча необходимо установить следующие библиотеки:
github.com/PaulStoffregen/Time
github.com/JChristensen/DS3232RTC
Учебное пособие по загрузке кода на ваш Arduino можно найти здесь (arduino.cc).
В Arduino IDE убедитесь, что код был отправлен правильно. (Загрузка завершена)
Теперь ваш Arduino готов получать информацию о времени
Загрузите код здесь: DS3231TimeSync.zip (mediafire.com)
Загрузите исходный код здесь: DS3231TimeSyncSRC.zip (mediafire.com)
Репозиторий GitHub: DS3213 RTC Time Sync (github.com)
Репозиторий Bitbucket: DS3231 RTC Time Sync (bitbucket.com)
Шаг 3. Приложение Java
1. Запустите загруженный ранее файл «DS3231Sync.jar», дважды щелкнув его
2. Откроется небольшое диалоговое окно с запросом порта вашего Arduino
Если вы не уверены в том, какой порт используется вашим Arduino, посмотрите в Arduino IDE в правом нижнем углу.
(См. Изображения выше)
3. Откроется другое диалоговое окно с запросом смещения часового пояса
Смещение относительно местного времени вашего компьютера. Чтобы установить RTC на ваше местное время, просто введите +00: 00.
Очень важно, чтобы вы вводили смещение часового пояса в определенном формате!
Общий формат: + чч: мм или -чч: мм. Всегда включайте ведущие нули!
(Например: -03: 00; -06: 00; +09: 00; +02: 30)
4. Приложение Java запустит небольшое окно с консольным выводом
Следите за сообщениями с подтверждением, например: "Время истекло".
Когда процесс установки времени завершится, код будет печатать текущее время на DS3231 каждые 5 секунд. Вы можете убедиться, что время установлено правильно.
Если вы не получите никакого вывода через ~ 20 секунд, нажмите кнопку сброса на вашем Arduino и подождите снова.
Если он по-прежнему не работает, проверьте скетч на Arduino и / или загрузите его снова. (Важно: закройте порт в приложении Java перед загрузкой в Arduino; в противном случае он заблокирует последовательный порт!) Затем сбросьте соединение в программе Java.
(Программа на Java использует LocalDateTime для получения текущей даты.)
Время выставлено. Повеселись
Если у вас возникли неразрешимые проблемы с установкой времени, прокомментируйте ниже и поделитесь со мной своим файлом log.txt (в той же папке, что и банка). Большое спасибо!