DCF77: рдЯрд╛рдЗрдо рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?

рд╣реИрд▓реЛ рд╣реИрдмрд░ред

рд╕рдВрднрд╡рддрдГ рдШрдбрд╝реА рдпрд╛ рдореМрд╕рдо рд╕реНрдЯреЗрд╢рди рдЦрд░реАрджрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдкреИрдХреЗрдЬрд┐рдВрдЧ рдкрд░ рд░реЗрдбрд┐рдпреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдШрдбрд╝реА рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд░рдорд╛рдгреБ рдШрдбрд╝реА рдХрд╛ рд▓реЛрдЧреЛ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдмрд╕ рдШрдбрд╝реА рдХреЛ рдореЗрдЬ рдкрд░ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рдЯреАрдХ рд╕рдордп рдкрд░ рд╕рдорд╛рдпреЛрдЬрд┐рдд рд╣реЛ рдЬрд╛рдПрдЧреАред
DCF77: рдЯрд╛рдЗрдо рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?

рдЖрдЗрдП рдЬрд╛рдиреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╛рдпрдерди рдореЗрдВ рдПрдХ рдбрд┐рдХреЛрдбрд░ рд▓рд┐рдЦреЗрдВред

рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рддреБрд▓реНрдпрдХрд╛рд▓рди рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБ рд╣реИрдВред рдпреВрд░реЛрдк рдореЗрдВ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЬрд░реНрдорди рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдбреАрд╕реАрдПрдл-77, рдЬрд╛рдкрд╛рди рдХрд╛ рдЕрдкрдирд╛ рд╕рд┐рд╕реНрдЯрдо рд╣реИ рдЬреЗ рдЬреЗ рд╡рд╛рдИ, рд╕рдВрдпреБрдХреНрдд рд░рд╛рдЬреНрдп рдЕрдореЗрд░рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдбрдмреНрд▓реНрдпреВрдбрдмреНрд▓реНрдпреВрд╡реАрдмреА, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдЖрдЧреЗ, рдХрд╣рд╛рдиреА DCF77 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧреА, рдЬреЛ рд░реВрд╕ рдФрд░ рдкрдбрд╝реЛрд╕реА рджреЗрд╢реЛрдВ рдХреЗ рдпреВрд░реЛрдкреАрдп рднрд╛рдЧ рдореЗрдВ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рд╕реНрд╡рд╛рдЧрдд рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдФрд░ рд╕реБрд▓рдн рд╣реИ (рд╕реБрджреВрд░ рдкреВрд░реНрд╡ рдХреЗ рдирд┐рд╡рд╛рд╕рд┐рдпреЛрдВ рдХреА рд░рд╛рдп рд╡рд┐рдкрд░реАрдд рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ, рдмрджрд▓реЗ рдореЗрдВ, рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рдЬрд╛рдкрд╛рдиреА рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ;)ред

рдиреАрдЪреЗ рд▓рд┐рдЦреА рд╣рд░ рдмрд╛рдд DCF77 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реЛрдЧреА.

рд╕рд┐рдЧреНрдирд▓ рд░рд┐рд╕реЗрдкреНрд╢рди

DCF77 рдПрдХ рд▓рдВрдмреА рддрд░рдВрдЧ рд╕реНрдЯреЗрд╢рди рд╣реИ рдЬреЛ 77.5 kHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЖрдпрд╛рдо рдореЙрдбреНрдпреВрд▓реЗрд╢рди рдореЗрдВ рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред 50KW рд╕реНрдЯреЗрд╢рди рдлреНрд░реИрдВрдХрдлрд░реНрдЯ рд╕реЗ 25 рдХрд┐рдореА рджреВрд░ рд╕реНрдерд┐рдд рд╣реИ, рдЗрд╕рдХрд╛ рд╕рдВрдЪрд╛рд▓рди 1959 рдореЗрдВ рд╢реБрд░реВ рд╣реБрдЖ рдерд╛, рдФрд░ 1973 рдореЗрдВ рддрд╛рд░реАрдЦ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╕рдЯреАрдХ рд╕рдордп рдореЗрдВ рдЬреЛрдбрд╝ рджреА рдЧрдИ рдереАред 77 KHz рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рддрд░рдВрдЧ рджреИрд░реНрдзреНрдп рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдВрдЯреАрдирд╛ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЖрдпрд╛рдо рднреА рдХрд╛рдлреА рдЕрдЪреНрдЫреЗ рд╣реИрдВ (рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд╕реЗ рдлреЛрдЯреЛ):
DCF77: рдЯрд╛рдЗрдо рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?

рдРрд╕реЗ рдПрдВрдЯреАрдирд╛ рдФрд░ рдкрд╛рд╡рд░ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде, рд░рд┐рд╕реЗрдкреНрд╢рди рдХреНрд╖реЗрддреНрд░ рд▓рдЧрднрдЧ рдкреВрд░реЗ рдпреВрд░реЛрдк, рдмреЗрд▓рд╛рд░реВрд╕, рдпреВрдХреНрд░реЗрди рдФрд░ рд░реВрд╕ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред

DCF77: рдЯрд╛рдЗрдо рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?

рдХреЛрдИ рднреА рд╕рд┐рдЧреНрдирд▓ рд░рд┐рдХреЙрд░реНрдб рдХрд░ рд╕рдХрддрд╛ рд╣реИ. рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдСрдирд▓рд╛рдЗрди рд░рд┐рд╕реАрд╡рд░ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдПрдВ http://websdr.ewi.utwente.nl:8901/, рд╡рд╣рд╛рдВ рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА 76.5KHz рдФрд░ USB рдореЙрдбреНрдпреВрд▓реЗрд╢рди рдЪреБрдиреЗрдВред рдПрдХ рдЫрд╡рд┐ рдЦреБрд▓рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗ:

DCF77: рдЯрд╛рдЗрдо рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?

рд╡рд╣рд╛рдВ рд╣рдо рдбрд╛рдЙрдирд▓реЛрдб рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдорд┐рдирдЯ рд▓рдВрдмрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 77.5KHz рдЖрд╡реГрддреНрддрд┐ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рд░рд┐рд╕реАрд╡рд░ рд╣реИ, рддреЛ рдЖрдк рдЙрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдмреЗрд╢рдХ, рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░реЗрдбрд┐рдпреЛ рд╕рдордп рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ, рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдЯреАрдХ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рд╕рд┐рдЧреНрдирд▓ рджреЗрд░реА рд╕реЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдХреЗрд╡рд▓ рд╕рд┐рдЧреНрдирд▓ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭрдирд╛ рд╣реИ; рдЗрд╕рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдиреЗрдЯ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╣реА рдХрд╛рдлреА рд╣реИред рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдбрд┐рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЙрдирдХреА рдЪрд░реНрдЪрд╛ рдиреАрдЪреЗ рдХреА рдЬрд╛рдПрдЧреАред

рддреЛ, рд╣рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рд╣реЛ рдЧрдИ рд╣реИ, рдЖрдЗрдП рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред

рд╕рд┐рдЧреНрдирд▓ рдбрд┐рдХреЛрдбрд┐рдВрдЧ

рдЖрдЗрдП рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рджреЗрдЦреЗрдВ:

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" рдЬреЛрдбрд╝реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдорд┐рдирдЯ рдХреЗ рдЕрдВрдд рдХреЛ 2s рд▓рдВрдмреА "рд▓рдВрдмреА" рдкрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд┐рдЯ рдЕрдиреБрдХреНрд░рдо рд╢реВрдиреНрдп рдкрд░ рд░реАрд╕реЗрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рднрд░рдирд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред

рдЙрдкрд░реЛрдХреНрдд рдХреЛ 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 рдмрд┐рдЯреНрд╕ рдЬрдорд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд┐рдирдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рд╣рдореЗрдВ рд╕рдЯреАрдХ рд╕рдордп рдорд┐рд▓рддрд╛ рд╣реИред рд╕рдордп рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬреАрдкреАрдПрд╕, рдпрд╛ рднрдЧрд╡рд╛рди рди рдХрд░реЗ, рдЗрдВрдЯрд░рдиреЗрдЯ:) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдРрд╕реЗ рд░реЗрдбрд┐рдпреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд╕реНрддреБрддрдГ рдХреЛрдИ рдмрд┐рдЬрд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рдпрдорд┐рдд рдШрд░реЗрд▓реВ рдореМрд╕рдо рд╕реНрдЯреЗрд╢рди 2 рдПрдП рдмреИрдЯрд░реА рдкрд░ рд▓рдЧрднрдЧ рдПрдХ рд╡рд░реНрд╖ рддрдХ рдЪрд▓рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХрд▓рд╛рдИ рдШрдбрд╝рд┐рдпрд╛рдБ рднреА рд░реЗрдбрд┐рдпреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВ, рджреАрд╡рд╛рд░ рдШрдбрд╝рд┐рдпрд╛рдБ рдпрд╛ рд╕реНрдЯреНрд░реАрдЯ рд╕реНрдЯреЗрд╢рди рдШрдбрд╝рд┐рдпрд╛рдБ рддреЛ рдЫреЛрдбрд╝ рд╣реА рджреЗрдВред

DCF рдХреА рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рд╕рд░рд▓рддрд╛ рднреА DIY рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреА рд╣реИред рдорд╛рддреНрд░ 10-20 рдбреЙрд▓рд░ рдореЗрдВ рдЖрдк рд░реЗрдбреАрдореЗрдб рд░рд┐рд╕реАрд╡рд░ рдФрд░ рдЯреАрдЯреАрдПрд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рд░реЗрдбреАрдореЗрдб рдПрдВрдЯреАрдирд╛ рдореЙрдбреНрдпреВрд▓ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ Arduino рдпрд╛ рдЕрдиреНрдп рдХрдВрдЯреНрд░реЛрд▓рд░ рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
DCF77: рдЯрд╛рдЗрдо рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?

Arduino рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп. рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдЪрд╛рд╣реЗ рдЖрдк рдорд╛рдЗрдХреНрд░реЛрдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдХреБрдЫ рднреА рдХрд░реЗрдВ, рдЕрдВрдд рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдШрдбрд╝реА рдпрд╛ рдПрдХ рдореМрд╕рдо рд╕реНрдЯреЗрд╢рди рд╣реА рд╣реЛрдЧрд╛ред рдРрд╕реЗ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде, рд╕рдЯреАрдХ рд╕рдордп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ, рдмрд╢рд░реНрддреЗ, рдХрд┐ рдЖрдк рд░рд┐рд╕реЗрдкреНрд╢рди рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╣реЛрдВред рдЦреИрд░, рдЖрдк рдЕрдкрдиреА рдШрдбрд╝реА рдкрд░ рд╢рд┐рд▓рд╛рд▓реЗрдЦ "рдкрд░рдорд╛рдгреБ рдШрдбрд╝реА" рд▓рдЯрдХрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА рд╕рднреА рдХреЛ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдбрд┐рд╡рд╛рдЗрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рдорд╛рдгреБ рдШрдбрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдЬреЛ рд▓реЛрдЧ рдЪрд╛рд╣реЗрдВ рд╡реЗ рд░реЗрдбрд┐рдпреЛ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рддрдВрддреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдХреЗ рдЕрдкрдиреА рдкреБрд░рд╛рдиреА рджрд╛рджреА рдХреА рдШрдбрд╝реА рдХреЛ рднреА рдЕрдкрдЧреНрд░реЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

DCF77: рдЯрд╛рдЗрдо рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?

рдЖрдк рдЗрд╕реЗ eBay рдкрд░ "рд░реЗрдбрд┐рдпреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдореВрд╡рдореЗрдВрдЯ" рдХреАрд╡рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреАрд╡рди рд╣реИрдХ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕реЗ рдЕрдм рддрдХ рдкрдврд╝рд╛ рд╣реИред рднрд▓реЗ рд╣реА рдЕрдЧрд▓реЗ рдХреБрдЫ рд╣рдЬрд╝рд╛рд░ рдХрд┐рдореА рдореЗрдВ рдПрдХ рднреА рд░реЗрдбрд┐рдпреЛ рд╕рд┐рдЧреНрдирд▓ рдЯреНрд░рд╛рдВрд╕рдореАрдЯрд░ рди рд╣реЛ, рдРрд╕реЗ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╕реНрд╡рдпрдВ рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИред Google Play рдкрд░ "DCF77 рдПрдореБрд▓реЗрдЯрд░" рдирд╛рдордХ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ рдЬреЛ рд╣реЗрдбрдлрд╝реЛрди рдХреЛ рд╕рд┐рдЧреНрдирд▓ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрджрд┐ рдЖрдк рд╣реЗрдбрдлрд╝реЛрди рдХреЗ рддрд╛рд░ рдХреЛ рдШрдбрд╝реА рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╕рд┐рдЧреНрдирд▓ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗ (рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдХреИрд╕реЗ, рдХреНрдпреЛрдВрдХрд┐ рд╕рд╛рдзрд╛рд░рдг рд╣реЗрдбрдлрд╝реЛрди 77KHz рд╕рд┐рдЧреНрдирд▓ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд░рд┐рд╕реЗрдкреНрд╢рди рд╕рдВрднрд╡рддрдГ рд╣рд╛рд░реНрдореЛрдирд┐рдХреНрд╕ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ)ред рдПрдВрдбреНрд░реЙрдЗрдб 9 рдкрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ - рдмрд╕ рдХреЛрдИ рдЖрд╡рд╛рдЬ рдирд╣реАрдВ рдереА (рдпрд╛ рд╢рд╛рдпрдж рдореИрдВрдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рд╕реБрдирд╛ - рдпрд╣ 77KHz рд╣реИ, рдЖрдЦрд┐рд░рдХрд╛рд░ :), рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдХрд┐рд╕реА рдХреА рдХрд┐рд╕реНрдордд рдмреЗрд╣рддрд░ рд╣реЛрдЧреАред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рд▓реЛрдЧ рд╕реНрд╡рдпрдВ рдПрдХ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд DCF рд╕рд┐рдЧреНрдирд▓ рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рд╕рдорд╛рди Arduino рдпрд╛ ESP32 рдкрд░ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ:

DCF77: рдЯрд╛рдЗрдо рд╕рд┐рдЧреНрдирд▓ рдкреНрд░рдгрд╛рд▓реА рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИ?
(рд╕реНрд░реЛрдд sgfantasytoys.wordpress.com/2015/05/13/synchronize-radio-controlled-watch-without-access)

рдирд┐рд╖реНрдХрд░реНрд╖

рдбреАрд╕реАрдПрдл рдкреНрд░рдгрд╛рд▓реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рд╛рдмрд┐рдд рд╣реБрдИред рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рд╕реНрддреЗ рд░рд┐рд╕реАрд╡рд░ рдХреА рдорджрдж рд╕реЗ, рдЖрдк рд╣рдореЗрд╢рд╛ рдФрд░ рд╣рд░ рдЬрдЧрд╣, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рд╕рдЯреАрдХ рд╕рдордп рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдкрдХ рдбрд┐рдЬрд┐рдЯрд▓реАрдХрд░рдг рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рдСрдл рдерд┐рдВрдЧреНрд╕ рдХреЗ рдмрд╛рд╡рдЬреВрдж рднреА, рдРрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдорд╛рдВрдЧ рдореЗрдВ рд░рд╣реЗрдВрдЧреЗред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ