هيلو حبر.
شايد گھڻا جيڪي گھڙي يا ويدر اسٽيشن خريد ڪندا آھن تن ڏٺو آھي ريڊيو ڪنٽرول ٿيل گھڙي يا ايٽمي گھڙي جو لوگو پيڪنگ تي. اهو تمام آسان آهي، ڇاڪاڻ ته توهان کي صرف ميز تي گھڙي رکڻ جي ضرورت آهي، ۽ ٿوري دير کان پوء اهو خودڪار طريقي سان صحيح وقت تي ترتيب ڏيندو.

اچو ته اهو معلوم ڪريون ته اهو ڪيئن ڪم ڪري ٿو ۽ پائٿون ۾ ڊيڪوڊر لکو.
مختلف وقت جي هم وقت سازي جا نظام آهن. يورپ ۾ سڀ کان وڌيڪ مشهور جرمن نظام آهي ، جاپان جو پنهنجو نظام آهي ، آمريڪا ۾ هڪ نظام آهي ، ۽ ايئن. اڳيون، ڪهاڻي DCF77 جي باري ۾ ٿي ويندي، جيئن روس جي يورپي حصي ۽ پاڙيسري ملڪن ۾ ڪجهه هنڌن تي استقبال لاء سڀ کان وڌيڪ لاڳاپيل ۽ رسائي (دور اوڀر جي رهاڪن کي شايد مخالف راء هجي، جڏهن ته، اهي، موڙ ۾، حاصل ڪري سگهن ٿا. ۽ جاپاني سگنل جو تجزيو ڪريو؛).
هيٺ ڏنل سڀ ڪجهه DCF77 بابت هوندو.
سگنل استقبال
DCF77 هڪ ڊگهو موج اسٽيشن آهي جيڪو 77.5 kHz جي فريڪوئنسي تي ڪم ڪري ٿو ۽ ايمپليٽيوڊ ماڊل ۾ سگنل منتقل ڪري ٿو. 50KW اسٽيشن فرينڪفرٽ کان 25 ڪلوميٽر جي فاصلي تي واقع آهي، اهو 1959 ۾ ڪم شروع ڪيو، ۽ 1973 ۾ صحيح وقت تي معلومات شامل ڪئي وئي. 77 KHz جي تعدد تي موج جي ڊيگهه تمام ڊگهو آهي، تنهنڪري اينٽينا فيلڊ جا طول و عرض پڻ ڪافي مهذب آهن (وڪيپيڊيا تان فوٽو):

اهڙي اينٽينا ۽ پاور ان پٽ سان، استقبال واري علائقي ۾ تقريبا سڄي يورپ، بيلاروس، يوڪرين ۽ روس جو حصو شامل آهي.

ڪو به سگنل رڪارڊ ڪري سگهي ٿو. هن کي ڪرڻ لاء، صرف آن لائن وصول ڪندڙ ڏانهن وڃو ، اتي تعدد 76.5KHz ۽ USB ماڊلشن چونڊيو. هڪ تصوير کي کولڻ گهرجي جيڪو ڪجهه هن طرح نظر اچي ٿو:

اتي اسان ڊائون لوڊ بٽڻ کي دٻايو ۽ ڪيترن ئي منٽن تائين هڪ ٽڪرو رڪارڊ ڪيو. يقينا، جيڪڏهن توهان وٽ "حقيقي" وصول ڪندڙ آهي 77.5KHz تعدد کي رڪارڊ ڪرڻ جي قابل، توهان استعمال ڪري سگهو ٿا.
يقينن، انٽرنيٽ ذريعي ريڊيو ٽائيم سگنل حاصل ڪرڻ سان، اسان واقعي صحيح وقت حاصل نه ڪنداسين - سگنل دير سان منتقل ڪيو ويندو آهي. پر اسان جو مقصد صرف سگنل جي ڍانچي کي سمجهڻ آهي؛ ان لاءِ انٽرنيٽ رڪارڊنگ ڪافي کان وڌيڪ آهي. حقيقي زندگي ۾، يقينا، خاص ڊوائيسز حاصل ڪرڻ ۽ ڊيڪوڊنگ لاء استعمال ڪيا ويا آهن؛ انهن تي هيٺ بحث ڪيو ويندو.
سو، اسان کي رڪارڊنگ ملي چڪي آهي، اچو ته ان جي پروسيسنگ شروع ڪريون.
سگنل ڊيڪوڊنگ
اچو ته 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()
اسان ڏسون ٿا عام طول و عرض ماڊليشن:

ڊيڪوڊنگ کي آسان ڪرڻ لاءِ، اچو ته ھلبرٽ ٽرانسفارم استعمال ڪندي سگنل لفافو وٺون.
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.1s آهي (يعني نبض جي ڊيگهه پاڻ 0.9s آهي)، ساٽ جي ترتيب ۾ "0" شامل ڪريو؛ جيڪڏهن فاصلو 0.2s (يعني ڊيگهه 0.8s آهي)، "1" شامل ڪريو. هر منٽ جي آخر ۾ "ڊگهي" نبض، 2s ڊگھي، بيٽ جي ترتيب صفر تي ري سيٽ ڪئي وئي آهي، ۽ ڀرڻ ٻيهر شروع ٿئي ٿو.
مٿيون پٿون ۾ لکڻ آسان آهي.
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 بٽ آهن، جن ۾ ڪافي معلومات انڪوڊ ٿيل آهي:

بيتن ۾ بيان ڪيل آهن ، ۽ اهي ڪافي تجسس آهن. پهرين 15 بٽ استعمال نه ڪيا ويا آهن، جيتوڻيڪ اتي انهن کي ڊيڄاريندڙ سسٽم ۽ سول دفاع لاء استعمال ڪرڻ جو منصوبو هو. Bit A1 اشارو ڪري ٿو ته گھڙي ايندڙ ڪلاڪ ۾ ڏينهن جي روشني واري وقت ۾ تبديل ٿي ويندي. Bit A2 اشارو ڪري ٿو ته هڪ اضافي ، جيڪو ڪڏهن ڪڏهن ڌرتيء جي گردش جي مطابق وقت کي ترتيب ڏيڻ لاء استعمال ڪيو ويندو آهي. باقي بٽ ڪلاڪ، منٽ، سيڪنڊ ۽ تاريخ انڪوڊ ڪن ٿا.

انهن لاءِ جيڪي پاڻ تي تجربا ڪرڻ چاهين ٿا، ڊيڪوڊنگ ڪوڊ اسپائلر هيٺ ڏنل آهي.
ذريعو
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 يا ٻئي ڪنٽرولر سان ڳنڍجي سگهجي ٿو.

اڳ ۾ ئي Arduino لاء لکيو ويو آهي . بهرحال، اهو اڳ ۾ ئي معلوم ٿئي ٿو ته ڪو به مسئلو ناهي ته توهان مائڪرو ڪنٽرولر تي ڇا ڪندا آهيو، توهان کي يا ته هڪ ڪلاڪ يا موسم اسٽيشن سان ختم ڪيو وڃي. اهڙي ڊوائيس سان، صحيح وقت حاصل ڪرڻ بلڪل آسان آهي، مهيا ڪيل، يقينا، توهان استقبال واري علائقي ۾ آهيو. يقينن، توهان پنهنجي واچ تي "ايٽمي ڪلاڪ" لکت کي لڪائي سگهو ٿا، ۽ ساڳئي وقت سڀني کي وضاحت ڪري ٿو ته ڊوائيس واقعي هڪ ايٽمي ڪلاڪ استعمال ڪندي هم وقت سازي ڪئي وئي آهي.
جيڪي چاهين ٿا ته ريڊيو هم وقت سازي سان هڪ نئون ميکانيزم انسٽال ڪري پنهنجي پراڻي ڏاڏي جي واچ کي اپ گريڊ ڪري سگهن ٿا:

توهان هڪ ڳولي سگهو ٿا اي بي تي لفظ استعمال ڪندي ”ريڊيو ڪنٽرول موومينٽ“.
۽ آخر ۾، انهن لاءِ هڪ لائف هيڪ جيڪي هن وقت تائين پڙهي چڪا آهن. جيتوڻيڪ جيڪڏهن ڪجهه هزار ڪلوميٽرن جي اندر هڪ به ريڊيو ٽرانسميٽر نه هجي، ته به پاڻ هڪ پيدا ڪرڻ آسان آهي. گوگل پلي تي هڪ ايپ آهي جنهن کي "DCF77 ايموليٽر" سڏيو ويندو آهي جيڪو هيڊ فونز ڏانهن سگنل موڪليندو آهي. ليکڪ دعويٰ ڪري ٿو ته جيڪڏهن توهان هيڊ فون ڪيبل کي واچ جي چوڌاري ويڙهيو ٿا، ته اهو سگنل کڻندو (مون کي حيرانگي ٿيندي ته ڪيئن، ڇاڪاڻ ته باقاعده هيڊ فونز 77 kHz سگنل پيدا نه ڪندا، پر اهو شايد هارمونڪس جي ڪري آهي). منهنجي واچ تي... Android پروگرام 9 بلڪل ڪم نه ڪيو - بس ڪو آواز نه هو (يا شايد مان صرف اهو ٻڌي نه سگهيس - اهو 77 kHz آهي، آخرڪار. :))، پر شايد ڪنهن ٻئي جي قسمت بهتر هوندي. بهرحال، ڪجهه ماڻهو پنهنجو مڪمل DCF سگنل جنريٽر ٺاهيندا آهن، جيڪو Arduino يا ESP32 استعمال ڪندي ٺاهڻ آسان آهي:

(ذريعو )
ٿڪل
DCF سسٽم واقعي بلڪل سادو ۽ آسان ٿي ويو. هڪ سادي ۽ سستا رسيور جي مدد سان، توهان هميشه ۽ هر جڳهه تي صحيح وقت حاصل ڪري سگهو ٿا، يقيناً استقبال واري علائقي ۾. اهو لڳي ٿو ته وڏي پئماني تي ڊجيٽلائيزيشن ۽ شين جي انٽرنيٽ جي باوجود، اهڙا سادي حل هڪ ڊگهي وقت تائين طلب ۾ هوندا.
جو ذريعو: www.habr.com
