B91 ডেভেলপমেন্ট বোর্ড এবং OpenThread এর সাথে একটি থ্রেড নেটওয়ার্ক তৈরি করুন

1. ভূমিকা

26b7f4f6b3ea0700.png সম্পর্কে

ওপেনথ্রেড হল থ্রেড® নেটওয়ার্কিং প্রোটোকলের একটি ওপেন-সোর্স বাস্তবায়ন, যা ইন্টারনেট অফ থিংস (IoT) ডিভাইসের জন্য ডিজাইন করা একটি শক্তিশালী এবং সুরক্ষিত ওয়্যারলেস মেশ নেটওয়ার্কিং প্রোটোকল। ওপেনথ্রেড গুগলের নেস্ট টিম দ্বারা তৈরি করা হয়েছে এবং এটি একটি ওপেন-সোর্স প্রকল্প হিসাবে ডেভেলপার সম্প্রদায়ের কাছে বিনামূল্যে উপলব্ধ।

থ্রেড স্পেসিফিকেশন স্মার্ট হোম এবং বাণিজ্যিক ভবনগুলিতে সাধারণত পাওয়া যায় এমন রিসোর্স-কনস্ট্রেইন্ড ডিভাইসগুলির জন্য একটি নির্ভরযোগ্য, নিরাপদ এবং শক্তি-সাশ্রয়ী ওয়্যারলেস যোগাযোগ প্রোটোকল স্থাপন করে। OpenThread থ্রেডের মধ্যে সম্পূর্ণ নেটওয়ার্ক স্তরের সুযোগ অন্তর্ভুক্ত করে, যেমন IPv6, 6LoWPAN, IEEE 802.15.4 MAC নিরাপত্তা, মেশ লিঙ্ক স্থাপন এবং মেশ রাউটিং সহ।

Telink Zephyr RTOS-এর সাথে OpenThread বাস্তবায়নকে একীভূত করেছে, যা Telink হার্ডওয়্যারের সাথে নিরবচ্ছিন্ন সামঞ্জস্যতা সক্ষম করে। এই ইন্টিগ্রেশনের সোর্স কোডটি GitHub- এ সহজেই অ্যাক্সেসযোগ্য এবং এটি একটি সফ্টওয়্যার ডেভেলপমেন্ট কিট (SDK) হিসাবেও সরবরাহ করা হয়েছে।

এই কোডল্যাবে, আপনি প্রকৃত হার্ডওয়্যারে OpenThread প্রোগ্রাম করবেন, একটি থ্রেড নেটওয়ার্ক তৈরি এবং পরিচালনা করবেন এবং নোডগুলির মধ্যে বার্তা বিনিময় করবেন। নীচের ছবিতে হার্ডওয়্যার সেটআপ দেখানো হয়েছে, যেখানে একটি OT বর্ডার রাউটার (OTBR) এবং কোডল্যাবে একটি থ্রেড ডিভাইস রয়েছে।

কোডল্যাব_ওভারভিউ.পিএনজি

তুমি কি শিখবে

  • Telink Zephyr ডেভেলপমেন্ট এনভায়রনমেন্ট ব্যবহার করে OpenThread বাস্তবায়ন সেট আপ করতে।
  • OpenThread CLI নমুনা ( ot-cli-ftd এবং ot-rcp ) তৈরি করতে এবং Telink B91 ডেভেলপমেন্ট বোর্ডে ফ্ল্যাশ করতে।
  • রাস্পবেরি পাই 3B+ বা তার পরবর্তী সংস্করণে ডকার ব্যবহার করে একটি ওপেনথ্রেড বর্ডার রাউটার (OTBR) সেট আপ করতে।
  • OTBR-এ একটি থ্রেড নেটওয়ার্ক তৈরি করতে।
  • আউট-অফ-ব্যান্ড ডিবাগিং ব্যবহার করে থ্রেড নেটওয়ার্কে ডিভাইস যোগ করতে।
  • CLI ব্যবহার করে থ্রেড নেটওয়ার্কে নোডগুলির মধ্যে সংযোগ যাচাই করতে।

তোমার যা লাগবে

হার্ডওয়্যার:

  • দুটি B91 ডেভেলপমেন্ট বোর্ড।
  • রাস্পবিয়ান ওএস ইমেজ সহ একটি রাস্পবেরি পাই 3B+ বা তার বেশি।
  • কমপক্ষে দুটি USB পোর্ট সহ একটি লিনাক্স মেশিন।
  • একটি ইন্টারনেট-সংযুক্ত সুইচ (অথবা রাউটার) এবং বেশ কয়েকটি ইথারনেট কেবল।

সফটওয়্যার:

  • টেলিঙ্ক বার্নিং এবং ডিবাগিং টুল —— লিনাক্সবিডিটি।
  • সিরিয়াল পোর্ট টার্মিনাল টুল, যেমন PuTTY।
  • অন্যান্য সরঞ্জাম যেমন, গিট এবং ওয়েস্ট।

2. পূর্বশর্ত

থ্রেড ধারণা এবং ওপেনথ্রেড সিএলআই

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

লিনাক্স মেশিন

লিনাক্স মেশিন (উবুন্টু v20.04 LTS বা পরবর্তী) টেলিঙ্ক জেফির ডেভেলপমেন্ট এনভায়রনমেন্ট সেট আপ করার জন্য এবং সমস্ত থ্রেড ডেভেলপমেন্ট বোর্ড ফ্ল্যাশ করার জন্য বিল্ড মেশিন হিসেবে কাজ করে। এই কাজগুলি সম্পন্ন করার জন্য, লিনাক্স মেশিনের দুটি উপলব্ধ USB পোর্ট এবং ইন্টারনেট সংযোগ প্রয়োজন।

সিরিয়াল পোর্ট সংযোগ এবং টার্মিনাল

আপনি সরাসরি লিনাক্স মেশিনের USB পোর্টে ডিভাইসটি প্লাগ করতে পারেন। অতিরিক্তভাবে, ডিভাইসগুলি অ্যাক্সেস করার জন্য আপনার একটি সিরিয়াল পোর্ট টার্মিনাল টুলের প্রয়োজন হবে।

এই কোডল্যাবে, FTD জয়েনার এবং রাস্পবেরি পাই নিয়ন্ত্রণের জন্য টার্মিনাল টুল PuTTY ব্যবহার করা হয়েছে। এটি এর ব্যবহারের একটি সারসংক্ষেপ প্রদান করে, তবে অন্যান্য টার্মিনাল সফ্টওয়্যারও ব্যবহার করা যেতে পারে।

এই কোডল্যাবের জন্য দুটি সেট B91 ডেভেলপমেন্ট কিট প্রয়োজন। নীচের ছবিতে একটি সেটে ন্যূনতম প্রয়োজনীয় উপাদানগুলি দেখানো হয়েছে।

ওভারভিউ.পিএনজি

এই কিটগুলির মধ্যে একটি RCP (রেডিও কো-প্রসেসর) হিসেবে ব্যবহৃত হবে, অন্যটি FTD (ফুল থ্রেড ডিভাইস) হিসেবে কাজ করবে। যদি আপনার কাছে এখনও কিটটি না থাকে, তাহলে আপনি Telink এর অফিসিয়াল ওয়েবসাইট থেকে আরও বিস্তারিত জানতে পারবেন। ব্যবহারযোগ্য কিছু উপাদান নিম্নরূপ:

সূচক

নাম

টেলিঙ্ক বি৯১ ডেভেলপমেন্ট বোর্ড

টেলিঙ্ক বার্নিং বোর্ড

২.৪ গিগাহার্টজ অ্যান্টেনা

USB কেবল (USB A থেকে মিনি USB)

রাস্পবেরি পাই 3B+ বা তার বেশি রাস্পবিয়ান ওএস ইমেজ সহ

এই কোডল্যাবে, Raspbian Bullseye Lite OS ইমেজ সহ একটি Raspberry Pi 3B+ বা তার চেয়ে বড় সংস্করণ অথবা Desktop সহ Raspbian Bullseye প্রয়োজন। এটি ইথারনেটের মাধ্যমে ইন্টারনেটের সাথে সংযুক্ত এবং OpenThread Border Router (OTBR) এর হোস্ট হিসেবে কনফিগার করা হবে।

নেটওয়ার্ক সংযোগ

একটি ইন্টারনেট-সংযুক্ত সুইচ (বা রাউটার) এবং বেশ কয়েকটি ইথারনেট কেবল। এগুলি রাস্পবেরি পাইকে লিনাক্স মেশিনের সাথে সংযুক্ত করতে ব্যবহৃত হয়, যা হোস্টের মাধ্যমে রাস্পবেরি পাইয়ের ব্যবহারকারীর কনফিগারেশনকে সহজতর করে।

লিনাক্সবিডিটি

Telink Burning and Debugging Tool (BDT) , যা সমস্ত Telink Chip সিরিজের জন্য প্রযোজ্য, আপনাকে Telink B91 ডেভেলপমেন্ট বোর্ডে OpenThread ফার্মওয়্যার মুছে ফেলতে এবং ফ্ল্যাশ করতে দেয়। আপনার Linux মেশিনে X86-ভিত্তিক linux সংস্করণ linuxBDT ইনস্টল করুন।

অন্যান্য

  • টেলিঙ্ক জেফায়ার ডেভেলপমেন্ট এনভায়রনমেন্ট স্থাপনের জন্য গিট।
  • ওয়েস্ট, জেফায়ার প্রকল্প পরিচালনা এবং ওপেনথ্রেড বাইনারি তৈরির জন্য।

৩. ফার্মওয়্যার সেট আপ করুন

লিনাক্স মেশিনে, একটি CLI টার্মিনাল খুলুন এবং আপনার APT আপ-টু-ডেট আছে কিনা তা নিশ্চিত করতে নিম্নলিখিত কমান্ডগুলি কার্যকর করে শুরু করুন।

$ sudo apt update
$ sudo apt upgrade

এটি হয়ে গেলে, নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন।

  1. নির্ভরতা ইনস্টল করুন।
    $ 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
    
    Zephyr-এর বর্তমানে প্রধান নির্ভরতার ন্যূনতম সংস্করণ প্রয়োজন, যেমন CMake (3.20.0), Python3 (3.6), এবং Devicetree Compiler (1.4.6)।
    $ cmake --version
    $ python3 --version
    $ dtc --version
    
    পরবর্তী ধাপগুলি অনুসরণ করার আগে আপনার সিস্টেমে ইনস্টল করা সংস্করণগুলি যাচাই করুন। যদি সংস্করণগুলি সঠিক না হয়, তাহলে APT মিররটিকে একটি স্থিতিশীল এবং আপ-টু-ডেট মিররে স্যুইচ করুন, অথবা এই নির্ভরতাগুলি ম্যানুয়ালি আপডেট করুন।
  2. পশ্চিমে ইনস্টল করুন।
    $ pip3 install --user -U west
    $ echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc
    $ source ~/.bashrc
    
    নিশ্চিত করুন যে ~/.local/bin আপনার $PATH এনভায়রনমেন্ট ভেরিয়েবলের মধ্যে আছে।
  3. Zephyr Project এর সোর্স কোডটি পান।
    $ west init ~/zephyrproject
    $ cd ~/zephyrproject
    $ west update
    $ west blobs fetch hal_telink
    $ west zephyr-export
    
  4. Zephyr-এর জন্য অতিরিক্ত Python নির্ভরতা ইনস্টল করুন।
    $ pip3 install --user -r ~/zephyrproject/zephyr/scripts/requirements.txt
    
  5. Zephyr টুলচেইন সেট আপ করুন। বেশিরভাগ বোর্ড ফ্ল্যাশ করার জন্য Zephyr টুলচেইন (প্রায় ১~২ গিগাবাইট) স্থানীয় ডিরেক্টরিতে ডাউনলোড করুন।
    $ 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
    
    Zephyr SDK ডাউনলোড করুন এবং নীচে দেখানো হিসাবে প্রস্তাবিত পথে রাখুন।
    $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]
    
    যেখানে [-xyz] হল ঐচ্ছিক টেক্সট যা যেকোনো টেক্সট হতে পারে, যেমন -0.16.1। SDK ইনস্টল করার পরে ডিরেক্টরিটি সরানো যাবে না। তারপর Zephyr টুলচেইন ইনস্টল করুন।
    $ 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
    
  6. হ্যালো ওয়ার্ল্ড উদাহরণ তৈরি করুন। প্রথমে, হ্যালো ওয়ার্ল্ড উদাহরণ ব্যবহার করে অফিসিয়াল জেফির প্রকল্প কনফিগারেশন সঠিক কিনা তা যাচাই করুন, তারপর আপনার কাস্টম প্রকল্প সেট আপ করার সাথে এগিয়ে যান।
    $ cd ~/zephyrproject/zephyr
    $ west build -p auto -b tlsr9518adk80d samples/hello_world
    
    Zephyr রিপোজিটরির রুট ডিরেক্টরি থেকে hello_world উদাহরণ তৈরি করতে West build কমান্ড ব্যবহার করুন। আপনি build/zephyr directory অধীনে zephyr.bin নামের ফার্মওয়্যারটি খুঁজে পেতে পারেন।
  7. Zephyr এনভায়রনমেন্ট স্ক্রিপ্টটি ~/.bashrc এ যোগ করুন। নিম্নলিখিত কমান্ডগুলি কার্যকর করুন।
    $ echo "source ~/zephyrproject/zephyr/zephyr-env.sh" >> ~/.bashrc
    $ source ~/.bashrc
    
  8. Telink Zephyr রিমোট রিপোজিটরি যোগ করুন। Telink repo স্থানীয়ভাবে একটি ডেভেলপমেন্ট শাখা হিসেবে ডাউনলোড করুন এবং এটি আপডেট করুন।
    $ 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 Doc - শুরু করার নির্দেশিকা দেখতে পারেন।

Telink LinuxBDT টুলটি ডাউনলোড করুন এবং এটি আপনার লিনাক্স মেশিনের স্থানীয় ডিরেক্টরিতে এক্সট্র্যাক্ট করুন, যেমন হোম ডিরেক্টরি ~ , যা B91 ডেভেলপমেন্ট বোর্ডে ফার্মওয়্যার ফ্ল্যাশ করতে সক্ষম করে।

$ cd ~
$ wget http://wiki.telink-semi.cn/tools_and_sdk/Tools/BDT/LinuxBDT.tar.bz2
$ tar -vxf LinuxBDT.tar.bz2 

USB ইন্টারফেসের মাধ্যমে বার্নিং বোর্ডটিকে লিনাক্স মেশিনের সাথে সংযুক্ত করুন, এবং তারপর নিম্নলিখিত কমান্ডগুলি প্রবেশ করান।

$ 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 প্রোগ্রামার সফলভাবে Linux মেশিনের সাথে সংযুক্ত হয়েছে।

ফার্মওয়্যার সংকলন

এই কোডল্যাবটি দুই ধরণের ওপেনথ্রেড ফার্মওয়্যার তৈরি করবে:

  • ot-cli-ftd ,
  • এবং ot-rcp

সংকলন পদ্ধতিগুলি নিম্নরূপ:

  1. রেডিও কো-প্রসেসর ( 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
    
  2. ইন্টারেক্টিভ কমান্ড লাইন সহ সম্পূর্ণ বৈশিষ্ট্যযুক্ত থ্রেড ডিভাইস ( 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" লেবেল করুন।

৪. FTD জয়েনার ডিভাইসের জন্য একটি সিরিয়াল কনসোল কনফিগার করুন

ছবিতে যেমন দেখানো হয়েছে, সরাসরি লিনাক্স মেশিনের USB পোর্টে FTD জয়েনারটি প্লাগ করুন।

ইউএসবি_কানেকশন.পিএনজি

FTD Joiner ডিভাইসটি Linux মেশিনের সাথে সংযুক্ত করার পর, PuTTY খুলুন। তারপর একটি নতুন টার্মিনাল তৈরি করুন, সিরিয়াল পোর্টের তথ্য সেট করুন এবং সিরিয়াল পোর্টটি খুলুন।

uart_console.png সম্পর্কে

OpenThread কমান্ড লাইন রেফারেন্স এখানে: OpenThread CLI Reference । সকল কমান্ডের পূর্বে ot লিখতে ভুলবেন না।

উদাহরণ:

> ot state
disabled
Done
> ot channel
11
Done
>

৫. রাস্পবেরি পাইকে ওপেনথ্রেড বর্ডার রাউটার হিসেবে সেট আপ করুন

একটি ওপেনথ্রেড বর্ডার রাউটার হল দুটি প্রধান অংশ নিয়ে গঠিত একটি ডিভাইস:

  • রাস্পবেরি পাইতে বর্ডার রাউটার (BR) হিসেবে কাজ করার জন্য প্রয়োজনীয় সমস্ত পরিষেবা এবং ফার্মওয়্যার রয়েছে।
  • আরসিপি থ্রেড যোগাযোগের জন্য দায়ী।

রেডিও কো-প্রসেসর (RCP)

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

OTBR_overview.png সম্পর্কে

রাস্পবেরি পাই

  1. নিশ্চিত করুন যে Raspbian Bullseye Lite OS ইমেজ বা Raspbian Bullseye with Desktop এসডি কার্ডে সঠিকভাবে লেখা আছে।
  2. আপনার কাছে রাস্পবেরি পাইতে SSH করার বিকল্প আছে অথবা সরাসরি Raspbian Desktop এর সাথে কাজ করার বিকল্প আছে। এই কোডল্যাবটি SSH ব্যবহার করবে।
  3. পরবর্তী ধাপে OTBR ডকার ইনস্টল করার আগে, প্রথমে স্থানীয় সংগ্রহস্থল এবং প্যাকেজ ম্যানেজার আপডেট করতে ভুলবেন না।
    $ sudo apt-get update
    $ sudp apt-get upgrade
    

ডকার ইনস্টল করুন

যদি আপনি পূর্ববর্তী ধাপে স্থানীয় সংগ্রহস্থল এবং প্যাকেজ ম্যানেজার APT আপডেট করেন, তাহলে Raspberry Pi রিবুট করুন এবং তারপর একটি SSH টার্মিনাল উইন্ডো খুলুন।

  1. ডকার ইনস্টল করুন:
    $ curl -sSL https://get.docker.com | sh
    
  2. অনুমতি প্রদানের জন্য বর্তমান অ্যাকাউন্টটি একটি ডকার গ্রুপে রাখুন যাতে প্রতিটি কমান্ডের সামনে sudo যোগ করার প্রয়োজন না হয়।
    $ sudo usermod -aG docker $USER
    
    কার্যকর হওয়ার জন্য আপনাকে রাস্পবেরি পাই পুনরায় চালু করতে হবে।
  3. যদি ডকার শুরু না করে থাকে, তাহলে এটি শুরু করুন:
    $ sudo dockerd
    
  4. OTBR ফায়ারওয়াল স্ক্রিপ্টগুলি ডকার কন্টেইনারের ভিতরে নিয়ম তৈরি করে। তার আগে, iptables এর কার্নেল মডিউল লোড করার জন্য modprobe চালান।
    $ sudo modprobe ip6table_filter
    

ডকার কনফিগার করুন এবং চালান

এই কোডল্যাবটি সরাসরি OpenThread Docker Hub থেকে OTBR Docker ইমেজটি টেনে আনে। এই ইমেজটি OpenThread টিম দ্বারা পরীক্ষিত এবং যাচাই করা হয়েছে।

  1. সর্বশেষ ছবিটি টানুন:
    $ docker pull openthread/otbr:latest
    
  2. ডকার কন্টেইনারে ছবির তালিকাটি পরীক্ষা করুন:
    $ docker images
    REPOSITORY        TAG       IMAGE ID       CREATED      SIZE
    openthread/otbr   latest    db081f4de15f   6 days ago   766MB
    
  3. /dev চেক করে RCP ডিভাইসের সিরিয়াল পোর্ট নাম নির্ধারণ করুন, ttyACM0 নির্দেশ করে যে RCP সঠিকভাবে সংযুক্ত।
    $ ls /dev/tty*
    ...
    /dev/ttyACM0
    ... 
    
  4. প্রথমবারের মতো 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
    
  5. রাস্পবেরি পাই এবং 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 জয়েনার ডিভাইস এবং একটি OTBR প্রস্তুত, এবং আপনি থ্রেড নেটওয়ার্ক তৈরির পরবর্তী ধাপে যেতে পারেন।

৬. একটি থ্রেড নেটওয়ার্ক তৈরি করুন

RCP-তে একটি থ্রেড নেটওয়ার্ক তৈরি করুন

আমরা OTBR-তে ot-ctl শেল ব্যবহার করে একটি থ্রেড নেটওয়ার্ক স্থাপন করি। যদি আপনি আগের বিভাগে শেলটি থেকে বেরিয়ে আসেন, তাহলে SSH টার্মিনালে এটি আবার শুরু করতে নিম্নলিখিত কমান্ডটি প্রবেশ করান:

$ docker exec -ti otbr sh -c "sudo ot-ctl"

এরপর, টেবিলে উল্লেখিত ক্রমে কমান্ডগুলি লিখুন এবং পরবর্তী ধাপে যাওয়ার আগে নিশ্চিত করুন যে প্রতিটি ধাপ প্রত্যাশিত ফলাফল অর্জন করছে।

সূচক

কমান্ড

ভূমিকা

প্রত্যাশিত প্রতিক্রিয়া

dataset init new

একটি নতুন র‍্যান্ডম নেটওয়ার্ক ডেটাসেট তৈরি করুন।

সম্পন্ন

dataset commit active

অ-উদ্বায়ী স্টোরেজে অ্যাক্টিভ অপারেশনাল ডেটাসেটে নতুন ডেটাসেট কমিট করুন।

সম্পন্ন

ifconfig up

IPv6 ইন্টারফেসটি আনুন।

সম্পন্ন

thread start

থ্রেড প্রোটোকল অপারেশন সক্ষম করুন এবং একটি থ্রেড নেটওয়ার্কের সাথে সংযুক্ত করুন।

সম্পন্ন

থ্রেড ইন্টারফেস চালু হওয়ার জন্য ১০ সেকেন্ড অপেক্ষা করুন।

state

ডিভাইসের অবস্থা পরীক্ষা করুন। এই কমান্ডটি একাধিকবার কল করা যেতে পারে যতক্ষণ না এটি লিডার হয়ে পরবর্তী ধাপে চলে যায়।

নেতা
সম্পন্ন

dataset active

সম্পূর্ণ অ্যাক্টিভ অপারেশনাল ডেটাসেটটি পরীক্ষা করুন এবং নেটওয়ার্ক কী রেকর্ড করুন।

সক্রিয় টাইমস্ট্যাম্প: ১
চ্যানেল: ১৩
চ্যানেল মাস্ক: 0x07fff800
এক্সটেনশন প্যান আইডি: b07476e168eda4fc
মেশ লোকাল প্রিফিক্স: fd8c:60bc:a98:c7ba::/64
নেটওয়ার্ক কী: c312485187484ceb5992d2343baaf93d
নেটওয়ার্কের নাম: OpenThread-599c
প্যান আইডি: 0x599c
PSKc: 04f79ad752e8401a1933486c95299f60
নিরাপত্তা নীতি: 672 onrc 0
সম্পন্ন

নেটওয়ার্ক তৈরির সময় OTBR দ্বারা এলোমেলোভাবে তৈরি করা নেটওয়ার্ক কীটি ot-cli-ftd ডিভাইসগুলি এই থ্রেড নেটওয়ার্কে যোগদান করলে ব্যবহার করা হবে।

আউট-অফ-ব্যান্ড কমিশনিংয়ের মাধ্যমে থ্রেডে FTD জয়েনার যোগ করুন

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

সূচক

কমান্ড

ভূমিকা

প্রত্যাশিত প্রতিক্রিয়া

ot dataset networkkey c312485187484ceb5992d2343baaf93d

একটি ডিভাইসকে থ্রেড নেটওয়ার্কের সাথে সংযুক্ত করার জন্য শুধুমাত্র নেটওয়ার্ক কী প্রয়োজন।

সম্পন্ন

ot dataset commit active

অ-উদ্বায়ী স্টোরেজে অ্যাক্টিভ অপারেশনাল ডেটাসেটে নতুন ডেটাসেট কমিট করুন।

সম্পন্ন

ot ifconfig up

IPv6 ইন্টারফেসটি আনুন।

সম্পন্ন

ot thread start

থ্রেড প্রোটোকল অপারেশন সক্ষম করুন এবং একটি থ্রেড নেটওয়ার্কের সাথে সংযুক্ত করুন।

সম্পন্ন

ডিভাইসটি সংযুক্ত হয়ে নিজেকে কনফিগার করার জন্য ২০ সেকেন্ড অপেক্ষা করুন।

ot state

ডিভাইসের অবস্থা পরীক্ষা করুন।

চাইল্ড/রাউটার
সম্পন্ন

টপোলজি

নিম্নলিখিত কোড স্নিপেটের মতো প্রতিক্রিয়া পেতে 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 টি একটি চাইল্ড থেকে রাউটারে আপগ্রেড করা হয়েছে।

বর্তমান থ্রেড নেটওয়ার্কে দুটি নোড রয়েছে এবং টপোলজিটি নীচের চিত্রে দেখানো হয়েছে।

টপোলজি.পিএনজি

৭. থ্রেড ডিভাইসের মধ্যে যোগাযোগ

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 জয়েনারের সিরিয়াল কনসোলে নিম্নলিখিত কমান্ডটি প্রবেশ করান।

> 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 জয়েনার OTBR দ্বারা প্রদত্ত পিং প্রতিক্রিয়া পেয়েছে। দুটি ডিভাইসের মধ্যে যোগাযোগ সফল হয়েছে।

ইউডিপি যোগাযোগ

OpenThread দ্বারা প্রদত্ত অ্যাপ্লিকেশন পরিষেবাগুলির মধ্যে UDPও অন্তর্ভুক্ত। আপনি থ্রেড নেটওয়ার্কের নোডগুলির মধ্যে তথ্য প্রেরণ করতে UDP API ব্যবহার করতে পারেন, অথবা বর্ডার রাউটারের মাধ্যমে বহিরাগত নেটওয়ার্কগুলিতে তথ্য প্রেরণ করতে পারেন। OpenThread এর UDP API এর বিস্তারিত ভূমিকা OpenThread CLI - UDP উদাহরণে রয়েছে। এই কোডল্যাবটি OTBR এবং FTD জয়েনারের মধ্যে তথ্য প্রেরণের জন্য এর কিছু API ব্যবহার করবে।

প্রথমে, OTBR এর Mesh-Local EID নিন। এই ঠিকানাটি Thread ডিভাইসের IPv6 ঠিকানাগুলির মধ্যে একটি, এবং এটি একই Thread নেটওয়ার্ক পার্টিশনে Thread ডিভাইসগুলি অ্যাক্সেস করতে ব্যবহার করা যেতে পারে।

> ipaddr mleid
fd8c:60bc:a98:c7ba:5249:34ab:26d1:aff6
Done

OTBR UDP সক্ষম করতে এবং ডিভাইসের 1022 পোর্টটি আবদ্ধ করতে SSH টার্মিনালে নিম্নলিখিত কমান্ডগুলি প্রবেশ করান।

> 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

৮. অভিনন্দন

আপনি একটি সহজ থ্রেড নেটওয়ার্ক তৈরি করেছেন এবং এই নেটওয়ার্কের মধ্যে যোগাযোগ যাচাই করেছেন।

তুমি এখন জানো:

  • টেলিঙ্ক জেফির ডেভেলপমেন্ট এনভায়রনমেন্ট কীভাবে তৈরি এবং ব্যবহার করবেন।
  • কীভাবে ot-cli-ftd এবং ot-rcp বাইনারি তৈরি করবেন, এবং Telink B91 ডেভেলপমেন্ট বোর্ডে ফ্ল্যাশ করবেন।
  • ডকার ব্যবহার করে ওপেনথ্রেড বর্ডার রাউটার (OTBR) হিসেবে Raspberry Pi 3B+ বা উচ্চতর সংস্করণ কীভাবে সেট আপ করবেন।
  • OTBR-এ কিভাবে একটি থ্রেড নেটওয়ার্ক তৈরি করবেন।
  • আউট-অফ-ব্যান্ড কমিশনিংয়ের মাধ্যমে থ্রেড নেটওয়ার্কে ডিভাইসগুলি কীভাবে যুক্ত করবেন।
  • থ্রেড নেটওয়ার্কে নোডগুলির মধ্যে সংযোগ কীভাবে যাচাই করবেন।

আরও পড়ুন

বিভিন্ন OpenThread রিসোর্স সম্পর্কে জানতে openthread.io এবং GitHub দেখুন, যার মধ্যে রয়েছে:

রেফারেন্স ডকুমেন্টস: