১. ভূমিকা

গুগলের ওপেনথ্রেড (OT) হলো থ্রেড-এর একটি ওপেন-সোর্স বাস্তবায়ন। গুগল নেস্ট পণ্যগুলিতে ব্যবহৃত নেটওয়ার্কিং প্রযুক্তি ডেভেলপারদের কাছে আরও ব্যাপকভাবে সহজলভ্য করার জন্য গুগল ওপেনথ্রেড প্রকাশ করেছে, যার উদ্দেশ্য হলো কানেক্টেড হোম এবং বাণিজ্যিক ভবনগুলির জন্য পণ্যের উন্নয়নকে ত্বরান্বিত করা। একটি সংকীর্ণ প্ল্যাটফর্ম অ্যাবস্ট্রাকশন লেয়ার এবং স্বল্প মেমরি ফুটপ্রিন্টের কারণে ওপেনথ্রেড অত্যন্ত পোর্টেবল। এটি সিস্টেম-অন-চিপ (SoC) এবং নেটওয়ার্ক কো-প্রসেসর (NCP) উভয় ডিজাইনকেই সমর্থন করে।
থ্রেড স্পেসিফিকেশনটি বাড়ি এবং বাণিজ্যিক ভবনের অ্যাপ্লিকেশনের জন্য একটি IPv6-ভিত্তিক নির্ভরযোগ্য, সুরক্ষিত এবং স্বল্প-শক্তিসম্পন্ন ওয়্যারলেস ডিভাইস-টু-ডিভাইস যোগাযোগ প্রোটোকল সংজ্ঞায়িত করে।
সিলিকন ল্যাবস তাদের হার্ডওয়্যারের সাথে কাজ করার জন্য ওপেনথ্রেডকে উন্নত করেছে। এই সোর্স কোডটি গিটহাবে এবং সিম্পলিসিটি স্টুডিও ৫ (SSv5)-এর সাথে ইনস্টল করা একটি সফটওয়্যার ডেভেলপমেন্ট কিট (SDK) হিসেবেও পাওয়া যায় । SDK-টিতে গিটহাব সোর্স কোডের একটি সম্পূর্ণ পরীক্ষিত স্ন্যাপশট অন্তর্ভুক্ত রয়েছে। এটি গিটহাব সংস্করণের চেয়ে আরও বিস্তৃত পরিসরের হার্ডওয়্যার সমর্থন করে এবং এতে এমন ডকুমেন্টেশন ও উদাহরণ অ্যাপ্লিকেশন অন্তর্ভুক্ত রয়েছে যা গিটহাবে পাওয়া যায় না।
এই নির্দেশিকায় সিলিকন ল্যাবস ওপেনথ্রেড এসডিকে এবং সিম্পলিসিটি স্টুডিও ৫ ব্যবহার করে কীভাবে ওপেনথ্রেড অ্যাপ্লিকেশন তৈরি শুরু করতে হয়, তা বর্ণনা করা হয়েছে। নিচের ছবিতে কোডল্যাবে ব্যবহৃত বোর্ডগুলো (বিআরডি) এবং একটি ওটি বর্ডার রাউটার (ওটিবিআর) ও দুটি থ্রেড ডিভাইসসহ হার্ডওয়্যার সেটআপ দেখানো হয়েছে।

আপনি যা শিখবেন
- সিলিকন ল্যাবস সিম্পলিসিটি স্টুডিও আইডিই ব্যবহার করে কীভাবে একটি ওপেনথ্রেড প্রজেক্ট তৈরি করবেন।
- সিলিকন ল্যাবস রেডিও বোর্ডে কীভাবে ওপেনথ্রেড সিএলআই বাইনারি তৈরি এবং ফ্ল্যাশ করতে হয়।
- ডকার ব্যবহার করে কীভাবে একটি রাস্পবেরি পাই 3B+ বা তার চেয়ে উন্নত সংস্করণকে ওপেনথ্রেড বর্ডার রাউটার (OTBR) হিসেবে সেট আপ করবেন।
- OTBR-এ কীভাবে একটি থ্রেড নেটওয়ার্ক তৈরি করতে হয়।
- থ্রেড নেটওয়ার্কে ডিভাইসগুলোর আউট-অফ-ব্যান্ড কমিশনিং।
- পিং কমান্ড ব্যবহার করে নোডগুলোর মধ্যে থ্রেড কমিউনিকেশন কীভাবে যাচাই করা যায়।
২. পূর্বশর্তসমূহ
হার্ডওয়্যার:
- ৩টি EFR32MGxx রেডিও বোর্ড – এই ডিভাইসগুলোর যেকোনো সংমিশ্রণ ব্যবহার করা যেতে পারে। এই কোডল্যাবে RCP হিসেবে একটি BRD4166A এবং ফুল থ্রেড ডিভাইস হিসেবে দুটি BRD4168A ব্যবহৃত হয়েছে।
- EFR32MG12 (BRD 4161A , BRD 4166A , BRD 4170A , BRD 4304 A)
- EFR32MG13 (BRD 4168A )
- EFR32MG21 (BRD 4180A , BRD 4180B )
- BRD4001A: রেডিও বোর্ডগুলো হোস্ট করার জন্য ওয়্যারলেস স্টার্টার মেইন বোর্ড (WSTK)। BRD4166A ছাড়া, বাকি সব রেডিও বোর্ডের জন্য একটি করে স্টার্টার মেইন বোর্ড প্রয়োজন। মেইন বোর্ডগুলো সংযোগ ও পাওয়ার দেওয়ার জন্য মিনি ইউএসবি ক্যাবল অথবা BRD4166A-এর জন্য মাইক্রো ইউএসবি ক্যাবল প্রয়োজন।

- একটি রাস্পবেরি পাই 3B+ বা তার চেয়ে উন্নত সংস্করণ, যাতে রাস্পবিয়ান স্ট্রেচ লাইট ওএস ইমেজ অথবা রাস্পবিয়ান স্ট্রেচ উইথ ডেস্কটপ ইনস্টল করা আছে এবং যা ইথারনেটের মাধ্যমে ইন্টারনেটে সংযুক্ত। আমরা এটিকে একটি ওটি বর্ডার রাউটার হিসেবে কনফিগার করি।
- কমপক্ষে ২টি ইউএসবি পোর্ট এবং ইন্টারনেট সংযোগসহ একটি উইন্ডোজ/লিনাক্স/ম্যাক হোস্ট সিস্টেম প্রয়োজন। এসএসভি৫ (SSv5)- এ হার্ডওয়্যার এবং ওএস-এর প্রয়োজনীয়তাগুলো দেখে নিন।
- রাস্পবেরি পাইকে ইন্টারনেটের সাথে সংযোগ করার জন্য অন্তত একটি ইথারনেট ক্যাবল প্রয়োজন। WSTK-গুলো আইপি (IP)-এর মাধ্যমে ডিবাগ এবং ফ্ল্যাশিংও সমর্থন করে, তাই ঐচ্ছিকভাবে, একটি ইথারনেট সুইচের মাধ্যমে WSTK-কে আপনার হোস্ট সিস্টেমের সাথে সংযোগ করতে অতিরিক্ত ইথারনেট ক্যাবল ব্যবহার করা যেতে পারে।
সফটওয়্যার:
- Windows/Linux/Mac হোস্ট সিস্টেমে Simplicity Studio v5 ইনস্টল এবং আপডেট করা হয়েছে
- জিএনইউ এআরএম টুলচেইন
- গেকো এসডিকে স্যুট ৩.২.০ বা তার পরবর্তী সংস্করণ এবং সিলিকন ল্যাবস ওপেনথ্রেড এসডিকে।
৩. হার্ডওয়্যার সেট আপ
এই কোডল্যাবটি তৈরি করা হয়েছে ব্যবহার করে
- বামদিকে দেখানো EFR32MG12 BRD4166A Thunderboard Sense 2 ।
- ডানদিকে দেখানো দুটি EFR32MG13 BRD4168A ।
- macOS Catalina 10.15.7-এ Simplicity Studio v5 ইনস্টল করা হয়েছে
- গেকো এসডিকে ৩.২.০
- জিএনইউ এআরএম ভি৭.২.১


নিচের ছবিতে দেখানো অনুযায়ী প্রতিটি ওয়্যারলেস স্টার্টার কিট মেইন বোর্ডকে ইউএসবি (USB) দিয়ে হোস্ট কম্পিউটারের সাথে সংযুক্ত করুন। এই সংযোগগুলো আরসিপি (RCP) এবং এন্ড ডিভাইসগুলোর প্রোগ্রামিং ও নেটওয়ার্ক বিশ্লেষণের সুযোগ দেবে। আমরা প্রথমে হোস্ট কম্পিউটার ব্যবহার করে ot-rcp ফার্মওয়্যার দিয়ে BRD4166A-কে প্রোগ্রাম করব এবং অবশেষে এটিকে রাস্পবেরি পাই (Raspberry Pi)-এর সাথে সংযুক্ত করব। ঐচ্ছিকভাবে, এন্ড ডিভাইসগুলোকে একটি সাধারণ ইথারনেট সুইচের মাধ্যমে হোস্ট কম্পিউটারের সাথে সংযুক্ত করা যেতে পারে। এই স্টার্টার কিটগুলো আইপিভি৪ (IPv4)-এর মাধ্যমেও প্রোগ্রামিং এবং নেটওয়ার্ক বিশ্লেষণ সমর্থন করে।

৪. ফার্মওয়্যার সেট আপ
শুরু করার দুটি উপায় আছে। উভয় বিকল্পই আপনাকে এই কোডল্যাবের জন্য প্রয়োজনীয় ফার্মওয়্যারগুলো ফ্ল্যাশ করার সুযোগ দেবে।
- প্রজেক্ট: (প্রস্তাবিত) একটি নমুনা অ্যাপ্লিকেশন তৈরি, বিল্ড এবং ফ্ল্যাশ করুন। এই বিকল্পটি আপনাকে প্রজেক্টের মধ্যে অ্যাপ্লিকেশনটি কাস্টমাইজ করার সুযোগ দেয়। অথবা
- ডেমো: (ঐচ্ছিক) যেকোনো নমুনা অ্যাপ্লিকেশনের জন্য আগে থেকে তৈরি ডেমোগুলো সরাসরি রেডিও বোর্ডে ফ্ল্যাশ করুন। ব্যবহারকারীদের একটি ঐচ্ছিক অনুশীলন হিসেবে ডেমো ফার্মওয়্যার সেট আপটি চেষ্টা করে দেখার জন্য উৎসাহিত করা হচ্ছে। বিস্তারিত জানার জন্য অনুগ্রহ করে এই কোডল্যাবের শেষে "ঐচ্ছিক ফার্মওয়্যার সেট আপ - ডেমো" বিভাগটি দেখুন।
এই কোডল্যাবের জন্য আমরা প্রজেক্ট ভিত্তিক পদ্ধতি ব্যবহার করব।
উদাহরণ ব্যবহার করে প্রকল্প তৈরি করুন
আমরা দুটি প্রজেক্ট তৈরি করব। BRD4166A-এর জন্য ot-rcp প্রজেক্ট এবং দুটি BRD4168A-এর জন্য ot-cli-ftd প্রজেক্ট। অনুগ্রহ করে এই ধাপগুলো অনুসরণ করুন এবং আপনার বোর্ডের জন্য উপযুক্ত স্যাম্পল অ্যাপ্লিকেশনটি নির্বাচন করুন।
- স্টুডিও-এর ফাইল মেনু খুলুন এবং নিউ > সিলিকন ল্যাবস প্রজেক্ট উইজার্ড নির্বাচন করুন। টার্গেট, এসডিকে, এবং টুলচেইন সিলেকশন ডায়ালগ বক্সটি খুলবে। ওপেনথ্রেড দ্বারা সমর্থিত ডিফল্ট সিম্পলিসিটি আইডিই / জিএনইউ টুলচেইন পরিবর্তন করবেন না। নেক্সট-এ ক্লিক করুন ।
- টার্গেট বোর্ড: নির্বাচিত রেডিও বোর্ড (BRD4168A) এবং মেইন বোর্ড (BRD4001A) একসাথে দেখায়।
- টার্গেট ডিভাইস: এই ফিল্ডটি বোর্ডে থাকা মাইক্রোকন্ট্রোলার চিপ (MCU) দেখায়। BRD4168A-তে একটি EFR32MG13 MCU রয়েছে।
- SDK: এখানে আপনি OT-এর যে SDK সংস্করণটি ব্যবহার করছেন তা নির্বাচন করতে পারেন। স্যুট তথ্যের মধ্যে SDK ট্যাগ এবং OpenThread-এর সিলিকন ল্যাবস বিল্ড অন্তর্ভুক্ত থাকে, যেমন
Platform 4.0.1.0এবংOpenThread 2.0.1.0 (GitHub-55af6ce2c)। - IDE/ টুলচেইন: OT প্রজেক্ট কম্পাইল করার জন্য যে টুলচেইনটি ব্যবহার করা হবে। আমরা GNU ARM ব্যবহার করি।

- এক্সাম্পল প্রজেক্ট সিলেকশন ডায়ালগ বক্সটি খুলবে। আপনি এক্সাম্পল প্রজেক্টের একটি তালিকা দেখতে পাবেন। একটি নির্দিষ্ট এক্সাম্পল খোঁজার জন্য থ্রেড টেকনোলজি টাইপ এবং কীওয়ার্ড ফিল্টার ব্যবহার করুন। গেকো এসডিকে স্যুট ভার্সন নম্বরটি অবশ্যই লিখে রাখুন। রাস্পবেরি পাইকে বর্ডার রাউটার হিসেবে সেট আপ করার সময় আপনার এই ভার্সন ট্যাগটির প্রয়োজন হবে। ot-cli-ftd নির্বাচন করুন, তারপর NEXT-এ ক্লিক করুন।

- প্রজেক্ট কনফিগারেশন ডায়ালগ বক্সটি খুলবে। এখানে আপনি আপনার প্রজেক্টের নাম পরিবর্তন করতে, ডিফল্ট প্রজেক্ট ফাইলের অবস্থান বদলাতে এবং প্রজেক্ট ফাইলগুলো লিঙ্ক করবেন নাকি কপি করবেন তা নির্ধারণ করতে পারবেন। লিঙ্ক করা প্রজেক্ট ফাইলগুলো SDK-কে নির্দেশ করে এবং আপনার করা যেকোনো পরিবর্তন SDK-তে যুক্ত হয়ে ভবিষ্যতের প্রজেক্টগুলোতে ব্যবহৃত হয়। প্রজেক্ট সোর্স কপি করলে, আপনি প্রজেক্ট-লোকাল কপিটি এডিট করতে পারবেন, ফলে SDK ফাইলগুলো অক্ষত থাকে। ' লিঙ্ক এসডিকে এবং কপি প্রজেক্ট সোর্স ' হলো ডিফল্ট এবং প্রস্তাবিত বিকল্প। ফিনিশ (FINISH ) বাটনে ক্লিক করুন।

- Simplicity IDE Perspective খোলার সময় Project Configurator-এর OVERVIEW ট্যাবটি খোলা থাকে।

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

এই ডেমোর জন্য আমরা স্যাম্পল অ্যাপ্লিকেশনগুলোর ডিফল্ট কনফিগারেশন ব্যবহার করব। আপনার অন্য বোর্ডের জন্য ot-rcp প্রজেক্ট তৈরি করতে উপরের ধাপগুলো পুনরাবৃত্তি করুন।
প্রকল্পগুলি তৈরি করুন এবং ফ্ল্যাশ করুন
ot-rcp এবং ot-cli-ftd উভয় প্রজেক্ট বিল্ড ও ফ্ল্যাশ করুন।
- আপনার প্রজেক্টটি কনফিগার করার পর, উপরের টুলবারে থাকা বিল্ড কন্ট্রোল (হাতুড়ি আইকন) -এ ক্লিক করুন। বিকল্পভাবে, আপনি প্রজেক্টটির উপর রাইট-ক্লিক করে বিল্ড প্রজেক্ট-এ ক্লিক করতে পারেন।

- অগ্রগতি কনসোলে এবং নিচের ডানদিকের একটি প্রোগ্রেস বারে প্রদর্শিত হয়। আপনার প্রোজেক্ট সম্পর্কিত যেকোনো ত্রুটি বা সতর্কতাও এই আউটপুট উইন্ডোতে দেখা যাবে।

- সফলভাবে প্রজেক্ট বিল্ড করার পর বাইনারি ইমেজগুলো তৈরি হয়। আপনি প্রজেক্ট এক্সপ্লোরার ভিউ থেকে বাইনারি ইমেজটি ফ্ল্যাশ করতে পারেন। কম্পাইলার সাবডিরেক্টরিতে .bin, .hex, বা .s37 ফাইলটি খুঁজুন। ফাইলটির উপর রাইট-ক্লিক করে ‘Flash to Device’ নির্বাচন করুন। যদি আপনার একাধিক ডিভাইস সংযুক্ত থাকে, তবে প্রোগ্রাম করার জন্য একটি ডিভাইস নির্বাচন করে ‘OK ’ ক্লিক করুন। ফাইল পাথটি পূরণ করা অবস্থায় ফ্ল্যাশ প্রোগ্রামারটি খুলবে। ‘PROGRAM’ ক্লিক করুন।

৫. ফার্মওয়্যার সেটআপের সারাংশ
এই পর্যায়ে আপনার রেডিও বোর্ডগুলিতে উপযুক্ত ফার্মওয়্যার তৈরি, কম্পাইল এবং ফ্ল্যাশ করা হয়ে যাওয়ার কথা। BRD4166A-তে ot-rcp ফ্ল্যাশ করা হয়ে গেলে, এটিকে হোস্ট সিস্টেম থেকে সংযোগ বিচ্ছিন্ন করুন এবং এই বোর্ডটিকে রাস্পবেরি পাই-এর সাথে সংযুক্ত করুন।
এই অংশটি সম্পন্ন করার পর, আপনার থ্রেড নেটওয়ার্ক হার্ডওয়্যার সেটআপটি দেখতে এইরকম হবে।

৬. ot-cli-ftd ডিভাইসগুলির জন্য সিরিয়াল কনসোল সেট আপ করুন।
কনসোল ইন্টারফেস চালু করতে, Simplicity IDE পার্সপেক্টিভে Devices View / Debug Adapters উইন্ডোতে আপনার J-Link ডিভাইসের উপর রাইট-ক্লিক করুন । Launch Console নির্বাচন করুন। কনসোলে একটি প্রম্পট পেতে, Serial 1 ট্যাবটি নির্বাচন করুন এবং Enter চাপুন । FTD নোডটির অবস্থা পরীক্ষা করুন।

আপনি লক্ষ্য করবেন যে, আমাদের কাছে এখনও ot-rcp এর জন্য কোনো কনসোল নেই। পরবর্তী ধাপে আমরা রাস্পবেরি পাই-কে একটি OT বর্ডার রাউটার হিসেবে কনফিগার করব এবং ot-rcp এর জন্য কনসোলটি সেট আপ করব।
৭. রাস্পবেরি পাইকে বর্ডার রাউটার হিসেবে সেট আপ করুন।
সিলিকন ল্যাবস OTBR-এর সাথে কোম্পানির ডকার কন্টেইনারটি স্থাপন করার পরামর্শ দেয়। একটি কন্টেইনারে OTBR চালানোর ফলে সহজে স্থাপনযোগ্য আর্টিফ্যাক্ট তৈরি করা যায় এবং দ্রুত ডেভেলপমেন্ট প্রোটোটাইপিং ও টেস্টিং করা সম্ভব হয়।
সিলিকন ল্যাবস OTBR ইমেজগুলো ট্যাগসহ siliconlabsinc DockerHub- এ হোস্ট করা আছে। প্রতিটি ট্যাগ একটি GSDK ভার্সনের সাথে সম্পর্কিত:
https://hub.docker.com/r/siliconlabsinc/openthread-border-router/tags
একটি নির্দিষ্ট রিলিজের জন্য Simplicity Studio 5 ব্যবহার করে তৈরি করা RCP-এর সাথে ডকার কন্টেইনার ব্যবহার করতে হবে। আপনি যে GSDK ভার্সন দিয়ে পরীক্ষা করছেন, তার সাথে কন্টেইনার ট্যাগ ভার্সনটি মেলানো নিশ্চিত করুন। উদাহরণস্বরূপ, Example Project Selection উইন্ডো থেকে ot-rcp নির্বাচন করার সময় যদি আপনার GDSK ভার্সন Gecko SDK Suite v4.0.1 (140) হয়ে থাকে, তাহলে siliconlabsinc/openthread-border-router:gsdk-4.0.1 ইমেজটি ব্যবহার করুন।

রাস্পবেরি পাই সেট আপ
- আপনার এসডি কার্ডে Raspbian Stretch Lite OS ইমেজ অথবা Raspbian Stretch with Desktop ফ্ল্যাশ করে নিন।
- আপনি রাস্পবেরি পাই-তে SSH করতে পারেন অথবা সরাসরি রাসবিয়ান ডেস্কটপ ব্যবহার করে কাজ করতে পারেন। একটি টার্মিনাল খুলুন।
- ডকার ইনস্টল করার আগে আপনার লোকাল রিপোজিটরি এবং প্যাকেজ ম্যানেজার আপডেট করে নিন ( apt-get update এবং apt-get upgrade )।
ডকার ইমেজ ইনস্টল করুন
- নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার RPi-তে ডকার ইনস্টল করুন।
curl -sSL https://get.docker.com | sh
- কাজ শেষ হয়ে গেলে, আপনি ডকার ব্যবহারকারী সেটিংস পরিবর্তন করে প্রতিটি কমান্ডের আগে sudo-এর প্রয়োজন না রাখার ব্যবস্থা করতে পারেন। রিবুট করা আবশ্যক।
sudo usermod -aG docker $USER
- কন্টেইনারগুলো ইনস্টল করতে নিম্নলিখিত কমান্ডগুলো দিন। মনে রাখবেন, আপনার RCP-এর সাথে একবারে শুধুমাত্র একটি Border Router কন্টেইনার চালু থাকতে পারে। এছাড়াও, আপনার Simplicity Studio GSDK ভার্সনের সাথে সঠিক ডকার ইমেজটি মিলিয়ে নিন। উদাহরণস্বরূপ,
gsdk-4.0.1:docker pull siliconlabsinc/openthread-border-router:gsdk-4.0.1
ডকার কনফিগার করুন এবং চালান
- স্টার্টআপের সময় আপনার RCP সংযোগ করার জন্য OTBR-এর সাথে আপনি যে TTY পোর্টটি ব্যবহার করতে চান, সেটি কনফিগার করতে হবে। আপনার RCP ডিভাইসের TTY পোর্টটি খুঁজুন। এটি করার সবচেয়ে সহজ উপায় হলো, RCP সংযুক্ত হয়ে গেলে একটি
/tty/dev... এন্ট্রি খোঁজা। এটি সাধারণত/dev/ttyUSB0অথবা/dev/ttyACM0হবে। - নিম্নলিখিত কমান্ডটি ব্যবহার করে আপনার ডকার ইনস্টলেশনটি চালান। আপনার ডকার ইমেজের নামটি অবশ্যই সংশ্লিষ্ট GSDK ভার্সন দিয়ে প্রতিস্থাপন করবেন। উদাহরণস্বরূপ,
gsdk-4.0.1:docker run -d --name "otbr" \ --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" \ -p 8080:80 --dns=127.0.0.1 -it \ --volume /dev/ttyACM0:/dev/ttyACM0 \ --privileged siliconlabsinc/openthread-border-router:gsdk-4.0.1 \ --radio-url spinel+hdlc+uart:///dev/ttyACM0?uart-baudrate=460800 \ --backbone-interface eth0
-
-dনিশ্চিত করে যে কন্টেইনারটি ডিটাচড মোডে চলবে। - আপনি যেকোনো সময়
docker logsকমান্ড ব্যবহার করে কন্টেইনারটির চলমান লগ দেখতে পারেন। - ডকার কন্টেইনারটি সঠিকভাবে বন্ধ (বা অপসারণ) না করা পর্যন্ত
--nameস্থায়ী থাকে। - পোর্ট ৮০৮০ হলো সেই ওয়েব সার্ভারের পোর্ট, যেখানে বর্ডার রাউটার ব্যবস্থাপনা ওয়েবপেজটি হোস্ট করা থাকে।
- দীর্ঘ IPv6 প্যাকেট সহ DTLS-এর মতো ব্যয়বহুল অপারেশনের ক্ষেত্রে UART-এর মাধ্যমে ফ্র্যাগমেন্টেশন / রিঅ্যাসেম্বলি সমস্যা এড়ানোর জন্য রেডিও ইউআরএল অপশনে
?uart-baudrate=460800প্রয়োজন।
-
RCP নোডের সাথে যোগাযোগ করুন
ডকারটি চালু হয়ে গেলে, আপনি এই কমান্ডটি ব্যবহার করে একটি ইন্টারেক্টিভ শেলের মাধ্যমে RCP নোডের সাথে যোগাযোগ করতে পারবেন। RCP নোডটির অবস্থা পরীক্ষা করুন।
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
আপনি চলমান কন্টেইনার আইডিগুলোর একটি তালিকা পেতে পারেন।
$ docker ps -aq
আপনি বর্ডার রাউটারের চলমান লগ আউটপুট দেখার জন্য OTBR ডকার কন্টেইনারটি যে উইন্ডোতে চলছে সেটি চেক করতে পারেন অথবা নিচের মতো করে কন্টেইনার লগটি অনুসরণ করতে পারেন:
$ docker logs [container-id] -f
ঐচ্ছিকভাবে, ডকার কন্টেইনারটি সঠিকভাবে লোড হলে আপনি আপনার ইমেজটি বন্ধ, অপসারণ বা কিল করতে পারেন।
$ docker stop otbr
$ docker rm otbr
$ docker kill otbr
ঐচ্ছিক: শেল থেকে বের হতে CNTL + C ব্যবহার করুন।
এই পর্যায়ে আপনার কাছে ৩টি কনসোল থাকা উচিত।
- সিম্পলিসিটি স্টুডিওতে দুটি
ot-cli-ftdকনসোল রয়েছে, যেগুলোকে ফুল থ্রেড ডিভাইস হিসেবে সেট আপ করা হয়েছে। - রাস্পবেরি পাই-তে একটি
ot-ctlইন্টারেক্টিভ শেল রয়েছে, যেটিকে একটি OT বর্ডার রাউটার হিসেবে সেট আপ করা হয়েছে।
এখন আমরা একটি থ্রেড নেটওয়ার্ক গঠন করতে প্রস্তুত।
৮. একটি থ্রেড নেটওয়ার্ক তৈরি করুন
আরসিপি সেট আপ করুন
নেটওয়ার্ক তৈরি করার জন্য, আমরা OTBR-এ ot-ctl shell দিয়ে শুরু করি, যা RCP নোডের সাথে যোগাযোগের জন্য ব্যবহৃত হয়। নিচে দেখানো ক্রমানুসারে নিম্নলিখিত কমান্ডগুলো প্রবেশ করান:
সূচী | আদেশ | কমান্ডের বিবরণ | প্রত্যাশিত প্রতিক্রিয়া | ||
১ | | একটি নতুন নেটওয়ার্ক কনফিগারেশন তৈরি করুন। | সম্পন্ন হয়েছে | ||
২ | | নতুন ডেটাসেটটি সক্রিয় অপারেশনাল ডেটাসেটে যুক্ত করুন। | সম্পন্ন হয়েছে | ||
৩ | | থ্রেড ইন্টারফেস সক্রিয় করুন। | সম্পন্ন হয়েছে | ||
৪ | | থ্রেড প্রোটোকল অপারেশন সক্রিয় ও সংযুক্ত করুন। | সম্পন্ন হয়েছে | ||
থ্রেড ইন্টারফেসটি চালু হওয়ার জন্য ১০ সেকেন্ড অপেক্ষা করুন। | |||||
৫ | | ডিভাইসের অবস্থা পরীক্ষা করুন। এটির লিডার হওয়া উচিত। | নেতা | ||
৬ | | নেটওয়ার্ক কনফিগারেশন দেখুন। | সক্রিয় টাইমস্ট্যাম্প: ১ | ||
দুটি FTD-কে এই থ্রেড নেটওয়ার্কে যুক্ত করার জন্য আমরা ot-cli-ftd এর চ্যানেল নম্বর এবং নেটওয়ার্ক কী ব্যবহার করব।
আমাদের থ্রেড নেটওয়ার্কে FTD সেট আপ করুন এবং যুক্ত করুন (আউট অফ ব্যান্ড পদ্ধতি)।
আউট-অফ-ব্যান্ড পদ্ধতিতে, আমরা সমস্ত নিরাপত্তা তথ্য জানি এবং নোডটি ম্যানুয়ালি যোগ করি। সিম্পলিসিটি কনসোলে, নিচে দেখানো ক্রমানুসারে নিম্নলিখিত কমান্ডগুলো ব্যবহার করে আমাদের নেটওয়ার্কে উভয় FTD যোগ করুন।
সূচী | আদেশ | কমান্ডের বিবরণ | প্রত্যাশিত প্রতিক্রিয়া | ||
১ | | OTBR দ্বারা ব্যবহৃত চ্যানেলটি সেট করুন। | সম্পন্ন হয়েছে | ||
২ | | একটি ডিভাইসকে থ্রেড নেটওয়ার্কে সংযুক্ত করার জন্য শুধুমাত্র নেটওয়ার্ক কী-এর প্রয়োজন হয়। | সম্পন্ন হয়েছে | ||
৩ | | নতুন ডেটাসেটটি সক্রিয় অপারেশনাল ডেটাসেটে যুক্ত করুন। | সম্পন্ন হয়েছে | ||
৪ | | থ্রেড ইন্টারফেস সক্রিয় করুন। | সম্পন্ন হয়েছে | ||
৫ | | থ্রেড প্রোটোকল অপারেশন সক্রিয় ও সংযুক্ত করুন। | সম্পন্ন হয়েছে | ||
ডিভাইসটি সংযুক্ত ও কনফিগার হওয়ার জন্য ২০ সেকেন্ড অপেক্ষা করুন। | |||||
৬ | | নেটওয়ার্ক কনফিগারেশন দেখুন। | শিশু | ||
থ্রেড ডিভাইসগুলির মধ্যে যোগাযোগ
ডিভাইসগুলো একে অপরের সাথে যোগাযোগ করতে পারে কিনা তা পরীক্ষা করার জন্য আমরা ping ) কমান্ড ব্যবহার করব। পিং কমান্ড ব্যবহার করার জন্য আমাদের ডিভাইসগুলোর IPv6 অ্যাড্রেস প্রয়োজন। এগুলো ipaddr কমান্ড ব্যবহার করে পাওয়া যায়।
> ipaddr fd5c:c6b:3a17:40b9:0:ff:fe00:fc00 # Leader Anycast Locator (ALOC) fd5c:c6b:3a17:40b9:0:ff:fe00:1800 # Routing Locator (RLOC) fd5c:c6b:3a17:40b9:84e2:bae8:bd5b:fa03 # Mesh-Local EID (ML-EID) fe80:0:0:0:c449:ca4a:101f:5d16 # Link-Local Address (LLA)
উভয় FTD থেকে OTBR-এর RLOC অ্যাড্রেস ব্যবহার করে OTBR-কে পিং করুন।
> ping fd5c:c6b:3a17:40b9:0:ff:fe00:1800 Done > > 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=30ms 16 bytes from fd5c:c6b:3a17:40b9:0:ff:fe00:1800: icmp_seq=3 hlim=64 time=52ms
প্রতিক্রিয়াটি নির্দেশ করে যে পেলোড গৃহীত হয়েছে এবং যোগাযোগ সফল হয়েছে। OTBR থেকে FTD-গুলোকে পিং করার জন্য প্রক্রিয়াটি পুনরাবৃত্তি করুন।
৯. অভিনন্দন
আপনি একটি থ্রেড নেটওয়ার্ক তৈরি করেছেন!
আপনি এখন জানেন:
- সিলিকন ল্যাবস সিম্পলিসিটি স্টুডিও আইডিই ব্যবহার করে কীভাবে একটি ওপেনথ্রেড প্রজেক্ট তৈরি করবেন।
- সিলিকন ল্যাবস রেডিও বোর্ডে কীভাবে ওপেনথ্রেড সিএলআই বাইনারি তৈরি এবং ফ্ল্যাশ করতে হয়।
- ডকার ব্যবহার করে কীভাবে একটি রাস্পবেরি পাই 3B+ বা তার চেয়ে উন্নত সংস্করণকে ওপেনথ্রেড বর্ডার রাউটার (OTBR) হিসেবে সেট আপ করবেন।
- OTBR-এ কীভাবে একটি থ্রেড নেটওয়ার্ক তৈরি করতে হয়।
- থ্রেড নেটওয়ার্কে ডিভাইসগুলোর আউট-অফ-ব্যান্ড কমিশনিং।
- পিং কমান্ড ব্যবহার করে নোডগুলোর মধ্যে থ্রেড কমিউনিকেশন কীভাবে যাচাই করা যায়।
আরও পড়ুন
বিভিন্ন ধরনের ওপেনথ্রেড রিসোর্সের জন্য openthread.io এবং GitHub দেখুন, যার মধ্যে রয়েছে:
- সমর্থিত প্ল্যাটফর্ম — ওপেনথ্রেড সমর্থন করে এমন সমস্ত প্ল্যাটফর্ম সম্পর্কে জানুন
- OpenThread তৈরি করুন — OpenThread তৈরি ও কনফিগার করার বিষয়ে আরও বিস্তারিত তথ্য
- থ্রেড প্রাইমার — এই কোডল্যাবে আলোচিত থ্রেডের সমস্ত ধারণা এখানে আলোচনা করা হয়েছে।
- সিলিকন ল্যাবস ওপেনথ্রেড প্রশিক্ষণ — ওপেনথ্রেডের পরিচিতি, কমিশনিং ও বর্ডার রাউটার নিয়ে আলোচনা, এবং একটি ওপেনথ্রেড নেটওয়ার্ক তৈরির হাতে-কলমে অনুশীলন।
- QSG170: সিলিকন ল্যাবস ওপেনথ্রেড কুইক-স্টার্ট গাইড — সিলিকন ল্যাবস থ্রেড ডেভেলপমেন্টের জন্য শুরু করার প্রক্রিয়াটি বিস্তারিতভাবে আলোচনা করে।
- AN1256: ওপেনথ্রেড বর্ডার রাউটারের সাথে সিলিকন ল্যাবস আরসিপি ব্যবহার — রাস্পবেরি পাই বর্ডার রাউটার হোস্টের জন্য বিল্ড এবং ইনস্টলেশন নির্দেশাবলী
১০. ঐচ্ছিক ফার্মওয়্যার সেট আপ - ডেমো
ডেমো হলো আগে থেকে তৈরি ফার্মওয়্যার ইমেজ যা একটি সামঞ্জস্যপূর্ণ ডিভাইসে ডাউনলোড করার জন্য প্রস্তুত থাকে। সিম্পলিসিটি স্টুডিওতে আপনার পার্টের জন্য কোনো ডেমো উপলব্ধ আছে কিনা তা খুঁজে বের করার সবচেয়ে দ্রুত উপায় হলো, ডিবাগ অ্যাডাপ্টার ভিউ-এর অধীনে আপনার পার্টটিতে ক্লিক করা এবং তারপরে লঞ্চার পার্সপেক্টিভে থাকা এক্সাম্পল প্রজেক্টস অ্যান্ড ডেমোস ট্যাবে যাওয়া। এক্সাম্পল প্রজেক্টস ফিল্টারটি নিষ্ক্রিয় করুন এবং টেকনোলজি টাইপের অধীনে থ্রেড রেডিও চেকবক্সটি চেক করুন।

OpenThread SDK-এর সাথে প্রদত্ত প্রি-কম্পাইলড ডেমো অ্যাপ্লিকেশন ইমেজগুলো নিম্নলিখিত বোর্ডগুলোর সাথে সামঞ্জস্যপূর্ণ:
- BRD4161a
- BRD4166a
- BRD4168a
- BRD4180a
- BRD4304a
ভবিষ্যতের SDK রিলিজগুলিতে আরও রেডিও বোর্ড অন্তর্ভুক্ত করার জন্য এই তালিকাটি আপডেট করা হতে পারে। সমর্থিত পার্টসের সম্পূর্ণ তালিকার জন্য অনুগ্রহ করে ডকুমেন্টেশন-এর অধীনে সিলিকন ল্যাবস ওপেনথ্রেড SDK রিলিজ নোট দেখুন।
নিম্নলিখিত ডেমোগুলি নিজ নিজ বোর্ডে ফ্ল্যাশ করুন। ফ্ল্যাশ করার জন্য, বাম দিকের ‘ডিবাগ অ্যাডাপ্টারস’ (Debug Adapters) থেকে আপনার বোর্ডটি নির্বাচন করুন এবং সংশ্লিষ্ট স্যাম্পল অ্যাপ্লিকেশনগুলির জন্য ‘রান’ (RUN)-এ ক্লিক করুন। একটি পপ-আপ উইন্ডোতে ফ্ল্যাশের অগ্রগতি দেখানো হবে।
- BRD4166A: ot-rcp — এই ডিভাইসটি OT বর্ডার রাউটারের জন্য একটি রেডিও কো-প্রসেসর হিসেবে কাজ করবে। আমরা এই ডিভাইসটি ব্যবহার করে একটি থ্রেড নেটওয়ার্ক তৈরি করব এবং অন্য দুটি ডিভাইসকে সেই থ্রেড নেটওয়ার্কে যুক্ত করব। একটি বর্ডার রাউটার হওয়ায়, এই ডিভাইসটি থ্রেড নেটওয়ার্কের ডিভাইসগুলোর জন্য ইন্টারনেটের মাধ্যমে যোগাযোগের গেটওয়ে হিসেবেও কাজ করে।
- দুটি BRD4168A: ot-cli-ftd — এই দুটি ডিভাইস পূর্ণ থ্রেড ডিভাইস হিসেবে কাজ করবে। এগুলো OTBR দ্বারা তৈরি থ্রেড নেটওয়ার্কে যোগদান করবে।