DCF77: የጊዜ ምልክት ስርዓት እንዴት ነው የሚሰራው?

ሰላም ሀብር።

ምናልባትም የእጅ ሰዓት ወይም የአየር ሁኔታ ጣቢያ የሚገዙ ብዙዎች የሬዲዮ ቁጥጥር የተደረገበት ሰዓት ወይም የአቶሚክ ሰዓት አርማ በማሸጊያው ላይ አይተዋል። ይህ በጣም ምቹ ነው, ምክንያቱም ሰዓቱን በጠረጴዛው ላይ ማስቀመጥ ብቻ ያስፈልግዎታል, እና ከጥቂት ጊዜ በኋላ ወዲያውኑ ከትክክለኛው ጊዜ ጋር ይስተካከላል.
DCF77: የጊዜ ምልክት ስርዓት እንዴት ነው የሚሰራው?

እንዴት እንደሚሰራ እንወቅ እና በፓይዘን ውስጥ ዲኮደር እንፃፍ።

የተለያዩ የጊዜ ማመሳሰል ስርዓቶች አሉ። በአውሮፓ ውስጥ በጣም ታዋቂው የጀርመን ስርዓት ነው DCF-77ጃፓን የራሷ የሆነ ሥርዓት አላት። ጄጄ፣ በአሜሪካ ውስጥ ስርዓት አለ። WWVB, እናም ይቀጥላል. በመቀጠል, ታሪኩ ስለ DCF77 ይሆናል, በአውሮፓ ሩሲያ እና በአጎራባች ሀገሮች ውስጥ በአንዳንድ ቦታዎች ለመቀበያ በጣም ተስማሚ እና ተደራሽ ነው (የሩቅ ምስራቅ ነዋሪዎች ተቃራኒ አስተያየት ሊኖራቸው ይችላል, ሆኖም ግን, እነሱ በተራው, ሊቀበሉ ይችላሉ. እና የጃፓን ምልክትን ይተንትኑ;).

ከዚህ በታች የተጻፈው ሁሉ ስለ DCF77 ይሆናል።

የምልክት መቀበያ

DCF77 በ 77.5 kHz ድግግሞሽ የሚሰራ እና በ amplitude modulation ውስጥ ምልክቶችን የሚያስተላልፍ ረጅም የሞገድ ጣቢያ ነው። የ 50KW ጣቢያ ከፍራንክፈርት 25 ኪሜ ርቀት ላይ ይገኛል ፣ በ 1959 ሥራ ጀመረ እና በ 1973 የቀን መረጃ በትክክለኛው ሰዓት ላይ ተጨምሯል። በ 77 kHz ድግግሞሽ ላይ ያለው የሞገድ ርዝመት በጣም ረጅም ነው ፣ ስለሆነም የአንቴና መስክ ልኬቶች እንዲሁ በጣም ጥሩ ናቸው (ፎቶ ከዊኪፔዲያ)
DCF77: የጊዜ ምልክት ስርዓት እንዴት ነው የሚሰራው?

በእንደዚህ አይነት አንቴና እና የኃይል ግብአት, የእንግዳ መቀበያው ቦታ ሁሉንም አውሮፓ, ቤላሩስ, ዩክሬን እና የሩሲያ ክፍልን ይሸፍናል.

DCF77: የጊዜ ምልክት ስርዓት እንዴት ነው የሚሰራው?

ማንኛውም ሰው ምልክት መቅዳት ይችላል። ይህንን ለማድረግ ወደ ኦንላይን መቀበያ ብቻ ይሂዱ http://websdr.ewi.utwente.nl:8901/, ድግግሞሹን 76.5KHz እና የዩኤስቢ ሞጁሉን እዚያ ይምረጡ። ይህን የሚመስል ምስል መከፈት አለበት፡-

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()

የተለመደው የ amplitude modulation እናያለን፡-
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 ዎች ከሆነ (ማለትም የ pulse ርዝመት ራሱ 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 ቢት እንሰበስባለን, እና በእያንዳንዱ ደቂቃ መጨረሻ ላይ ትክክለኛውን ሰዓት እናገኛለን. ከሌሎች የጊዜ ማመሳሰል ዘዴዎች (ጂፒኤስ ፣ ለምሳሌ ፣ ወይም እግዚአብሔር ይከለክላቸው ፣ በይነመረብ :) ጋር ሲነፃፀሩ እንዲህ ዓይነቱ የሬዲዮ ማመሳሰል ምንም ኤሌክትሪክ አያስፈልግም - ለምሳሌ ፣ መደበኛ የቤት የአየር ሁኔታ ጣቢያ በ 2 AA ባትሪዎች ለአንድ ዓመት ያህል ይሰራል። ስለዚህ, የእጅ ሰዓቶች እንኳን በሬዲዮ ማመሳሰል የተሰሩ ናቸው, በእርግጠኝነት, የግድግዳ ሰዓቶችን ወይም የመንገድ ጣቢያ ሰዓቶችን ሳይጠቅሱ.

የDCF ምቾት እና ቀላልነት እንዲሁ DIY አድናቂዎችን ይስባል። ከ10-20 ዶላር ብቻ ዝግጁ የሆነ አንቴና ሞጁል ከተሰራ መቀበያ እና የቲቲኤል ውፅዓት ጋር መግዛት ይችላሉ ይህም ከአርዱዪኖ ወይም ከሌላ መቆጣጠሪያ ጋር ሊገናኝ ይችላል።
DCF77: የጊዜ ምልክት ስርዓት እንዴት ነው የሚሰራው?

ለ Arduino አስቀድሞ ተጽፏል ዝግጁ የሆኑ ቤተ-መጻሕፍት. ነገር ግን, በማይክሮ መቆጣጠሪያ ላይ ምንም አይነት ነገር ቢሰሩ, ሰዓት ወይም የአየር ሁኔታ ጣቢያ እንደሚጨርሱ አስቀድሞ ይታወቃል. በእንደዚህ አይነት መሳሪያ ትክክለኛውን ጊዜ ማግኘት በጣም ቀላል ነው, በእርግጥ እርስዎ በእንግዳ መቀበያ ቦታ ላይ ከሆኑ. ደህና፣ “አቶሚክ ሰዓት” የሚለውን ጽሑፍ በሰዓትዎ ላይ ማንጠልጠል ይችላሉ፣ እና በተመሳሳይ ጊዜ መሣሪያው በአቶሚክ ሰዓት በመጠቀም በትክክል እንደተመሳሰለ ለሁሉም ያብራሩ።

የሚፈልጉ ሁሉ በሬዲዮ ማመሳሰል አዲስ ዘዴን በመትከል የድሮውን የሴት አያታቸውን ሰዓት ማሻሻል ይችላሉ።

DCF77: የጊዜ ምልክት ስርዓት እንዴት ነው የሚሰራው?

“በራዲዮ ቁጥጥር የሚደረግበት እንቅስቃሴ” የሚለውን ቁልፍ ቃላት በመጠቀም በኢቤይ ላይ ማግኘት ይችላሉ።

እና በመጨረሻም፣ ይህን እስካሁን ላነበቡት የህይወት ጠለፋ። በሚቀጥሉት ሁለት ሺህ ኪ.ሜ ውስጥ አንድ የሬዲዮ ምልክት አስተላላፊ ባይኖርም, እንደዚህ አይነት ምልክት እራስዎ ማመንጨት አስቸጋሪ አይደለም. በጎግል ፕሌይ ላይ “DCF77 Emulator” የሚባል ፕሮግራም አለ ይህም ምልክቱን ወደ የጆሮ ማዳመጫዎች የሚያወጣ ነው። እንደ ደራሲው ከሆነ የጆሮ ማዳመጫውን ሽቦ በሰዓቱ ላይ ካጠመዱ ምልክቱን ያነሳሉ (በጣም አስደሳች ነው ፣ ምክንያቱም ተራ የጆሮ ማዳመጫዎች የ 77 kHz ምልክት አይሰጡም ፣ ግን መቀበያው ምናልባት በሃርሞኒክስ ምክንያት ነው)። በ Android 9 ላይ ፣ ፕሮግራሙ ለእኔ ምንም አልሰራም - በቀላሉ ምንም ድምጽ አልነበረም (ወይም ምናልባት አልሰማሁትም - 77 ኪኸ ነው ፣ ከሁሉም በኋላ :) ፣ ግን ምናልባት አንድ ሰው የተሻለ ዕድል ሊኖረው ይችላል። ይሁን እንጂ አንዳንዶች በተመሳሳይ Arduino ወይም ESP32 ላይ ለመሥራት ቀላል የሆነ ሙሉ የዲሲኤፍ ሲግናል ጀነሬተር ያደርጋሉ።

DCF77: የጊዜ ምልክት ስርዓት እንዴት ነው የሚሰራው?
(ምንጭ sgfantasytoys.wordpress.com/2015/05/13/የራዲዮ-ቁጥጥር-የሆነ-ሰዓት-ያለ መዳረሻ)

መደምደሚያ

የዲሲኤፍ ስርዓት በጣም ቀላል እና ምቹ ሆኖ ተገኝቷል። በቀላል እና በርካሽ መቀበያ በመታገዝ ትክክለኛውን ጊዜ ሁል ጊዜ እና በሁሉም ቦታ ማግኘት ይችላሉ ፣ በእርግጥ በእንግዳ መቀበያው ውስጥ። ምንም እንኳን የተስፋፋው ዲጂታላይዜሽን እና የነገሮች በይነመረብ ቢሆንም እንኳን እንደዚህ ያሉ ቀላል መፍትሄዎች ለረጅም ጊዜ የሚፈለጉ ይመስላል።

ምንጭ: hab.com

አስተያየት ያክሉ