DCF77: టైమ్ సిగ్నలింగ్ సిస్టమ్ ఎలా పని చేస్తుంది?

హలో హబ్ర్.

గడియారాన్ని లేదా వాతావరణ స్టేషన్‌ను కొనుగోలు చేసే చాలా మంది రేడియో నియంత్రిత గడియారాన్ని లేదా ప్యాకేజింగ్‌పై అటామిక్ క్లాక్ లోగోను కూడా చూసారు. ఇది చాలా సౌకర్యవంతంగా ఉంటుంది, ఎందుకంటే మీరు గడియారాన్ని టేబుల్‌పై ఉంచాలి మరియు కొంతకాలం తర్వాత అది స్వయంచాలకంగా ఖచ్చితమైన సమయానికి సర్దుబాటు అవుతుంది.
DCF77: టైమ్ సిగ్నలింగ్ సిస్టమ్ ఎలా పని చేస్తుంది?

ఇది ఎలా పనిచేస్తుందో తెలుసుకుందాం మరియు పైథాన్‌లో డీకోడర్‌ను వ్రాస్దాం.

విభిన్న సమయ సమకాలీకరణ వ్యవస్థలు ఉన్నాయి. ఐరోపాలో అత్యంత ప్రజాదరణ పొందినది జర్మన్ వ్యవస్థ DCF-77, జపాన్ దాని స్వంత వ్యవస్థను కలిగి ఉంది JJY, USAలో ఒక వ్యవస్థ ఉంది WWVB, మరియు మొదలైనవి. తరువాత, కథ 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”ని జోడించండి. ప్రతి నిమిషం ముగింపు 2 సెకన్ల పొడవుతో "పొడవైన" పల్స్ ద్వారా సూచించబడుతుంది, బిట్ సీక్వెన్స్ సున్నాకి రీసెట్ చేయబడుతుంది మరియు నింపడం మళ్లీ ప్రారంభమవుతుంది.

పైథాన్‌లో రాయడం సులభం.

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 ఎమ్యులేటర్" అనే ప్రోగ్రామ్ హెడ్‌ఫోన్‌లకు సిగ్నల్‌ను అవుట్‌పుట్ చేస్తుంది. రచయిత ప్రకారం, మీరు వాచ్ చుట్టూ హెడ్‌ఫోన్‌ల వైర్‌ను చుట్టినట్లయితే, వారు సిగ్నల్‌ను తీసుకుంటారు (ఎలా ఆసక్తికరంగా ఉంటుంది, ఎందుకంటే సాధారణ హెడ్‌ఫోన్‌లు 77KHz సిగ్నల్‌ను ఉత్పత్తి చేయవు, కానీ రిసెప్షన్ బహుశా హార్మోనిక్స్ వల్ల కావచ్చు). ఆండ్రాయిడ్ 9 లో, ప్రోగ్రామ్ నాకు అస్సలు పని చేయలేదు - శబ్దం లేదు (లేదా బహుశా నేను వినలేదు - ఇది 77KHz, అన్ని తరువాత :)), కానీ ఎవరైనా మంచి అదృష్టం కలిగి ఉండవచ్చు. అయితే కొందరు తమను తాము పూర్తి స్థాయి DCF సిగ్నల్ జనరేటర్‌గా తయారు చేసుకుంటారు, అదే Arduino లేదా ESP32లో తయారు చేయడం సులభం:

DCF77: టైమ్ సిగ్నలింగ్ సిస్టమ్ ఎలా పని చేస్తుంది?
(ఒక మూలం sgfantasytoys.wordpress.com/2015/05/13/synchronize-radio-controlled-watch-without-access)

తీర్మానం

DCF వ్యవస్థ నిజంగా చాలా సరళంగా మరియు సౌకర్యవంతంగా మారింది. సరళమైన మరియు చౌక రిసీవర్ సహాయంతో, మీరు ఎల్లప్పుడూ మరియు ప్రతిచోటా ఖచ్చితమైన సమయాన్ని పొందవచ్చు, వాస్తవానికి రిసెప్షన్ ప్రాంతంలో. విస్తృతమైన డిజిటలైజేషన్ మరియు ఇంటర్నెట్ ఆఫ్ థింగ్స్ ఉన్నప్పటికీ, ఇటువంటి సాధారణ పరిష్కారాలు చాలా కాలం పాటు డిమాండ్‌లో ఉంటాయని తెలుస్తోంది.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి