RTC + AMS

Модератор: Alex

ra1der30
Сообщения: 3
Зарегистрирован: Пн сен 19, 2016 2:30 pm
Благодарил (а): 0
Поблагодарили: 0

RTC + AMS

Сообщение ra1der30 » Пн сен 19, 2016 3:05 pm

Помогите пожалуйста разобраться с модулем 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, то синхронизация через Интернет заработает.
Спасибо.
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: RTC + AMS

Сообщение Alex » Пн сен 19, 2016 4:34 pm

Вам в скетче нужно выставить

Код: Выделить всё

byte timeProvider = TIME_RTC;
и установить время в RTC из Arduino Serial Commander.

Подробнее тут:

https://geektimes.ru/post/264110/
ra1der30
Сообщения: 3
Зарегистрирован: Пн сен 19, 2016 2:30 pm
Благодарил (а): 0
Поблагодарили: 0

Re: RTC + AMS

Сообщение ra1der30 » Пн сен 19, 2016 4:52 pm

Спасибо.
Но если я выставлю TIME_RTC,
то по сети же не будет синхронизироваться ?
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: RTC + AMS

Сообщение Alex » Пн сен 19, 2016 5:11 pm

У 3231 точность хода несколько секунд в год. Если очень надо синхронизироваться ещё и по сети, то можно переделать код.
ra1der30
Сообщения: 3
Зарегистрирован: Пн сен 19, 2016 2:30 pm
Благодарил (а): 0
Поблагодарили: 0

Re: RTC + AMS

Сообщение ra1der30 » Пн сен 19, 2016 5:29 pm

Спасибо. Значит будем ковырять код :)
schel4ok
Сообщения: 136
Зарегистрирован: Вс сен 02, 2018 8:03 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: RTC + AMS

Сообщение schel4ok » Вс сен 06, 2020 3:29 pm

Я скомпилировал новый пакет 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
И почему время не определяет правильное?
eGorka
Сообщения: 182
Зарегистрирован: Чт ноя 24, 2016 10:47 am
Благодарил (а): 5 раз
Поблагодарили: 25 раз

Re: RTC + AMS

Сообщение eGorka » Вс сен 06, 2020 8:06 pm

И почему время не определяет правильное?
Модуль RTC не определяет время, он отдаёт по запросу текущее. А Вы вообще время на модуле выставляли(синхронизировали) и жива ли в модуле батарейка?
schel4ok
Сообщения: 136
Зарегистрирован: Вс сен 02, 2018 8:03 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: RTC + AMS

Сообщение schel4ok » Вс сен 06, 2020 8:24 pm

Батарейку проверил тестером. Показывает 3,2В.
А как выставлять время на модуле RTC я не знаю.
Ну и я пробовал модуль RTC отключать. Один фиг показывает 1970 год.
eGorka
Сообщения: 182
Зарегистрирован: Чт ноя 24, 2016 10:47 am
Благодарил (а): 5 раз
Поблагодарили: 25 раз

Re: RTC + AMS

Сообщение eGorka » Вс сен 06, 2020 8:43 pm

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() не запускается, как так? Без изменения кода такое невозможно.
schel4ok
Сообщения: 136
Зарегистрирован: Вс сен 02, 2018 8:03 am
Благодарил (а): 2 раза
Поблагодарили: 0

Re: RTC + AMS

Сообщение schel4ok » Вс сен 06, 2020 10:44 pm

у меня в коде arduino_mega_server.ino всё точно так же

Код: Выделить всё

#define NTP_FEATURE

void setup() {

  #ifdef NTP_FEATURE
    ntpInit();
  #endif
  timeInit();
NTP_FEATURE вверху файла объявлено, но стартует timeInit()

я в коде вообще ничего не менял кроме IP адреса ардуины
Ответить