Kia ora Habr.
Akene he maha nga tangata e hoko wati, teihana huarere ranei kua kite i te Karaka Whakahaere Irirangi, tae atu ki te tohu Karaka Atomic i runga i te kete. He tino watea tenei, na te mea me tuu noa te karaka ki runga i te teepu, a, i muri i etahi wa ka whakatika aunoa ki te wa tika.

Me whakaaro me pehea te mahi me te tuhi i te wetewaehere ki te Python.
He rereke nga punaha tukutahi wa. Ko te tino rongonui i Uropi ko te punaha Tiamana , Kei a Japan tana ake punaha , kei te USA he punaha , me etahi atu. I muri mai, ko te korero mo te DCF77, ko te mea tino whaitake me te waatea mo te powhiri i etahi waahi i te wahanga Pakeha o Russia me nga whenua e tata ana (kei te rereke nga whakaaro o nga tangata o te Tai Rawhiti, heoi, ka taea e ratou te whiwhi. me te tātari i te tohu Japanese;).
Ko nga mea katoa e tuhia ana i raro nei mo te DCF77.
Tohu tohu
Ko te DCF77 he teihana ngaru roa e mahi ana i te auau o te 77.5 kHz me te tuku tohu i roto i te huringa kaha kaha. Ko te teihana 50KW kei te 25 kiromita mai i Frankfurt, i timata te mahi i te tau 1959, a i te tau 1973 ka taapirihia nga korero mo te ra ki te wa tika. Ko te roangaru i te auau o te 77 KHz he tino roa, no reira he tino tika nga inenga o te mara antenna (whakaahua mai i Wikipedia):

Na te ahua o te antenna me te whakauru hiko, ka kapi katoa te waahi manaaki i Uropi, Belarus, Ukraine me tetahi waahanga o Russia.

Ka taea e te tangata te tuhi tohu. Ki te mahi i tenei, haere noa ki te kaiwhiwhi ipurangi , tohua te auau 76.5KHz me te whakarereke USB ki reira. Me tuwhera he ahua penei te ahua:

I reira ka pehia e matou te paatene tango me te tuhi i tetahi kongakonga mo etahi meneti te roa. Ae ra, mena kei a koe he kaiwhiwhi "pono" ka taea te tuhi i te auau 77.5KHz, ka taea e koe te whakamahi i tera.
Ae ra, ma te whiwhi tohu wa reo irirangi ma te Ipurangi, kaore e whiwhi i te waa tika - ka tukuna te tohu me te whakaroa. Engari ko ta matou whaainga ko te maarama ki te hanganga o te tohu; mo tenei, he nui ake te rekoata Ipurangi. I roto i te ora tonu, ko te tikanga, ka whakamahia nga taputapu motuhake mo te tango me te wetewete; ka korerohia i raro nei.
Na, kua riro mai i a matou te rekoata, me timata taatau ki te mahi.
Waitohu Waitohu
Me utaina te konae ma te whakamahi i te Python ka kite i tona hanganga:
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()
Ka kite tatou i te whakarereketanga o te kaha kaha:

Hei whakangwari i te wetewete, me tango te envelopu tohu ma te whakamahi i te huringa Hilbert:
analytic_signal = signal.hilbert(data)
A = np.abs(analytic_signal)
plt.plot(A[:100000])
Hua kua whakanuia:

Me whakaeneene i nga tukunga haruru ma te whakamahi i te tātari iti-paahi, me te tatau i te uara toharite, ka whai hua i muri mai mo te poroporoaki.
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
Hua (raina kōwhai): he tohu ngaru tata tapawha he tino ngawari ki te tātari.

Paring
Tuatahi me whiwhi koe i te raupapa moka. Ko te hanganga tohu ano he tino ngawari.

Ka wehea nga pupuhi ki nga waahanga tuarua. Mena he 0.1s te tawhiti i waenga i nga pini (ara ko te roa o te putere ake he 0.9s), taapirihia te "0" ki te raupapa moka; mena ko te tawhiti he 0.2s (arā, ko te roa ko te 0.8s), taapirihia te "1". Ko te mutunga o ia meneti ka tohuhia e te pupuhi "roa", 2s te roa, ka tautuhi ano te raupapa moka ki te kore, ka timata ano te whakakii.
He ngawari te tuhi i runga ake nei ki te 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
Ko te mutunga, ka whiwhi tatou i te raupapa o nga moka, i roto i to tatou tauira mo te rua hēkona te ahua penei:
0011110110111000001011000001010000100110010101100010011000
0001111100110110001010100001010000100110010101100010011000
Ma te ara, he mea whakamiharo kei te tohu ano he "paparanga tuarua" o nga raraunga. Kei te whakawaeheretia te raupapa moka ma te whakamahi . I roto i te ariā, me whakarato tenei i te wetewete kaha ake ahakoa he tohu ngoikore.
Ko ta maatau mahi whakamutunga: te tiki i nga raraunga tuuturu. Ka tukuna nga moka kotahi mo ia hekona, no reira he 59 nga moka katoa, he maha nga korero kua whakawaeheretia:

Ko nga moka ka whakaahuahia i roto , a he tino mohio ratou. Ko nga moka 15 tuatahi kaore i te whakamahia, ahakoa he mahere ki te whakamahi mo nga punaha whakatupato me te tiaki tangata. Ko te Bit A1 e tohu ana ka huri te karaka ki te awatea hei te haora e whai ake nei. Ko te Bit A2 e tohu ana he taapiri , ka whakamahia i etahi wa ki te whakatika i te wa e ai ki te hurihanga o te whenua. Ko nga toenga moka ka whakawaehere haora, meneti, hēkona me te rā.

Mo te hunga e hiahia ana ki te whakamatau i a raatau ake, ka tukuna te waehere wetewete i raro i te kaipahua.
Waehere puna
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)
Ina whakahaere tatou i te kaupapa, ka kite tatou i te putanga rite ki tenei:
0011110110111000001011000001010000100110010101100010011000
Tuesday, 26.03.19, 21:41
0001111100110110001010100001010000100110010101100010011000
Tuesday, 26.03.19, 21:42
Inaa, koinei te makutu katoa. Ko te painga o taua punaha ko te wetewete he tino ngawari, ka taea te mahi i runga i tetahi, ahakoa te microcontroller ngawari. Ka tatau noa tatou i te roa o nga pire, ka kohia kia 60 nga paraka, a i te mutunga o ia meneti ka whiwhi tatou i te wa tika. Ka whakatauritea ki etahi atu tikanga mo te tukutahi wa (GPS, hei tauira, ma te Atua ranei e arai, te Ipurangi :), karekau he hikohiko pera i te reo irirangi - hei tauira, ka rere te teihana huarere kaainga mo te kotahi tau i runga i nga pākahiko 2 AA. No reira, ka mahia nga maataki ringa me te tukutahitanga reo irirangi, kaua e whakahua, o te akoranga, nga mataaratanga pakitara, nga mataaratanga teihana huarahi ranei.
Ko te ngawari me te ngawari o te DCF e kukume ana i nga kaiwhaiwhai DIY. Mo te $10-20 noa ka taea e koe te hoko i tetahi waahanga antenna kua oti te hanga me te kaikawe kua rite me te putanga TTL, ka taea te hono atu ki tetahi Arduino, ki tetahi atu kaiwhakahaere ranei.

Kua tuhia mo Arduino . Heoi, kua mohio kua mohiohia ahakoa he aha taau mahi i runga i te microcontroller, ka mutu koe he karaka, he teihana huarere ranei. Ma tenei taputapu, he tino ngawari ki te tiki i te waa tika, mena kei te noho koe i te waahi manaaki. Ana, ka taea e koe te whakairi i te tuhinga "Atomic Clock" ki runga i to mataaratanga, i te wa ano ka whakamarama ki nga tangata katoa kei te tino tukutahi te taputapu ma te whakamahi i te karaka ngota.
Ka taea e te hunga e pirangi ana ki te whakapai ake i te mataaratanga a te kuia tawhito ma te whakauru i tetahi miihini hou me te tukutahi reo irirangi:

Ka kitea e koe tetahi i runga i te eBay ma te whakamahi i nga kupu matua "Radio Controlled Movement".
Hei whakamutunga, he mahi whakamiharo mō te hunga kua pānui i tēnei wāhi. Ahakoa kāore he tuku reo irirangi kotahi i roto i ngā mano kiromita, he māmā noa te hanga i tētahi māu ake. He taupānga kei Google Play e kiia nei ko "DCF77 Emulator" e whakaputa ana i te tohu ki ngā paneoro. E kī ana te kaituhi mēnā ka takai koe i te taura paneoro ki te mātaaratanga, ka hopukina te tohu (e whakaaro ana ahau me pēhea, nā te mea kāore ngā paneoro noa e whakaputa i te tohu 77 kHz, engari he mea pea nā te harmonics). I runga i taku mātaaratanga... Android Kāore i mahi te kaupapa 9—kāore rawa he oro (kāore rānei au i rongo—he 77 kHz te tere. :)), engari tera pea ka pai ake te waimarie o tētahi atu. Heoi, ka hangaia e ētahi tāngata tā rātou ake kaihanga tohu DCF katoa, he ngāwari ki te hanga mā te whakamahi i te Arduino, i te ESP32 rānei:

(pūtake )
mutunga
Ko te punaha DCF he tino ngawari me te waatea. Ma te awhina o te kaiwhiwhi ngawari me te iti, ka taea e koe te wa tika i nga wa katoa me nga waahi katoa, o te akoranga i te waahi manaaki. Te ahua nei ahakoa te whanuitanga o te whakarorohikotanga me te Ipurangi o nga Mea, ka roa te tono mo enei otinga ngawari.
Source: will.com
