1. ভূমিকা
OpenThread হল Thread® নেটওয়ার্কিং প্রোটোকলের একটি ওপেন-সোর্স বাস্তবায়ন, যা ইন্টারনেট অফ থিংস (IoT) ডিভাইসের জন্য ডিজাইন করা একটি শক্তিশালী এবং সুরক্ষিত ওয়্যারলেস মেশ নেটওয়ার্কিং প্রোটোকল। OpenThread Google এর নেস্ট টিম দ্বারা তৈরি করা হয়েছে এবং একটি ওপেন-সোর্স প্রকল্প হিসাবে বিকাশকারী সম্প্রদায়ের কাছে অবাধে উপলব্ধ।
থ্রেড স্পেসিফিকেশন একটি নির্ভরযোগ্য, নিরাপদ, এবং শক্তি-দক্ষ ওয়্যারলেস কমিউনিকেশন প্রোটোকল স্থাপন করে যা সাধারণত স্মার্ট হোম এবং বাণিজ্যিক ভবনগুলিতে পাওয়া যায়। OpenThread থ্রেডের মধ্যে সম্পূর্ণ নেটওয়ার্ক স্তরের সুযোগ অন্তর্ভুক্ত করে, যেমন IPv6, 6LoWPAN, MAC নিরাপত্তা সহ IEEE 802.15.4, মেশ লিঙ্ক স্থাপন, এবং মেশ রাউটিং।
Telink Zephyr RTOS-এ OpenThread বাস্তবায়নকে একীভূত করেছে, Telink হার্ডওয়্যারের সাথে বিরামহীন সামঞ্জস্যতা সক্ষম করে। এই ইন্টিগ্রেশনের সোর্স কোডটি GitHub- এ সহজেই অ্যাক্সেসযোগ্য, এবং এটি একটি সফ্টওয়্যার ডেভেলপমেন্ট কিট (SDK) হিসাবেও সরবরাহ করা হয়।
এই কোডল্যাবে, আপনি প্রকৃত হার্ডওয়্যারে OpenThread প্রোগ্রাম করবেন, একটি থ্রেড নেটওয়ার্ক তৈরি ও পরিচালনা করবেন এবং নোডের মধ্যে বার্তা বিনিময় করবেন। নীচের চিত্রটি হার্ডওয়্যার সেটআপকে চিত্রিত করেছে, যেখানে কোডল্যাবে একটি OT বর্ডার রাউটার (OTBR) এবং একটি থ্রেড ডিভাইস রয়েছে৷
আপনি কি শিখবেন
- Telink Zephyr উন্নয়ন পরিবেশ ব্যবহার করে OpenThread বাস্তবায়ন সেট আপ করতে।
- OpenThread CLI নমুনা তৈরি করতে (
ot-cli-ftd
এবংot-rcp
) এবং সেগুলিকে Telink B91 ডেভেলপমেন্ট বোর্ডগুলিতে ফ্ল্যাশ করুন। - একটি Raspberry Pi 3B+ বা পরবর্তীতে ডকার ব্যবহার করে একটি OpenThread বর্ডার রাউটার (OTBR) সেট আপ করতে।
- OTBR-এ একটি থ্রেড নেটওয়ার্ক তৈরি করতে।
- আউট-অফ-ব্যান্ড ডিবাগিং ব্যবহার করে থ্রেড নেটওয়ার্কে ডিভাইস যোগ করতে।
- CLI ব্যবহার করে থ্রেড নেটওয়ার্কে নোডের মধ্যে সংযোগ যাচাই করতে।
আপনি কি প্রয়োজন হবে
হার্ডওয়্যার:
- দুটি B91 উন্নয়ন বোর্ড।
- রাস্পবিয়ান ওএস ইমেজের সাথে একটি রাস্পবেরি পাই 3B+ বা তার বেশি।
- কমপক্ষে দুটি ইউএসবি পোর্ট সহ একটি লিনাক্স মেশিন।
- একটি ইন্টারনেট-সংযুক্ত সুইচ (বা রাউটার) এবং বেশ কয়েকটি ইথারনেট তার।
সফটওয়্যার:
- Telink বার্নিং এবং ডিবাগিং টুল —— LinuxBDT।
- সিরিয়াল পোর্ট টার্মিনাল টুল, যেমন PuTTY।
- অন্যান্য সরঞ্জাম যেমন, গিট এবং ওয়েস্ট।
2. পূর্বশর্ত
থ্রেড ধারণা এবং OpenThread CLI
এই কোডল্যাবের আগে মৌলিক থ্রেড ধারণা এবং OpenThread CLI-এর সাথে পরিচিত হওয়ার জন্য OpenThread সিমুলেশন কোডল্যাবের মাধ্যমে যাওয়া সহায়ক হতে পারে।
লিনাক্স মেশিন
লিনাক্স মেশিন (Ubuntu v20.04 LTS বা পরবর্তী) Telink Zephyr ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করতে এবং সমস্ত থ্রেড ডেভেলপমেন্ট বোর্ড ফ্ল্যাশ করতে বিল্ড মেশিন হিসাবে কাজ করে। এই কাজগুলি সম্পন্ন করার জন্য, লিনাক্স মেশিনের দুটি উপলব্ধ USB পোর্ট এবং ইন্টারনেট সংযোগ প্রয়োজন।
সিরিয়াল পোর্ট সংযোগ এবং টার্মিনাল
আপনি সরাসরি লিনাক্স মেশিনের USB পোর্টে ডিভাইসটি প্লাগ করতে পারেন। অতিরিক্তভাবে, ডিভাইসগুলি অ্যাক্সেস করতে আপনার একটি সিরিয়াল পোর্ট টার্মিনাল টুলের প্রয়োজন হবে।
এই কোডল্যাবে, টার্মিনাল টুল পুটিটি এফটিডি জয়নার এবং রাস্পবেরি পাই নিয়ন্ত্রণের জন্য ব্যবহৃত হয়। এটি এর ব্যবহারের একটি ওভারভিউ অফার করে, তবে অন্যান্য টার্মিনাল সফ্টওয়্যারও নিযুক্ত করা যেতে পারে।
Telink B91 ডেভেলপমেন্ট কিট
এই কোডল্যাবের জন্য B91 ডেভেলপমেন্ট কিটের দুটি সেট প্রয়োজন। নীচের ফটোটি একটি সেটে ন্যূনতম প্রয়োজনীয় উপাদানগুলি প্রদর্শন করে৷
এই কিটগুলির একটি আরসিপি (রেডিও কো-প্রসেসর) হিসাবে ব্যবহার করা হবে, অন্যটি এফটিডি (ফুল থ্রেড ডিভাইস) হিসাবে কাজ করবে। আপনি যদি এখনও কিটটির দখলে না থাকেন তবে আপনি Telink অফিসিয়াল ওয়েবসাইট থেকে আরও বিশদ জানতে পারেন। ব্যবহার করা কিছু উপাদান নিম্নরূপ:
সূচক | নাম |
1 | Telink B91 উন্নয়ন বোর্ড |
2 | টেলিঙ্ক বার্নিং বোর্ড |
3 | 2.4Ghz অ্যান্টেনা |
4 | ইউএসবি কেবল (ইউএসবি এ থেকে মিনি ইউএসবি) |
Raspberry Pi 3B+ বা রাস্পবিয়ান OS ইমেজের সাথে তার বেশি
এই কোডল্যাবে, একটি রাস্পবেরি পাই 3B+ বা তার থেকে বেশি রাস্পবিয়ান বুলসি লাইট ওএস ইমেজ বা ডেস্কটপের সাথে রাস্পবিয়ান বুলসি প্রয়োজন। এটি ইথারনেটের মাধ্যমে ইন্টারনেটের সাথে সংযুক্ত এবং OpenThread বর্ডার রাউটার (OTBR) এর হোস্ট হিসাবে কনফিগার করা হবে।
নেটওয়ার্ক সংযোগ
একটি ইন্টারনেট-সংযুক্ত সুইচ (বা রাউটার) এবং বেশ কয়েকটি ইথারনেট তার। এগুলি রাস্পবেরি পাইকে লিনাক্স মেশিনের সাথে সংযোগ করতে ব্যবহার করা হয়, হোস্টের মাধ্যমে রাস্পবেরি পাই এর ব্যবহারকারীর কনফিগারেশনকে সহজতর করে।
লিনাক্সবিডিটি
Telink Burning and Debugging Tool (BDT) , যা সমস্ত Telink Chip সিরিজে প্রযোজ্য, আপনাকে Telink B91 ডেভেলপমেন্ট বোর্ডগুলিতে OpenThread ফার্মওয়্যার মুছে ফেলতে এবং ফ্ল্যাশ করতে দেয়। আপনার লিনাক্স মেশিনে X86-ভিত্তিক linux সংস্করণ linuxBDT ইনস্টল করুন।
অন্যরা
- Git, Telink Zephyr ডেভেলপমেন্ট এনভায়রনমেন্ট স্থাপনের জন্য।
- পশ্চিম, Zephyr প্রকল্প পরিচালনার জন্য এবং OpenThread বাইনারি তৈরি করুন।
3. ফার্মওয়্যার সেট আপ করুন
Telink Zephyr ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করুন
লিনাক্স মেশিনে, একটি CLI টার্মিনাল খুলুন এবং আপনার APT আপ-টু-ডেট আছে কিনা তা নিশ্চিত করতে নিম্নলিখিত কমান্ডগুলি কার্যকর করে শুরু করুন।
$ sudo apt update $ sudo apt upgrade
একবার এটি হয়ে গেলে, নিম্নলিখিত পদক্ষেপগুলি নিয়ে এগিয়ে যান।
- নির্ভরতা ইনস্টল করুন।
Zephyr-এর জন্য বর্তমানে প্রধান নির্ভরতার ন্যূনতম সংস্করণ প্রয়োজন, যেমন CMake (3.20.0), Python3 (3.6), এবং Devicetree Compiler (1.4.6)।$ wget https://apt.kitware.com/kitware-archive.sh $ sudo bash kitware-archive.sh $ sudo apt install --no-install-recommends git cmake ninja-build \ gperf ccache dfu-util device-tree-compiler python3-dev python3-pip \ python3-setuptools python3-tk python3-wheel xz-utils file make gcc \ gcc-multilib g++-multilib libsdl2-dev
পরবর্তী পদক্ষেপগুলি নিয়ে এগিয়ে যাওয়ার আগে আপনার সিস্টেমে ইনস্টল করা সংস্করণগুলি যাচাই করুন৷ সংস্করণগুলি সঠিক না হলে, APT মিররটিকে একটি স্থিতিশীল এবং আপ-টু-ডেট মিররে স্যুইচ করুন বা ম্যানুয়ালি এই নির্ভরতাগুলি আপডেট করুন।$ cmake --version $ python3 --version $ dtc --version
- পশ্চিমে ইনস্টল করুন।
নিশ্চিত করুন যে$ pip3 install --user -U west $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc $ source ~/.bashrc
~/.local/bin
আপনার$PATH
এনভায়রনমেন্ট ভেরিয়েবলে আছে। - Zephyr প্রজেক্ট সোর্স কোড পান।
$ west init ~/zephyrproject $ cd ~/zephyrproject $ west update $ west blobs fetch hal_telink $ west zephyr-export
- Zephyr এর জন্য অতিরিক্ত পাইথন নির্ভরতা ইনস্টল করুন।
$ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
- Zephyr টুলচেইন সেট আপ করুন। একটি স্থানীয় ডিরেক্টরিতে Zephyr টুলচেন (প্রায় 1 ~ 2 GB) ডাউনলোড করুন যাতে আপনি বেশিরভাগ বোর্ড ফ্ল্যাশ করতে পারেন।
Zephyr SDK ডাউনলোড করুন এবং এটিকে প্রস্তাবিত পথে রাখুন, যেমন নীচে দেখানো হয়েছে।$ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz $ wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/sha256.sum | shasum --check --ignore-missing
যেখানে [-xyz] হল ঐচ্ছিক টেক্সট যা যেকোনো টেক্সট হতে পারে, যেমন -0.16.1। SDK ইনস্টল করার পরে ডিরেক্টরিটি সরানো যাবে না। তারপর Zephyr টুলচেইন ইনস্টল করুন।$HOME/zephyr-sdk[-x.y.z] $HOME/.local/zephyr-sdk[-x.y.z] $HOME/.local/opt/zephyr-sdk[-x.y.z] $HOME/bin/zephyr-sdk[-x.y.z] /opt/zephyr-sdk[-x.y.z] /usr/zephyr-sdk[-x.y.z] /usr/local/zephyr-sdk[-x.y.z]
$ tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz $ cd zephyr-sdk-0.16.1 $ ./setup.sh -t riscv64-zephyr-elf -h -c
- হ্যালো ওয়ার্ল্ড উদাহরণ তৈরি করুন। প্রথমে, হ্যালো ওয়ার্ল্ড উদাহরণ ব্যবহার করে অফিসিয়াল Zephyr প্রকল্প কনফিগারেশন সঠিক কিনা তা যাচাই করুন, তারপর আপনার কাস্টম প্রকল্প সেট আপ করতে এগিয়ে যান।
Zephyr সংগ্রহস্থলের রুট ডিরেক্টরি থেকে hello_world উদাহরণ তৈরি করতে West build কমান্ডটি ব্যবহার করুন। আপনি$ cd ~/zephyrproject/zephyr $ west build -p auto -b tlsr9518adk80d samples/hello_world
build/zephyr directory
অধীনেzephyr.bin
নামের ফার্মওয়্যারটি খুঁজে পেতে পারেন। - Zephyr এনভায়রনমেন্ট স্ক্রিপ্ট
~/.bashrc
এ যোগ করুন। নিম্নলিখিত কমান্ডগুলি চালান।$ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc $ source ~/.bashrc
- Telink Zephyr রিমোট রিপোজিটরি যোগ করুন। স্থানীয়ভাবে একটি উন্নয়ন শাখা হিসাবে Telink রেপো ডাউনলোড করুন এবং এটি আপডেট করুন।
$ cd ~/zephyrproject/zephyr $ git remote add telink-semi https://github.com/telink-semi/zephyr $ git fetch telink develop $ git checkout develop $ west update $ west blobs fetch hal_telink
আরও তথ্যের জন্য, আপনি Zephyr ডক - শুরু করার নির্দেশিকা উল্লেখ করতে পারেন।
Telink LinuxBDT সেট আপ করুন
Telink LinuxBDT টুলটি ডাউনলোড করুন এবং এটিকে আপনার লিনাক্স মেশিনে একটি স্থানীয় ডিরেক্টরিতে বের করুন, যেমন হোম ডিরেক্টরি ~
, B91 ডেভেলপমেন্ট বোর্ডে ফার্মওয়্যার ফ্ল্যাশ করতে সক্ষম করে।
$ cd ~ $ wget http://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2 $ tar -vxf LinuxBDT.tar.bz2
ইউএসবি ইন্টারফেসের মাধ্যমে বার্নিং বোর্ডকে লিনাক্স মেশিনে সংযুক্ত করুন এবং তারপরে নিম্নলিখিত কমান্ডগুলি লিখুন।
$ cd LinuxBDT $ sudo ./bdt lsusb -v Bus 002 Device 001: ID 1d6b:0003 xHCI Host Controller Bus 001 Device 003: ID 0bda:565a Integrated_Webcam_HD Bus 001 Device 023: ID 413c:301a Dell MS116 USB Optical Mouse Bus 001 Device 037: ID 248a:826a Telink Web Debugger v3.6 Bus 001 Device 001: ID 1d6b:0002 xHCI Host Controller
আপনি যদি "Telink Web Debugger v3.6" বার্তাটি দেখতে পান, তাহলে এটি নির্দেশ করে যে BDT প্রোগ্রামার লিনাক্স মেশিনের সাথে সফলভাবে সংযুক্ত হয়েছেন।
ফার্মওয়্যার সংকলন
এই কোডল্যাবটি দুটি ধরণের OpenThread ফার্মওয়্যার তৈরি করবে:
-
ot-cli-ftd
, - এবং
ot-rcp
.
সংকলন পদ্ধতি নিম্নরূপ:
- রেডিও কো-প্রসেসর (
ot-rcp
)$ cd ~/zephyrproject $ rm -rf build_ot_coprocessor $ west build -b tlsr9518adk80d -d build_ot_coprocessor zephyr/samples/net/openthread/coprocessor -- -DDTC_OVERLAY_FILE="usb.overlay" -DOVERLAY_CONFIG=overlay-rcp-usb-telink.conf
- ইন্টারেক্টিভ কমান্ড লাইন সহ সম্পূর্ণ বৈশিষ্ট্যযুক্ত থ্রেড ডিভাইস (
ot-cli-ftd
)$ cd ~/zephyrproject $ rm -rf build_ot_cli_ftd $ west build -b tlsr9518adk80d -d build_ot_cli_ftd zephyr/samples/net/openthread/cli -- -DOVERLAY_CONFIG=overlay-telink-fixed-mac.conf -DCONFIG_OPENTHREAD_FTD=y
ফার্মওয়্যার ফ্ল্যাশ
নীচের চিত্রে চিত্রিত হিসাবে একটি USB কেবল ব্যবহার করে একটি B91 উন্নয়ন বোর্ডকে বার্নিং বোর্ডের সাথে সংযুক্ত করুন।
কমান্ড লাইনে, ফার্মওয়্যার বার্ন করার জন্য নিম্নলিখিত কমান্ডগুলি চালান (উদাহরণ হিসাবে ot-cli-ftd
ফার্মওয়্যারের ফ্ল্যাশিং ব্যবহার করে)।
$ cd ~/zephyrproject/build_ot_cli_ftd/zephyr $ cp zephyr.bin ~/LinuxBDT/bin/ot-cli-ftd.bin $ cd ~/LinuxBDT $ sudo ./bdt 9518 ac Activate OK! $ sudo ./bdt 9518 wf 0 -i bin/ot-cli-ftd.bin EraseSectorsize... Total Time: 2181 ms Flash writing... [100%][-] [##################################################] File Download to Flash at address 0x000000: 491700 bytes Total Time: 30087 ms
ot-rcp
এর জন্য ফ্ল্যাশ পদ্ধতিটি মূলত ot-cli-ftd
এর মতই। যাইহোক, ফার্মওয়্যার পাথ এবং নামের মধ্যে পার্থক্য আছে।
ফ্ল্যাশ করার পর, দুটি B91 ডেভেলপমেন্ট বোর্ডকে সেই অনুযায়ী চিহ্নিত করে আলাদা করুন। ot-cli-ftd
দিয়ে ফ্ল্যাশ করা বোর্ডটিকে "FTD Joiner" হিসেবে লেবেল করুন এবং বোর্ডটি ot-rcp
দিয়ে ফ্ল্যাশ করে "RCP" হিসেবে লেবেল করুন।
4. FTD যোগকারী ডিভাইসের জন্য একটি সিরিয়াল কনসোল কনফিগার করুন
ছবিতে দেখানো হয়েছে, সরাসরি লিনাক্স মেশিনের USB পোর্টে FTD Joiner প্লাগ করুন।
লিনাক্স মেশিনের সাথে FTD জয়নার ডিভাইস সংযোগ করার পর, PuTTY খুলুন। তারপরে একটি নতুন টার্মিনাল তৈরি করুন, সিরিয়াল পোর্টের তথ্য সেট করুন এবং সিরিয়াল পোর্ট খুলুন।
OpenThread কমান্ড লাইন রেফারেন্স এখানে: OpenThread CLI রেফারেন্স । ot
দিয়ে সকল কমান্ডের উপসর্গ নিশ্চিত করুন।
উদাহরণ:
> ot state disabled Done > ot channel 11 Done >
5. ওপেন থ্রেড বর্ডার রাউটার হিসাবে রাস্পবেরি পাই সেট আপ করুন
একটি ওপেন থ্রেড বর্ডার রাউটার হল একটি ডিভাইস যা দুটি প্রধান অংশ নিয়ে গঠিত:
- Raspberry Pi-এ বর্ডার রাউটার (BR) হিসাবে কাজ করার জন্য প্রয়োজনীয় সমস্ত পরিষেবা এবং ফার্মওয়্যার রয়েছে।
- RCP থ্রেড যোগাযোগের জন্য দায়ী।
রেডিও কো-প্রসেসর (RCP)
ot-rcp
ফার্মওয়্যার ফ্ল্যাশ করতে, ot-cli-ftd
ফার্মওয়্যার ফ্ল্যাশিং প্রক্রিয়ার মতো একই পদক্ষেপগুলি অনুসরণ করুন। B91 ডেভেলপমেন্ট বোর্ডকে Raspberry Pi-এর একটি USB পোর্টের সাথে সংযুক্ত করুন, যেমনটি নীচের চিত্রে দেখানো হয়েছে।
রাস্পবেরি পাই
- Raspbian Bullseye Lite OS ইমেজ বা Raspbian Bullseye with Desktop সঠিকভাবে SD কার্ডে লেখা আছে তা নিশ্চিত করুন।
- আপনার কাছে রাস্পবেরি পাইতে এসএসএইচ বা রাস্পবিয়ান ডেস্কটপের সাথে সরাসরি কাজ করার বিকল্প রয়েছে। এই কোডল্যাব SSH ব্যবহার করবে।
- পরবর্তী ধাপে OTBR ডকার ইনস্টল করার আগে, প্রথমে স্থানীয় সংগ্রহস্থল এবং প্যাকেজ ম্যানেজার আপডেট করতে ভুলবেন না।
$ sudo apt-get update $ sudp apt-get upgrade
ডকার ইনস্টল করুন
আপনি যদি আগের ধাপে স্থানীয় সংগ্রহস্থল এবং প্যাকেজ ম্যানেজার APT আপডেট করেন, রাস্পবেরি পাই রিবুট করুন এবং তারপরে একটি SSH টার্মিনাল উইন্ডো খুলুন।
- ডকার ইনস্টল করুন:
$ curl -sSL https://get.docker.com | sh
- অনুমতি দেওয়ার জন্য বর্তমান অ্যাকাউন্টটিকে একটি ডকার গ্রুপে রাখুন যাতে প্রতিটি কমান্ডের সামনে
sudo
যোগ করার প্রয়োজন না হয়। কার্যকর করার জন্য আপনাকে রাস্পবেরি পাই পুনরায় চালু করতে হবে।$ sudo usermod -aG docker $USER
- যদি ডকার শুরু না হয়ে থাকে তবে এটি শুরু করুন:
$ sudo dockerd
- OTBR ফায়ারওয়াল স্ক্রিপ্ট ডকার কন্টেইনারের ভিতরে নিয়ম তৈরি করে। তার আগে, iptables-এর কার্নেল মডিউল লোড করতে
modprobe
চালান।$ sudo modprobe ip6table_filter
কনফিগার করুন এবং ডকার চালান
এই কোডল্যাবটি সরাসরি ওপেনথ্রেড ডকার হাব থেকে OTBR ডকার ইমেজ টানে। এই ছবিটি OpenThread টিম দ্বারা পরীক্ষিত এবং যাচাই করা হয়েছে।
- সর্বশেষ চিত্র টানুন:
$ docker pull openthread/otbr:latest
- ডকার কন্টেইনারে চিত্র তালিকা পরীক্ষা করুন:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE openthread/otbr latest db081f4de15f 6 days ago 766MB
-
/dev
চেক করে RCP ডিভাইসের সিরিয়াল পোর্টের নাম নির্ধারণ করুন,ttyACM0
নির্দেশ করে যে RCP সঠিকভাবে সংযুক্ত।$ ls /dev/tty* ... /dev/ttyACM0 ...
- প্রথমবারের জন্য OTBR ডকার চালান এবং RCP (
ttyACM0
) এর সিরিয়াল পোর্ট উল্লেখ করুন। আপনি যদি এই OTBR ডকার ব্যবহার চালিয়ে যেতে চান, docker start otbr কমান্ডটি ব্যবহার করুন।$ docker run --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 openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
- রাস্পবেরি পাই এবং RCP-এর মধ্যে সংযোগ পরীক্ষা করতে একটি নতুন SSH টার্মিনাল উইন্ডো খুলুন।
$ docker exec -ti otbr sh -c "sudo ot-ctl" > state disabled Done
ঐচ্ছিক ডকার কমান্ড:
- চলমান ডকার কন্টেইনার সম্পর্কে তথ্য পান:
$ docker ps -aq
- OTBR ডকার বন্ধ করুন:
$ docker stop otbr
- OTBR ডকার সরান:
$ docker rm otbr
- OTBR ডকার পুনরায় লোড করুন:
$ docker restart otbr
এই মুহুর্তে, একটি FTD Joiner ডিভাইস এবং একটি OTBR প্রস্তুত, এবং আপনি থ্রেড নেটওয়ার্ক তৈরির পরবর্তী ধাপে যেতে পারেন।
6. একটি থ্রেড নেটওয়ার্ক তৈরি করুন
RCP-এ একটি থ্রেড নেটওয়ার্ক তৈরি করুন
আমরা একটি থ্রেড নেটওয়ার্ক স্থাপন করতে OTBR-এ ot-ctl শেল ব্যবহার করি। আপনি যদি শেষ বিভাগে শেল থেকে প্রস্থান করেন, SSH টার্মিনালে এটি আবার শুরু করতে নিম্নলিখিত কমান্ডটি প্রবেশ করান:
$ docker exec -ti otbr sh -c "sudo ot-ctl"
এরপর, সারণিতে উল্লিখিত ক্রম অনুসারে কমান্ডগুলি প্রবেশ করান, এবং নিশ্চিত করুন যে প্রতিটি ধাপ পরেরটিতে যাওয়ার আগে প্রত্যাশিত ফলাফল অর্জন করে।
সূচক | আদেশ | ভূমিকা | প্রত্যাশিত প্রতিক্রিয়া | ||
1 | | একটি নতুন র্যান্ডম নেটওয়ার্ক ডেটাসেট তৈরি করুন। | সম্পন্ন | ||
2 | | অ-উদ্বায়ী সঞ্চয়স্থানে সক্রিয় অপারেশনাল ডেটাসেটে নতুন ডেটাসেট কমিট করুন। | সম্পন্ন | ||
3 | | IPv6 ইন্টারফেস আনুন। | সম্পন্ন | ||
4 | | থ্রেড প্রোটোকল অপারেশন সক্ষম করুন এবং একটি থ্রেড নেটওয়ার্ক সংযুক্ত করুন। | সম্পন্ন | ||
থ্রেড ইন্টারফেস আপ হওয়ার জন্য 10 সেকেন্ড অপেক্ষা করুন। | |||||
5 | | ডিভাইসের অবস্থা পরীক্ষা করুন। এই কমান্ডটি একাধিকবার বলা যেতে পারে যতক্ষণ না এটি নেতা হয়ে যায় এবং পরবর্তী ধাপে চলে যায়। | নেতা | ||
6 | | সম্পূর্ণ সক্রিয় অপারেশনাল ডেটাসেট এবং রেকর্ড নেটওয়ার্ক কী পরীক্ষা করুন। | সক্রিয় টাইমস্ট্যাম্প: 1 |
নেটওয়ার্ক তৈরির সময় OTBR দ্বারা এলোমেলোভাবে জেনারেট করা নেটওয়ার্ক কী ব্যবহার করা হবে যখন ot-cli-ftd
ডিভাইসগুলি এই থ্রেড নেটওয়ার্কে যোগ দেয়।
আউট-অফ-ব্যান্ড কমিশনিংয়ের মাধ্যমে থ্রেডে FTD যোগকারী যোগ করুন
আউট-অফ-ব্যান্ড কমিশনিং বলতে বোঝায় নেটওয়ার্ক শংসাপত্রগুলি অ-ওয়্যারলেস পদ্ধতির মাধ্যমে নেটওয়ার্কে যোগদানের অপেক্ষায় থাকা ডিভাইসগুলিতে (উদাহরণস্বরূপ, ম্যানুয়ালি OpenThread CLI-তে প্রবেশ করা)। FTD Joiner-এ সিরিয়াল কনসোলে ক্রমানুসারে নিম্নলিখিত কমান্ডগুলি লিখুন।
সূচক | আদেশ | ভূমিকা | প্রত্যাশিত প্রতিক্রিয়া | ||
1 | | একটি থ্রেড নেটওয়ার্কের সাথে সংযোগ করার জন্য একটি ডিভাইসের জন্য শুধুমাত্র নেটওয়ার্ক কী প্রয়োজনীয়। | সম্পন্ন | ||
2 | | অ-উদ্বায়ী সঞ্চয়স্থানে সক্রিয় অপারেশনাল ডেটাসেটে নতুন ডেটাসেট কমিট করুন। | সম্পন্ন | ||
3 | | IPv6 ইন্টারফেস আনুন। | সম্পন্ন | ||
4 | | থ্রেড প্রোটোকল অপারেশন সক্ষম করুন এবং একটি থ্রেড নেটওয়ার্ক সংযুক্ত করুন। | সম্পন্ন | ||
20 সেকেন্ড অপেক্ষা করুন যখন ডিভাইসটি যোগ দেয় এবং নিজেকে কনফিগার করে। | |||||
5 | | ডিভাইসের অবস্থা পরীক্ষা করুন। | শিশু/রাউটার |
টপোলজি
নিম্নলিখিত কোড স্নিপেটগুলির মতো প্রতিক্রিয়া পেতে SSH টার্মিনালে ipaddr
, child table
, router table
মতো কমান্ডগুলি লিখুন৷
> ipaddr rloc fd8c:60bc:a98:c7ba:0:ff:fe00:b000 Done > child table | ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC | +-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+ | 1 | 0xb001 | 240 | 23 | 3 | 51 |1|1|1| 3| 0 | 0 | 129 | 82bc12fbe783468e | Done > router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | Link | +----+--------+----------+-----------+-------+--------+-----+------------------+------+ | 44 | 0xb000 | 63 | 0 | 0 | 0 | 0 | 7ae354109d611f7e | 0 | Done ... > child table | ID | RLOC16 | Timeout | Age | LQ In | C_VN |R|D|N|Ver|CSL|QMsgCnt|Suprvsn| Extended MAC | +-----+--------+------------+------------+-------+------+-+-+-+---+---+-------+-------+------------------+ Done > router table | ID | RLOC16 | Next Hop | Path Cost | LQ In | LQ Out | Age | Extended MAC | Link | +----+--------+----------+-----------+-------+--------+-----+------------------+------+ | 33 | 0x8400 | 63 | 0 | 3 | 3 | 13 | e61487c1cda940a6 | 1 | | 44 | 0xb000 | 63 | 0 | 0 | 0 | 0 | 7ae354109d611f7e | 0 | Done
OTBR-এর RLOC16
হল 0xb000
এবং FTD Joiner-এর RLOC16
হল প্রাথমিকভাবে 0xb001
৷ তারপর রাউটার আইডি পাওয়ার পর FTD Joiner এর RLOC16
0x8400
হয়ে যায়। এটি দেখা যায় যে FTD Joiner একটি শিশু থেকে একটি রাউটারে আপগ্রেড করা হয়েছে।
বর্তমান থ্রেড নেটওয়ার্কে দুটি নোড রয়েছে এবং টপোলজি নীচের চিত্রে দেখানো হয়েছে।
7. থ্রেড ডিভাইসের মধ্যে যোগাযোগ
ICMPv6 যোগাযোগ
একই নেটওয়ার্কের থ্রেড ডিভাইসগুলি একে অপরের সাথে যোগাযোগ করতে পারে কিনা তা পরীক্ষা করতে আমরা ping
কমান্ড ব্যবহার করি। প্রথমে, ডিভাইসের RLOC পেতে ipaddr
কমান্ডটি ব্যবহার করুন।
> ipaddr fd8c:60bc:a98:c7ba:0:ff:fe00:fc11 fdbd:7274:649c:1:1d19:9613:f705:a5af fd8c:60bc:a98:c7ba:0:ff:fe00:fc10 fd8c:60bc:a98:c7ba:0:ff:fe00:fc38 fd8c:60bc:a98:c7ba:0:ff:fe00:fc00 fd8c:60bc:a98:c7ba:0:ff:fe00:b000 # Routing Locator (RLOC) fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 fe80:0:0:0:78e3:5410:9d61:1f7e Done
পিং অপারেশন চালানোর জন্য FTD Joiner-এর সিরিয়াল কনসোলে নিম্নলিখিত কমান্ডটি লিখুন।
> ot ping fd8c:60bc:a98:c7ba:0:ff:fe00:b000 16 bytes from fd8c:60bc:a98:c7ba:0:ff:fe00:b000: icmp_seq=1 hlim=64 time=19ms 1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 19/19.0/19 ms. Done
সিরিয়াল পোর্টের আউটপুট প্রতিক্রিয়া ইঙ্গিত করে যে OTBR পক্ষ পিং অনুরোধ পেয়েছে এবং FTD Joiner OTBR দ্বারা ফিরে আসা পিং প্রতিক্রিয়া পেয়েছে। দুটি ডিভাইসের মধ্যে যোগাযোগ সফল হয়।
ইউডিপি যোগাযোগ
OpenThread দ্বারা প্রদত্ত অ্যাপ্লিকেশন পরিষেবাগুলি UDP অন্তর্ভুক্ত করে। আপনি থ্রেড নেটওয়ার্কে নোডগুলির মধ্যে তথ্য প্রেরণ করতে UDP API ব্যবহার করতে পারেন, বা বর্ডার রাউটারের মাধ্যমে বহিরাগত নেটওয়ার্কগুলিতে তথ্য প্রেরণ করতে পারেন। OpenThread-এর UDP API-এর বিস্তারিত পরিচিতি OpenThread CLI - UDP উদাহরণে রয়েছে। এই কোডল্যাবটি OTBR এবং FTD Joiner-এর মধ্যে তথ্য আদান-প্রদান করতে এর মধ্যে থাকা কিছু API ব্যবহার করবে।
প্রথমে, OTBR এর মেশ-লোকাল EID পান। এই ঠিকানাটি থ্রেড ডিভাইসের IPv6 ঠিকানাগুলির মধ্যে একটি, এবং এটি একই থ্রেড নেটওয়ার্ক পার্টিশনে থ্রেড ডিভাইস অ্যাক্সেস করতে ব্যবহার করা যেতে পারে।
> ipaddr mleid fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 Done
OTBR UDP সক্ষম করতে SSH টার্মিনালে নিম্নলিখিত কমান্ডগুলি লিখুন এবং ডিভাইসের 1022 পোর্টকে আবদ্ধ করুন৷
> udp open Done > udp bind :: 1022 Done
সিরিয়াল কনসোলে নিম্নলিখিত কমান্ডগুলি লিখুন এবং FTD যোগকারীর UDP সক্ষম করুন৷ ডিভাইসের 1022 পোর্ট আবদ্ধ করুন, এবং তারপর OTBR-এ একটি 5-বাইট hello
বার্তা পাঠান।
> ot udp open Done > ot udp bind :: 1022 Done > ot udp send fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6 1022 hello Done
SSH টার্মিনাল নিম্নলিখিত তথ্য আউটপুট. OTBR FTD Joiner থেকে hello
বার্তা পায়, যার মানে UDP যোগাযোগ সফল।
> 5 bytes from fd8c:60bc:a98:c7ba:9386:63cf:19d7:5a61 1022 hello
8. অভিনন্দন
আপনি একটি সাধারণ থ্রেড নেটওয়ার্ক তৈরি করেছেন এবং এই নেটওয়ার্কের মধ্যে যোগাযোগ যাচাই করেছেন।
আপনি এখন জানেন:
- কিভাবে Telink Zephyr উন্নয়ন পরিবেশ তৈরি এবং ব্যবহার করতে হয়.
- কিভাবে
ot-cli-ftd
এবংot-rcp
বাইনারি তৈরি করতে হয়, সেইসাথে সেগুলিকে Telink B91 ডেভেলপমেন্ট বোর্ডে ফ্ল্যাশ করতে হয়। - ডকার ব্যবহার করে ওপেন থ্রেড বর্ডার রাউটার (OTBR) হিসাবে কীভাবে রাস্পবেরি পাই 3B+ বা উচ্চতর সংস্করণ সেট আপ করবেন।
- কিভাবে OTBR এ একটি থ্রেড নেটওয়ার্ক তৈরি করবেন।
- আউট-অফ-ব্যান্ড কমিশনিংয়ের মাধ্যমে কীভাবে থ্রেড নেটওয়ার্কে ডিভাইস যুক্ত করবেন।
- থ্রেড নেটওয়ার্কে নোডগুলির মধ্যে সংযোগ কীভাবে যাচাই করবেন।
আরও পড়া
বিভিন্ন OpenThread সম্পদ সম্পর্কে জানতে openthread.io এবং GitHub দেখুন, যার মধ্যে রয়েছে:
- সমর্থিত প্ল্যাটফর্ম - OpenThread সমর্থন করে এমন সমস্ত প্ল্যাটফর্ম আবিষ্কার করুন
- OpenThread তৈরি করুন — OpenThread নির্মাণ এবং কনফিগার করার আরও বিশদ বিবরণ
- থ্রেড প্রাইমার — এই কোডল্যাবে বৈশিষ্ট্যযুক্ত সমস্ত থ্রেড ধারণা কভার করে
রেফারেন্স নথি: