áááºá¹ááá¬áá« Habrá
áá¬áá® ááá¯á·ááá¯áẠááá¯ážáá±áááá¬áááᯠáááºáá°áá° á¡áá»á¬ážá¡ááŒá¬ážááẠáá¯ááºááá¯ážááŸá¯ááœáẠáá±áá®ááᯠááááºážáá»á¯ááºáá¬ážáá±á¬ áá¬áá® ááá¯á·ááá¯áẠá¡áá¯ááŒá°áá¬áá®ááá¯ááá¯ááá¯ááẠááŒááºáá°ážááŒáá±áááºá áá«á á¡áááºážá¡áááºááŒá±áááºá ââáá¬ááá¯á·áá²ááá¯áá±á¬á· áááºá áá¬áá®ááᯠá
á¬ážááœá²áá±á«áºáááºááá¯á·áá²ááá¯ááŒá®áž ááá¡ááŒá¬ááŸá¬áá±á¬á· á¡áá»áááºá¡ááá¡áá»ááᯠá¡ááá¯á¡áá»á±á¬ááºáá»áááºááŸááá±ážáá«áááá·áºáááºá

áááºážááẠáááºááá¯á·á¡áá¯ááºáá¯ááºáááºááᯠá¡ááŒá±ááŸá¬ááŒá®áž Python ááœáẠáá¯ááºáá«áá
áºáá¯ááᯠáá±ážááá¯ááºááŒáá«á
áá¯á·á
ááá°áá®áá±á¬ á¡áá»áááºáááºáá°ááŒá¯ááŒááºážá
áá
áºáá»á¬áž ááŸááá«áááºá á¥áá±á¬áááœáẠá¡áá»á±á¬áºááŒá¬ážáá¯á¶ážááŸá¬ áá»á¬áááºá
áá
áºááŒá
áºáááºá áá»áááºááŸá¬ ááá¯ááºááá¯ááºá
áá
áºááŸááááºá US ááŸá¬ á
áá
áºáá
áºáá¯ááŸááá«áááºá , áá±á¬áẠ... ááŒá®ážáá±á¬á·á áááºážáá±á¬ááºá áá¬ááºáááºážááẠáá¯ááŸá¬ážááŸáá·áº á¡áááºáá®ážáá»ááºážááá¯ááºáá¶áá»á¬ážááŸá á¥áá±á¬ááá
áºá
áááºáá
áºááá¯ááºážááŸá á¡áá»áá¯á·áá±áá¬áá»á¬ážááœáẠá§áá·áºáá¶áááºá¡ááœáẠá¡áááºááá¯ááºáá¯á¶ážááŸáá·áº áááºááŸááºážáá®ááá¯ááºáá¯á¶ážááŒá
áºááá·áº DCF77 á¡ááŒá±á¬ááºáž (á¡ááŸá±á·áá»á¬ážááŸáá±ááá¯ááºáá°áá»á¬ážááœáẠááá·áºáá»ááºáááºá¡ááŒááºááŸáááá¯ááºáááºá ááá¯á·áá±á¬áº áááºážááá¯á·áááºáá¶ááá¯ááºááẠáá»ááẠsignal ááá¯ááœá²ááŒááºážá
áááºááŒá¬áá«á)
á¡á±á¬ááºááœááºáá±ážáá¬ážáá±á¬á¡á¬ážáá¯á¶ážááẠDCF77 á¡ááŒá±á¬ááºážááŒá áºáááºá
á¡áá»ááºááŒáááºáá¶ááŒááºážá
DCF77 ááẠ77.5 kHz ááŒáááºááŸá¯ááºážááŒáá·áº áá¯ááºáá±á¬ááºáá±áá±á¬ ááŸááºáá»á¬ážáá±á¬ááŸáá¯ááºážáá°áá¬áá¯á¶áá
áºáá¯ááŒá
áºááŒá®áž amplitude modulation ááœáẠá¡áá»ááºááŒááŸá¯áá»á¬ážááᯠáá¯ááºááœáŸáá·áºáááºá 50KW áá°áá¬ááẠFrankfurt á០25 áá®ááá¯áá®áá¬á¡ááœá¬ááœááºáááºááŸáááŒá®áž áááºážááẠ1959 áá¯ááŸá
áºááœááºá
áááºáááºáááºáá²á·ááŒá®áž 1973 áá¯ááŸá
áºááœááºáááºá
áœá²á¡áá»ááºá¡áááºáá»á¬ážááá¯á¡áá»áááºá¡ááá¡áá»ááœááºááá·áºááœááºážáá²á·áááºá ááŸáá¯ááºážá¡áá»á¬áž 77 KHz ááŸááá±á¬ ááŸáá¯ááºážá¡áá»á¬ážááẠá¡ááœááºááŸááºáááºá ááá¯á·ááŒá±á¬áá·áº á¡ááºáááºáá¬á¡ááœááºá á¡ááá¯ááºážá¡áá¬ááẠá¡ááœááºááá·áºáá»á±á¬áºááẠ(Wikipedia á០áá¬ááºáá¯á¶)á

ááá¯áá²á·ááá¯á·áá±á¬ á¡ááºáááºáá¬ááŸáá·áº áá«áá«ááá·áºááœááºážááŸá¯ááá¯á·ááŒáá·áº á§áá·áºáá¶á§áááá¬ááẠá¥áá±á¬áá áá®áá¬áá¯á
áºá áá°áááááºážááŸáá·áº áá¯ááŸá¬ážááá¯ááºáá¶á áá
áºá
áááºáá
áºááá¯ááºážá¡á¬ážáá¯á¶ážáá®ážáá«ážááᯠááœáŸááºážááŒá¯á¶áá¬ážáááºá

áááºáá°áááᯠá¡áá»ááºááŒááŸá¯ááᯠááŸááºáááºážáááºááá¯ááºáááºá áá«ááá¯áá¯ááºááá¯á·á á¡áœááºááá¯ááºážáááºáá¶áá°áá¶ááœá¬ážáá«á á¡á²áá®ááŸá¬ ááŒáááºááŸá¯ááºáž 76.5KHz áá²á· USB áá±á¬áºáá»á°áá¬ááᯠááœá±ážáá«á áá¯á¶áá
áºáá¯á¶ááẠá€áá²á·ááá¯á· ááœáá·áºáá±ááá·áºáááº-

á¡á²áá®ááŸá¬ áá±á«ááºážáá¯ááºááá¯ááºááᯠááŸáááºááŒá®áž á¡ááá¯ááºážáá
áºááá¯ááºážááᯠáááá
áºáá»á¬ážá
áœá¬ááŒá¬á¡á±á¬áẠááŸááºáááºážáááºáá«áááºá áá¯ááºáá«áááºá ááá·áºááŸá¬ 77.5KHz ááŒáááºááŸá¯ááºážááᯠááŸááºáááºážáááºááá¯ááºáá²á· âá¡á
á
áºá¡ááŸááºâ áááºáá¶áá°ááŸááááºááá¯ááẠá¡á²áá«ááᯠáááºáá¯á¶ážááá¯ááºáá«áááºá
áá¯ááºáá«áááºá á¡ááºáá¬áááºááŸáá áºááá·áº áá±áá®ááá¯á¡áá»áááºá¡áá»ááºááŒááŸá¯áá»á¬ážááᯠáááºáá¶áááŸáááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠá¡ááŸááºááááºáááá»áá±á¬á¡áá»áááºááᯠáááŸááááá·áºáááºááá¯ááºáá« - á¡áá»ááºááŒááŸá¯ááᯠááŸá±á¬áá·áºááŸá±ážá áœá¬ááŒáá·áº áá¯ááºááœáŸáá·áºáá«áááºá ááá¯á·áá±á¬áºáá»áœááºá¯ááºááá¯á·ááááºážááá¯ááºááŸá¬ signal áááœá²á·á ááºážáá¯á¶ááá¯áá¬ážáááºáááºáá¬ááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áºá¡ááºáá¬áááºááŸááºáááºážáááºááŒááºážáááºáá¯á¶áá±á¬ááºáááºáááºááá¯ááá¯áááºá áááºááœá±á·ááááœááºá áááºáá¶ááŒááºážááŸáá·áº á¡áá¶ááŸááºááŒááºážá¡ááœáẠá¡áá°ážááŒá¯á ááºáá á¹á ááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒáááºá áááºážááá¯á·ááᯠá¡á±á¬ááºááœáẠááœá±ážááœá±ážáá«áááºá
áá®áá±á¬á· á¡áá¶ááœááºážáá¬ááᯠáááºáá¶áááŸáááŒá®á á¡á²áá«ááᯠá áááºáá¯ááºáá±á¬ááºááá¯ááºááŒáá¡á±á¬ááºá
Signal Decoding
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()
áá¯á¶ááŸáẠamplitude modulation ááᯠáá»áœááºá¯ááºááá¯á·ááŒááºááááº-

á
áá¬ážááŸááºááᯠááá¯ážááŸááºážá
á±áááºá Hilbert á¡ááœááºááŒá±á¬ááºážááᯠá¡áá¯á¶ážááŒá¯á á¡áá»ááºááŒá
á¬á¡áááºááᯠáá°ááŒáá«á
áá¯á·á
analytic_signal = signal.hilbert(data)
A = np.abs(analytic_signal)
plt.plot(A[:100000])
áá»á²á·áá¬ážáá±á¬ááááº-

low-pass filter ááᯠá¡áá¯á¶ážááŒá¯á áá°áá¶áá¶áá¯ááºááœáŸááºááŸá¯áá»á¬ážááᯠáá»á±á¬ááœá±á·á
áœá¬ áááºááŸá¬ážááŒá®áž áá
áºáá»áááºáááºážááœáẠááœá²ááŒááºážá
áááºááŒá¬ááŸá¯á¡ááœáẠáá±á¬ááºááá¯ááºážááœáẠá¡áá¯á¶ážáááºááá·áº áá»ááºážáá»áŸáááºááá¯ážááᯠááœááºáá»ááºááŒáá«á
áá¯á·á
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
áááẠ(á¡áá«áá±á¬ááºáá»ááºáž)- ááœá²ááŒááºážá
áááºááŒá¬ááẠá¡ááœááºááœááºáá°áá±á¬ á
áá¯áááºážááŸáá¯ááºážáá®ážáá«ážáá
áºáá¯á

ááá¯ááºážááŒá¬ážááŒááºážá
ááááŠážá
áœá¬ááẠbit sequence ááá¯ááá°áááºááá¯á¡ááºáááºá á¡áá»ááºááŒááœá²á·á
ááºážáá¯á¶ááá¯ááºááá¯ááºá á¡ááœááºááá¯ážááŸááºážáá«áááºá

áá²áá»áá¯ážá
á¯á¶ááᯠáá¯áááááŒá¬ážáá¬áá¡ááŒá
Ạááá¯ááºážááŒá¬ážáá¬ážáááºá áá²áá»áá¯ážá
á¯á¶ááŒá¬ážá¡ááœá¬á¡áá±ážááẠ0.1s (ááá¯ááá¯áááºááŸá¬ ááœá±ážáá¯ááºááŸá¯ááºážáá¡ááŸááºááŸá¬ 0.9s) ááŒá
áºáá«áá á¡ááœá¬á¡áá±ážááẠ0s (ááá¯ááá¯áááºááŸá¬ á¡áá»á¬ážááẠ0.2s) ááŒá
áºáá»áŸáẠâ0.8â ááᯠááá·áºáá«á áááá
áºááá¯ááºážáá¡áá¯á¶ážááᯠ"ááŸááº" ááœá±ážáá¯ááºááŸá¯ááºážá 1 á
áá¹ááá·áºááŒá¬á áá
áºá¡á
á®á¡á
á¥áºááẠáá¯áááá¯á· ááŒááºáááºáááºááŸááºáá¬ážááŒá®áž ááŒáá·áºááœááºážááŸá¯ áááºáá¶á
áááºáááºá
á¡áááºáá«á¡áá»ááºááẠ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
ááááºá¡áá±ááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠbits á sequence ááá¯áááŸááááºá áá»áœááºá¯ááºááá¯á·áá¥ááá¬ááœáẠááŸá áºá áá¹ááá·áºááŒá¬ááẠá€áá²á·ááá¯á·ááŒá áºáá±áááº-
0011110110111000001011000001010000100110010101100010011000
0001111100110110001010100001010000100110010101100010011000
á áá¬ážáá ááºá á¡áá»ááºááŒááœáẠáá±áᬠ"áá¯áááá¡ááœáŸá¬" áááºáž áá«áááºáááºááŸá¬ á áááºáááºá á¬ážá áá¬áá±á¬ááºážáá«áááºá bit sequence ááᯠá¡áá¯á¶ážááŒá¯ááááºáž áá¯ááºáá¯ááºáá¬ážáá«áááºá . áá®á¡áá¯áá®á¡áá áááºážááẠá¡á¬ážáá»á±á¬á·áá±á¬á¡áá»ááºááŒááá·áºááá á¹á ááœááºááẠááá¯ááá¯ááá¯ááºáá¬áá±á¬áá¯ááºááœá²ááŒááºážááᯠáá±ážááá·áºáááºá
áá»áœááºá¯ááºááá¯á·ááá±á¬ááºáá¯á¶ážá¡ááá·áº- á¡ááŸááºááááºáá±áá¬ááá°ááŒááºážá áá
áºáá»á¬ážááᯠáá
áºá
áá¹ááá·áºáá»áŸáẠáá
áºááŒááẠááá¯á·ááœáŸááºáááºá ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááœáẠá¡áá»ááºá¡áááºáá»á¬ážá
áœá¬ááᯠáá¯ááºááŸááºáá¬ážáá±á¬ á
á¯á
á¯áá±á«ááºáž 59 bits ááŸááááºá

á¡ááá¯ááºážáá»á¬ážááᯠáá±á¬áºááŒáá¬ážáá«áááºá ááŒá®ážáá±á¬á· áá°ááá¯á· áá±á¬áºáá±á¬áº á
ááºá
á¯áááºá ááááá±ážá
áá
áºáá»á¬ážááŸáá·áº á¡áááºáááºáá¬ááœááºáá±ážá¡ááœáẠáááºážááá¯á·ááᯠá¡áá¯á¶ážááŒá¯ááẠá¡á
á®á¡á
ááºáá»á¬ážááŸááá±á¬áºáááºáž ááá 15 bit ááᯠá¡áá¯á¶ážáááŒá¯áá«á Bit A1 ááẠáá±á¬ááºáá¬áá®ááœáẠáá¬áá®ááẠáá±á·á¡áááºážáá±á¬áẠáá»áœá±áá¬áá»áááºááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáááºááŒá
áºááŒá±á¬ááºáž ááœáŸááºááŒáááºá Bit A2 ááẠáá±á¬ááºáááºáá
áºáá¯ááᯠáá±á¬áºááŒáááºá ááá«ááá¶ááœáẠááá¹áá¬áááŸáá·áºáááºááŸá¯á¡á á¡áá»áááºááá¯áá»áááºááŸáááẠá¡áá¯á¶ážááŒá¯áááºá áá»ááºááŸááá±á¬ bit áá»á¬ážááẠáá¬áá®á áááá
áºá á
áá¹ááá·áºááŸáá·áº áááºá
áœá²ááá¯á·ááᯠáá¯ááºáá¯ááºáá¬ážáááºá

ááá¯ááºááá¯ááºá
ááºážáááºááá¯áá°áá»á¬ážá¡ááœááºá áá¯ááºáá¯ááºááᯠspoiler á¡á±á¬ááºááœááºáá±ážáá¬ážáááºá
á¡áááºážá¡ááŒá
áº
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)
áááá¯ááááºááᯠrun áá±á¬á¡áá«ááœááºá á€áá²á·ááá¯á·áá±á¬ output ááá¯ááœá±á·áááá·áºáááºá
0011110110111000001011000001010000100110010101100010011000
Tuesday, 26.03.19, 21:41
0001111100110110001010100001010000100110010101100010011000
Tuesday, 26.03.19, 21:42
á¡ááŸááºáá±á¬á· áá«ááœá±á¡á¬ážáá¯á¶ážá ááŸá±á¬áºááá¬áá²á ááá¯á áá áºá á¡á¬ážáá¬áá»ááºááŸá¬ áá¯ááºááœá²ááŒááºážááẠá¡ááœááºááá¯ážááŸááºážááŒá®áž á¡ááá¯ážááŸááºážáá¯á¶áž ááá¯ááºáááá¯ááœááºáááá¯áá¬ááá¯ááẠáááºááá·áºáá±áá¬ááœááºáááᯠáá¯ááºáá±á¬ááºááá¯ááºááẠá áá»áœááºá¯ááºááá¯á·ááẠáá²áá»áá¯ážá á¯á¶áá¡ááŸááºááᯠááá¯ážááá¯ážááŸááºážááŸááºážáá±ááœááºááŒá®áž 60 bits á á¯áá±á¬ááºážáᬠáááá áºááá¯ááºážáá¡áá¯á¶ážááœáẠá¡áá»áááºá¡ááá¡áá»ááá¯áááŸááááºá á¡áá»áááºáááºáá°ááŒá¯ááŒááºážá á¡ááŒá¬ážáááºážáááºážáá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á (á¥ááᬠGPSá ááá¯á·ááá¯áẠá¡ááºáá¬áááºááᯠáá¯áá¬ážáááẠáá¬ážááŒá áºáá¬ážáá«áááº-)á ááá¯áá²á·ááá¯á·áá±á¬ áá±áá®ááᯠáááºáá°ááŒá¯ááŒááºážá¡ááœáẠáá»áŸááºá á áºáá¬ááºá¡á¬áž áá¯á¶ážááá®ážáá«áž ááá¯á¡ááºááẠ- á¥ááá¬á áá¯á¶ááŸáẠá¡áááºáá¯á¶áž ááá¯ážáá±áááá¬ááá áºáá¯ááẠAA áááºááá® á áá¯á¶ážááŒáá·áº áá áºááŸá áºááá·áº á¡áá¯ááºáá¯ááºáá«áááºá ááá¯á·ááŒá±á¬áá·áº áááºáááºáá¬áá®áá»á¬ážáááºáá»áŸáẠáá¶áá¶áá¬áá®áá»á¬áž ááá¯á·ááá¯áẠáááºážáá±ážáá°áá¬áá¯á¶áá¬áá®áá»á¬ážááᯠáá±á¬áºááŒááŒááºážáááŒá¯áá² áá±áá®ááá¯áá áºáááºáááºážááŒá áºá¡á±á¬ááºááŒá¯áá¯ááºáá¬ážáááºá
DCF á á¡áááºááŒá±ááŸá¯ááŸáá·áº ááá¯ážááŸááºážááŸá¯ááẠDIY áá«ááá¬á¡áá¯ážáá»á¬ážááᯠááœá²áá±á¬ááºáá«áááºá $10-20 ááŒáá·áº Arduino ááá¯á·ááá¯áẠá¡ááŒá¬ážáá±á¬ controller ááŸáá·áº áá»áááºáááºááá¯ááºááá·áº á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ receiver ááŸáá·áº TTL output áá«ááŸááá±á¬ á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ á¡ááºáááºáᬠmodule ááᯠáááºáááºááá¯ááºáááºá

Arduino á¡ááœáẠáá±ážáá¬ážááŒá®ážáá¬ážáá«á . ááá¯á·áá±á¬áºá áááºááẠmicrocontroller ááœáẠáá¬áá²áá¯ááºáá¯áẠáá¬áá® ááá¯á·ááá¯áẠááá¯ážáá±áááá¬ááá
áºáá¯ááŸáá·áº á¡áá¯á¶ážáááºááŒá±á¬ááºážááᯠááááŸááá¬ážááŒá®ážááŒá
áºáááºá ááá¯ááá¯á·áá±á¬áááááá¬ááŒáá·áºá áááºááẠá§áá·áºáá¶á§áááá¬ááœáẠááŸááá±ááá·áºá¡ááœáẠá¡áá»áááºá¡ááá¡áá»áááŸááááºááŸá¬ á¡ááŸááºááááºááœááºáá°áá«áááºá áá±á¬ááºážááŒá®á áááºááẠááá·áºáá¬áá®áá±á«áºááœáẠâAtomic Clockâ áá°áá±á¬ ááá¹áááºážááŒá¬ážááᯠááœá²áá¬ážááá¯ááºááŒá®áž áá
áºáá»áááºáááºážááœáẠá
ááºáá
á¹á
ááºážááẠá¡ááºáááºáá¬áá®ááᯠá¡áá¯á¶ážááŒá¯á á¡ááŸááºáááẠáá
áºááŒáá¯ááºááẠáá¯ááºáá±á¬ááºááŒá±á¬ááºáž áá°ááá¯ááºážá¡á¬áž ááŸááºážááŒáá«á
ááá¹áááŸááá°áá»á¬ážááẠáá±áá®ááá¯ááᯠáááºáá°ááŒá¯ááŒááºážááŒáá·áº ááá¹ááá¬ážá¡áá áºááᯠááá·áºááœááºážááŒááºážááŒáá·áº áááºážááá¯á·á á¡ááœá¬ážáá¬áá®áá±á¬ááºážááá¯ááẠá¡ááá·áºááŒáŸáá·áºááá¯ááºáááº-

áá±á¬á·áá»ááºá
áá¬ážáá¯á¶áž âáá±áá®ááᯠááááºážáá»á¯ááºáá¬ážáá±á¬ ááŸá¯ááºááŸá¬ážááŸá¯â ááᯠá¡áá¯á¶ážááŒá¯á ebay ááœáẠáá
áºáᯠááœá±á·ááŸáááá¯ááºáááºá
áá±á¬ááºáá¯á¶ážá¡áá±áá²á· áá®á¡áááááºááŒá®ážáá°ááœá±á¡ááœáẠá¡áá¯á¶ážáááºáá²á·áááºážáááºážáá±ážáá áºáá¯áá«á áá®ááá¯áá®áᬠááŸá áºáá±á¬ááºá¡ááœááºážááŸá¬ áá±áá®ááá¯áá¯ááºááœáŸáá·áºá ááºáá áºáá¯á០áááŸááááºáá±á¬áẠááá¯ááºááá¯ááºáááºáá®ážááá¯á· ááœááºáá°áá«áááºá Google Play ááŸá¬ "DCF77 Emulator" ááá¯á·áá±á«áºáá²á· á¡ááºááºáá áºáá¯ááŸáááŒá®áž áá¬ážááŒááºááᯠá¡áá»ááºááŒááŸá¯áá¯ááºáá±ážáá«áááºá á á¬áá±ážáá°á áá¬ážááŒááºááŒáá¯ážááᯠáá¬áá®ááŸá¬áááºááá¯ááºááẠá¡áá»ááºááŒááŸá¯ááᯠáááºážáá°áá±ážáááºááá¯á· ááá¯áá«ááẠ(áá¯á¶ááŸááºáá¬ážááŒááºááœá±á 77 kHz á¡áá»ááºááŒááŸá¯ááᯠááá¯ááºáá±ážááá¯ááºáá¬ááŒá±á¬áá·áº áááºááá¯áá¯ááºáááá² ááœá±ážáááá«áááºá áá«áá±ááá·áº harmonics ááŒá±á¬áá·áº ááŒá áºááá¯ááºáá«áááºá) áá»áœááºáá±á¬á·áºáá¬áá®ááŸá¬... Android áááá¯áááẠá á áá¯á¶ážáá¡áá¯ááºááá¯ááºáá°ážâá¡áá¶áá¯á¶ážááááŸááá°áž (áá«ááŸááá¯áẠáá»áœááºáá±á¬áº áááŒá¬ážááá°ážâáá¬áá²ááŒá áºááŒá Ạ77 kHz áá² :))á áá«áá±ááá·áº áááŒá¬ážáá áºáá±á¬ááºáá±á¬ááºá ááá¯áá±á¬ááºážáá±á¬ááºáž áááºáá®ážááá¯ááºáááá·áºáááºá áá«áá±ááá·áº ááá»áá¯á·áá°ááœá±ááá±á¬á· Arduino áá«ááŸááá¯áẠESP32 ááá¯áá¯á¶ážááŒá®áž á¡ááœááºááá° áááºáá®ážááá¯ááºáá²á· á¡ááŒáá·áºá¡á DCF signal generator ááᯠáááºáá±á¬ááºááŒáá«áááºá

(áááºážááŒá
Ạ)
áá±á¬ááºáá»ááº
DCF á
áá
áºááẠááááºááᯠááá¯ážááŸááºážááŒá®áž á¡áááºááŒá±ááœá¬ážáá«áááºá ááá¯ážááŸááºážááŒá®áž á
á»á±ážáááºáááºáá¬áá¬ááŒáá·áº áááºáá¶áá°áá¡áá°á¡áá®ááŒáá·áºá á§áá·áºáá¶á§áááá¬ááœáẠá¡ááŒá²áááºážááŸáá·áº áá±áá¬ááá¯ááºážááœáẠá¡áá»áááºá¡ááá¡áá»áááá¯ááºáááºá áá
áºáá»á
áºáááºá¡ááœááºáá°ážááŒá±á¬ááºážááŸá¯ááŸáá·áº Internet of Things ááœááºáá»ááºáá±áá±á¬áºáááºážá ááá¯áá²á·ááá¯á·áá±á¬ááá¯ážááŸááºážáá±á¬ááŒá±ááŸááºážáááºážáá»á¬ážááẠá¡áá»áááºááŒá¬ááŒáá·áºá
áœá¬ áá±á¬ááºážááá¯áá±áááá·áºáááºáááºáááºá
source: www.habr.com
