গ্রহণ চলছে

কীভাবে আমি আমার প্রথম ADS-B রিসিভার বানালাম, এক রবিবারে, Brussels-এ

প্রকাশিত

রান্নাঘরের টেবিলে একটি Raspberry Pi 5, একটি USB SDR ডংগল ও একটি ম্যাগনেটিক-বেস অ্যান্টেনা

২০২৬ সালের মে মাসে লেখা। ফিডার ইনস্টলার এরপর বদলেছে: বর্তমান ধাপগুলোর জন্য radar.dataero.eu-র ওয়ার্কশপ অনুসরণ করুন।

খুব একটা কারিগরি নয় এমন একটি ধাপে ধাপে বিবরণ, এমন একজনের লেখা যিনি, কঠোরভাবে বললে, খুব একটা কারিগরি নন।


আচ্ছা, তাহলে।

গত শনিবার আমি Le Touquet-এ একটি ছোট ফ্লাইট থেকে ফিরলাম। দক্ষিণ-পশ্চিমা বাতাস ১২-এ, এমন আবহাওয়া যা আপনাকে ভুলিয়ে দেয় পূর্বাভাসে আরও খারাপ হওয়ার কথা ছিল। ফেরার পথে - Pas-de-Calais-এর উপরে কোথাও, SkyDemon-এ আমার কয়েক হাজার ফুট উপরে A320-এর একটি শান্ত সারি দেখতে দেখতে - আমার এমন একটি ভাবনা এল যা আগে অন্তত চারবার এসেছে আর কখনও কাজে পরিণত হয়নি।

আমার একটি ADS-B রিসিভার বসানো উচিত।

এবার, Grimbergen থেকে ফেরার ট্রেনে, আমি জিনিসপত্রগুলো অর্ডার করলাম।

রবিবার দুপুরের মধ্যে আমি নিজের যন্ত্রপাতিতে Brussels-এর উপরের উড়োজাহাজ দেখছিলাম। জানালার তাক থেকে। কেটলি চড়িয়ে। পুরো ব্যাপারটায় লেগেছে মোটামুটি আড়াই ঘণ্টা, দুই কাপ কফি, আর বিভ্রান্তির একটি ছোট মুহূর্ত যা আমি ডকুমেন্টেশনের যে লাইনটা বাদ দিয়ে গিয়েছিলাম সেটা পড়তেই মিটে গেল। আমার অনুমান, মোট সময়ের নব্বই মিনিট গেছে আমার আসলে যতটা দরকার তার চেয়ে বেশি মনোযোগ দিয়ে পড়তে।

এই পোস্টটি তাদের জন্য যারা কখনও একটি Raspberry Pi গাইড খুলে চুপচাপ ট্যাবটা বন্ধ করে দিয়েছেন। এটি সেই গাইডের সংস্করণ যা আমি শনিবার সকালে চাইতাম।

কেনাকাটার তালিকা

আমার একটি Raspberry Pi 5 ড্রয়ারে পড়ে ছিল। কেন, তার কোনো ভালো ব্যাখ্যা আমার নেই; গত বসন্তে আকর্ষণীয় কিছু একটা করার ইচ্ছায় কিনেছিলাম, তারপর করিনি। আপনার যদি ইতিমধ্যে একটি Pi না থাকে, একটি Pi 5 (8 GB-ই যথেষ্ট) আর একটি পাওয়ার সাপ্লাই নিন। পুরোনো Pi 4-ও দিব্যি কাজ করে - Pi 5 শুধু আমার কাছে যা ছিল তা-ই।

এর সাথে আমি Amazon.de থেকে দুটি জিনিস যোগ করলাম:

  • একটি NooElec NESDR Smart USB SDR ডংগল - অ্যালুমিনিয়ামের কেস, R820T2 চিপ, একটি মোটা USB স্টিকের আকারের, এক প্রান্তে একটি ছোট অ্যান্টেনা জ্যাক। প্রায় €30। (সত্যি বলতে, এটি আমার অ্যাপার্টমেন্টের সবচেয়ে সুন্দর যন্ত্রপাতি।)
  • একটি Bingfu ডুয়াল-ব্যান্ড ম্যাগনেটিক-বেস অ্যান্টেনা - 978 / 1090 MHz, 7 dBi, তিন মিটার তার, SMA কানেক্টর। প্রায় €25। দেখতে একটি চুম্বক চাকতির উপর বসানো ছোট কালো লবণদানির মতো। মোটের উপর, ঠিকঠাক। এ নিয়ে আরও কথা নিচে।

আর একটি microSD কার্ড, যা আমাকে ডেস্কের ড্রয়ার থেকে খুঁড়ে বের করতে হয়েছে। (সেটা ওখানে ছিল আনুমানিক ২০১৯ সাল থেকে। আমি যতটা ভেবেছি তার চেয়ে এর জীবনটা আরও আকর্ষণীয়।)

Pi যেহেতু আগে থেকেই আমার ছিল, মোট খরচ: প্রায় €55 আর একটি রবিবার সকাল। দাম ওঠানামা করে - Amazon-এর লিস্টিং স্টক ও বিক্রেতার সাথে বদলায়, তাই কেনার আগে দেখে নিন; এখানকার সংখ্যাগুলোকে একটি মোটামুটি ধারণা হিসেবে নিন, কোটেশন হিসেবে নয়।

মিথ, আর বাস্তবতা

মিথটা হলো, একটি Pi সেট আপ করা প্রকল্পের সেই অংশ যেখানে আপনি আবিষ্কার করেন আপনি আসলে কম্পিউটার, আপনার ওয়াইফাই, বা নিজেকে ঠিক বোঝেন না।

বাস্তবতা বরং ফ্লাইট প্রস্তুতির কাছাকাছি। একটি চেকলিস্ট আছে; আপনি ক্রমানুসারে করেন; একটি ধাপ বাদ দিলে চল্লিশ সেকেন্ডের মধ্যে টের পান কারণ কিছু একটা কাজ করে না। বিমান চলাচলের মানুষ এটা পছন্দ করতে প্রশিক্ষিত। যে কেউ একটি সার্কিট উড়েছেন আর HASELL চেক করেছেন, তার এই শখের জন্য সঠিক মস্তিষ্ক আছে।

তাহলে - চেকলিস্ট।

এই Pi-তে আসলে কী ঘটছে

এই ছোট্ট বাক্সে শেষ পর্যন্ত দুটি সফটওয়্যার বাস করে।

প্রথমটি readsb - একটি ওপেন-সোর্স ডিকোডার, রক্ষণাবেক্ষণ করেন এমন ছোট একদল মানুষ যারা রেডিও প্রকৌশল একজন মানুষের জন্য স্বাস্থ্যকর মাত্রার চেয়ে বেশি বোঝেন। এটি আপনার ডংগল অ্যান্টেনা থেকে যে ক্ষীণ 1090 MHz বার্স্টগুলো টেনে আনে তা শোনে, প্রতি সেকেন্ডে হাজার হাজার ওভারল্যাপ করা উড়োজাহাজ ট্রান্সপন্ডারের জট ছাড়ায়, আর ফলাফলটা সেকেন্ডে একবার একটি পরিপাটি JSON ফাইলে লেখে। মোটের উপর, এটাই পুরো প্রকল্পের কঠিন অংশ। অন্য কেউ ইতিমধ্যে সেটা করে রেখেছেন।

দ্বিতীয়টি Dataero ফিডার - একটি ছোট Python সার্ভিস যা readsb-র JSON ফাইল পড়ে আর radar.dataero.eu-তে Dataero নেটওয়ার্কে পাঠায়। এটি সমস্যার সহজ অর্ধেক; এটিই সেই অর্ধেকও যা আপনার যন্ত্রপাতিকে আপনি ছাড়া অন্য কারও কাজে লাগায়।

আপনি প্রথমে readsb ইনস্টল করেন, নিশ্চিত হন যে এটি উড়োজাহাজ শুনছে, তারপর তার উপরে Dataero ফিডার ইনস্টল করেন।

এটাই পুরো স্থাপত্য। এখান থেকে এটা সত্যিই শুধু একটি চেকলিস্ট।

ধাপ ১ - SD কার্ড ফ্ল্যাশ করুন

আপনার ল্যাপটপে Raspberry Pi Imager ডাউনলোড করুন। এটি Windows, Mac ও Linux-এর জন্য আছে, আর নীরবে এটি আমার ব্যবহার করা সেরা ইনস্টলারগুলোর একটি। SD কার্ডটি ল্যাপটপে লাগান। Raspberry Pi OS Lite (64-bit) বেছে নিন - Lite, কারণ যে জিনিসটা জানালার তাকে থাকবে আর কখনও মনিটর দেখবে না, তাতে ডেস্কটপের কোনো দরকার নেই।

Write ক্লিক করার আগে গিয়ার-আইকনের সেটিংস খুলুন। হোস্টনেম সেট করুন (আমারটা radar-etterbeek, কারণ আমি সূক্ষ্ম নই), একটি ব্যবহারকারীর নাম ও পাসওয়ার্ড সেট করুন, আপনার ওয়াইফাইয়ের তথ্য পেস্ট করুন, আর Enable SSH টিক দিন। এতে আপনার দরকারি সবকিছু আগেই তৈরি হয়ে থাকে; আপনাকে কখনও Pi-তে একটি স্ক্রিন লাগাতে হবে না।

Write ক্লিক করুন। এক কাপ কফি নিন। পাঁচ মিনিট পর ফিরে আসুন।

ধাপ ২ - Pi বুট করুন

ল্যাপটপ থেকে SD কার্ডটি বের করুন। Pi-এর নিচের দিকে ঢুকিয়ে দিন। পাওয়ার সাপ্লাই লাগান।

একটি Raspberry Pi যখন প্রথমবার বুট হয়, রান্নাঘরে একটি বিশেষ নীরবতা নেমে আসে। আমারটায় সেটা প্রায় নব্বই সেকেন্ড স্থায়ী হয়েছিল। পটভূমিতে Brothers in Arms, যা মানানসই মনে হয়েছিল।

Pi-এর ভাবনা শেষ হলে আপনার নেটওয়ার্কে এটিকে খুঁজে বের করুন। রাউটারের অ্যাডমিন পাতাটাই সবচেয়ে সহজ উপায় - radar-etterbeek (বা আপনি যা নাম দিয়েছেন) খুঁজুন আর IP ঠিকানাটা টুকে রাখুন।

ধাপ ৩ - SSH দিয়ে ঢুকুন ও আপডেট করুন

আপনার ল্যাপটপের টার্মিনাল থেকে:

ssh sandy@192.168.1.42

(আপনার ব্যবহারকারীর নাম ও আপনার Pi-এর IP ব্যবহার করুন।) প্রথমবার এটি জিজ্ঞেস করবে আপনি হোস্টটিকে বিশ্বাস করেন কি না। করেন। তারপর:

sudo apt update && sudo apt upgrade -y

এতে কয়েক মিনিট লাগে। দ্বিতীয় কাপ কফি বানান।

ধাপ ৪ - ডংগল ও অ্যান্টেনা লাগান

Pi বন্ধ করুন (sudo shutdown now)। NooElec ডংগলটি Pi-এর একটি USB-A পোর্টে লাগান। অ্যান্টেনার SMA তারটি ডংগলের প্রান্তে স্ক্রু করে লাগান - আঙুলে যতটা শক্ত হয়, তারপর দুই আঙুলে এক চতুর্থাংশ পাক; প্লায়ার্স নিয়ে বীরত্ব দেখাবেন না।

অ্যান্টেনাটি এমন কোথাও দাঁড় করান যেখান থেকে আকাশ দেখা যায়। আমি আমারটা বসার ঘরের জানালার ভেতরের দিকে রেখেছি, চুম্বক চাকতিটা একটি ইস্পাতের বিস্কুটের টিনে আটকে, কারণ জানালার তাকটা কাঠের। যা কাজ করে তা-ই।

Pi আবার চালু করুন। আবার SSH দিয়ে ঢুকুন।

ধাপ ৫ - একটি Dataero অ্যাকাউন্ট তৈরি করুন ও আপনার API কী নিন

ব্রাউজারে দুটি ছোট ধাপ, যা Pi-তে ঘটে না।

  1. আপনার ল্যাপটপের ব্রাউজারে radar.dataero.eu খুলুন। Register ক্লিক করুন, ফর্মটি পূরণ করুন, চাইলে আপনার ই-মেইল নিশ্চিত করুন।
  2. লগ ইন করার পর উপরের ডান কোণে আপনার ব্যবহারকারীর নামে ক্লিক করুন, আপনার Profile-এ যান, API Key অংশটি খুঁজুন, আর Request API Key ক্লিক করুন। কী-টি এমন কোথাও কপি করে রাখুন যেখানে আগামী ত্রিশ সেকেন্ডের মধ্যে আপনি এটি খুঁজে পাবেন।

ব্যস। কী-টিকে পাসওয়ার্ডের মতো দেখুন - Discord-এ পেস্ট করবেন না, পাবলিক রিপোতে কমিট করবেন না, রাতের খাবারের টেবিলে পড়ে শোনাবেন না।

ধাপ ৬ - Dataero ফিডার ইনস্টল করুন

Pi-এর SSH সেশনে ফিরে যান। ধাপ ৫ থেকে আপনার এখনও dataero-adsb-feeder ফোল্ডারেই থাকার কথা; যদি অন্য কোথাও চলে গিয়ে থাকেন:

cd ~/dataero-adsb-feeder

তারপর ফিডার ইনস্টলারটি চালান:

sudo bash installer.sh

এটি আপনাকে কয়েকটি ভদ্র প্রশ্ন করবে - সবচেয়ে গুরুত্বপূর্ণ, আপনার Dataero প্রোফাইল থেকে এইমাত্র কপি করা API কী পেস্ট করতে বলবে। ইনস্টলারটি /usr/local/dataero-adsb-feeder-এর নিচে একটি Python ভার্চুয়াল এনভায়রনমেন্ট তৈরি করে, সেখানে একটি .env ফাইলে আপনার কী রাখে, আর ফিডারটিকে একটি systemd সার্ভিস হিসেবে নিবন্ধন করে যা বুটে চালু হয়।

শেষ হলে দেখে নিন এটি চালু আছে কি না:

sudo systemctl status dataero-feeder.service

একই নিয়ম: active (running), সবুজ। যদি না হয়, সবচেয়ে সাধারণ কারণ হলো API কী-তে একটি টাইপো, যা journalctl -u dataero-feeder.service -e বেশ সরাসরিভাবেই জানিয়ে দেবে।

ধাপ ৭ - প্রথম যোগাযোগ

আবার radar.dataero.eu খুলুন, লগ ইন করুন, আর মানচিত্রে আপনার স্টেশনটি খুঁজুন। ফিডার চালু হওয়ার এক-দুই মিনিটের মধ্যে আপনার দেখার কথা যে আপনার স্টেশন-মার্কার সবুজ হয়ে গেছে আর তার থেকে উড়োজাহাজের একটি ছোট নক্ষত্রপুঞ্জ ছড়িয়ে পড়ছে।

আমার দেখা প্রথম উড়োজাহাজটি ছিল Frankfurt থেকে FL340-এ উঠতে থাকা একটি Lufthansa A320, পশ্চিমমুখী। দ্বিতীয়টি Netherlands-এর অনেক উপরে একটি Boeing C-17, FL310-এ পূর্বমুখী - সম্ভবত উপসাগরের কোথাও যাওয়ার লম্বা পথ। তৃতীয়টি আমাকে সত্যিই হাসিয়েছিল: একটি Cirrus SR22 - আমার নয়, কিন্তু যথেষ্ট কাছাকাছি - Belgium-এর উপকূল ধরে ঘুরে বেড়াচ্ছে।

ওটাই সেই মুহূর্ত। একবার আপনি নিজের স্ক্রিনে, নিজের যন্ত্রপাতিতে ধরা পড়া প্রথম তিন-চারটি ট্রেস ফুটে উঠতে দেখলে, প্রকল্পের কারিগরি অংশ শেষ আর শৌখিন অংশ শুরু।

কাজের কমান্ড যা আপনার পরে লাগবে

আগামী সপ্তাহান্তে যখন আপনি ফিরে আসবেন আর সব ভুলে গিয়ে থাকবেন, তার জন্য একটি ছোট রেফারেন্স কার্ড:

# Status
sudo systemctl status readsb
sudo systemctl status dataero-feeder.service
# Live logs
sudo journalctl -u readsb -f
sudo journalctl -u dataero-feeder.service -f
# Restart after editing config
sudo systemctl restart dataero-feeder.service
# Edit the feeder's config (API key, paths, debug)
sudo nano /usr/local/dataero-adsb-feeder/.env

কিছু একটা গোলমাল করছে আর কারণটা স্পষ্ট নয়, এমন অবস্থায় .env-এ DEBUG=TRUE সেট করে সার্ভিসটি রিস্টার্ট করাই সঠিক প্রথম পদক্ষেপ। সমাধান হয়ে গেলে এটিকে আবার FALSE-এ ফিরিয়ে দিন; তাতে লগগুলো শান্ত থাকে।

একটি ইনডোর অ্যান্টেনা আসলে আপনাকে কী দেয়

সত্যি বলতে? আমার প্রত্যাশার চেয়ে বেশি, আর আমার চাওয়ার চেয়ে কম।

Etterbeek-এ আমার জানালা থেকে, সঠিক জ্যামিতিতে, আমি প্রায় 100 নটিক্যাল মাইলের মধ্যে 5,000 ফুটের উপরের প্রায় সবকিছু দেখি। এতে Zaventem-এর প্রধান আগমন, Belgium পার হওয়া উচ্চ-উচ্চতার ইউরোপীয় ট্রাফিক, আর Grimbergen ও Charleroi থেকে বেরোনো বেশিরভাগ GA কভার হয়, একবার সেগুলো ভবনগুলো ছাড়িয়ে গেলে।

যা আমি মিস করি তা হলো নিচু আর কাছের - ছোট এয়ারফিল্ডের সার্কিট ওয়ার্ক, 1,500 ফুটের নিচের হেলিকপ্টার, রাতে নিচু দিয়ে উড়ে যাওয়া মেডিকেল ফ্লাইট। Bingfu সেই কাজটাই করছে যার জন্য এটি তৈরি, অর্থাৎ ছোট, ঘরের ভেতরে, আর যুক্তিসঙ্গত হওয়া। এটি আপনার সাধ্যের সেরা হওয়ার জন্য তৈরি নয়।

তাই আমি সেটাই করেছি যা আমার আগে প্রত্যেক ADS-B ফিডার করেছেন। আমি ইতিমধ্যে একটি আউটডোর অ্যান্টেনার দিকে নজর দিচ্ছি। Auratrove 1090 SMA outdoor, প্রায় €60, বাস্তবসম্মত পরবর্তী ধাপ - ভালো গেইন, আবহাওয়া-সহনশীল, বারান্দার রেলিংয়ে লাগানো যায়। ইনডোর থেকে আউটডোরে রিসেপশনের লাফ, সবার মতে, সূক্ষ্ম কিছু নয়। আমি জানাব।

readsb-র দিকে একটি ছোট প্রণাম

স্পষ্ট করে না বলে এটা শেষ করা ভুল হবে: এই প্রকল্পের সত্যিকারের বুদ্ধিদীপ্ত অংশটা Pi নয়, আর Dataero ফিডারও নয়। সেটা readsb। Dataero-র দিকটা - এই পুরো প্রবন্ধসহ - সহজ অর্ধেক।

readsb-ই সেই জিনিস যা সম্ভবত 200 নটিক্যাল মাইল দূরের উড়োজাহাজ থেকে আসা ক্ষীণ 1090 MHz রেডিও বার্স্ট শোনে, প্রতি সেকেন্ডে হাজার হাজার ওভারল্যাপ করা Mode-S ট্রান্সপন্ডার বার্তার জট ছাড়ায়, আর এই সবকিছুকে একটি পরিষ্কার JSON ফাইলে রূপান্তর করে এমন একটি ছোট কম্পিউটারে যার দাম একটি ভালো রাতের খাবারের চেয়ে কম। এটি dump1090 থেকে এসেছে, Mictronics এগিয়ে নিয়ে গেছেন, আর বর্তমানে রক্ষণাবেক্ষণ করছেন wiedehopf ও অবদানকারীদের একটি কমিউনিটি। Dataero-র আমরা কেউ এর কিছুই লিখিনি। আমরা বাইটগুলো এগিয়ে দিই।

এই সফটওয়্যারটা যদি একটি ব্যান্ড হতো, readsb হতো প্রধান গায়ক, প্রধান গিটারিস্ট, ড্রামার, বেসিস্ট, প্রযোজক, সাউন্ড ইঞ্জিনিয়ার, আর যে প্রতিটি গান লিখেছে সেই ব্যক্তি। Dataero ফিডার হলো দরজায় দাঁড়িয়ে লিফলেট বিলি করা লোকটা।

তাই - একটি ছোট প্রণাম, আন্তরিকভাবে।

Dataero সম্পর্কে একটি নোট

আমি আমার ফিড Dataero-র দিকে পাঠিয়েছি - আমাদের চালানো ইউরোপীয় কমিউনিটি-নির্মিত ADS-B নেটওয়ার্ক - আংশিকভাবে কারণ আমি সেখানেই কাজ করি, আর আংশিকভাবে কারণ যারা নেটওয়ার্কটি চালান তাদেরই মালিকানাধীন একটি নেটওয়ার্কে আমার রিসিভার যুক্ত করা আমার কাছে এমন একটি কোম্পানির হাতে আমার ডেটা তুলে দেওয়ার চেয়ে বেশি আকর্ষণীয়, যার সাথে আমি কখনও কথা বলব না। ইনস্টলটা অন্য কিছুর থেকে আলাদা নয়; যা বদলায় তা হলো এরপর ডেটার কী হয়।

আপনি যদি ইতিমধ্যে কোথাও ফিড করেন, আপনাকে বদলাতে হবে না। Dataero পাশাপাশি চলে।

শনিবার-সকালের স্যান্ডিকে আমি কী বলতাম

যে Raspberry Pi মোটের উপর শুধু একটি ছোট Linux কম্পিউটার, যা ভদ্রভাবে বললে একটি কাজ খুব ভালো করে। যে SDR ডংগলটা একটি USB স্টিকের আকারের। যে অ্যান্টেনাটা একটি রান্নাঘরের সরঞ্জামের আকারের। যে আপনার দরকারি দুটি সফটওয়্যারই স্ক্রিপ্ট দিয়ে ইনস্টল হয়; যে তার একটি ওপেন-সোর্স জাদু আর অন্যটি ষাট লাইনের একটি রিলে; যে এখানে কিছুই অপূরণীয় নয়। একটি ধাপ কাজ না করলে, আপনি তার উপরের লাইনটা আবার পড়েন আর আবার চেষ্টা করেন।

যে একটি ব্রাউজার ট্যাব খুলে সত্যিকারের উড়োজাহাজ দেখার তৃপ্তি, যা ধরা পড়েছে আপনার নিজের যন্ত্রপাতিতে, আপনার জানালার তাকে বসে, আপনার ফ্ল্যাটে - নীরবে, এতে যে পরিশ্রম লেগেছে তার সাথে কোনো অনুপাতেই নেই।

যাই হোক। এক কাপ চা, আর আবার কাজে।


আপনি যদি Dataero-তে আপনার নোড যোগ করতে চান, ফিডার রিপোটি আছে github.com/dataero-adsb/dataero-adsb-feeder-এ আর যে নেটওয়ার্কে এটি যোগ দেয় সেটি আছে radar.dataero.eu-তে। আজ সন্ধ্যায় আমি সেখানেই থাকব।

আপনার নিজের ডেটা দিয়ে দেখুন

আপনার বিমানবন্দর, কর্তৃপক্ষ বা বহর সম্পর্কে আমাদের জানান এবং আমরা দেখাব নেটওয়ার্ক ইতিমধ্যে সেখানে কী দেখে।