পদার্থবিজ্ঞান ও কম্পিউটিং - 12 থেকে 18 বছর
আকাশ ডিকোড করা
নিচের হেক্সাডেসিমাল লাইনটি একটি বাস্তব বার্তা, একটি বাস্তব বিমান প্রতি সেকেন্ডে প্রায় দুবার যা পাঠায়। এক সেকেন্ডের 112 মিলিয়ন ভাগের এক ভাগে এটি ঘোষণা করে বিমানটি কে, আর তার সঙ্গী বার্তাগুলোয়, সে কোথায়, কত উঁচুতে ও কত দ্রুত। এটি বুঝতে যা যা লাগে এই কোর্স তার সবকিছুর মধ্য দিয়ে যায়: যে তরঙ্গে এটি চড়ে তার পদার্থবিজ্ঞান, যে সময়-পরিমাপ বিমানকে তার অবস্থান দেয়, যে কোডিং একে 112 বিটে ভরে, যে জ্যামিতি সীমা টানে কত দূর থেকে এটি শোনা যায়, আর যে রিসিভার তুমি নিজে বানিয়ে এটি নিজেই শুনতে পারো।
ADS-B কী, এক পাতায়
8D4840D6202CC371C32CE0576098একটি রিসিভার যেভাবে লগ করে, একটি এক্সটেন্ডেড স্কুইটার: 28টি হেক্সাডেসিমাল অঙ্ক, 112 বিট। পাঠ 3-এর মধ্যে তুমি এর প্রতিটি ফিল্ড পড়তে পারবে।
এয়ার ট্রাফিক কন্ট্রোলকে প্রতিটি বিমান কোথায় তা অবিরাম জানতে হয়, তাদের দূরে রাখতে: ক্রুজে থাকা একটি যাত্রীবাহী বিমান প্রতি সেকেন্ডে 250 m পাড়ি দেয়, আর দূরত্বের নিয়ম রাডার নিয়ন্ত্রণের অধীনে বিমানগুলোর মধ্যে উল্লম্বভাবে 300 m বা অনুভূমিকভাবে 9 km দাবি করে। সত্তর বছর ধরে জানার উপায় ছিল রাডার: একটি ভূমি স্টেশন একটি পালস পাঠায় ও প্রতিধ্বনির সময় মাপে, অথবা, উন্নত সেকেন্ডারি রূপে, বিমানের একটি ট্রান্সপন্ডারকে জিজ্ঞাসা করে, যা 1090 MHz-এ একটি পরিচয় ও একটি উচ্চতা দিয়ে উত্তর দেয়। রাডারের সীমা আছে: এর বিপুল শক্তি লাগে, এটি প্রতিটি বিমানকে অ্যান্টেনার প্রতি ঘূর্ণনে একবারই দেখে, আর এটি মহাসাগর বা পর্বত ঢাকতে পারে না।
ADS-B, Automatic Dependent Surveillance - Broadcast, সমস্যাটিকে উল্টে দেয়। প্রতিটি আধুনিক বিমান একটি উপগ্রহ নেভিগেশন রিসিভার বহন করে, তাই নিজের অবস্থান কয়েক মিটারের মধ্যে জানে। ADS-B কেবল বিমানের ট্রান্সপন্ডারকে দিয়ে সেই অবস্থান, তার পরিচয়, উচ্চতা ও বেগসহ, প্রতি সেকেন্ডে প্রায় দুবার, 1090 MHz-এ, বিশেষ কারও উদ্দেশে নয়, ঘোষণা করায়। Automatic (স্বয়ংক্রিয়) কারণ কিছুই একে চালু করে না; dependent (নির্ভরশীল) কারণ তথ্য পুরোপুরি বিমানের নিজের যন্ত্র থেকে আসে; surveillance (নজরদারি) কারণ এর উদ্দেশ্য বিমান কোথায় তা জানা; broadcast (সম্প্রচার) কারণ এটি খোলাখুলি পাঠানো হয়, যে কেউ শুনছে তার কাছে। 2020 সাল থেকে ইউরোপীয় ও আমেরিকান আকাশসীমায় বেশিরভাগ বিমানের জন্য এটি বাধ্যতামূলক। কন্ট্রোলাররা রাডারের পাশাপাশি এটি ব্যবহার করেন, অন্য বিমানরা একে অপরকে দেখতে এটি ব্যবহার করে, আর স্কুলের ছাদে 25 ইউরোর একটি USB রিসিভার হুবহু একই বার্তা শোনে।
ব্যবস্থাটি বুঝতে হলে পাঁচটি জিনিস বুঝতে হবে, আর প্রতিটি একটি পাঠ: যে তড়িৎচুম্বকীয় তরঙ্গ বার্তাটি বহন করে; যে সময়-পরিমাপ বিমানকে তার অবস্থান দেয়, আর যা দিয়ে একটি নেটওয়ার্ক এমন একটি বিমানকে খুঁজে পায় যে বলে না সে কোথায়; ডিজিটাল বার্তা আর তার ত্রুটি কীভাবে ধরা পড়ে; যে জ্যামিতি ও শক্তি সীমা টানে কত দূর থেকে এটি শোনা যায়; আর যে অ্যান্টেনা ও রিসিভার একে আবার তথ্যে পরিণত করে। পূর্ণ বর্ণনা রেফারেন্স কোর্সে আছে; পাঠ 3-এর আগে তার অধ্যায় 3 ও 5 আর পাঠ 4 ও 5-এর আগে অধ্যায় 6 থেকে 8 পড়ো।
পাঠ 1
তরঙ্গ: অদৃশ্য আলো হিসেবে বেতার
বার্তাটি বিমান ছেড়ে যায় একটি তড়িৎচুম্বকীয় তরঙ্গ (electromagnetic wave) হিসেবে: দোলায়মান বৈদ্যুতিক ও চৌম্বক ক্ষেত্র, যা কোনো মাধ্যম ছাড়া মহাশূন্যের মধ্য দিয়ে বিস্তার লাভ করে, আলোর গতি c = 3.00 x 10^8 m/s-এ। দৃশ্যমান আলো একই ঘটনা, উঁচু কম্পাঙ্কে; তোমার চোখ সাড়া দেয় মোটামুটি 4 থেকে 8 x 10^14 Hz-এ, অথচ ADS-B সম্প্রচারিত হয় 1.09 x 10^9 Hz-এ, আধা মিলিয়ন গুণ কম। বিমানের বার্তা আর এই পর্দার আলোর মধ্যে ধরনের কোনো পার্থক্য নেই, কেবল কম্পাঙ্কের।
তরঙ্গ যেহেতু একটি নির্দিষ্ট গতিতে চলে, তার কম্পাঙ্ক (frequency) তার তরঙ্গদৈর্ঘ্য (wavelength) নির্ধারণ করে। এক সেকেন্ডে তরঙ্গ c মিটার এগোয় ও f-টি চক্র সম্পূর্ণ করে, তাই প্রতিটি চক্র দখল করে c / f মিটার: c = f x lambda। ADS-B-এর জন্য, lambda = 3.00 x 10^8 / 1.09 x 10^9 = 0.275 m। একটি বিমান ও তোমার অ্যান্টেনার মধ্যে যাওয়া তরঙ্গের চূড়াগুলো 27.5 cm দূরে দূরে, বর্ণালিতে একটি মোবাইল ফোনের সংকেত (17 cm) ও একটি FM রেডিও স্টেশনের (3 m) মাঝে। সেই বর্ণালিটি নিজে আঁকো, 10^6 Hz থেকে 10^18 Hz পর্যন্ত একটি লগারিদমিক অক্ষে, আর তাতে বসাও FM রেডিও, ADS-B, মোবাইল ফোন, Wi-Fi, অবলোহিত, দৃশ্যমান আলো ও X-রশ্মি। বিমানের তরঙ্গ বসে তোমার পকেটের জিনিসগুলোর মাঝে।
c = f x lambdaযাচাই: 3.00 x 10^8 m/s = 1.09 x 10^9 Hz x 0.275 m
একটি বেতার তরঙ্গ যা নয় তা হলো শব্দ। শব্দ একটি মাধ্যমে চাপ-তরঙ্গ, বাতাসে 343 m/s, পানিতে 1 500 m/s গতিতে চলে, আর শূন্যস্থানে একেবারেই নয়। বেতার হলো আলো: এর কোনো মাধ্যম লাগে না, এভাবেই এটি উপগ্রহ থেকে বিমান পর্যন্ত শূন্যস্থান পার হয়, আর এটি 3.00 x 10^8 / 343, প্রায় 875 000 গুণ দ্রুত। 30 km দূরের একটি বিমান যদি একই মুহূর্তে একটি শব্দ ও একটি বার্তা ছাড়ে, বার্তাটি পৌঁছায় 100 মাইক্রোসেকেন্ডে; শব্দটি পৌঁছায় 87 সেকেন্ড পরে, যার মধ্যে বিমান 22 km উড়ে গেছে। একটি দড়ির তরঙ্গ আলোর সঙ্গে যে ধর্মগুলো গুরুত্বপূর্ণ তা ভাগ করে, একটি তরঙ্গদৈর্ঘ্য, একটি কম্পাঙ্ক ও একটি নির্দিষ্ট গতি, যাতে দ্রুত ঝাঁকানো মানে ছোট তরঙ্গ, দ্রুত তরঙ্গ নয়; এটি আলাদা এখানে যে এর দড়িটি লাগে।
তরঙ্গের একটি ধর্ম পাঠ 5-এ গুরুত্বপূর্ণ হবে: তার সমবর্তন (polarisation)। বৈদ্যুতিক ক্ষেত্র চলার দিকের সঙ্গে লম্ব একটি নির্দিষ্ট দিকে দোলে। বিমানের অ্যান্টেনা খাড়া, তাই ADS-B তরঙ্গ খাড়াভাবে সমবর্তিত, আর পাশ ফিরিয়ে শোয়ানো একটি গ্রহণকারী অ্যান্টেনা এর প্রায় কিছুই ধরে না, যেমন খাড়াভাবে ঝাঁকানো দড়ির তরঙ্গ একটি অনুভূমিক ফাঁকে আটকে যায়। এখনই অনুমান করো অ্যান্টেনা অনুভূমিক হলে তোমার রিসিভারের পাল্লার কী হবে; প্রকল্পে তুমি তা পরীক্ষা করবে।
পাঠ 2
সময় ও অবস্থান: বিমান কীভাবে জানে সে কোথায়
প্রতিটি ADS-B বার্তার অবস্থান আসে উপগ্রহ নেভিগেশন থেকে, আর উপগ্রহ নেভিগেশন হলো সময়ের একটি পরিমাপ। প্রতিটি ব্যবস্থায় (GPS, Galileo, GLONASS, BeiDou) প্রায় ত্রিশটি উপগ্রহ মোটামুটি 20 200 km-এ প্রদক্ষিণ করে, প্রতিটিতে একটি পারমাণবিক ঘড়ি, প্রতিটি এমন একটি সংকেত পাঠায় যা তার নিজের অবস্থান ও সম্প্রচারের সঠিক মুহূর্ত জানায়। বিমানের রিসিভার পৌঁছানোর মুহূর্ত লিখে রাখে। পার্থক্যকে c দিয়ে গুণ করলে সেই উপগ্রহের দূরত্ব; ঠিক মাথার উপর থেকে সংকেতের লাগে 20 200 / 300 000 = 0.0673 s। একটি দূরত্ব রিসিভারকে বসায় সেই উপগ্রহকে ঘিরে একটি গোলকের উপর; দুটি গোলক মেলে একটি বৃত্তে; তিনটি মেলে দুটি বিন্দুতে, যার একটি পৃথিবী থেকে বহু দূরে আর বাদ দেওয়া হয়। রিসিভারের একটি নিখুঁত ঘড়ি থাকলে তিনটি উপগ্রহই যথেষ্ট হতো। তার আছে একটি কোয়ার্টজ স্ফটিক, যা মাইক্রোসেকেন্ড পরিমাণে সরে যায়, আর এক মাইক্রোসেকেন্ড মানে 300 m দূরত্ব। তাই রিসিভার নিজের ঘড়ির ত্রুটিকে চতুর্থ অজানা রাশি হিসেবে ধরে আর চতুর্থ একটি উপগ্রহ ব্যবহার করে: চারটি সমীকরণ, চারটি অজানা (x, y, z ও ঘড়ির অফসেট), অবিরাম সমাধান করা। উপজাত হিসেবে প্রতিটি উপগ্রহ রিসিভার কয়েক দশ ন্যানোসেকেন্ডের মধ্যে সময় রাখে, যার উপর এই পাঠের দ্বিতীয় অর্ধ নির্ভর করে।
মাত্রাগুলো মনে রাখো: আলো প্রতি ন্যানোসেকেন্ডে 0.3 m আর প্রতি মাইক্রোসেকেন্ডে 300 m যায়। 3 m পর্যন্ত নির্ভুল অবস্থান মানে 10 ns পর্যন্ত নির্ভুল সময়। যে উপগ্রহের ঘড়ি 1 মাইক্রোসেকেন্ড এগিয়ে চলত, সে একে ব্যবহার করা প্রতিটি রিসিভারকে তার দিকের রেখা বরাবর 300 m ঠেলে সরাত, এ কারণেই উপগ্রহের ঘড়িগুলো মাটি থেকে দিনে কয়েকবার শোধরানো হয়।
বিমান দুটি উচ্চতা বহন করে। উপগ্রহের সমাধান দেয় রেফারেন্স উপবৃত্তাভের উপরে একটি জ্যামিতিক উচ্চতা। কিন্তু এয়ার ট্রাফিকের কাজে সে যে উচ্চতা সম্প্রচার করে তা ব্যারোমিটারের: ফিউজেলাজের একটি পোর্টে বায়ুচাপ, আন্তর্জাতিক আদর্শ বায়ুমণ্ডল (International Standard Atmosphere) দিয়ে উচ্চতায় রূপান্তরিত, যা সমুদ্রপৃষ্ঠে 1013.25 hPa ও 15 ডিগ্রি C আর প্রতি কিলোমিটারে 6.5 ডিগ্রি হ্রাস ধরে নেয়। প্রকৃত চাপ আদর্শ থেকে আলাদা হলে প্রতিটি বিমানের ব্যারোমিটারের উচ্চতা একই পরিমাণে ভুল হয়, আর দূরত্ব বজায় রাখার ঠিক এটিই দরকার: ফ্লাইট লেভেল 350 ও 360 পড়া দুটি বিমান আবহাওয়া যা-ই হোক 1 000 ft দূরে। অবস্থান-বার্তা 25-ফুট ধাপে ব্যারোমিটারের উচ্চতা বহন করে; বেগ-বার্তা বহন করে ব্যারোমিটারের ও জ্যামিতিক উচ্চতার পার্থক্য। তোমার একটি স্প্রেডশিট থাকলে p = p0 (1 - 0.0065 h / 288.15)^5.255 উল্টে যাচাই করো যে 11 000 m-এ চাপ প্রায় 227 hPa, সমুদ্রপৃষ্ঠের এক-চতুর্থাংশেরও কম: একটি যাত্রীবাহী বিমান যে বাতাসের মধ্য দিয়ে ওড়ে তা তোমাকে সজ্ঞান রাখত না।
এবার পুরো ধারণাটি উল্টে দাও। কিছু বিমান অবস্থান ছাড়াই 1090 MHz-এ সম্প্রচার করে: পুরোনো ট্রান্সপন্ডার যা রাডারকে কেবল পরিচয় ও উচ্চতা দিয়ে উত্তর দেয়, বা এমন বিমান যার উপগ্রহ গ্রহণ জ্যাম করা। রিসিভারের একটি নেটওয়ার্ক তবু মাল্টিল্যাটারেশন (multilateration) দিয়ে তাদের খুঁজে পেতে পারে। ধরো, মেলানো ঘড়িসহ চারটি রিসিভার প্রত্যেকে একই সম্প্রচারের পৌঁছানোর সময় লিখে রাখে। যে বার্তা রিসিভার B-এর এক মাইক্রোসেকেন্ড আগে রিসিভার A-তে পৌঁছেছে তা পাঠানো হয়েছে B-এর চেয়ে A-এর 300 m কাছের একটি বিন্দু থেকে, আর এমন সব বিন্দু গড়ে A ও B-কে নাভি করে একটি হাইপারবোলয়েড। চারটি রিসিভার থেকে তিনটি স্বাধীন জোড়া তিনটি হাইপারবোলয়েড দেয়, যা বিমানটিতে ছেদ করে। এটি উপগ্রহ সমস্যা, জানা ও অজানা বদলে: ওখানে একটি রিসিভার ও চারটি জানা ট্রান্সমিটার; এখানে একটি ট্রান্সমিটার ও চারটি জানা রিসিভার। দুটিতেই যা মাপা হয় তা সময়, আর 1 মাইক্রোসেকেন্ড মানে 300 m। রিসিভারগুলো বিমানের ব্যবহার করা একই উপগ্রহ থেকে তাদের ঘড়ি প্রায় 100 ns-এর মধ্যে মেলায়।
তুমি এটা শব্দ দিয়ে করতে পারো। একটি খেলার মাঠে জরিপ করা বিন্দুতে স্টপওয়াচসহ তিনজন; চতুর্থ একজন, লুকানো, একবার হাততালি দেয়; প্রত্যেকে দেরিটা লিখে রাখে। 343 m/s গতির শব্দে 0.1 s-এর পার্থক্য মানে 34 m, আর পরীক্ষামূলক অবস্থানসহ একটি স্কেল-চিত্র, বা হাইপারবোলার একটি স্কেচ, হাততালি-দাতাকে খুঁজে দেয়। তারপর জিজ্ঞেস করো 200 km-এর উপর বেতার দিয়ে একই কাজ করতে স্টপওয়াচগুলোর কত নির্ভুলতা লাগত, আর তুমি বুঝবে নেটওয়ার্কের কেন পারমাণবিক সময় লাগে।
পাঠ 3
বার্তা: 112 বিট, আর ত্রুটি কীভাবে ধরা পড়ে
ট্রান্সপন্ডার ADS-B পাঠায় একটি Mode S এক্সটেন্ডেড স্কুইটার (extended squitter) হিসেবে: একটি 8-মাইক্রোসেকেন্ডের প্রিঅ্যাম্বল (preamble), তারপর 112টি ডেটা বিট, প্রতি মাইক্রোসেকেন্ডে এক বিট। প্রিঅ্যাম্বল হলো 0, 1, 3.5 ও 4.5 মাইক্রোসেকেন্ডে চারটি পালসের একটি নির্দিষ্ট নকশা, আর এর কাজ এমন একটি প্রশ্নের উত্তর দেওয়া যা তুমি হয়তো করার কথা ভাবোনি: গোলমালে ও অন্য বিমানে ভরা একটি চ্যানেলে একটি রিসিভার কী করে জানে একটি বার্তা শুরু হয়েছে, আর প্রতিটি বিট কখন শুরু হয়? ডিকোডার অবিরাম সেই নকশার জন্য নজর রাখে, আর তা দেখলে দুটিই জানে। তুমি যত ডিজিটাল প্রোটোকল ব্যবহার করো, Wi-Fi থেকে QR কোড, প্রতিটিরই এর সমতুল্য কিছু আছে।
একটি ট্রান্সমিটার চালু বা বন্ধ থাকতে পারে; সে 1 বা 0 কীভাবে পাঠায়? ADS-B ব্যবহার করে পালস পজিশন মডুলেশন (pulse position modulation)। এক মাইক্রোসেকেন্ডের প্রতিটি বিট-ঘর দুই অর্ধে ভাগ করা: প্রথম অর্ধে একটি পালস ও দ্বিতীয়তে নীরবতা হলো 1; নীরবতা তারপর একটি পালস হলো 0। প্রতি বিটে সবসময় ঠিক একটি পালস থাকে। ভেবে দেখো এটি "পালস মানে 1, পালস নেই মানে 0"-এর চেয়ে ভালো কেন। রিসিভার কখনো তার সময় হারায় না, এমনকি একটানা অনেক শূন্যের মধ্যেও, যা সরল পদ্ধতিতে নীরবতা থেকে আলাদা করা যেত না। আর সে প্রতিটি বিট ঠিক করে কোন অর্ধ বেশি জোরালো ছিল তা জিজ্ঞেস করে, একটি পালস কোনো নির্দিষ্ট মাত্রা ছাড়াল কি না তা নয়, তাই 400 km দূরের একটি দুর্বল সংকেত মাথার উপরের একটি শক্তিশালী সংকেতের মতোই নির্ভরযোগ্যভাবে ডিকোড হয়।
প্রতিটি ঘর 1 মাইক্রোসেকেন্ড। প্রথম অর্ধে পালস: 1। দ্বিতীয় অর্ধে পালস: 0।
112 বিট নিচের মতো সাজানো, আর তুমি এটি মুখস্থ থেকে পুনরুৎপাদন করতে পারা উচিত। বিট 1 থেকে 5: ডাউনলিংক ফরম্যাট, ট্রান্সপন্ডার থেকে ADS-B-এর জন্য 17। বিট 6 থেকে 8: একটি সামর্থ্য কোড। বিট 9 থেকে 32: 24-বিট ICAO ঠিকানা, বিমানের স্থায়ী পরিচয়, নিবন্ধনের সময় দেওয়া; এমন 2^24 = 16 777 216টি আছে, ব্লক আকারে রাষ্ট্রগুলোকে বরাদ্দ, বেলজিয়ামেরটি হেক্সাডেসিমালে 448000 থেকে 44FFFF। বিট 33 থেকে 88: 56-বিট বার্তা ফিল্ড, যার প্রথম পাঁচ বিট, টাইপ কোড, বলে বাকি 51-এ কী আছে। টাইপ কোড 1 থেকে 4 কল সাইনকে আটটি 6-বিট অক্ষর হিসেবে বহন করে, প্রতিটিতে 64টি প্রতীক। টাইপ কোড 9 থেকে 18 বহন করে আকাশে-অবস্থান: 25-ফুট ধাপে ব্যারোমিটারের উচ্চতার 12 বিট, একটি জোড়/বিজোড় ফ্ল্যাগ, আর এনকোড করা অক্ষাংশ ও দ্রাঘিমাংশের 17 বিট করে। টাইপ কোড 19 বহন করে বেগ, পূর্ব-পশ্চিম ও উত্তর-দক্ষিণ ভূমি-গতির উপাংশ, উল্লম্ব হার, আর ব্যারোমিটারের-জ্যামিতিক উচ্চতার পার্থক্য হিসেবে। বিট 89 থেকে 112: 24-বিট প্যারিটি। অঙ্কটি যাচাই করো: 25 ft ধাপে 12 বিট উচ্চতা 102 400 ft ঢাকে; 180 ডিগ্রি অক্ষাংশের উপর সরলভাবে ব্যবহৃত 17 বিট মাত্র 1.4 km পর্যন্ত আলাদা করত। অবস্থান তার চেয়ে ভালো কমপ্যাক্ট পজিশন রিপোর্টিং (compact position reporting)-এর কারণে: 17 বিট একটি অঞ্চলের মধ্যে কয়েক মিটার পর্যন্ত অবস্থান দেয়, কোন অঞ্চল তা নয়, আর বিমান পালা করে দুটি অঞ্চল-জাল ব্যবহার করে, জোড় ও বিজোড়। যে রিসিভার প্রতিটির একটি শুনেছে সে অঞ্চলটি দ্ব্যর্থহীনভাবে বের করে আর তারপর একক বার্তা থেকে ট্র্যাক করে। একই বিট থেকে বেশি নির্ভুলতা, সময় দিয়ে কেনা।
এই পাতার শুরুর বাস্তব বার্তাটি ব্যবচ্ছেদ করো। 8D4840D6202CC371C32CE0576098 হলো 28টি হেক্সাডেসিমাল অঙ্ক, 112 বিট। প্রথম দুটি অঙ্ক, 8D, বাইনারিতে 1000 1101; প্রথম পাঁচ বিট, 10001, হলো 17, তাই এটি ট্রান্সপন্ডার থেকে ADS-B, আর পরের তিনটি, 101, দেয় সামর্থ্য 5। পরের ছয়টি অঙ্ক, 4840D6, হলো ICAO ঠিকানা, যা বরাদ্দ তালিকা নেদারল্যান্ডসে বসায়। পরের অঙ্ক-জোড়া, 20, শুরু হয় 00100 দিয়ে, টাইপ কোড 4, একটি পরিচয়-বার্তা, আর তার পরের 6-বিট অক্ষরগুলো ডিকোড করলে পাওয়া যায় কল সাইন KLM1023। শেষ ছয়টি অঙ্ক, 576098, হলো প্যারিটি। একটি স্প্রেডশিট বা কয়েক লাইন কোড দিয়ে তুমি পুরো ডিকোডটি করতে পারো, আর এক লাইন হেক্সের দিকে তাকিয়ে "একটি KLM বিমান, ফ্লাইট 1023 ঘোষণা করছে" বলতে পারাই এই পাঠের লক্ষ্য।
প্যারিটি সবচেয়ে বেশি ভাবনার দাবি রাখে। একটি ব্যস্ত বিমানবন্দরের উপরে বিভিন্ন বিমানের সম্প্রচার একটি রিসিভারে অবিরাম একে অপরের উপর পড়ে, আর আলাদা আলাদা পালস গোলমালে হারায়; একটি ডিকোডার মাঝে মাঝে অনিবার্যভাবে ভুল বিট জোড়া লাগাবে। শেষ 24 বিট একটি সাইক্লিক রিডানড্যান্সি চেক (cyclic redundancy check): 88টি বার্তা-বিটকে একটি লম্বা বাইনারি সংখ্যা হিসেবে ধরে একটি নির্দিষ্ট 25-বিট জেনারেটর বহুপদী দিয়ে ভাগ করা হয়, এমন একটি গণিতে যেখানে বিয়োগ হলো এক্সক্লুসিভ-অর; ভাগশেষটিই CRC। রিসিভার তার ডিকোড করা বিটগুলোর উপর ভাগটি আবার করে। যেকোনো একটি উল্টানো বিট, যেকোনো দুটি, আর 24 বিট পর্যন্ত লম্বা যেকোনো গুচ্ছ ত্রুটি ভাগশেষ বদলে দেয়, আর বার্তাটি বাতিল হয়। কৌশলটি দেখতে একটি 8-বিট বার্তার উপর হাতে একটি 4-বিট CRC করে দেখো, তারপর, তুমি প্রোগ্রাম করলে, আসল CRC-24 বাস্তবায়ন করো আর যাচাই করো যে উদাহরণ বার্তাটি পাস করে আর যেকোনো একটি বিট উল্টে দিলে তা ব্যর্থ হয়। এটিই ত্রুটি শনাক্তকরণ, যেভাবে প্রতিটি আধুনিক ব্যবস্থা করে, এমন একটি প্রেক্ষাপটে যেখানে একটি ত্রুটি ধরা না পড়লে একটি কন্ট্রোলারের পর্দায় একটি ভূত বিমান বসে যেতে পারত।
পাঠ 4
পাল্লা: পৃথিবীর বাঁক ও বিপরীত বর্গ সূত্র
একটি রিসিভার কত দূর থেকে একটি বিমান শুনতে পারে? দুটি ভিন্ন সীমা কাজ করে, আর সেগুলোকে আলাদা রাখা উচিত। প্রথমটি জ্যামিতিক। 1090 MHz-এ বেতার পৃথিবীকে ঘিরে বাঁকে না; এটি সরলরেখায় চলে, তাই একটি রিসিভার কেবল তার দিগন্তের উপরের বিমান শোনে, যাদের থেকে অ্যান্টেনা পর্যন্ত একটি সরলরেখা মাটি এড়িয়ে যায়। দিগন্তের দূরত্ব প্রতিপাদন করো। R ব্যাসার্ধের একটি গোলকের উপরে h উচ্চতায় একটি অ্যান্টেনা দিগন্ত দেখে যেখানে তার দৃষ্টিরেখা গোলকের স্পর্শক; স্পর্শক ও দুটি ব্যাসার্ধ স্পর্শবিন্দুতে একটি সমকোণ গড়ে, তাই d^2 + R^2 = (R + h)^2, যা দেয় d^2 = 2Rh + h^2, আর R-এর তুলনায় h যেহেতু নগণ্য, d = sqrt(2Rh)। R = 6 371 km ও h মিটারে নিয়ে, d (km) = 3.57 sqrt(h)। বায়ুমণ্ডল বেতারকে সামান্য নিচের দিকে বাঁকায় কারণ তার প্রতিসরাঙ্ক উচ্চতার সঙ্গে কমে; আদর্শ সংশোধন পৃথিবীকে তার প্রকৃত ব্যাসার্ধের চার-তৃতীয়াংশ ধরে, 3.57-এর বদলে 4.12 বসিয়ে। h1-এ একটি অ্যান্টেনা থেকে h2-এ একটি বিমান পর্যন্ত পূর্ণ দৃষ্টিরেখা হলো দুটি দিগন্ত-দূরত্বের যোগফল:
d (km) = 4.12 x ( sqrt(h1) + sqrt(h2) ) h1, h2 মিটারে20 m ছাদে অ্যান্টেনা, বিমান 11 000 m-এ: 4.12 x (4.47 + 104.9) = 451 km। একই অ্যান্টেনা, বিমান 1 000 m-এ: 149 km। 30 km দূরের রানওয়েতে বিমান: 4.12 x (4.47 + 2) = 27 km, তাই নীরব।
তোমার নিজের অ্যান্টেনার উচ্চতার জন্য h2-এর বিপরীতে d-এর লেখচিত্র আঁকো। বক্ররেখাটি প্রথমে খাড়া, তারপর সমতল হয়ে আসে, আর এটি প্রতিটি রিসিভারের কভারেজের আকৃতি ব্যাখ্যা করে: ক্রুজিং ট্রাফিকের জন্য 400 km ও তার বেশি, অবতরণের পথে থাকা বিমানের জন্য কয়েক দশ কিলোমিটার, মাটিতে পাশের বিমানবন্দর ছাড়া কিছুই নয়। এটি ব্যাখ্যা করে কেন উচ্চতা একটি রিসিভারের সবচেয়ে গুরুত্বপূর্ণ ধর্ম, আর কেন একটি পাহাড়, একটি ভবন, বা বিমানের নিজের ডানা যখন সে দূরে কাত হয়, একটি ট্র্যাক মুহূর্তে কেটে দিতে পারে।
দ্বিতীয় সীমাটি শক্তি। একটি ট্রান্সপন্ডার কয়েকশ ওয়াট বিকিরণ করে, মোটামুটি সমানভাবে সব অনুভূমিক দিকে। d দূরত্বে সেই শক্তি 4 pi d^2 ক্ষেত্রফলের একটি গোলকের উপর ছড়িয়েছে, তাই নির্দিষ্ট কার্যকর ক্ষেত্রফলের একটি অ্যান্টেনায় ধরা পড়া শক্তি 1 / d^2 হারে কমে: বিপরীত বর্গ সূত্র (inverse square law), যা তোমার মুখস্থ করার বদলে গোলকের ক্ষেত্রফল থেকে প্রতিপাদন করা উচিত। দ্বিগুণ দূরে, এক-চতুর্থাংশ শক্তি; দশ গুণ, একশ ভাগের এক ভাগ। প্রকৌশলীরা ক্ষয়কে ডেসিবেলে প্রকাশ করেন, যেখানে 10 dB মানে শক্তিতে দশ গুণ আর 3 dB মানে দুই গুণ, কারণ ডেসিবেল অনেক মাত্রার পরিসরের গুণকে যোগে পরিণত করে। দুটি সরল অ্যান্টেনার মধ্যে মুক্ত-স্থান পথ ক্ষয় (path loss) হলো:
পথ ক্ষয় (dB) = 20 log10( d, km-এ ) + 20 log10( f, MHz-এ ) + 32.44400 km ও 1090 MHz-এ: 52.0 + 60.7 + 32.4 = 145 dB। একটি 250 W ট্রান্সমিটার হলো +54 dBm; গৃহীত শক্তি 54 - 145 = -91 dBm, প্রায় 8 x 10^-13 W।
সংখ্যাটিতে একটু থামা উচিত: ছাদের একটি রিসিভার এমন একটি সংকেত শনাক্ত করছে যা বিমান থেকে বেরোনোটির চেয়ে 10^14.5 গুণ দুর্বল, এক ওয়াটের মিলিয়নের মিলিয়ন ভাগের এক ভাগ। একটি ভালো শখের রিসিভার প্রায় -100 dBm পর্যন্ত ডিকোড করে, তাই 400 km-এ হাতে 9 dB থাকে। অন্য কথায়, একটি ক্রুজিং যাত্রীবাহী বিমানের জন্য শক্তিগত সীমা ও জ্যামিতিক দিগন্ত একই জায়গায় পড়ে, আর তা নকশা করেই: ট্রান্সপন্ডারের শক্তি ও রিসিভারের মান এমনভাবে নির্ধারিত হয়েছিল যাতে একটি বিমান তার দিগন্ত পর্যন্ত শোনা যায় আর তার বেশি খুব একটা নয়, যা পাশের দেশের ট্রাফিকে চ্যানেল ভেসে যাওয়া ঠেকায়।
দুটি পরিমার্জন। ডপলার: 250 m/s গতিতে এগিয়ে আসা একটি বিমান গৃহীত কম্পাঙ্ককে f v / c = 1.09 x 10^9 x 250 / 3 x 10^8 = 908 Hz সরায়, মিলিয়ন ভাগের এক ভাগেরও কম, যা একটি রিসিভার কখনো লক্ষ করে না; তুলনা করো একই বিমানের শব্দের সঙ্গে, যেখানে v / c হলো 250 / 343 আর সে পার হওয়ার সময় সুর প্রায় এক অষ্টক নেমে যায়। আর যাত্রাকাল: c গতিতে 400 km লাগে 1.33 ms, তাই সম্প্রচারিত অবস্থান পৌঁছানোর সময় ইতিমধ্যেই 1.33 ms পুরোনো, যার মধ্যে বিমান 33 cm সরেছে; একটি মানচিত্রের জন্য নগণ্য, মাল্টিল্যাটারেশনের জন্য নির্ণায়ক, যা ঠিক এই মাইক্রোসেকেন্ডগুলোর উপরেই বাঁচে।
পাঠ 5
অ্যান্টেনা ও রিসিভার: 27-সেন্টিমিটারের একটি তরঙ্গ থেকে মানচিত্রের একটি বিন্দু
একটি অ্যান্টেনা হলো একটি পরিবাহী, যাতে পাশ দিয়ে যাওয়া একটি তড়িৎচুম্বকীয় তরঙ্গ একটি পরিবর্তী প্রবাহ আবিষ্ট করে, আর একই যন্ত্র, একটি প্রবাহ দিয়ে চালালে, একটি তরঙ্গ ছোড়ে; গ্রহণকারী ও প্রেরক অ্যান্টেনা একই জিনিস উল্টো করে চালানো। আবিষ্ট প্রবাহ সবচেয়ে বড় হয় অনুনাদে (resonance), যখন পরিবাহীর দৈর্ঘ্য তার বরাবর প্রবাহের বণ্টনকে তরঙ্গের দোলনের সঙ্গে মিলতে দেয়, যেমন ঠিক দৈর্ঘ্যের একটি তার একটি নির্দিষ্ট সুরে অনুনাদ করে। একটি সোজা পরিবাহীর মৌলিক অনুনাদ অর্ধ তরঙ্গদৈর্ঘ্যে, 1090 MHz-এ 13.75 cm, কেন্দ্রে সবচেয়ে বেশি প্রবাহ ও প্রান্তে শূন্য। ব্যবহারিক ADS-B অ্যান্টেনা, বিমানে ও বেশিরভাগ রিসিভারে, একটি চতুর্থাংশ-তরঙ্গ মনোপোল (quarter-wave monopole): একটি পরিবাহী গ্রাউন্ড প্লেনের উপর 6.9 cm-এর একটি খাড়া উপাদান, যাকে প্লেনটি প্রতিফলিত করে, যাতে উপাদান ও প্রতিবিম্ব মিলে অর্ধ-তরঙ্গ ডাইপোল গড়ে। বিমানে ফিউজেলাজই গ্রাউন্ড প্লেন; কেনা একটি 1090 MHz অ্যান্টেনা একই জ্যামিতি তার নলের ভেতরে লুকিয়ে রাখে, কয়েকবার একটির ওপর একটি সাজিয়ে। বাড়িতে বানানো অ্যান্টেনা কয়েক মিলিমিটারের ভুলেই সুর হারায় আর আকাশের একটি ভগ্নাংশই শোনে, তাই প্রকল্পের রিসিভার কারখানায় সুর-বাঁধা অ্যান্টেনা ব্যবহার করে।
একটি খাড়া মনোপোল দিগন্তের দিকে সবচেয়ে সংবেদনশীল আর নিজের অক্ষ বরাবর একেবারেই নয়; তিন মাত্রায় তার সংবেদনশীলতা একটি রিং ডোনাট, যার ছিদ্রের মধ্য দিয়ে অ্যান্টেনাটি যায়। তাই তোমার রিসিভার 300 km দূরের বিমান নিখুঁতভাবে শুনবে আর ঠিক মাথার উপর দিয়ে যাওয়া একটিকে কয়েক সেকেন্ডের জন্য হারাবে, আর তুমি এটি ঘটতে দেখতে পারো। একটি কোলিনিয়ার অ্যান্টেনা, কয়েকটি অনুনাদী উপাদান একটির উপর আরেকটি সাজানো, ডোনাটটিকে চ্যাপটা করে আর মাথার উপরের ছিদ্রের বিনিময়ে দিগন্তে সংবেদনশীলতা বাড়ায়: এটিই অ্যান্টেনার গেইন (gain), dBi-তে মাপা, আর এটি আসে সংবেদনশীলতার পুনর্বণ্টন থেকে, কখনোই সৃষ্টি থেকে নয়। আর পাঠ 1 থেকে, অ্যান্টেনাকে খাড়া হতে হবে, কারণ তরঙ্গটি খাড়াভাবে সমবর্তিত।
অ্যান্টেনা ও মানচিত্রের একটি বিন্দুর মাঝে চারটি ধাপ। একটি ব্যান্ড-পাস ফিল্টার 1090 MHz পার হতে দেয় আর কয়েকশ মেগাহার্টজ দূরের অনেক বেশি শক্তিশালী মোবাইল-ফোন সংকেত বাদ দেয়, যা নইলে এর পরের সবকিছুকে পরিপৃক্ত করে দিত। অ্যান্টেনার কাছে একটি লো-নয়েজ অ্যামপ্লিফায়ার কেবলের আগে সংকেতকে হাজার গুণ করে, যে কেবল 1090 MHz-এ প্রতি দশ মিটারে প্রায় 3 dB, অর্ধেক সংকেত, হারায়; কেবলের পরে বিবর্ধন করলে তুমি কেবলের গোলমালও বিবর্ধিত করো। একটি সফটওয়্যার-নির্ধারিত রেডিও (software-defined radio), 20 ইউরোর একটি USB যন্ত্র যা মূলত টেলিভিশন টিউনার হিসেবে বিক্রি হতো, সংকেতকে নামিয়ে আনে আর প্রতি সেকেন্ডে দুই মিলিয়ন বার নমুনা নিয়ে সংখ্যার একটি ধারায় পরিণত করে। এখান থেকে এটি প্রোগ্রামিং: বিনামূল্যের সফটওয়্যার নমুনাগুলোয় প্রিঅ্যাম্বল খোঁজে, প্রতিটি মাইক্রোসেকেন্ড ঘরের কোন অর্ধে বেশি শক্তি তা মাপে, 112টি বিট জোড়া লাগায়, CRC হিসাব করে আর, তা পাস করলে, ফিল্ডগুলো ডিকোড করে। তারপর একটি ট্র্যাকার জোড় ও বিজোড় অবস্থান-ফ্রেম জোড়া লাগায়, ICAO ঠিকানা দিয়ে অবস্থান, বেগ ও পরিচয় একত্র করে, আর বার্তা আসা বন্ধ হওয়া পর্যন্ত প্রতিটি বিমানের অবস্থা ধরে রাখে, সাধারণত কারণ সে দিগন্তের নিচে নেমে গেছে।
সেই শৃঙ্খলটি আঁকো, প্রতিটি ধাপের রাশিসহ: অ্যান্টেনায় ন্যানোভোল্ট, অ্যামপ্লিফায়ারের পরে মাইক্রোভোল্ট, রেডিও থেকে প্রতি সেকেন্ডে দুই মিলিয়ন নমুনা, ডিকোডার থেকে প্রতি সেকেন্ডে কয়েকশ ফ্রেম, ট্র্যাকার থেকে প্রতি বিমানে একটি রেকর্ড। মানচিত্রের একটি বিন্দু এমন একটি শৃঙ্খলের দূর প্রান্ত যার প্রতিটি কড়া এই কোর্সের একটি ধারণা: অনুনাদ, ফিল্টারিং, বিবর্ধন, নমুনায়ন, নকশা মেলানো, ডিকোডিং, ত্রুটি পরীক্ষা, সমষ্টিকরণ। প্রকল্পটি হলো শৃঙ্খলটি বানানো আর কোর্সকে আকাশের বিপরীতে পরীক্ষা করা: উচ্চতার বিপরীতে তোমার সর্বোচ্চ পাল্লা মাপো আর দিগন্তের সূত্রের সঙ্গে তুলনা করো; অ্যান্টেনাকে ঘরের ভেতরে, জানালায় ও ছাদে, খাড়া ও অনুভূমিক তুলনা করো; এক দিনের ট্রাফিক লগ করো আর সবচেয়ে ব্যস্ত ঘণ্টা ও সাধারণ ক্রুজ উচ্চতা খুঁজে বের করো; কাঁচা বার্তা ডিকোড করো আর নিজের কোডে তাদের CRC যাচাই করো। আর তারপর সেই প্রশ্নগুলো করো যা ব্যবস্থাটি তোলে কিন্তু উত্তর দেয় না: বার্তাগুলো স্বাক্ষরহীন, তাহলে কাউকে একটি ভূত বিমান সম্প্রচার করা থেকে কী আটকায়; বিমান এমন উপগ্রহের উপর নির্ভর করে যা জ্যাম করা যায়, তাহলে তা হলে কন্ট্রোলার কী দেখেন; আর তথ্য বিমানকে শনাক্ত করে, যা মানুষকে শনাক্ত করতে পারে, তাহলে কার কাকে অনুসরণ করতে পারা উচিত।
চ্যালেঞ্জ
প্রতিটি আগে কাগজে কষে বের করো। দেখুন বোতামটি উত্তর ও যুক্তি দেখায়।
1. 1090 MHz সংকেতের তরঙ্গদৈর্ঘ্য কত, আর এর জন্য একটি চতুর্থাংশ-তরঙ্গ অ্যান্টেনা কত লম্বা?
2. বার্তাটি শব্দের চেয়ে কত গুণ দ্রুত? 30 km দূরের একটি বিমান দুটিই একসঙ্গে ছাড়ে; শব্দ পৌঁছানোর সময় সে কত দূর উড়েছে?
3. একটি রিসিভারের ঘড়ি 2 মাইক্রোসেকেন্ড ভুল। তাতে কত দূরত্ব-ত্রুটি হয়, আর একটি উপগ্রহ রিসিভারের তিনটির বদলে চারটি উপগ্রহ লাগে কেন?
4. 24 বিট ঠিকানা কতগুলো বিমান শনাক্ত করতে পারে? প্রতি মাইক্রোসেকেন্ডে 1 বিট হারে একটি 112-বিট বার্তা কতক্ষণ স্থায়ী, আর প্রিঅ্যাম্বলসহ পুরো সম্প্রচার?
5. 8D4840D6... বার্তায় ডাউনলিংক ফরম্যাট ও সামর্থ্য কী, আর ICAO ঠিকানা কী?
6. একটি গ্রহণকারী অ্যান্টেনা 15 m উঁচুতে। 9 000 m-এ একটি বিমান পর্যন্ত বেতার দিগন্ত কত, আর 300 m-এ একটি পর্যন্ত?
7. দূরত্ব দ্বিগুণ করলে গৃহীত শক্তি এক-চতুর্থাংশ হয় কেন? 200 km-এ পথ ক্ষয় কত, আর 400 km-এর 145 dB-র সঙ্গে তার তুলনা কী?
8. অনুমান করো পাল্লার কী হবে অ্যান্টেনা অনুভূমিকভাবে শোয়ালে, আর রিসিভারকে ছাদ থেকে নিচতলায় সরালে।
এরপর
বানিয়ে ফেলো
এই পাঠগুলোর সবকিছু একটি জানালা থেকে যাচাই করা যায়। হাতে-কলমে কর্মশালা তোমাকে দেয় কেনাকাটার তালিকা (প্রায় 100 থেকে 150 ইউরো, বা তোমার আগে থেকে থাকা একটি Raspberry Pi), কোন অ্যান্টেনা বেছে নেবে ও কোথায় তা রাখবে, যে তিনটি কমান্ড Dataero ফিডার ইনস্টল করে, আর যে পরিমাপগুলো সূত্রগুলোকে বাস্তব বিমানের বিপরীতে পরীক্ষা করে: বেতার দিগন্ত, বিপরীত বর্গ সূত্র, দৈনিক ছন্দ। তোমার রিসিভার যখন মানচিত্রে ফিড করে, সে যে বিমানই শোনে তা সবার জন্য আঁকা হয়, তার গায়ে তোমার স্টেশনের নামসহ।