ESP32H2 এবং ESP থ্রেড বর্ডার রাউটার বোর্ডের সাথে একটি থ্রেড নেটওয়ার্ক তৈরি করুন

1। পরিচিতি

26b7f4f6b3ea0700.png

OpenThread , Google Nest টিম দ্বারা প্রকাশিত, হল Thread® নেটওয়ার্কিং প্রোটোকলের একটি ওপেন-সোর্স ইমপ্লিমেন্টেশন যা কানেক্টেড হোমের জন্য প্রোডাক্টের বিকাশকে ত্বরান্বিত করার জন্য ডিজাইন করা হয়েছে। থ্রেড স্পেসিফিকেশন একটি IPv6-ভিত্তিক নির্ভরযোগ্য, নিরাপদ, এবং কম-পাওয়ার ওয়্যারলেস ডিভাইস-টু-ডিভাইস যোগাযোগ প্রোটোকলকে হোম এবং বাণিজ্যিক বিল্ডিং অ্যাপ্লিকেশনগুলির জন্য সংজ্ঞায়িত করে।

Espressif FreeRTOS এবং LwIP এর উপর ভিত্তি করে OpenThread স্ট্যাক পোর্ট করেছে, যা ডেভেলপারদের দ্রুত থ্রেড নেটওয়ার্ক তৈরি করতে সক্ষম করে। সম্পর্কিত সোর্স কোড GitHub থেকে প্রাপ্ত করা যেতে পারে। একই সময়ে, Espressif RTOS-এর উপর ভিত্তি করে একটি থ্রেড বর্ডার রাউটারও প্রয়োগ করেছে।

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

Espressif_hardware_setup.jpg

আপনি কি শিখবেন

  • ESP বোর্ডে OpenThread CLI বাইনারি তৈরি এবং ফ্ল্যাশ করা।
  • ESP থ্রেড বর্ডার রাউটার বোর্ডে বর্ডার রাউটার তৈরি এবং ফ্ল্যাশ করা।
  • ESP মনিটর এবং OpenThread CLI সহ থ্রেড নোডগুলি ম্যানুয়ালি পরিচালনা করা।
  • থ্রেড বর্ডার রাউটারে একটি থ্রেড নেটওয়ার্ক তৈরি করা।
  • একটি থ্রেড নেটওয়ার্কে ডিভাইসের কমিশনিং সুরক্ষিত করা।
  • থ্রেড নোডের মধ্যে IPv6 ঠিকানা পিং করা হচ্ছে।
  • UDP সহ থ্রেড নোডের মধ্যে বার্তা প্রেরণ করা।

আপনি কি প্রয়োজন হবে

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

  • IEEE 802.15.4 মডিউল সহ 2 ESP বোর্ড।
  • 1 ইএসপি থ্রেড বর্ডার রাউটার বোর্ড।

সফটওয়্যার:

2. শুরু করা

  1. ইএসপি-আইডিএফ ইনস্টলেশন।

সফটওয়্যার ডেভেলপমেন্ট এনভায়রনমেন্ট ইন্সটল করতে অনুগ্রহ করে ESP-IDF প্রোগ্রামিং গাইড অনুসরণ করুন।

  1. ESP থ্রেড বর্ডার রাউটার SDK ক্লোন করুন।

ESP-THREAD-BR হল অফিসিয়াল ESP থ্রেড বর্ডার রাউটার SDK। এটি একটি থ্রেড বর্ডার রাউটার তৈরি করতে সমস্ত মৌলিক নেটওয়ার্ক বৈশিষ্ট্য সমর্থন করে এবং দ্রুত উৎপাদনের জন্য সমৃদ্ধ পণ্য স্তরের বৈশিষ্ট্যগুলিকে একীভূত করে।

$ cd <your-local-workspace>
$ git clone --recursive https://github.com/espressif/esp-thread-br.git

3. বিল্ড এবং ফ্ল্যাশ

IEEE 802.15.4 মডিউল সহ ESP বোর্ডে ot-cli-ftd বাইনারি ফাইল তৈরি এবং ফ্ল্যাশ করার জন্য, আপনি আরও বিস্তারিত জানার জন্য ESP-IDF উদাহরণ ot_cli উল্লেখ করতে পারেন:

$ cd <your-idf-path>/examples/openthread/ot_cli
$ idf.py set-target <your-board-type>

menuconfig এর মাধ্যমে যোগদানকারী বৈশিষ্ট্য সক্রিয় করুন:

$ idf.py menuconfig

কম্পোনেন্ট কনফিগার > ওপেন থ্রেড > যোগদানকারী সক্ষম করুন, তারপর তৈরি করুন এবং ফ্ল্যাশ করুন।

$ idf.py -p <your-local-port> build flash monitor

ESP থ্রেড বর্ডার রাউটার বোর্ডে ot-br বাইনারি ফাইল তৈরি এবং ফ্ল্যাশ করার জন্য, আপনাকে প্রথমে RCP বাইনারি ফাইল তৈরি করতে হবে। এই RCP বাইনারি ফাইলটি ESP থ্রেড বর্ডার রাউটার বোর্ডে ডিভাইসে স্পষ্টভাবে ফ্ল্যাশ করার প্রয়োজন নেই। এটি বর্ডার রাউটার বাইনারি ফাইলে অন্তর্ভুক্ত করা হবে এবং প্রথম বুট করার সময় ESP32-H2 চিপে ফ্ল্যাশ করা হবে (বা RCP ফার্মওয়্যার পরিবর্তিত হয়েছে)। আরো বিস্তারিত জানার জন্য আপনি ESP থ্রেড বিআর ডক্স দেখতে পারেন:

$ cd <your-idf-path>/examples/openthread/ot_rcp
$ idf.py set-target esp32h2
$ idf.py build
$ cd <your-esp-thread-br-path>/examples/basic_thread_border_router
$ idf.py set-target esp32s3

মেনু কনফিগারেশনের মাধ্যমে কমিশনার বৈশিষ্ট্যটি সক্ষম করুন:

$ idf.py menuconfig

কম্পোনেন্ট কনফিগার > ওপেন থ্রেড > কমিশনার সক্ষম করুন, তারপর তৈরি করুন এবং ফ্ল্যাশ করুন।

$ idf.py -p <your-local-port> build flash monitor

4. থ্রেড বর্ডার রাউটারে একটি থ্রেড নেটওয়ার্ক তৈরি করা

এখন আপনি ESP থ্রেড বর্ডার রাউটার বোর্ডে (BR কমিশনার) OpenThread কমান্ড লাইন ব্যবহার করে একটি থ্রেড নেটওয়ার্ক তৈরি করতে পারেন:

## BR Commissioner ##
----------------------
> dataset init new
Done
> dataset
Active Timestamp: 1
Channel: 21
Channel Mask: 0x07fff800
Ext PAN ID: 151975d11bea97b5
Mesh Local Prefix: fd6a:b54b:d6a3:b05a::/64
Network Key: 731ab6a60a64a0a0b14b259b86b2be01
Network Name: OpenThread-1444
PAN ID: 0x1444
PSKc: 54e7f18d2575014da94db09df29c5df0
Security Policy: 672 onrc 0
Done

এই ডেটাসেটটিকে সক্রিয় হিসাবে কমিট করুন:

> dataset commit active
Done

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

> ifconfig up
I (59329) OPENTHREAD: Platform UDP bound to port 49153
Done
I (59329) OT_STATE: netif up

থ্রেড প্রোটোকল অপারেশন শুরু করুন:

> thread start
I(61709) OPENTHREAD:[N] Mle-----------: Role disabled -> detached
Done
> I(62469) OPENTHREAD:[N] Mle-----------: Attach attempt 1, AnyPartition reattaching with Active Dataset
I(69079) OPENTHREAD:[N] RouterTable---: Allocate router id 11
I(69079) OPENTHREAD:[N] Mle-----------: RLOC16 fffe -> 2c00
I(69089) OPENTHREAD:[N] Mle-----------: Role detached -> leader
I(69089) OPENTHREAD:[N] Mle-----------: Partition ID 0x28b518c6
I (69099) OPENTHREAD: Platform UDP bound to port 49154

কিছুক্ষণ পরে, ডিভাইসের অবস্থা পরীক্ষা করুন। এটা নেতা হওয়া উচিত.

> state
leader
Done
> 

5. নেটওয়ার্ককির মাধ্যমে থ্রেড নেটওয়ার্কে যোগ দিন

এই কোডল্যাবে, IEEE 802.15.4 মডিউল সহ দুটি ESP বোর্ড BR গঠিত নেটওয়ার্কে যোগদানের জন্য প্রস্তুত করা হয়েছে। এই সেশনে, আমরা নেটওয়ার্কে Board1 যোগ করব।

BR থেকে নেটওয়ার্ককি পান:

## BR Commissioner ##
----------------------
> networkkey
731ab6a60a64a0a0b14b259b86b2be01
Done
> 

IEEE 802.15.4 মডিউল সহ এই নেটওয়ার্ককিটিকে একটি ESP বোর্ডে (Board1 Joiner) সেট করুন:

## Board1 Joiner ##
----------------------
> dataset networkkey 731ab6a60a64a0a0b14b259b86b2be01
Done

এই ডেটাসেটটিকে সক্রিয় হিসাবে কমিট করুন:

> dataset commit active
Done

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

> ifconfig up
Done
I (20308) OT_STATE: netif up

থ্রেড প্রোটোকল অপারেশন শুরু করুন:

> thread start
I(23058) OPENTHREAD:[N] Mle-----------: Role disabled -> detached
Done
> I(23408) OPENTHREAD:[N] Mle-----------: Attach attempt 1, AnyPartition reattaching with Active Dataset
I(30028) OPENTHREAD:[N] Mle-----------: Attach attempt 1 unsuccessful, will try again in 0.288 seconds
I(30328) OPENTHREAD:[N] Mle-----------: Attach attempt 2, AnyPartition 
I(33498) OPENTHREAD:[N] Mle-----------: Delay processing Announce - channel 21, panid 0x1444
I(33758) OPENTHREAD:[N] Mle-----------: Processing Announce - channel 21, panid 0x1444
I(33758) OPENTHREAD:[N] Mle-----------: Role detached -> disabled
I(33758) OPENTHREAD:[N] Mle-----------: Role disabled -> detached
I(34178) OPENTHREAD:[N] Mle-----------: Attach attempt 1, AnyPartition 
I(35068) OPENTHREAD:[N] Mle-----------: RLOC16 fffe -> 2c01
I(35068) OPENTHREAD:[N] Mle-----------: Role detached -> child

কিছুক্ষণ পরে, ডিভাইসের অবস্থা পরীক্ষা করুন। এটা শিশু হওয়া উচিত.

> state
child
Done

রাউটারে ভূমিকা সেট করুন।

> state router
Done
I(51028) OPENTHREAD:[N] Mle-----------: RLOC16 2c01 -> 2800
I(51028) OPENTHREAD:[N] Mle-----------: Role child -> router
I(51028) OPENTHREAD:[N] Mle-----------: Partition ID 0x28b518c6
> 

esp_ot_tp_LR.jpg

6. সুরক্ষিত কমিশনিংয়ের মাধ্যমে থ্রেড নেটওয়ার্কে যোগ দিন

এই সেশনে, আমরা নিরাপত্তা কমিশনিংয়ের মাধ্যমে নেটওয়ার্কে Board2 যুক্ত করব:

বিআর কমিশনারের কাছ থেকে পিএসকেসি এবং প্যানিড পান:

## BR Commissioner ##
----------------------
> pskc
54e7f18d2575014da94db09df29c5df0
Done
> panid
0x1444
Done

Board2 এ নেটওয়ার্ক তথ্য কনফিগার করুন:

## Board2 Joiner ##
----------------------
> dataset pskc 54e7f18d2575014da94db09df29c5df0
Done
> dataset panid 0x1444
Done

এই ডেটাসেটটিকে সক্রিয় হিসাবে কমিট করুন:

## Board2 Joiner ##
----------------------
> dataset commit active 
Done

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

## Board2 Joiner ##
----------------------
> ifconfig up
Done
I (29146) OT_STATE: netif up

Board2 থেকে eui64 পান:

## Board2 Joiner ##
----------------------
> eui64
4831b7fffec02be1
Done

BR কমিশনারে , কমিশনার শুরু করুন এবং যোগদানকারী শংসাপত্র সহ যে ডিভাইসটি যোগ দিতে পারে তার eui64 উল্লেখ করুন, উদাহরণস্বরূপ J01NME । যোগকারী শংসাপত্র হল একটি ডিভাইস-নির্দিষ্ট স্ট্রিং যার দৈর্ঘ্য 6 থেকে 32 অক্ষরের মধ্যে রয়েছে।

## BR Commissioner ##
----------------------
> commissioner start
Commissioner: petitioning
Done
Commissioner: active
> commissioner joiner add 4831b7fffec02be1 J01NME
Done

বোর্ড2 যোগদানকারীতে স্যুইচ করুন। আপনি এইমাত্র BR কমিশনারে সেট আপ করেছেন এমন যোগদানকারী শংসাপত্র দিয়ে যোগদানকারীর ভূমিকা শুরু করুন:

## Board2 Joiner ##
----------------------
> ifconfig up
Done
> joiner start J01NME
Done

এক মিনিটের মধ্যে, আপনি একটি সফল প্রমাণীকরণের নিশ্চিতকরণ পাবেন:

## Board2 Joiner ##
----------------------
>
Join success

এর পরে, আপনি বিআর কমিশনার দ্বারা গঠিত থ্রেড নেটওয়ার্ক শুরু করতে এবং যোগদান করতে পারেন।

থ্রেড প্রোটোকল অপারেশন শুরু করুন:

> thread start
I(35727) OPENTHREAD:[N] Mle-----------: Role disabled -> detached
Done
> I(36197) OPENTHREAD:[N] Mle-----------: Attach attempt 1, AnyPartition reattaching with Active Dataset
I(37007) OPENTHREAD:[N] Mle-----------: RLOC16 fffe -> 2801
I(37007) OPENTHREAD:[N] Mle-----------: Role detached -> child

রাউটারে ভূমিকা সেট করুন।

> state router
Done
I(46057) OPENTHREAD:[N] Mle-----------: RLOC16 2801 -> 4400
I(46057) OPENTHREAD:[N] Mle-----------: Role child -> router
I(46057) OPENTHREAD:[N] Mle-----------: Partition ID 0x28b518c6
> 

এখন আপনি নীচে দেখানো টপোলজি সহ একটি থ্রেড নেটওয়ার্ক পাবেন:

esp_ot_tp_LRR.jpg

7. থ্রেড নোডের মধ্যে IPv6 ঠিকানা পিং করা

আপনি যে কোনো দুটি বোর্ডের মধ্যে যোগাযোগ করতে ping কমান্ড ব্যবহার করতে পারেন। প্রতিটি বোর্ডের IPv6 ঠিকানা প্রিন্ট করতে ipaddr কমান্ডটি ব্যবহার করুন:

## BR Commissioner ##
----------------------
> ipaddr
fd6a:b54b:d6a3:b05a:0:ff:fe00:fc00          # Leader Anycast Locator (ALOC)
fd6a:b54b:d6a3:b05a:0:ff:fe00:2c00          # Routing Locator (RLOC)
fd6a:b54b:d6a3:b05a:a8df:eb43:63d8:bda0     # Mesh-Local EID (ML-EID) 
fe80:0:0:0:687c:7248:cc14:9c4d              # Link-Local Address (LLA)
Done
> 
## Board1 Joiner ##
----------------------
> ipaddr
fd6a:b54b:d6a3:b05a:0:ff:fe00:2800          # Routing Locator (RLOC)
fd6a:b54b:d6a3:b05a:e461:db08:c833:1248     # Mesh-Local EID (ML-EID)
fe80:0:0:0:18ac:df04:4671:6a45              # Link-Local Address (LLA)
Done
## Board2 Joiner ##
----------------------
> ipaddr
fd6a:b54b:d6a3:b05a:0:ff:fe00:4400          # Routing Locator (RLOC)
fd6a:b54b:d6a3:b05a:d7dc:8e90:9bc9:ecbc     # Mesh-Local EID (ML-EID)
fe80:0:0:0:a8cc:1483:f696:91a2              # Link-Local Address (LLA)
Done

উদাহরণস্বরূপ, BR কমিশনার থেকে Board2 MLE-ID পিং করার জন্য, আপনি BR কমিশনারে এই কমান্ডটি চালাতে পারেন:

## BR Commissioner ##
----------------------
> ping fd6a:b54b:d6a3:b05a:d7dc:8e90:9bc9:ecbc
16 bytes from fd6a:b54b:d6a3:b05a:d7dc:8e90:9bc9:ecbc: icmp_seq=1 hlim=255 time=123ms
1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 123/123.0/123 ms.
Done

8. UDP সহ থ্রেড নোডের মধ্যে বার্তা প্রেরণ করা

এই সেশনে, আপনি শিখবেন কিভাবে দুটি থ্রেড ডিভাইসের মধ্যে একটি বার্তা পাঠাতে হয়। উদাহরণস্বরূপ, udp খুলুন এবং এটি 20617 পোর্টে আবদ্ধ করুন এবং BR-এ সমস্ত ঠিকানা শুনুন:

## BR Commissioner ##
----------------------
> udp open
Done
> udp bind :: 20617
I (1298739) OPENTHREAD: Platform UDP bound to port 20617
Done

তারপর Board1 থেকে BR MLE-ID ঠিকানা এবং পোর্ট 20617 এ একটি বার্তা পাঠান:

## Board1 Joiner ##
----------------------
> udp open
Done
> udp send fd6a:b54b:d6a3:b05a:a8df:eb43:63d8:bda0 20617 ESP

আপনি বিআর-এ প্রাপ্ত বার্তাটি দেখতে পারেন:

## BR Commissioner ##
----------------------
3 bytes from fd6a:b54b:d6a3:b05a:e461:db08:c833:1248 49154 ESP

9. অভিনন্দন!

আপনি ESP বোর্ড ব্যবহার করে একটি শারীরিক থ্রেড নেটওয়ার্ক তৈরি করেছেন!

esp_ot_final_topology.jpg

আপনি এখন জানেন:

  • ESP বোর্ডে OpenThread CLI বাইনারি তৈরি এবং ফ্ল্যাশ করা।
  • ESP থ্রেড বর্ডার রাউটার বোর্ডে ফ্ল্যাশিং বর্ডার রাউটার তৈরি করা।
  • ESP মনিটর এবং OpenThread CLI সহ থ্রেড নোডগুলি ম্যানুয়ালি পরিচালনা করা।
  • থ্রেড বর্ডার রাউটারে একটি থ্রেড নেটওয়ার্ক তৈরি করা।
  • একটি থ্রেড নেটওয়ার্কে ডিভাইসের কমিশনিং সুরক্ষিত করা।
  • থ্রেড নোডের মধ্যে IPv6 ঠিকানা পিং করা হচ্ছে।
  • UDP সহ থ্রেড নোডের মধ্যে বার্তা প্রেরণ করা।

আরও পড়া

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

তথ্যসূত্র: