Страница 1 из 3
RTC + AMS
Добавлено: Пн сен 19, 2016 3:05 pm
ra1der30
Помогите пожалуйста разобраться с модулем DS3231.
Железо: mega 2560 + ethernet shield w5500 + DS3231.
Модуль подключен D20 (SDA) и D21 (SCL).
Проверяю подключение, для этого использую скетч DS1307RTC Read Test.
Ответ:
DS1307RTC Read Test
-------------------
Ok, Time = 15:49:28, Date (D/M/Y) = 19/9/2016
Ok, Time = 15:49:29, Date (D/M/Y) = 19/9/2016
.....
Делаю вывод что модуль DS3231 подключен правильно.
Загружаем ams_016.
........
Modul RTC...
Waiting for NTP sync...
Transmit NTP request (192.168.59.101:123)
No NTP response
1970-01-01 00:00:05 started
1970-01-01 00:00:05 Modul Server... started
.....
Почему контролер не синхронизируется с модулем DS3231 ?
Если сменю адрес NTP, то синхронизация через Интернет заработает.
Спасибо.
Re: RTC + AMS
Добавлено: Пн сен 19, 2016 4:34 pm
Alex
Вам в скетче нужно выставить
и установить время в RTC из Arduino Serial Commander.
Подробнее тут:
https://geektimes.ru/post/264110/
Re: RTC + AMS
Добавлено: Пн сен 19, 2016 4:52 pm
ra1der30
Спасибо.
Но если я выставлю TIME_RTC,
то по сети же не будет синхронизироваться ?
Re: RTC + AMS
Добавлено: Пн сен 19, 2016 5:11 pm
Alex
У 3231 точность хода несколько секунд в год. Если очень надо синхронизироваться ещё и по сети, то можно переделать код.
Re: RTC + AMS
Добавлено: Пн сен 19, 2016 5:29 pm
ra1der30
Спасибо. Значит будем ковырять код
Re: RTC + AMS
Добавлено: Вс сен 06, 2020 3:29 pm
schel4ok
Я скомпилировал новый пакет AMS без правок.
Насколько я понял в главном файле
arduino_mega_server.ino установлен основной источник синхронизации времени - NTP сервер
Код: Выделить всё
#define NTP_FEATURE
#define TIME_NONE 0
#define TIME_NETWORK 1
#define TIME_RTC 2
byte timeProvider = TIME_NETWORK;
А в файле
time.ino вот тут указывается, что если свойство NTP_FEATURE определёно, то получаем время с NTP сервера, а если он недоступен, то с модуля RTC.
Код: Выделить всё
void timeInit() {
initStart("Time");
if (timeProvider == TIME_NETWORK) {
#ifdef NTP_FEATURE
Serial.println(F(" NTP sync..."));
setSyncProvider(getNtpTime);
#endif
}
else if (timeProvider == TIME_RTC) {
Serial.println(F(" RTC sync..."));
setSyncProvider(RTC.get);
}
else {
Serial.print(F(" Time service stopped"));
}
initDone();
}
По сети страница открывается. Но время на ней
00:10 1 января, Четверг
В мониторе порта вижу следующее
Код: Выделить всё
Arduino Mega Server (0.17) started...
Module Hardware...
Controller: Arduino Mega
Total memory: 8192
Free memory: 4634 (57%)
Network adapter: Ethernet Shield
============
Module EEPROM...
Name: Arduino Mega Se
Address: 161
============
Module Ethernet...
MAC: 0 2A F5 12 67 37
IP: 192.168.1.37
============
Module SD...
SD init... OK
index.htm... found
Check..............
Files: 145
Size: 2002872
============
Module SD Info...
SD type: SD2
Filesystem: FAT16
Cluster: -32768
SD size: 1997 MB
============
Module Time...
RTC sync...
============
1970-01-01 00:00:03 Module Server... started
1970-01-01 00:00:03 Module Temperature...
1970-01-01 00:00:03 Parasite power OFF
1970-01-01 00:00:03 Found 0 devices
1970-01-01 00:00:03 #0: 0 0 0 0 0 0 0 temp1
1970-01-01 00:00:03 #1: 0 0 0 0 0 0 0 temp2
1970-01-01 00:00:03 #2: 0 0 0 0 0 0 0 temp2
1970-01-01 00:00:03 ============
1970-01-01 00:00:03 Module Contacts... started
1970-01-01 00:00:03 Module PIR... started
1970-01-01 00:00:03 Module Abstract... started
1970-01-01 00:00:03 GLOBAL Init DONE (3s)
1970-01-01 00:00:03 AMS WORK 4600 (56%)
1970-01-01 00:00:03 cont1: Open
1970-01-01 00:00:03 cont2: Norm
Почему там RTC sync? У меня же timeProvider == TIME_NETWORK и NTP_FEATURE == defined
И почему время не определяет правильное?
Re: RTC + AMS
Добавлено: Вс сен 06, 2020 8:06 pm
eGorka
И почему время не определяет правильное?
Модуль RTC не определяет время, он отдаёт по запросу текущее. А Вы вообще время на модуле выставляли(синхронизировали) и жива ли в модуле батарейка?
Re: RTC + AMS
Добавлено: Вс сен 06, 2020 8:24 pm
schel4ok
Батарейку проверил тестером. Показывает 3,2В.
А как выставлять время на модуле RTC я не знаю.
Ну и я пробовал модуль RTC отключать. Один фиг показывает 1970 год.
Re: RTC + AMS
Добавлено: Вс сен 06, 2020 8:43 pm
eGorka
schel4ok писал(а): ↑Вс сен 06, 2020 3:29 pm
Я скомпилировал новый пакет AMS без правок.
.....
Почему там RTC sync? У меня же timeProvider == TIME_NETWORK и NTP_FEATURE == defined
А теперь дичь.
Смотрим код в
arduino_mega_server.ino
Код: Выделить всё
void setup() {
------
#ifdef NTP_FEATURE
ntpInit();
#endif
timeInit();
------
} // setup()
У Вас в логе ...
Код: Выделить всё
============
Module Time...
RTC sync...
============
... стартует модуль timeInit(), а ntpInit() не запускается, как так? Без изменения кода такое невозможно.
Re: RTC + AMS
Добавлено: Вс сен 06, 2020 10:44 pm
schel4ok
у меня в коде
arduino_mega_server.ino всё точно так же
Код: Выделить всё
#define NTP_FEATURE
void setup() {
#ifdef NTP_FEATURE
ntpInit();
#endif
timeInit();
NTP_FEATURE вверху файла объявлено, но стартует timeInit()
я в коде вообще ничего не менял кроме IP адреса ардуины