DCF77: நேர சமிக்ஞை அமைப்பு எவ்வாறு செயல்படுகிறது?

வணக்கம் ஹப்ர்.

கடிகாரம் அல்லது வானிலை நிலையத்தை வாங்கும் பலர், பேக்கேஜிங்கில் ரேடியோ கன்ட்ரோல்டு கடிகாரம் அல்லது அணு கடிகார சின்னத்தை கூட பார்த்திருக்கலாம். இது மிகவும் வசதியானது, ஏனென்றால் கடிகாரத்தை மேசையில் வைப்பது போதுமானது, சிறிது நேரத்திற்குப் பிறகு அது தானாகவே சரியான நேரத்தை சரிசெய்யும்.
DCF77: நேர சமிக்ஞை அமைப்பு எவ்வாறு செயல்படுகிறது?

இது எவ்வாறு இயங்குகிறது என்பதைக் கண்டுபிடித்து பைத்தானில் ஒரு குறிவிலக்கியை எழுதுவோம்.

வெவ்வேறு நேர ஒத்திசைவு அமைப்புகள் உள்ளன. ஐரோப்பாவில் மிகவும் பிரபலமானது ஜெர்மன் அமைப்பு DCF-77ஜப்பானுக்கு அதன் சொந்த அமைப்பு உள்ளது ஜே.ஜே.ஒய், அமெரிக்காவில் ஒரு அமைப்பு உள்ளது WWVB, மற்றும் பல. மேலும், கதை DCF77 ஐப் பற்றியதாக இருக்கும், இது ரஷ்யாவின் ஐரோப்பிய பகுதி மற்றும் அண்டை நாடுகளின் சில இடங்களில் வரவேற்புக்கு மிகவும் பொருத்தமானது மற்றும் அணுகக்கூடியது (தூர கிழக்கில் வசிப்பவர்கள் எதிர் கருத்தைக் கொண்டிருக்கலாம், இருப்பினும், அவர்கள் இதையொட்டி, முடியும். ஜப்பானிய சமிக்ஞையைப் பெற்று பகுப்பாய்வு செய்யுங்கள்;).

கீழே எழுதப்பட்ட அனைத்தும் DCF77 பற்றி இருக்கும்.

சிக்னல் வரவேற்பு

DCF77 என்பது 77.5KHz வேகத்தில் இயங்கும் மற்றும் AM சிக்னல்களை கடத்தும் ஒரு நீண்ட அலை நிலையமாகும். 50 கிலோவாட் திறன் கொண்ட நிலையம் பிராங்பேர்ட்டிலிருந்து 25 கிமீ தொலைவில் அமைந்துள்ளது, இது 1959 இல் வேலை செய்யத் தொடங்கியது, 1973 இல் தேதி பற்றிய தகவல்கள் சரியான நேரத்தில் சேர்க்கப்பட்டன. 77 kHz அதிர்வெண்ணில் அலைநீளம் மிகப் பெரியது, எனவே ஆண்டெனா புலத்தின் பரிமாணங்களும் மிகவும் ஒழுக்கமானவை (விக்கிபீடியாவிலிருந்து புகைப்படம்):
DCF77: நேர சமிக்ஞை அமைப்பு எவ்வாறு செயல்படுகிறது?

அத்தகைய ஆண்டெனா மற்றும் உள்ளீட்டு சக்தியுடன், வரவேற்பு பகுதி கிட்டத்தட்ட முழு ஐரோப்பா, பெலாரஸ், ​​உக்ரைன் மற்றும் ரஷ்யாவின் ஒரு பகுதியை உள்ளடக்கியது.

DCF77: நேர சமிக்ஞை அமைப்பு எவ்வாறு செயல்படுகிறது?

யார் வேண்டுமானாலும் பதிவு செய்யலாம். இதைச் செய்ய, ஆன்லைன் பெறுநருக்குச் செல்லவும் http://websdr.ewi.utwente.nl:8901/, அங்கு 76.5KHz அதிர்வெண் மற்றும் USB மாடுலேஷனைத் தேர்ந்தெடுக்கவும். ஒரு படம் இதுபோல் தோன்ற வேண்டும்:

DCF77: நேர சமிக்ஞை அமைப்பு எவ்வாறு செயல்படுகிறது?

அதே இடத்தில், நாங்கள் பதிவிறக்க பொத்தானை அழுத்தி, சில நிமிடங்கள் நீளமான ஒரு பகுதியைப் பதிவு செய்கிறோம். நிச்சயமாக, உங்களிடம் 77.5 kHz அதிர்வெண்ணைப் பதிவுசெய்யும் திறன் கொண்ட "உண்மையான" ரிசீவர் இருந்தால், அதைப் பயன்படுத்தலாம்.

நிச்சயமாக, இணையத்தில் துல்லியமான நேர ரேடியோ சிக்னல்களைப் பெறும்போது, ​​​​நாம் உண்மையில் துல்லியமான நேரத்தைப் பெற மாட்டோம் - சமிக்ஞை தாமதத்துடன் அனுப்பப்படுகிறது. ஆனால் எங்கள் குறிக்கோள் சிக்னலின் கட்டமைப்பைப் புரிந்துகொள்வது மட்டுமே, இதற்கு இணைய பதிவு போதுமானது. நிஜ வாழ்க்கையில், நிச்சயமாக, சிறப்பு சாதனங்கள் பெறுவதற்கும் டிகோடிங்கிற்கும் பயன்படுத்தப்படுகின்றன, அவை கீழே விவாதிக்கப்படும்.

எனவே, நாங்கள் பதிவைப் பெற்றோம், அதைச் செயலாக்கத் தொடங்குவோம்.

சிக்னல் டிகோடிங்

பைதான் மூலம் கோப்பை ஏற்றி அதன் கட்டமைப்பைப் பார்ப்போம்:

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 பிட்கள் பயன்படுத்தப்படவில்லை, இருப்பினும் பொது முகவரி மற்றும் சிவில் பாதுகாப்பு அமைப்புகளுக்கு அவற்றைப் பயன்படுத்துவதற்கான திட்டங்கள் இருந்தன. அடுத்த ஒரு மணி நேரத்தில் கடிகாரம் பகல் சேமிப்பு நேரமாக மாறும் என்பதை பிட் ஏ1 குறிக்கிறது. பிட் 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க்கு மட்டுமே, நீங்கள் ஒரு ஆயத்த ஆன்டெனா தொகுதியை ஆயத்த ரிசீவர் மற்றும் ஒரு TTL வெளியீட்டை வாங்கலாம், அது Arduino அல்லது பிற கட்டுப்படுத்தியுடன் இணைக்கப்படலாம்.
DCF77: நேர சமிக்ஞை அமைப்பு எவ்வாறு செயல்படுகிறது?

Arduino க்கு ஏற்கனவே எழுதப்பட்ட மற்றும் ஆயத்த நூலகங்கள். இருப்பினும், மைக்ரோகண்ட்ரோலரில் நீங்கள் எதைச் செய்தாலும், உங்களுக்கு ஒரு கடிகாரம் அல்லது வானிலை நிலையம் கிடைக்கும் என்பது ஏற்கனவே தெரிந்ததே. அத்தகைய சாதனம் மூலம், சரியான நேரத்தைப் பெறுவது மிகவும் எளிதானது, நிச்சயமாக நீங்கள் வரவேற்பு பகுதியில் இல்லாவிட்டால். சரி, நீங்கள் கடிகாரத்தில் "அணு கடிகாரம்" என்ற கல்வெட்டைத் தொங்கவிடலாம், அதே நேரத்தில் ஒரு அணு கடிகாரத்தைப் பயன்படுத்தி சாதனம் உண்மையில் ஒத்திசைக்கப்பட்டுள்ளது என்பதை அனைவருக்கும் விளக்கவும்.

விரும்புவோர் ரேடியோ ஒத்திசைவுடன் ஒரு புதிய பொறிமுறையை நிறுவுவதன் மூலம் பழைய பாட்டியின் கடிகாரத்தை மேம்படுத்தலாம்:

DCF77: நேர சமிக்ஞை அமைப்பு எவ்வாறு செயல்படுகிறது?

"ரேடியோ கட்டுப்படுத்தப்பட்ட இயக்கம்" என்ற முக்கிய வார்த்தைகளைப் பயன்படுத்தி ஈபேயில் ஒன்றைக் காணலாம்.

இறுதியாக, இதுவரை படித்தவர்களுக்கு ஒரு லைஃப் ஹேக். அடுத்த இரண்டு ஆயிரம் கிலோமீட்டர்களில் ஒரு ரேடியோ சிக்னல் டிரான்ஸ்மிட்டர் இல்லாவிட்டாலும், அத்தகைய சமிக்ஞையை நீங்களே உருவாக்குவது எளிது. கூகுள் ப்ளேயில் "DCF77 Emulator" என்று அழைக்கப்படும் ஒரு நிரல் ஹெட்ஃபோன்களுக்கு ஒரு சமிக்ஞையை வெளியிடுகிறது. ஆசிரியரின் கூற்றுப்படி, நீங்கள் ஹெட்ஃபோன் கம்பியை கடிகாரத்தைச் சுற்றிச் சுற்றினால், அவர்கள் சிக்னலைப் பிடிப்பார்கள் (எனக்கு ஆச்சரியமாக இருக்கிறது, ஏனென்றால் சாதாரண ஹெட்ஃபோன்கள் 77KHz சிக்னலைக் கொடுக்காது, ஆனால் வரவேற்பு ஹார்மோனிக்ஸ் காரணமாக இருக்கலாம்). ஆண்ட்ராய்டு 9 இல் நிரல் எனக்கு வேலை செய்யவில்லை - வெறுமனே ஒலி இல்லை (அல்லது நான் அதைக் கேட்கவில்லை - 77KHz, எல்லாவற்றிற்கும் மேலாக :), ஆனால் யாராவது அதிக அதிர்ஷ்டசாலியாக இருக்கலாம். இருப்பினும், சிலர் தங்களை ஒரு முழு அளவிலான DCF சிக்னல் ஜெனரேட்டராக ஆக்கிக் கொள்கிறார்கள், இது அதே Arduino அல்லது ESP32 இல் செய்ய எளிதானது:

DCF77: நேர சமிக்ஞை அமைப்பு எவ்வாறு செயல்படுகிறது?
(மூல sgfantasytoys.wordpress.com/2015/05/13/synchronize-radio-controlled-watch-without-access)

முடிவுக்கு

DCF அமைப்பு மிகவும் எளிமையானதாகவும் வசதியாகவும் மாறியது. எளிமையான மற்றும் மலிவான ரிசீவரின் உதவியுடன், நீங்கள் எப்போதும் மற்றும் எல்லா இடங்களிலும் சரியான நேரத்தை பெறலாம், நிச்சயமாக வரவேற்பு பகுதியில். பரவலான டிஜிட்டல் மயமாக்கல் மற்றும் “இன்டர்நெட் ஆஃப் திங்ஸ்” இருந்தபோதிலும், இதுபோன்ற எளிய தீர்வுகள் நீண்ட காலத்திற்கு தேவைப்படும் என்று தெரிகிறது.

ஆதாரம்: www.habr.com

கருத்தைச் சேர்