मिलिए Yagi से: रेडियो के लिए एक प्रोग्रामिंग भाषा
सिग्नल का वर्णन एक बार कीजिए, और Yagi रिसीवर, टेस्ट सिग्नल और डिटेक्टर बना देती है। जानिए हम इसे क्यों बना रहे हैं।
Yagi रेडियो फ़्रीक्वेंसी सिस्टम के लिए एक प्रोग्रामिंग भाषा है, जिसे 291 Group ने बनाया है। इसका नाम Yagi-Uda एंटीना पर रखा गया है, जिसका आविष्कार Hidetsugu Yagi और Shintaro Uda ने 1926 में किया था, और इसका विचार एक पंक्ति में समा जाता है: सिग्नल का वर्णन एक बार करें।
रेडियो सॉफ़्टवेयर तीन बार लिखा जाता है
आज कोई नई रेडियो क्षमता आमतौर पर तीन बार लिखी जाती है: एक बार Python में विचार को साबित करने के लिए, एक बार C++ में उसे तेज़ बनाने के लिए, और एक बार फिर किसी हार्डवेयर भाषा में उसे विशेष हार्डवेयर पर चलाने के लिए। सैंपल रेट और इकाइयाँ कमेंट्स में और इंजीनियर के दिमाग़ में रहती हैं, इसलिए कोई बेमेल होने पर त्रुटि के बजाय चुपचाप बेकार डेटा बनता है। हर नए सिग्नल का मतलब है हाथ से बनाया गया डीमॉड्यूलेटर, एक अलग टेस्ट जनरेटर और अलग डिटेक्शन लॉजिक।
सिग्नल का वर्णन एक बार करें
Yagi में आप किसी सिग्नल का वर्णन एक बार करते हैं: उसका मॉड्यूलेशन कैसे होता है, उसके सिंबल कितनी तेज़ी से आते हैं, उसके फ़्रेम कैसे बनते और जाँचे जाते हैं। उसी एक वर्णन से Yagi रिसीवर, टेस्ट सिग्नल और डिटेक्टर तैयार करती है, और वही प्रोग्राम लैपटॉप या फ़ील्ड सेंसर पर चलाती है, सीधे रेडियो से लाइव या किसी रिकॉर्डिंग से।
यह रहा एक छोटा प्रोग्राम जो रेडियो को 433.92 MHz पर ट्यून करता है और एक मौसम सेंसर को डिकोड करता है:
radio sdr = hackrf("one") {
rx.freq = 433.92 MHz
rx.rate = 2 Msps
}
signal WeatherSensor {
modulation: ook
symbol_rate: 2.4 kbaud
coding: nrz
frame: preamble(0xAAAA) ++ sync(0x2DD4)
++ payload(bytes[8]) ++ crc16(poly: 0x1021)
}
sdr.rx
|> lowpass(cutoff: 100 kHz)
|> decimate(10)
|> WeatherSensor.demod()
|> each(frame => log(frame.payload))एक भाषा जो जानती है कि फ़्रीक्वेंसी क्या होती है
रेडियो भाषा में ही बना हुआ है। फ़्रीक्वेंसी, सैंपल रेट और भौतिक इकाइयाँ टाइप हैं, और असली रेडियो की सीमाएँ भी। किसी रिसीवर से ऐसी फ़्रीक्वेंसी माँगें जिस पर वह ट्यून नहीं हो सकता, या अलग-अलग सैंपल रेट पर चल रहे दो ब्लॉक जोड़ें, तो Yagi आपको प्रोग्राम कंपाइल होते समय ही रोक देती है, फ़ील्ड में नहीं।
छोटे वर्णन, असली नतीजे
- LoRa का 28 पंक्तियों का वर्णन 205 सार्वजनिक रिकॉर्डिंग में से 196 को डिकोड करता है, जो C++ में लिखे 2,100 पंक्तियों के एक रेफ़रेंस डिकोडर द्वारा डिकोड की गई 187 रिकॉर्डिंग से ज़्यादा है।
- इसकी डिवाइस लाइब्रेरी 95 डिवाइस का वर्णन करती है, और हर एक को असली रिकॉर्डिंग के एक सार्वजनिक टेस्ट संग्रह से जाँचा गया है।
- यह पहले से ही 433 MHz सेंसर, विमान ट्रांसपोंडर (ADS-B), Bluetooth Low Energy एडवरटाइज़िंग और पुश-टू-टॉक वॉइस रेडियो को डिकोड करती है।
यह HackRF और RTL-SDR जैसे आम सॉफ़्टवेयर-डिफ़ाइंड रेडियो के साथ चलती है।
Yagi को फ़ॉलो करें
Yagi का घर GitHub पर github.com/yagi-lang है। इसे सबसे पहले देखने के लिए वहाँ फ़ॉलो करें।