
2025 Автор: John Day | [email protected]. Последно модифициран: 2025-01-23 14:36

Този Instructable ще ви покаже как да настроите часа на DS3231 часовник в реално време с помощта на Arduino и малко Java приложение, което използва серийната връзка на Arduino.
Основната логика на тази програма:
1. Arduino изпраща серийна заявка.
2. Програмата Java разглежда кой ден/месец/… arduino е поискал и изпраща съответните данни обратно.
3. След като се събере цялата необходима информация, arduino съхранява данните в DS3231.
Модулът RTC DS3231
R32 модулът DS3231 е сравнително евтин 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 също трябва да работят. (Други може също да работят, но съм мързелив да потвърдя)
- Arduino -> DS3231
- A4 -> SCL
- A5 -> SDA
- 5V -> VCC
- GND -> GND
Стъпка 2: Кодът на Arduino

Изтеглете.ino файла отдолу и го качете на вашия Arduino (в моя случай Nano).
Скицата се нуждае от следните библиотеки, за да работи правилно:
github.com/PaulStoffregen/Time
github.com/JChristensen/DS3232RTC
Урок за това как да качите код на вашия arduino можете да намерите тук (arduino.cc).
В IDE на Arduino проверете дали кодът е изпратен правилно. (Качването приключи)
Вашият 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.
Важно е да въведете изместването на часовата зона в определен формат!
Общият формат е +hh: mm или -hh: mm. Винаги включвайте водещи нули!
(Напр.: -03: 00; -06: 00; +09: 00; +02: 30)
4. Приложението Java ще стартира малък прозорец с конзолен изход
Следете за съобщения за потвърждение като: „Часът е зададен завършен“
Когато процесът на зададено време приключи, кодът ще отпечатва текущото време на DS3231 на всеки 5 секунди. Можете да потвърдите, че часът е зададен правилно.
Ако не получите никакъв изход след ~ 20 секунди, натиснете бутона за нулиране на вашия arduino и изчакайте отново.
Ако все още не работи, проверете скицата на Arduino и/или я качете отново. (Важно: Затворете порта в приложението Java, преди да го качите в Arduino; в противен случай той ще блокира серийния порт!) След това нулирайте връзката в програмата Java.
(Програмата Java използва LocalDateTime, за да получи текущата дата.)
Часът е зададен. Забавлявай се
Ако имате някакви неразрешими проблеми при настройването на часа, моля, коментирайте по -долу и споделете вашия log.txt (в същата папка като буркана) с мен. Благодаря много!