DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

Π—Π΄Ρ€Π°Π²ΠΎ Π₯Π°Π±Ρ€.

Π’Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ ΠΌΠ½ΠΎΠ³ΡƒΠΌΠΈΠ½Π° ΠΊΠΎΠΈ ΠΊΡƒΠΏΡƒΠ²Π°Π°Ρ‚ часовник ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚Π΅ΠΎΡ€ΠΎΠ»ΠΎΡˆΠΊΠ° станица Π³ΠΎ Π²ΠΈΠ΄Π΅Π»Π΅ Π»ΠΎΠ³ΠΎΡ‚ΠΎ со Ρ€Π°Π΄ΠΈΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½ часовник ΠΈΠ»ΠΈ Π΄ΡƒΡ€ΠΈ ΠΈ атомски часовник Π½Π° ΠΏΠ°ΠΊΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ. Ова Π΅ ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ, бидСјќи само Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ ставитС часовникот Π½Π° маса, Π° ΠΏΠΎ Π½Π΅ΠΊΠΎΠ΅ Π²Ρ€Π΅ΠΌΠ΅ Ρ‚ΠΎΡ˜ автоматски ќС сС ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΠΈ Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅.
DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

АјдС Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΈ Π΄Π° напишСмС Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ Π²ΠΎ Python.

ΠŸΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ систСми Π·Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ. ΠΠ°Ρ˜ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π΅Π½ Π²ΠΎ Π•Π²Ρ€ΠΎΠΏΠ° Π΅ гСрманскиот систСм DCF-77, Јапонија ΠΈΠΌΠ° свој систСм JСј, Π²ΠΎ БАД постои систСм WWVB, ΠΈ Ρ‚Π°ΠΊΠ° Π½Π°Ρ‚Π°ΠΌΡƒ. Π‘Π»Π΅Π΄Π½ΠΎ, ΠΏΡ€ΠΈΠΊΠ°Π·Π½Π°Ρ‚Π° ќС Π±ΠΈΠ΄Π΅ Π·Π° DCF77, ΠΊΠ°ΠΊΠΎ Π½Π°Ρ˜Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Π° ΠΈ достапна Π·Π° ΠΏΡ€ΠΈΠ΅ΠΌ Π²ΠΎ Π½Π΅ΠΊΠΎΠΈ мСста Π²ΠΎ Свропскиот Π΄Π΅Π» Π½Π° Π ΡƒΡΠΈΡ˜Π° ΠΈ сосСднитС зСмји (ΠΆΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° Π”Π°Π»Π΅Ρ‡Π½ΠΈΠΎΡ‚ Π˜ΡΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠ°Π°Ρ‚ спротивно мислСњС, Π½ΠΎ Ρ‚ΠΈΠ΅, ΠΏΠ°ΠΊ, ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° Π΄ΠΎΠ±ΠΈΡ˜Π°Ρ‚ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ Ρ˜Π°ΠΏΠΎΠ½ΡΠΊΠΈΠΎΡ‚ сигнал;).

Π‘Γ¨ ΡˆΡ‚ΠΎ Π΅ напишано ΠΏΠΎΠ΄ΠΎΠ»Ρƒ ќС Π±ΠΈΠ΄Π΅ Π·Π° DCF77.

ΠŸΡ€ΠΈΠ΅ΠΌ Π½Π° сигнал

DCF77 Π΅ Π΄ΠΎΠ»Π³Π° Π±Ρ€Π°Π½ΠΎΠ²Π° станица која Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π° ΠΎΠ΄ 77.5 kHz ΠΈ прСнСсува сигнали Π²ΠΎ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π°Ρ†ΠΈΡ˜Π°. Π‘Ρ‚Π°Π½ΠΈΡ†Π°Ρ‚Π° ΠΎΠ΄ 50 KW сС Π½Π°ΠΎΡ“Π° Π½Π° 25 ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΎΠ΄ Π€Ρ€Π°Π½ΠΊΡ„ΡƒΡ€Ρ‚, Π·Π°ΠΏΠΎΡ‡Π½Π° со Ρ€Π°Π±ΠΎΡ‚Π° Π²ΠΎ 1959 Π³ΠΎΠ΄ΠΈΠ½Π°, Π° Π²ΠΎ 1973 Π³ΠΎΠ΄ΠΈΠ½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Π΄Π°Ρ‚ΡƒΠΌΠΎΡ‚ Π±Π΅Π° Π΄ΠΎΠ΄Π°Π΄Π΅Π½ΠΈ Π½Π° Ρ‚ΠΎΡ‡Π½ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π‘Ρ€Π°Π½ΠΎΠ²Π°Ρ‚Π° Π΄ΠΎΠ»ΠΆΠΈΠ½Π° Π½Π° Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π° ΠΎΠ΄ 77 KHz Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Π΄ΠΎΠ»Π³Π°, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ Π΄ΠΈΠΌΠ΅Π½Π·ΠΈΠΈΡ‚Π΅ Π½Π° ΠΏΠΎΠ»Π΅Ρ‚ΠΎ Π½Π° Π°Π½Ρ‚Π΅Π½Π°Ρ‚Π° сС исто Ρ‚Π°ΠΊΠ° доста ΠΏΡ€ΠΈΡΡ‚ΠΎΡ˜Π½ΠΈ (Ρ„ΠΎΡ‚ΠΎ ΠΎΠ΄ Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡ˜Π°):
DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

Π‘ΠΎ Ρ‚Π°ΠΊΠ²Π° Π°Π½Ρ‚Π΅Π½Π° ΠΈ Π½Π°ΠΏΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅, ΠΏΡ€ΠΈΠ΅ΠΌΠ½Π°Ρ‚Π° област ΠΎΠΏΡ„Π°ΡœΠ° рСчиси Ρ†Π΅Π»Π° Π•Π²Ρ€ΠΎΠΏΠ°, Π‘Π΅Π»ΠΎΡ€ΡƒΡΠΈΡ˜Π°, Π£ΠΊΡ€Π°ΠΈΠ½Π° ΠΈ Π΄Π΅Π» ΠΎΠ΄ Π ΡƒΡΠΈΡ˜Π°.

DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

БСкој ΠΌΠΎΠΆΠ΅ Π΄Π° сними сигнал. Π—Π° Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΎΠ²Π°, само ΠΎΠ΄Π΅Ρ‚Π΅ Π΄ΠΎ онлајн ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊΠΎΡ‚ http://websdr.ewi.utwente.nl:8901/, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π° 76.5KHz ΠΈ USB ΠΌΠΎΠ΄ΡƒΠ»Π°Ρ†ΠΈΡ˜Π° Ρ‚Π°ΠΌΡƒ. Π’Ρ€Π΅Π±Π° Π΄Π° сС ΠΎΡ‚Π²ΠΎΡ€ΠΈ слика ΡˆΡ‚ΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

Π’Π°ΠΌΡƒ Π³ΠΎ притискамС ΠΊΠΎΠΏΡ‡Π΅Ρ‚ΠΎ Π·Π° ΠΏΡ€Π΅Π·Π΅ΠΌΠ°ΡšΠ΅ ΠΈ снимамС Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ»Π³ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΌΠΈΠ½ΡƒΡ‚ΠΈ. Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, Π°ΠΊΠΎ ΠΈΠΌΠ°Ρ‚Π΅ β€žΠ²ΠΈΡΡ‚ΠΈΠ½ΡΠΊΠΈβ€œ ΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ способСн Π΄Π° снима Ρ„Ρ€Π΅ΠΊΠ²Π΅Π½Ρ†ΠΈΡ˜Π° ΠΎΠ΄ 77.5 KHz, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ користитС Ρ‚ΠΎΠ°.

Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, со ΠΏΡ€ΠΈΠΌΠ°ΡšΠ΅ Ρ€Π°Π΄ΠΈΠΎ-врСмСнски сигнали ΠΏΡ€Π΅ΠΊΡƒ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚, Π½Π΅ΠΌΠ° Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ΠΌΠ΅ навистина Ρ‚ΠΎΡ‡Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ - сигналот сС прСнСсува со Π·Π°Π΄ΠΎΡ†Π½ΡƒΠ²Π°ΡšΠ΅. Но, Π½Π°ΡˆΠ°Ρ‚Π° Ρ†Π΅Π» Π΅ само Π΄Π° ја Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌΠ΅ структурата Π½Π° сигналот; Π·Π° ΠΎΠ²Π°, ΡΠ½ΠΈΠΌΠ°ΡšΠ΅Ρ‚ΠΎ Π½Π° Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ Π΅ повСќС ΠΎΠ΄ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ. Π’ΠΎ Ρ€Π΅Π°Π»Π½ΠΈΠΎΡ‚ ΠΆΠΈΠ²ΠΎΡ‚, сС Ρ€Π°Π·Π±ΠΈΡ€Π°, ΡΠΏΠ΅Ρ†ΠΈΡ˜Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ ΡƒΡ€Π΅Π΄ΠΈ сС користат Π·Π° ΠΏΡ€ΠΈΠΌΠ°ΡšΠ΅ ΠΈ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅; Ρ‚ΠΈΠ΅ ќС Π±ΠΈΠ΄Π°Ρ‚ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ»Ρƒ.

Π—Π½Π°Ρ‡ΠΈ, ја Π΄ΠΎΠ±ΠΈΠ²ΠΌΠ΅ снимката, Π΄Π° ΠΏΠΎΡ‡Π½Π΅ΠΌΠ΅ Π΄Π° ја ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΡƒΠ²Π°ΠΌΠ΅.

Π”Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° сигналот

АјдС Π΄Π° ја Π²Ρ‡ΠΈΡ‚Π°ΠΌΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Python ΠΈ Π΄Π° ја Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π½Π΅Ρ˜Π·ΠΈΠ½Π°Ρ‚Π° структура:

from scipy.io import wavfile
from scipy import signal
import matplotlib.pyplot as plt
import numpy as np

sample_rate, data = wavfile.read("dcf_websdr_2019-03-26T20_25_34Z_76.6kHz.wav")
plt.plot(data[:100000])
plt.show()

Π“Π»Π΅Π΄Π°ΠΌΠ΅ Ρ‚ΠΈΠΏΠΈΡ‡Π½Π° Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π°Ρ†ΠΈΡ˜Π°:
DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

Π—Π° Π΄Π° Π³ΠΎ поСдноставимС Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ, Π΄Π° Π³ΠΎ Π·Π΅ΠΌΠ΅ΠΌΠ΅ ΠΏΠ»ΠΈΠΊΠΎΡ‚ Π½Π° сигналот ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ја Ρ‚Ρ€Π°Π½ΡΡ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π₯ΠΈΠ»Π±Π΅Ρ€Ρ‚:

analytic_signal = signal.hilbert(data)
A = np.abs(analytic_signal)
plt.plot(A[:100000])

Π—Π³ΠΎΠ»Π΅ΠΌΠ΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚:
DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

АјдС Π΄Π° Π³ΠΈ ΠΈΠ·Ρ€Π°ΠΌΠ½ΠΈΠΌΠ΅ СмисиитС Π½Π° Π±ΡƒΡ‡Π°Π²Π° со помош Π½Π° нископропусСн Ρ„ΠΈΠ»Ρ‚Π΅Ρ€, Π° Π²ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° ја прСсмСтамС просСчната врСдност, која ΠΏΠΎΠ΄ΠΎΡ†Π½Π° ќС Π±ΠΈΠ΄Π΅ корисна Π·Π° ΠΏΠ°Ρ€ΡΠΈΡ€Π°ΡšΠ΅.

b, a = signal.butter(2, 20.0/sample_rate)
zi = signal.lfilter_zi(b, a)
A, _ = signal.lfilter(b, a, A, zi=zi*A[0])
avg = (np.amax(A) + np.amin(A))/2

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ (ΠΆΠΎΠ»Ρ‚Π° линија): рСчиси ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚Π΅Π½ Π±Ρ€Π°Π½ сигнал кој Π΅ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ лСсСн Π·Π° Π°Π½Π°Π»ΠΈΠ·Π°.
DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

ΠŸΠ°Ρ€ΡΠΈΡ€Π°ΡšΠ΅

ΠŸΡ€Π²ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја Π΄ΠΎΠ±ΠΈΠ΅Ρ‚Π΅ Π½ΠΈΠ·Π°Ρ‚Π° Π½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΈ. Π‘Π°ΠΌΠ°Ρ‚Π° структура Π½Π° сигналот Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Сдноставна.
DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

Π˜ΠΌΠΏΡƒΠ»ΡΠΈΡ‚Π΅ сС ΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ Π½Π° Π²Ρ‚ΠΎΡ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΈ. Ако Ρ€Π°ΡΡ‚ΠΎΡ˜Π°Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ импулситС Π΅ 0.1 сСкунди (Ρ‚.Π΅. Π΄ΠΎΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° самиот пулс Π΅ 0.9 сСкунди), Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ β€ž0β€œ Π½Π° сСквСнцата Π½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΈ; Π°ΠΊΠΎ Ρ€Π°ΡΡ‚ΠΎΡ˜Π°Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ 0.2 сСкунди (Ρ‚.Π΅. Π΄ΠΎΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π΅ 0.8 сСкунди), Π΄ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ β€ž1β€œ. ΠšΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° сСкоја ΠΌΠΈΠ½ΡƒΡ‚Π° Π΅ ΠΎΠ·Π½Π°Ρ‡Π΅Π½ со β€žΠ΄ΠΎΠ»Π³β€œ пулс, Π΄ΠΎΠ»Π³ 2 сСкунди, Π½ΠΈΠ·Π°Ρ‚Π° Π½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΈ сС рСсСтира Π½Π° Π½ΡƒΠ»Π° ΠΈ ΠΏΠΎΠ»Π½Π΅ΡšΠ΅Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ.

Π“ΠΎΡ€Π΅Π½Π°Π²Π΅Π΄Π΅Π½ΠΎΡ‚ΠΎ Π΅ лСсно Π΄Π° сС напишС Π²ΠΎ Python.

sig_start, sig_stop = 0, 0
pos = 0
bits_str = ""
while pos < cnt - 4:
    if A[pos] < avg and A[pos+1] > avg:
        # Signal begin
        sig_start = pos
    if A[pos] > avg and A[pos+1] < avg:
        # Signal end
        sig_stop = pos

        diff = sig_stop - sig_start
    
        if diff < 0.85*sample_rate:
            bits_str += "1"
        if diff > 0.85*sample_rate and diff < 1.25*sample_rate:
            bits_str += "0"
        if diff > 1.5*sample_rate:
            print(bits_str)
            bits_str = ""

    pos += 1

Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ Π½ΠΈΠ·Π° ΠΎΠ΄ Π±ΠΈΡ‚ΠΎΠ²ΠΈ, Π²ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° Π΄Π²Π΅ сСкунди ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

0011110110111000001011000001010000100110010101100010011000
0001111100110110001010100001010000100110010101100010011000

ΠŸΠ°Ρ‚Π΅ΠΌ, интСрСсно Π΅ ΡˆΡ‚ΠΎ сигналот ΠΈΠΌΠ° ΠΈ β€žΠ²Ρ‚ΠΎΡ€ ΡΠ»ΠΎΡ˜β€œ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. РСдослСдот Π½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π΅ исто Ρ‚Π°ΠΊΠ° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Ρ„Π°Π·Π½Π° ΠΌΠΎΠ΄ΡƒΠ»Π°Ρ†ΠΈΡ˜Π°. Π’ΠΎ Ρ‚Π΅ΠΎΡ€ΠΈΡ˜Π°, ΠΎΠ²Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ посилно Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π΄ΡƒΡ€ΠΈ ΠΈ Π²ΠΎ ΡΠ»ΡƒΡ‡Π°Ρ˜ Π½Π° ослабСн сигнал.

ΠΠ°ΡˆΠΈΠΎΡ‚ послСдСн Ρ‡Π΅ΠΊΠΎΡ€: добивањС Π½Π° вистинскитС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π‘ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ сС прСнСсуваат Сднаш Π²ΠΎ сСкунда, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π²ΠΊΡƒΠΏΠ½ΠΎ 59 Π±ΠΈΡ‚Π°, Π²ΠΎ ΠΊΠΎΠΈ сС ΠΊΠΎΠ΄ΠΈΡ€Π°Π½ΠΈ доста ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ:
DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

Π‘ΠΈΡ‚ΠΎΠ²ΠΈΡ‚Π΅ сС опишани Π²ΠΎ Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΡ˜Π°, ΠΈ Ρ‚ΠΈΠ΅ сС доста Ρ™ΡƒΠ±ΠΎΠΏΠΈΡ‚Π½ΠΈ. ΠŸΡ€Π²ΠΈΡ‚Π΅ 15 Π±ΠΈΡ‚Π° Π½Π΅ сС користат, ΠΈΠ°ΠΊΠΎ сС ΠΏΠ»Π°Π½ΠΈΡ€Π°ΡˆΠ΅ Π΄Π° сС користат Π·Π° систСми Π·Π° ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ ΠΈ Ρ†ΠΈΠ²ΠΈΠ»Π½Π° ΠΎΠ΄Π±Ρ€Π°Π½Π°. Π‘ΠΈΡ‚ΠΎΡ‚ A1 ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° Π΄Π΅ΠΊΠ° часовникот ќС сС смСни Π²ΠΎ Π»Π΅Ρ‚Π½ΠΎ ΡΠΌΠ΅Ρ‚Π°ΡšΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π²ΠΎ слСдниот час. Π‘ΠΈΡ‚ΠΎΡ‚ A2 ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π° Π΄Π΅ΠΊΠ° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ прСскокната сСкунда, кој понСкогаш сС користи Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³ΠΎΠ΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ спорСд Ρ€ΠΎΡ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π—Π΅ΠΌΡ˜Π°Ρ‚Π°. ΠžΡΡ‚Π°Π½Π°Ρ‚ΠΈΡ‚Π΅ Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΊΠΎΠ΄ΠΈΡ€Π°Π°Ρ‚ часови, ΠΌΠΈΠ½ΡƒΡ‚ΠΈ, сСкунди ΠΈ Π΄Π°Ρ‚ΡƒΠΌ.

DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

Π—Π° ΠΎΠ½ΠΈΠ΅ ΠΊΠΎΠΈ сакаат сами Π΄Π° СкспСримСнтираат, ΠΊΠΎΠ΄ΠΎΡ‚ Π·Π° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅ Π΅ Π΄Π°Π΄Π΅Π½ ΠΏΠΎΠ΄ ΡΠΏΠΎΡ˜Π»Π΅Ρ€ΠΎΡ‚.
Π˜Π·Π²ΠΎΡ€

def decode(bits):
    if bits[0] != '0' or bits[20] != '1':
        return
    
    minutes, hours, day_of_month, weekday, month, year = map(convert_block,
                                                             (bits[21:28], bits[29:35], bits[36:42], bits[42:45],
                                                              bits[45:50], bits[50:58]))
    days = ('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')
    print('{dow}, {dom:02}.{mon:02}.{y}, {h:02}:{m:02}'.format(h=hours, m=minutes, dow=days[weekday],
                                                               dom=day_of_month, mon=month, y=year))


def convert_ones(bits):
    return sum(2**i for i, bit in enumerate(bits) if bit == '1')


def convert_tens(bits):
    return 10*convert_ones(bits)


def right_parity(bits, parity_bit):
    num_of_ones = sum(int(bit) for bit in bits)
    return num_of_ones % 2 == int(parity_bit)


def convert_block(bits, parity=False):
    if parity and not right_parity(bits[:-1], bits[-1]):
        return -1
    
    ones = bits[:4]
    tens = bits[4:]
    return convert_tens(tens) + convert_ones(ones)

Кога ќС ја ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°, ќС Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΈΠ·Π»Π΅Π· сличСн Π½Π° овој:

0011110110111000001011000001010000100110010101100010011000
Tuesday, 26.03.19, 21:41
0001111100110110001010100001010000100110010101100010011000
Tuesday, 26.03.19, 21:42

Π’ΡΡƒΡˆΠ½ΠΎΡΡ‚, Ρ‚ΠΎΠ° Π΅ Ρ†Π΅Π»Π°Ρ‚Π° магија. ΠŸΡ€Π΅Π΄Π½ΠΎΡΡ‚Π° Π½Π° Ρ‚Π°ΠΊΠ²ΠΈΠΎΡ‚ систСм Π΅ ΡˆΡ‚ΠΎ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π΅ исклучитСлно Сдноставно ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½Π° сСкој, Π΄ΡƒΡ€ΠΈ ΠΈ Π½Π° Π½Π°Ρ˜Π΅Π΄Π½ΠΎΡΡ‚Π°Π²Π½ΠΈΠΎΡ‚ ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€. Едноставно ја Π±Ρ€ΠΎΠΈΠΌΠ΅ Π΄ΠΎΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° импулситС, Π°ΠΊΡƒΠΌΡƒΠ»ΠΈΡ€Π°ΠΌΠ΅ 60 Π±ΠΈΡ‚Π° ΠΈ Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ ΠΎΠ΄ сСкоја ΠΌΠΈΠ½ΡƒΡ‚Π° Π³ΠΎ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅. Π’ΠΎ спорСдба со Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ (GPS, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ»ΠΈ Π½Π΅ дај Π‘ΠΎΠΆΠ΅, Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ :), Ρ‚Π°ΠΊΠ²Π°Ρ‚Π° Ρ€Π°Π΄ΠΈΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎ Π½Π΅ Π±Π°Ρ€Π° Π΅Π»Π΅ΠΊΡ‚Ρ€ΠΈΡ‡Π½Π° Π΅Π½Π΅Ρ€Π³ΠΈΡ˜Π° - Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ€Π΅Π΄ΠΎΠ²Π½Π° домашна ΠΌΠ΅Ρ‚Π΅ΠΎΡ€ΠΎΠ»ΠΎΡˆΠΊΠ° станица Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΎΠΊΠΎΠ»Ρƒ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° 2 AA Π±Π°Ρ‚Π΅Ρ€ΠΈΠΈ. Π—Π°Ρ‚ΠΎΠ°, Π΄ΡƒΡ€ΠΈ ΠΈ Ρ€Π°Ρ‡Π½ΠΈΡ‚Π΅ часовници сС Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ со Ρ€Π°Π΄ΠΈΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°, Π° Π΄Π° Π½Π΅ Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌΠ΅, сС Ρ€Π°Π·Π±ΠΈΡ€Π°, Π·Π° Ρ•ΠΈΠ΄Π½ΠΈ часовници ΠΈΠ»ΠΈ часовници Π·Π° ΡƒΠ»ΠΈΡ‡Π½ΠΈ станици.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½ΠΎΡΡ‚Π° ΠΈ Сдноставноста Π½Π° DCF, исто Ρ‚Π°ΠΊΠ°, ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΡƒΠ²Π°Π°Ρ‚ Ρ™ΡƒΠ±ΠΈΡ‚Π΅Π»ΠΈ Π½Π° DIY. Π—Π° само 10-20 Π΄ΠΎΠ»Π°Ρ€ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΊΡƒΠΏΠΈΡ‚Π΅ Π³ΠΎΡ‚ΠΎΠ² ΠΌΠΎΠ΄ΡƒΠ» Π·Π° Π°Π½Ρ‚Π΅Π½Π° со Π³ΠΎΡ‚ΠΎΠ² рСсивСр ΠΈ TTL ΠΈΠ·Π»Π΅Π·, кој ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΠΎΠ²Ρ€Π·Π΅ со Arduino ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€.
DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

Π’Π΅ΡœΠ΅ напишано Π·Π° Arduino Π³ΠΎΡ‚ΠΎΠ²ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π‘Π΅ΠΏΠ°ΠΊ, вСќС Π΅ ΠΏΠΎΠ·Π½Π°Ρ‚ΠΎ Π΄Π΅ΠΊΠ° ΡˆΡ‚ΠΎ ΠΈ Π΄Π° ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€, Π·Π°Π²Ρ€ΡˆΡƒΠ²Π°Ρ‚Π΅ ΠΈΠ»ΠΈ со часовник ΠΈΠ»ΠΈ со ΠΌΠ΅Ρ‚Π΅ΠΎΡ€ΠΎΠ»ΠΎΡˆΠΊΠ° станица. Π‘ΠΎ Ρ‚Π°ΠΊΠΎΠ² ΡƒΡ€Π΅Π΄, Π΄Π° сС Π΄ΠΎΠ±ΠΈΠ΅ Ρ‚ΠΎΡ‡Π½ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π΅ навистина лСсно, ΠΏΠΎΠ΄ услов, сС Ρ€Π°Π·Π±ΠΈΡ€Π°, Π΄Π° сС Π½Π°ΠΎΡ“Π°Ρ‚Π΅ Π²ΠΎ просторот Π·Π° ΠΏΡ€ΠΈΠ΅ΠΌ. Па, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ Π·Π°ΠΊΠ°Ρ‡ΠΈΡ‚Π΅ натписот β€žΠΡ‚ΠΎΠΌΡΠΊΠΈ Ρ‡Π°ΡΠΎΠ²Π½ΠΈΠΊβ€œ Π½Π° Π²Π°ΡˆΠΈΠΎΡ‚ часовник ΠΈ Π²ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° ΠΈΠΌ ΠΎΠ±Ρ˜Π°ΡΠ½ΠΈΡ‚Π΅ Π½Π° ситС Π΄Π΅ΠΊΠ° ΡƒΡ€Π΅Π΄ΠΎΡ‚ Π΅ навистина синхронизиран со помош Π½Π° атомски часовник.

ОниС ΠΊΠΎΠΈ сакаат ΠΌΠΎΠΆΠ°Ρ‚ Π΄ΡƒΡ€ΠΈ ΠΈ Π΄Π° Π³ΠΎ Π½Π°Π΄Π³Ρ€Π°Π΄Π°Ρ‚ часовникот Π½Π° ΡΠ²ΠΎΡ˜Π°Ρ‚Π° стара Π±Π°Π±Π° со ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½ΠΎΠ² ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·Π°ΠΌ со Ρ€Π°Π΄ΠΈΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°:

DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°Ρ˜Π΄Π΅Ρ‚Π΅ Π΅Π΄Π΅Π½ Π½Π° eBay ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΈ ΠΊΠ»ΡƒΡ‡Π½ΠΈΡ‚Π΅ Π·Π±ΠΎΡ€ΠΎΠ²ΠΈ β€žΠ Π°Π΄ΠΈΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½ΠΎ Π΄Π²ΠΈΠΆΠ΅ΡšΠ΅β€œ.

И, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π»Π°Ρ˜Ρ„ Ρ…Π°ΠΊ Π·Π° ΠΎΠ½ΠΈΠ΅ ΠΊΠΎΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π»Π΅ Π΄ΠΎ Ρ‚ΡƒΠΊΠ°. Π”ΡƒΡ€ΠΈ ΠΈ Π°ΠΊΠΎ Π½Π΅ΠΌΠ° Π½ΠΈΡ‚Ρƒ Π΅Π΄Π΅Π½ ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚Π΅Π» Π½Π° Ρ€Π°Π΄ΠΈΠΎ сигнал Π²ΠΎ слСднитС Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ илјади ΠΊΠΈΠ»ΠΎΠΌΠ΅Ρ‚Ρ€ΠΈ, Π½Π΅ Π΅ Ρ‚Π΅ΡˆΠΊΠΎ сами Π΄Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚Π΅ Ρ‚Π°ΠΊΠΎΠ² сигнал. ΠŸΠΎΡΡ‚ΠΎΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π½Π° Google Play Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° β€žDCF77 Emulatorβ€œ која Π³ΠΎ Π΅ΠΌΠΈΡ‚ΡƒΠ²Π° сигналот Π΄ΠΎ ΡΠ»ΡƒΡˆΠ°Π»ΠΊΠΈΡ‚Π΅. Π‘ΠΏΠΎΡ€Π΅Π΄ Π°Π²Ρ‚ΠΎΡ€ΠΎΡ‚, Π°ΠΊΠΎ ја Π·Π°Π²ΠΈΡ‚ΠΊΠ°Ρ‚Π΅ ΠΆΠΈΡ†Π°Ρ‚Π° Π½Π° ΡΠ»ΡƒΡˆΠ°Π»ΠΊΠΈΡ‚Π΅ ΠΎΠΊΠΎΠ»Ρƒ часовникот, Ρ‚ΠΈΠ΅ ќС Π³ΠΎ Ρ„Π°Ρ‚Π°Ρ‚ сигналот (интСрСсно Π΅ ΠΊΠ°ΠΊΠΎ, бидСјќи ΠΎΠ±ΠΈΡ‡Π½ΠΈΡ‚Π΅ ΡΠ»ΡƒΡˆΠ°Π»ΠΊΠΈ Π½Π΅ΠΌΠ° Π΄Π° ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄ΡƒΠ²Π°Π°Ρ‚ сигнал ΠΎΠ΄ 77 KHz, Π½ΠΎ ΠΏΡ€ΠΈΠ΅ΠΌΠΎΡ‚ Π²Π΅Ρ€ΠΎΡ˜Π°Ρ‚Π½ΠΎ сС Π΄ΠΎΠ»ΠΆΠΈ Π½Π° Ρ…Π°Ρ€ΠΌΠΎΠ½ΠΈΡ†ΠΈΡ‚Π΅). На Android 9, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π²ΠΎΠΎΠΏΡˆΡ‚ΠΎ Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅ΡˆΠ΅ Π·Π° ΠΌΠ΅Π½Π΅ - Сдноставно нСмашС Π·Π²ΡƒΠΊ (ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ Π³ΠΎ ΡΠ»ΡƒΡˆΠ½Π°Π² - Π½Π° ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° ΠΊΡ€Π°ΠΈΡˆΡ‚Π°Ρ‚Π° Π΅ 77 KHz :), Π½ΠΎ ΠΌΠΎΠΆΠ΅Π±ΠΈ нСкој ќС ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π° ΡΡ€Π΅ΡœΠ°. Π‘Π΅ΠΏΠ°ΠΊ, Π½Π΅ΠΊΠΎΠΈ сС ΠΏΡ€Π°Π²Π°Ρ‚ ΠΏΠΎΠ»Π½ΠΎΠΏΡ€Π°Π²Π΅Π½ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° DCF сигнал, ΡˆΡ‚ΠΎ Π΅ лСсно Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½Π° истиот Arduino ΠΈΠ»ΠΈ ESP32:

DCF77: Како Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° систСмот Π·Π° врСмСнски сигнал?
(ΠΈΠ·Π²ΠΎΡ€ sgfantasytoys.wordpress.com/2015/05/13/synchronize-radio-controlled-watch-without-access)

Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

БистСмот DCF сС ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊΠΎ навистина ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ СдноставСн ΠΈ ΡƒΠ΄ΠΎΠ±Π΅Π½. Π‘ΠΎ помош Π½Π° СдноставСн ΠΈ Π΅Π²Ρ‚ΠΈΠ½ рСсивСр ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΎ ΠΈΠΌΠ°Ρ‚Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΡ‚ΠΎ Π²Ρ€Π΅ΠΌΠ΅ сСкогаш ΠΈ сСкадС, сС Ρ€Π°Π·Π±ΠΈΡ€Π° Π²ΠΎ Ρ€Π΅Ρ†Π΅ΠΏΡ†ΠΈΡ˜Π°Ρ‚Π°. Π‘Π΅ Ρ‡ΠΈΠ½ΠΈ Π΄Π΅ΠΊΠ° ΠΈ ΠΏΠΎΠΊΡ€Π°Ρ˜ ΡˆΠΈΡ€ΠΎΠΊΠΎ распространСтата Π΄ΠΈΠ³ΠΈΡ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ˜Π° ΠΈ Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ΠΎΡ‚ Π½Π° Π½Π΅ΡˆΡ‚Π°Ρ‚Π°, Π²Π°ΠΊΠ²ΠΈΡ‚Π΅ Сдноставни Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ˜Π° ќС Π±ΠΈΠ΄Π°Ρ‚ Π±Π°Ρ€Π°Π½ΠΈ Π΄ΠΎΠ»Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€