NTP + RTC DS1307

Sekcia určená pre Arduino nadšencov

Moderátor: Moderátori

Používateľov profilový obrázok
termixnator
Pokročilý člen
Pokročilý člen
Príspevky: 806
Dátum registrácie: 18 Jan 2010, 00:00
Bydlisko: PRAHA
Vek: 31
Kontaktovať používateľa:

NTP + RTC DS1307

Príspevok od používateľa termixnator » 13 Júl 2017, 19:12

Ahoj, chtěl bych se zeptat jestli nemá někdo zkušenosti se synchronizací času v DS1307 pomocí NTP serveru. Jdem i o to, že občas budu mít hodiny poblíž WIFI, ale třeba nějakou delší dobu taky ne tak aby se čas vyčítal z DS1307 a pokud nebude v dosahu wifi tak by se hodiny daly nařídit ručně.

s NTP jsem si už hrál a fungovalo to suprově nicméně pokud nebyl server dostupný tak arduino mělo čas dost nepřesný (proto bych tam rád přidal to DS1307 případně i s datem) + by mě celkem zajímalo jak se dá řešit letní a zimní čas aby se vše samo přeřídilo.

Předem díky za rady nebo nasměrování :)
0

peterple
Ultimate člen
Ultimate člen
Príspevky: 2328
Dátum registrácie: 25 Jún 2013, 21:06
Bydlisko: Krajné
Vek: 57
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa peterple » 13 Júl 2017, 21:06

Na tému Arduino a presný čas sa nebudem radšej vyjadrovať. Kedysi som robil hodiny s jednočipom Tesla 8748 a potom ST62T60/65 (nie jedny) a dosahoval som presnosť sekunda za mesiac.

Tak k tej zmene zimný letný čas. Robí sa to poslednú nedeľu v marci a októbri. Takže ak máš k dispozícii dátum je to jednoduché.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.

Používateľov profilový obrázok
sraj
Stály člen
Stály člen
Príspevky: 400
Dátum registrácie: 26 Jún 2009, 00:00
Bydlisko: PP
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa sraj » 13 Júl 2017, 23:51

o dosť presnejší DS3231, letný / zimný riešiť SW ako bolo povedané
0
https://www.meteopp.eu/ MeteoStanica POPRAD - aktuálne údaje , +meteokamerka(test)
Mini Meteostanica Poprad : http://svetelektro.com/Forum/mini-meteo ... 42443.html
TempLogger : http://svetelektro.com/Forum/templogger-t8407.html

lacog
Stály člen
Stály člen
Príspevky: 302
Dátum registrácie: 27 Mar 2007, 00:00

Re: NTP + RTC DS1307

Príspevok od používateľa lacog » 14 Júl 2017, 10:54

Trochu nerozumiem tie vaše odpovede :confused:
S Arduinom som začal včera :lol: takže o tom viem prd - ale čo má s presnosťou Arduino? Veď to načíta čas z RTC. U tej DS1307 by mala presnosť závisieť od presnosti a stabilite kryštálu, nie? Alebo sa mýlim?
A s tým synchronizovaním s NTP mi príde ako logický krok keď sem tam je prístup na internet.
Letný/ zimný čas - možno najjednoduchšie dať do podmienok dátum na najbližších X rokov dopredu kedy zmeniť na letný. Možno sa mýlim a podmienka na výpočet dátumu bude jednoduchá.
0

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2567
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Re: NTP + RTC DS1307

Príspevok od používateľa maskrtnik01 » 14 Júl 2017, 11:36

Dobrý deň,

Áno, výpočet dátumu začiatku a konca letného času je jednoduchý. https://sk.m.wikipedia.org/wiki/Európsky_letný_čas
K tomu RTC modulu, áno, Arduino si prečíta čas z RTC. No potom ho ďalej udržuje vlastnými silami - nevypytuje sa každú sekundu na aktuálny čas. Tu zrejme vzniká nepresnosť, ktorú spomínal peterple.
0

Používateľov profilový obrázok
roboulbricht
Stály člen
Stály člen
Príspevky: 156
Dátum registrácie: 07 Jan 2015, 12:01
Bydlisko: Banská Bystrica
Vek: 54
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa roboulbricht » 14 Júl 2017, 11:53

Nenapísal si, aká presne to je platforma Arduina. Arduino Uno (AVR), alebo keď spomínaš WiFi, či to náhodou nie je ESP8266. Pre každý z nich sa spracovanie NTP času bude mierne líšiť.

Sumár mojich experimentov na danú tému. Nejaké externé stránky
0
Naposledy upravil/-a roboulbricht v 14 Júl 2017, 12:17, upravené celkom 1 krát.

Používateľov profilový obrázok
budvar10
Pokročilý člen
Pokročilý člen
Príspevky: 988
Dátum registrácie: 15 Dec 2014, 10:55
Bydlisko: Košice

Re: NTP + RTC DS1307

Príspevok od používateľa budvar10 » 14 Júl 2017, 12:15

maskrtnik01 napísal:K tomu RTC modulu, áno, Arduino si prečíta čas z RTC. No potom ho ďalej udržuje vlastnými silami - nevypytuje sa každú sekundu na aktuálny čas. Tu zrejme vzniká nepresnosť, ktorú spomínal peterple.
RTC môže posielať impulzy, ktorými je možné budiť timer alebo vyvolať prerušenie. Defaultne má výstup 32768Hz výstup vhodný pre 8 bitový čítač ale dá sa nastaviť napr. na 1Hz, čo je vhodné napr. pre prerušenie. Udržiavanie času je potom už len jednoduchá SW záležitosť.
0

Používateľov profilový obrázok
termixnator
Pokročilý člen
Pokročilý člen
Príspevky: 806
Dátum registrácie: 18 Jan 2010, 00:00
Bydlisko: PRAHA
Vek: 31
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa termixnator » 14 Júl 2017, 16:26

Díky mrknu na ty odkazy :) jinak pro upřesnění bude tam UNO + ESP 07 (UNO kvůli paměti a vstupům a ESP 07 kvůli anténě a wifce) ještě teda nemám prokoumáno jak jak se dá arduino a ESP spojit, ale snad to nebude nějak složité.
0

Používateľov profilový obrázok
termixnator
Pokročilý člen
Pokročilý člen
Príspevky: 806
Dátum registrácie: 18 Jan 2010, 00:00
Bydlisko: PRAHA
Vek: 31
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa termixnator » 14 Júl 2017, 21:31

Ideálně kdyby měl někdo hotový program s DS1307 + ESP 07 co zobrazuje rok, mesic, den, hodiny, minuty, sekundy, ale to bych chtěl asi už moc :( tohle je asi nad mé síly.

S propojením Una a ESP 07 někdo máte zkušenosti? Četl jsem, že je nutný převodník logických hodnot (3,3V pro ESP a 5V pro arduino)
odkaz
0

Používateľov profilový obrázok
roboulbricht
Stály člen
Stály člen
Príspevky: 156
Dátum registrácie: 07 Jan 2015, 12:01
Bydlisko: Banská Bystrica
Vek: 54
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa roboulbricht » 16 Júl 2017, 17:20

ESP8266 a NTP
Nemal som na to veľa času, ale pozliepal som dve demá dokopy. ESP8266 si stiahne čas z NTP servera a konvertuje ho do niekoľkých lokálnych časov. Výstup vyzerá takto.

Kód: Vybrať všetko

sending NTP packet...
packet received, length=48
Seconds since Jan 1 1900 = 3709207125
Unix time = 1500218325
15:18:45 Sun 16 Jul 2017 UTC Universal Coordinated Time
17:18:45 Sun 16 Jul 2017 CEST Bratislava
11:18:45 Sun 16 Jul 2017 EDT New York
01:18:45 Mon 17 Jul 2017 AEST Sydney
Konverziu času robia tie dve knižnice, ktoré som tu zalinkoval v predchádzajúcom príspevku.

https://github.com/RoboUlbricht/arduino ... ntp_client

DS1307
Stoffregen má v dokumentácii svojich knižníc peknú ukážku toho, ako sa synchronizuje čas cez funkciu setSyncProvider. Treba len využiť DS1307RTC a nastaviť ju na synchronizáciu. Na všetko sú tam príklady.

https://www.pjrc.com/teensy/td_libs_Time.html
https://www.pjrc.com/teensy/td_libs_DS1307RTC.html
0

Používateľov profilový obrázok
roboulbricht
Stály člen
Stály člen
Príspevky: 156
Dátum registrácie: 07 Jan 2015, 12:01
Bydlisko: Banská Bystrica
Vek: 54
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa roboulbricht » 18 Júl 2017, 12:30

Tá komunikácia medzi Arduinom A ESP8266 môže byť ešte zaujímavá. Dobré je vypočuť si celú prednášku a najmä na konci sa hovorí o problémoch, ktoré vyplývajú z použitého kryštálu a rôznych napäťových úrovní a pravdepodobne aj chyby v UART implementácii v ESP8266. Tam sa dozvieš o mnohých ani netušených problémoch, na ktoré by si mohol natrafiť.

https://www.youtube.com/watch?v=QDFS-4gk8r0
0

lacog
Stály člen
Stály člen
Príspevky: 302
Dátum registrácie: 27 Mar 2007, 00:00

Re: NTP + RTC DS1307

Príspevok od používateľa lacog » 18 Júl 2017, 15:46

Nemám skúsenosti :wink: - ale prečo radšej nepoužiť ESP32 ?
0

Používateľov profilový obrázok
termixnator
Pokročilý člen
Pokročilý člen
Príspevky: 806
Dátum registrácie: 18 Jan 2010, 00:00
Bydlisko: PRAHA
Vek: 31
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa termixnator » 18 Júl 2017, 17:33

OK tak je to jasné vše pojede na Wemosu D1 a později na ESP
0

Používateľov profilový obrázok
termixnator
Pokročilý člen
Pokročilý člen
Príspevky: 806
Dátum registrácie: 18 Jan 2010, 00:00
Bydlisko: PRAHA
Vek: 31
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa termixnator » 30 Júl 2017, 10:09

Tak RTC s přechodem času letní/zimní a zobrazením dne v týdnu bych měl v tom problém nebyl :)

NTP mi zobrazuje jen hodiny minuty a sekundy, ale i Unix time/Epoch Time? Příkazem GetEpochTime mi vyhazuje číslo 1501368028 v závislosti na čase od roku 19XX v sekundách pokud se nepletu.

V synchronizaci už nevidím problém + změna letního a zimního času v NTP také ne. Jen jsem nenašel žádný využitelný program kam bych vepsal proměnnou s GetEpochTime která by mi vyhodila datum a to ideálně v proměnné měsíc, den a rok ( už mám vše hotové a nechci překopávat celou část s NTP, vím, že některé programy na netu datum vypočítat umějí, ale jsou k nemu potreba obsahle knihovny a celkem slozitej kod) tak by me zajimalo jestli je nejakej jednoduchej program/vzorec pro výpočet (přestupné roky a rozdílné dny v měsíci jsou nad moje síly).
0

T_O_M
Okoloidúci
Okoloidúci
Príspevky: 2
Dátum registrácie: 15 Aug 2017, 21:50

Re: NTP + RTC DS1307

Príspevok od používateľa T_O_M » 15 Aug 2017, 21:56

Jak Vám chodí odezvy z NTP serverů? Používám kód UdpNtpClient z tutorialu, kde požadavek na server je odesílán každých 10s s tím, že na odpověď se čeká 1s. Odpověď ale přijde jak kdy a navíc, když porovnávám výpis na serialmonitoru se synchronizovaným časem v PC, tak je rozdíl cca 45s (samozřejmě + časový posun).
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6203
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: NTP + RTC DS1307

Príspevok od používateľa pocitujlasku » 16 Aug 2017, 08:34

Ty synchronizujes cas kazdych 10 sekund? naco? staci ti max. raz za hodinu, moje hodiny synchronizuju kazdych 12 hodin a to pouzivam vnutorny casovac esp8266.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Používateľov profilový obrázok
roboulbricht
Stály člen
Stály člen
Príspevky: 156
Dátum registrácie: 07 Jan 2015, 12:01
Bydlisko: Banská Bystrica
Vek: 54
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa roboulbricht » 16 Aug 2017, 14:22

T_O_M napísal:Odpověď ale přijde jak kdy ...
Pri UDP nemáš zaručené, že odpoveď dorazí.
0

T_O_M
Okoloidúci
Okoloidúci
Príspevky: 2
Dátum registrácie: 15 Aug 2017, 21:50

Re: NTP + RTC DS1307

Príspevok od používateľa T_O_M » 16 Aug 2017, 22:01

pocitujlasku: to jen na zkoušku, mám tam RTC modul, synchronizace stačí jednou denně

Jinak už to mám vyešeno změnena podmínka if :

Kód: Vybrať všetko

  sendNTPpacket(timeServer); // send an NTP packet to a time server

  // wait to see if a reply is available
  delay(1000);
  if (Udp.parsePacket()) {

...
za while a valí to v pohodě. Odezva cca 4ms:

Kód: Vybrať všetko

  Serial.println("Send NTP packet");
  sendNTPpacket(timeServer); // send an NTP packet to a time server

  SendTime = millis();
  while ( !Udp.parsePacket() );
  ResponseTime = millis()-SendTime;

...
0

Používateľov profilový obrázok
AEdison
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1183
Dátum registrácie: 13 Júl 2009, 00:00
Bydlisko: Drienov
Vek: 28
Kontaktovať používateľa:

Re: NTP + RTC DS1307

Príspevok od používateľa AEdison » 16 Aug 2017, 23:08

Ja by som sa vykašlal na wi-fi, riešenie hesla, signál, dostupnosť a ďalších x problémov stým spojených. Skôr by som sa zameral na pojem "radio controlled clock" alebo inak DCF77. Prijímač je celkom lacný a dekódovanie je jednoduché. Ten prijímač ma dostatočne veľkú anténu, takže zo signálom by nemal byť problém.

Samozrejme že to neodpovedá na tvoje otázky ani to nerieši tvoj problém, ale ber to ako rovnocennú alternatívu.
0

pocitujlasku
Ultimate člen
Ultimate člen
Príspevky: 6203
Dátum registrácie: 20 Júl 2007, 00:00
Vek: 41

Re: NTP + RTC DS1307

Príspevok od používateľa pocitujlasku » 17 Aug 2017, 07:39

AEdison: z cisto praktickeho hladiska, mam wifi modul, ktory je uz pripojeny na wifi, na ktorom potrebujem synchronizovat cas. co je pre mna lepsie. poslat si dotaz na ntp, alebo kupovat dalsi modul, ktory zabera miesto a skusat ho rozchodit?

ja to mam v hlavnom loope, poslem dotaz, nastavim si priznak, ze som poslal a len kontrolujem udpparsepacket. ked dorazi vynulujem premennu a nastavim si cas poslednej synchro. ked nedorazi do nejakeho casu, tak to skusim znova. Je to pre mna efektnejsie, lebo ten delay mi neblokuje hlavny program, a synchro sa robi ako keby na pozadi.
0
Jedním z největších projevů nedůvěry v Boha je hromosvod na kostele.

Napísať odpoveď