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

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

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

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

рд╡рд╣рд╛рдВ рд╣рдо рдбрд╛рдЙрдирд▓реЛрдб рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ рдФрд░ рдХрдИ рдорд┐рдирдЯ рддрдХ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 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()
рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЖрдпрд╛рдо рдореЙрдбреБрд▓рди рджреЗрдЦрддреЗ рд╣реИрдВ:

рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╣рд┐рд▓реНрдмрд░реНрдЯ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рд▓рд┐рдлрд╛рдлрд╛ рд▓реЗрддреЗ рд╣реИрдВ:
analytic_signal = signal.hilbert(data) A = np.abs(analytic_signal) plt.plot(A[:100000])
рдПрдХ рд╡рд┐рд╕реНрддреГрдд рджреГрд╢реНрдп рдореЗрдВ рдкрд░рд┐рдгрд╛рдо:

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

рдкрджрдЪреНрдЫреЗрдж
рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рдЕрдиреБрдХреНрд░рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрдХреЗрдд рд╕рдВрд░рдЪрдирд╛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред

рджрд▓рд╣рди рдХреЛ рджреВрд╕рд░реЗ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рджрд╛рд▓реЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА 0.1 s рд╣реИ (рдЕрд░реНрдерд╛рдд рдирд╛рдбрд╝реА рдХреА рд▓рдВрдмрд╛рдИ 0.9 s рд╣реИ), рддреЛ рдмрд┐рдЯ рдХреНрд░рдо рд╕реЗ "0" рдЬреЛрдбрд╝реЗрдВ, рдпрджрд┐ рджреВрд░реА 0.2 s рд╣реИ (рдпрд╛рдиреА рд▓рдВрдмрд╛рдИ 0.8 s), рддреЛ "1" рдЬреЛрдбрд╝реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдорд┐рдирдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ "рд▓рдВрдмреА" рдкрд▓реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, 2 рдПрд╕ рд▓рдВрдмрд╛, рдмрд┐рдЯ рдЕрдиреБрдХреНрд░рдо рд╢реВрдиреНрдп рдкрд░ рд░реАрд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕реЗ рднрд░рдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
рдКрдкрд░ рдкрд╛рдпрдерди рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред
sig_start, sig_stop = 0, 0 pos = 0 bits_str = "" while pos < cnt - 4: if A[pos] < avg and A[pos+1] > avg:
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдмрд┐рдЯреНрд╕ рдХрд╛ рдПрдХ рдХреНрд░рдо рдорд┐рд▓рддрд╛ рд╣реИ, рджреЛ рдорд┐рдирдЯ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
0011110110111000001011000001010000100110010101100010011000
0001111100110110001010100001010000100110010101100010011000
рд╡реИрд╕реЗ, рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рд╕рд┐рдЧреНрдирд▓ рдореЗрдВ рдбреЗрдЯрд╛ рдХреА "рджреВрд╕рд░реА рдкрд░рдд" рд╣реИред рдмрд┐рдЯ
рдореЙрдбреНрдпреВрд▓реЗрд╢рди рднреА
рдЪрд░рдг рдореЙрдбреНрдпреВрд▓реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛
рд╣реИ ред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рдПрдХ рдХрдордЬреЛрд░ рд╕рдВрдХреЗрдд рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рдЕрдзрд┐рдХ рд╕реНрдерд┐рд░ рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдорд╛рд░рд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг: рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдмрд┐рдЯреНрд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдПрдХ рдмрд╛рд░ рдкреНрд░реЗрд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ 59 рдмрд┐рдЯреНрд╕ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдПрдиреНрдХреЛрдбреЗрдб рд╣реИ:

рдмрд┐рдЯреНрд╕
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ, рдФрд░ рд╡реЗ рдмрд╣реБрдд рдЙрддреНрд╕реБрдХ рд╣реИрдВред рдкрд╣рд▓реЗ 15 рдмрд┐рдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЪреЗрддрд╛рд╡рдиреА рдкреНрд░рдгрд╛рд▓реА
рдФрд░ рдирд╛рдЧрд░рд┐рдХ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдереАред рдмрд┐рдЯ рдП 1 рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдШрдВрдЯреЗ рдореЗрдВ рдШрдбрд╝реА рдХреЛ рджрд┐рди рдХреЗ рд╕рдордп рдХреА рдмрдЪрдд рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдмрд┐рдЯ рдП 2 рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдШрдВрдЯреЗ рдореЗрдВ рдПрдХ
рдЕрддрд┐рд░рд┐рдХреНрдд рджреВрд╕рд░рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрднреА-рдХрднреА рдкреГрдереНрд╡реА рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕рд╣реА рд╕рдордп рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╢реЗрд╖ рдмрд┐рдЯреНрд╕ рдШрдВрдЯреЗ, рдорд┐рдирдЯ рдФрд░ рджрд┐рдирд╛рдВрдХ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рддреЗ рд╣реИрдВред

рдЬреЛ рд▓реЛрдЧ рдЕрдкрдиреЗ рджрдо рдкрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрдбрд┐рдВрдЧ рдХреЛрдб рдХреЛ рд╕реНрдкреЙрдЗрд▓рд░ рдХреЗ рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╕реНрд░реЛрдд рдХреЛрдб 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 AA рдмреИрдЯрд░реА рд╕реЗ рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рддрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рдХрд▓рд╛рдИ рдШрдбрд╝реА рд░реЗрдбрд┐рдпреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рди рдХрд┐ рджреАрд╡рд╛рд░ рдпрд╛ рд╕реНрдЯреНрд░реАрдЯ рд╕реНрдЯреЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред
рдбреАрд╕реАрдПрдл рдХреА рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рд╕рд╛рджрдЧреА рд╣реЛрдордореЗрдб рдЙрддреНрдкрд╛рджреЛрдВ рдХреЗ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреА рд╣реИред рдХреЗрд╡рд▓ $ 10-20 рдХреЗ рд▓рд┐рдП, рдЖрдк рд░реЗрдбреА-рдореЗрдб рд░рд┐рд╕реАрд╡рд░ рдФрд░ рдЯреАрдЯреАрдПрд▓-рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдРрдиреНрдЯреЗрдирд╛ рд╕реЗ рддреИрдпрд╛рд░ рдореЙрдбреНрдпреВрд▓ рдЦрд░реАрдж рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ Arduino рдпрд╛ рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

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

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

(рд╕реНрд░реЛрдд
sgfantasytoys.wordpress.com/2015/05/13/synchronize-radio-controlled-watch-without-access )
рдирд┐рд╖реНрдХрд░реНрд╖
DCF рдкреНрд░рдгрд╛рд▓реА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рд╛рдмрд┐рдд рд╣реБрдИред рдПрдХ рд╕рд░рд▓ рдФрд░ рд╕рд╕реНрддреЗ рд░рд┐рд╕реАрд╡рд░ рдХреА рдорджрдж рд╕реЗ, рдЖрдк рд╕реНрд╡рд╛рдЧрдд рдХреНрд╖реЗрддреНрд░ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдХрднреА рднреА, рдХрд╣реАрдВ рднреА рд╕рдЯреАрдХ рд╕рдордп рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдкрдХ рдбрд┐рдЬрд┐рдЯрд▓рдХрд░рдг рдФрд░ "рдЗрдВрдЯрд░рдиреЗрдЯ рдСрдл рдерд┐рдВрдЧреНрд╕" рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди рдЖрдиреЗ рд╡рд╛рд▓реЗ рд▓рдВрдмреЗ рд╕рдордп рдХреЗ рд▓рд┐рдП рдорд╛рдВрдЧ рдореЗрдВ рд╣реЛрдВрдЧреЗред