Texas Instruments SimpleLink F3 और OpenThread की मदद से Thread नेटवर्क बनाना

1. परिचय

OpenThread का लोगो

Google का OpenThread (OT), Thread का ओपन-सोर्स वर्शन है. Google ने OpenThread को रिलीज़ किया है. इससे Google Nest के प्रॉडक्ट में इस्तेमाल की गई नेटवर्किंग टेक्नोलॉजी, डेवलपर के लिए बड़े पैमाने पर उपलब्ध हो जाएगी. इससे कनेक्टेड होम और कमर्शियल बिल्डिंग ऐप्लिकेशन के लिए प्रॉडक्ट डेवलप करने की प्रोसेस तेज़ हो जाएगी. OpenThread को आसानी से एक जगह से दूसरी जगह ले जाया जा सकता है. ऐसा इसलिए, क्योंकि इसमें प्लैटफ़ॉर्म ऐब्स्ट्रैक्शन लेयर छोटी होती है और मेमोरी फ़ुटप्रिंट भी कम होता है. यह सिस्टम-ऑन-चिप (एसओसी) और नेटवर्क को-प्रोसेसर (एनसीपी), दोनों तरह के डिज़ाइन के साथ काम करता है.

Thread स्पेसिफ़िकेशन, IPv6 पर आधारित एक भरोसेमंद, सुरक्षित, और कम पावर वाला वायरलेस डिवाइस-टू-डिवाइस कम्यूनिकेशन प्रोटोकॉल है. इसका इस्तेमाल घर और कमर्शियल बिल्डिंग में किया जाता है.

Texas Instruments ने SimpleLink™ CC27xx डिवाइस फ़ैमिली के लिए OpenThread को लागू किया है. GitHub पर मौजूद ot-ti रिपॉज़िटरी में, प्लैटफ़ॉर्म ड्राइवर और उदाहरण के तौर पर दिए गए ऐप्लिकेशन शामिल हैं. इनकी मदद से, Texas Instruments SimpleLink Connected MCUs पर OpenThread को चलाया जा सकता है. CC2745R10-Q1, टीआई के SimpleLink CC27xx फ़ैमिली का ऑटोमोटिव-ग्रेड (AEC-Q100 सर्टिफ़ाइड), थ्रेड-सर्टिफ़ाइड IEEE 802.15.4 वायरलेस एमसीयू है.

इस कोडलैब में, LP-EM-CC2745R10-Q1 LaunchPad मूल्यांकन बोर्ड और ot-ti रिपॉज़िटरी का इस्तेमाल करके, OpenThread ऐप्लिकेशन डेवलप करने का तरीका बताया गया है. नीचे दी गई इमेज में, इस कोडलैब में इस्तेमाल किया गया हार्डवेयर सेटअप दिखाया गया है. इसमें एक ओटी बॉर्डर राउटर (ओटीबीआर) और दो थ्रेड फ़ुल थ्रेड डिवाइस (एफ़टीडी) शामिल हैं.

CC2745R10 हार्डवेयर सेटअप

आपको क्या सीखने को मिलेगा

  • Texas Instruments ot-ti के बिल्ड एनवायरमेंट को सेट अप करने का तरीका.
  • LP-EM-CC2745R10-Q1 बोर्ड पर OpenThread CLI बाइनरी बनाने और फ़्लैश करने का तरीका.
  • ot-br-posix का इस्तेमाल करके, Raspberry Pi को OpenThread बॉर्डर राऊटर (ओटीबीआर) के तौर पर सेट अप करने का तरीका.
  • OTBR पर थ्रेड नेटवर्क बनाने का तरीका.
  • डिवाइसों को Thread नेटवर्क पर आउट-ऑफ़-बैंड तरीके से चालू करना.
  • पिंग कमांड का इस्तेमाल करके, नोड के बीच Thread कम्यूनिकेशन की पुष्टि करने का तरीका.

2. ज़रूरी शर्तें

हार्डवेयर

  1. 3 LP-EM-CC2745R10-Q1 LaunchPad बोर्ड: एक को बॉर्डर राऊटर से कनेक्ट किए गए आरसीपी के तौर पर कॉन्फ़िगर किया गया है और दो को फ़ुल थ्रेड डिवाइस (एफ़टीडी) के तौर पर कॉन्फ़िगर किया गया है. LP-EM-CC2745R10-Q1 का ऐंगल से लिया गया व्यूCC2745R10-Q1, ऑटोमोटिव ग्रेड (AEC-Q100 सर्टिफ़ाइड) वाला Thread-सर्टिफ़ाइड IEEE 802.15.4 वायरलेस एमसीयू है. यह टीआई के SimpleLink CC27xx फ़ैमिली में आता है. LP-EM-CC2745R10-Q1, LaunchPad Evaluation Module है. यह RCP, FTD, MTD, और NCP Thread की भूमिकाओं के साथ काम करता है. LP-EM-CC2340R5 LaunchPad के साथ CC2340R5, कम मेमोरी वाला विकल्प है. इसका इस्तेमाल सिर्फ़ आरसीपी के तौर पर किया जा सकता है. यह FTD, MTD या NCP की भूमिकाओं के साथ काम नहीं करता. अगर बोर्ड 1 (आरसीपी) के लिए LP-EM-CC2340R5 का इस्तेमाल किया जाता है, तो दोनों FTD बोर्ड अब भी LP-EM-CC2745R10-Q1 होने चाहिए.
  2. 3 LP-XDS110ET डीबग जांच: हर LaunchPad बोर्ड के लिए एक. इनका इस्तेमाल यूएसबी के ज़रिए प्रोग्रामिंग और डीबग करने के लिए किया जाता है. LP-XDS110ET का ऐंगल वाला व्यूLP-XDS110ET, एक अलग यूएसबी डीबग जांच है. यह LP-EM फ़ॉर्म फ़ैक्टर में LaunchPad के लिए ज़रूरी है. इसमें पावर प्रोफ़ाइलिंग के लिए, EnergyTrace की सुविधा शामिल है. LP-XDS110, कम लागत वाला एक विकल्प है. इसमें प्रोग्रामिंग और डीबग करने की सुविधा मिलती है, लेकिन इसमें EnergyTrace शामिल नहीं है. इसके अलावा, LP-EM बोर्ड और अलग डीबग जांच के बजाय, ऑन-बोर्ड XDS110 डीबग जांच (जैसे कि LAUNCHXL-CC26X2R1) वाले LaunchPad का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, LaunchPad की कनेक्टिविटी डीबग करने से जुड़ी गाइड देखें.
  3. LaunchPad बोर्ड और डीबग जांच को कनेक्ट करने और उन्हें पावर देने के लिए, तीन माइक्रो-यूएसबी केबल.
  4. Raspberry Pi 4B या इससे ज़्यादा, जिसमें Raspberry Pi OS इंस्टॉल हो और जो ईथरनेट के ज़रिए इंटरनेट से कनेक्ट हो. इसे OT बॉर्डर राऊटर होस्ट के तौर पर कॉन्फ़िगर किया जाएगा.Raspberry Pi 4
  5. कम से कम दो यूएसबी पोर्ट और इंटरनेट ऐक्सेस वाला Linux या macOS होस्ट सिस्टम. बिल्ड एनवायरमेंट के लिए, Bash के साथ काम करने वाली शेल की ज़रूरत होती है. Windows का इस्तेमाल करने वाले लोगों को Ubuntu के साथ WSL2 (Windows Subsystem for Linux 2) का इस्तेमाल करना चाहिए.
  6. Raspberry Pi को इंटरनेट से कनेक्ट करने के लिए, कम से कम एक ईथरनेट केबल. इसके अलावा, Raspberry Pi को वाई-फ़ाई से कनेक्ट किया जा सकता है और wlan0 को इंफ़्रास्ट्रक्चर इंटरफ़ेस के तौर पर इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, OTBR सेटअप करने का तरीका देखें.

सॉफ़्टवेयर

  • TI ot-ti रिपॉज़िटरी: https://github.com/TexasInstruments/ot-ti
  • GNU ARM Embedded Toolchain 12.2 (यह बूटस्ट्रैप स्क्रिप्ट के ज़रिए अपने-आप इंस्टॉल हो जाता है)
  • SysConfig 1.27.0 (बूटस्ट्रैप स्क्रिप्ट से अपने-आप इंस्टॉल हो जाता है)
  • TI UniFlash: LaunchPad बोर्ड पर फ़र्मवेयर फ़्लैश करने के लिए

3. हार्डवेयर सेटअप

इस कोडलैब में, LP-EM-CC2745R10-Q1 बोर्ड के तीन वर्शन का इस्तेमाल किया गया है:

  • बोर्ड 1 (आरसीपी): यह ot-rcp फ़र्मवेयर पर काम करता है. यह बॉर्डर राऊटर के लिए रेडियो को-प्रोसेसर के तौर पर, यूएसबी के ज़रिए Raspberry Pi से कनेक्ट होता है.
  • बोर्ड 2 (FTD 1): यह ot-cli-ftd फ़र्मवेयर को फ़ुल थ्रेड डिवाइस के तौर पर चलाता है.
  • बोर्ड 3 (FTD 2): यह ot-cli-ftd फ़र्मवेयर को फ़ुल थ्रेड डिवाइस के तौर पर चलाता है.

LP-EM-CC2745R10-Q1 का टॉप व्यू

हर LaunchPad को माइक्रो-यूएसबी केबल की मदद से, अपने होस्ट कंप्यूटर से कनेक्ट करें. यूएसबी कनेक्शन से, XDS110 डीबग जांच की मदद से पावर और डीबग/प्रोग्रामिंग की सुविधा मिलती है.

यूएसबी से कनेक्ट होने पर, हर LP-EM-CC2745R10-Q1 दो वर्चुअल सीरियल पोर्ट के तौर पर दिखता है: एक XDS110 डीबग इंटरफ़ेस के लिए और दूसरा ऐप्लिकेशन यूएआरटी के लिए. सीरियल कंसोल खोलते समय, ऐप्लिकेशन/उपयोगकर्ता यूएआरटी पोर्ट से कनेक्ट करें, न कि ऑक्सिलरी डेटा पोर्ट से.

हार्डवेयर कनेक्शन का डायग्राम

4. रिपॉज़िटरी सेटअप करना और बिल्ड करना

ot-ti बिल्ड सिस्टम, CMake का इस्तेमाल करता है और इसके लिए Bash शेल की ज़रूरत होती है. इस सेक्शन में मौजूद सभी कमांड, Linux या macOS होस्ट (या Windows पर WSL2) पर चलाई जाती हैं.

1. रिपॉज़िटरी का क्लोन बनाएं

$ git clone https://github.com/TexasInstruments/ot-ti.git
$ cd ot-ti
$ git submodule update --init

2. बूटस्ट्रैप स्क्रिप्ट चलाएं

बूटस्ट्रैप स्क्रिप्ट, ज़रूरी डिपेंडेंसी इंस्टॉल करती है. इनमें GNU ARM टूल चेन और SysConfig शामिल हैं:

$ ./script/bootstrap

बूटस्ट्रैप स्क्रिप्ट के लिए cmake, git, wget, और स्टैंडर्ड बिल्ड टूल की ज़रूरत होती है. Ubuntu/Debian पर, ज़रूरी शर्तें पूरी करने वाले सॉफ़्टवेयर को इंस्टॉल करने के लिए, यह कमांड चलाएं: sudo apt-get install -y cmake git make wget tar ninja-build

3. LP_EM_CC2745R10_Q1 के लिए फ़र्मवेयर बनाएं

LP-EM-CC2745R10-Q1 बोर्ड के लिए सभी फ़र्मवेयर इमेज बनाएं:

$ ./script/build LP_EM_CC2745R10_Q1

LP_EM_CC2745R10_Q1 बिल्ड टारगेट, CC27xx SimpleLink फ़ैमिली (Arm Cortex-M33F कोर) के CC2745R10-Q1 डिवाइस से मेल खाता है. इस्तेमाल किए जा सकने वाले सभी बोर्ड देखने के लिए, ./script/build को बिना किसी तर्क के चलाएं.

बिल्ड पूरा होने के बाद, ईएलएफ़ बाइनरी build/bin/ में होती हैं:

$ ls build/bin/
ot-cli-ftd.out  ot-cli-mtd.out  ot-ncp-ftd.out  ot-rcp.out

इस कोडलैब में इस्तेमाल की गई दो इमेज ये हैं:

  • ot-rcp.out: बॉर्डर राऊटर बोर्ड के लिए रेडियो को-प्रोसेसर फ़र्मवेयर.
  • ot-cli-ftd.out: दोनों FTD बोर्ड के लिए, थ्रेड डिवाइस सीएलआई फ़र्मवेयर.

ज़रूरी नहीं कि Thread डिवाइस में कम से कम ये सुविधाएं हों: अगर आपको फ़ुल Thread डिवाइस के बजाय स्लीपी एंड डिवाइस के बारे में जानना है, तो बोर्ड 2 और 3 पर ot-cli-ftd.out की जगह ot-cli-mtd.out को फ़्लैश किया जा सकता है. एमटीडी, थ्रेड ट्रैफ़िक को रूट नहीं करता है. साथ ही, यह कम पावर वाली स्लीप स्टेट में जा सकता है. इसलिए, यह बैटरी से चलने वाले ऐप्लिकेशन के लिए सबसे सही है. इस कोडलैब में, Thread नेटवर्क बनाने का तरीका दोनों तरह के डिवाइसों के लिए एक जैसा है.

नेटवर्क को-प्रोसेसर (एनसीपी): ot-ncp-ftd.out बाइनरी, एनसीपी आर्किटेक्चर को लागू करती है. इसमें OpenThread स्टैक, डिवाइस पर चलता है और होस्ट प्रोसेसर इसे Spinel प्रोटोकॉल के ज़रिए कंट्रोल करता है. एनसीपी का इस्तेमाल, इस कोडलैब के दायरे से बाहर है. ज़्यादा जानकारी के लिए, एनसीपी README देखें.

5. फ़र्मवेयर फ़्लैश करना

LaunchPad बोर्ड पर ईएलएफ़ इमेज फ़्लैश करने के लिए, TI UniFlash का इस्तेमाल करें.

UniFlash का इस्तेमाल करके फ़्लैश करना

  1. UniFlash खोलें. डिवाइस अपने-आप ढूंढने की सुविधा की वजह से, कनेक्ट किए गए LaunchPad बोर्ड, डिवाइसों का पता चला में दिखते हैं. अगर आपके बोर्ड का पता अपने-आप नहीं चलता है, तो नया कॉन्फ़िगरेशन पर क्लिक करें. इसके बाद, LP-EM-CC2745R10-Q1 टारगेट चुनें और XDS110 USB डीबग जांच चुनें.UniFlash से पहचाने गए डिवाइस
  2. बोर्ड 1 (ot-rcp.out के साथ फ़्लैश किया जाना है) को चुनें और शुरू करें पर क्लिक करें.
  3. ब्राउज़ करें बटन पर क्लिक करें और ot-ti/build/bin/ot-rcp.out पर जाएं.UniFlash फ़्लैश पेज
  4. फ़र्मवेयर फ़्लैश करने के लिए, इमेज लोड करें पर क्लिक करें. लॉग एरिया में, प्रोग्रेस दिखती है और प्रोसेस पूरी होने की पुष्टि की जाती है.
  5. बोर्ड 2 और बोर्ड 3 के लिए, दूसरे से चौथे चरण तक की प्रोसेस दोहराएं. साथ ही, हर बोर्ड के लिए ot-ti/build/bin/ot-cli-ftd.out चुनें.

दूसरा तरीका: Code Composer Studio (CCS) का इस्तेमाल करके फ़्लैश करना

UniFlash के बजाय Code Composer Studio का इस्तेमाल किया जा सकता है. साथ ही, यह पूरा डीबग एनवायरमेंट भी उपलब्ध कराता है:

  1. Code Composer Studio डाउनलोड और इंस्टॉल करें.
  2. XDS110 डीबगर की मदद से, LP-EM-CC2745R10-Q1 के लिए टारगेट कनेक्शन (CCXML) बनाएं. CCS User's Guide: Manual Method देखें.
  3. CCS User's Guide: Manual Launch में बताए गए तरीके से, बिना प्रोजेक्ट वाला डीबग सेशन शुरू करें.
  4. Arm Cortex-M33 कोर से कनेक्ट करें. इसके बाद, ईएलएफ़ इमेज लोड करने के लिए, लोड करें पर क्लिक करें.

डिफ़ॉल्ट CCXML कॉन्फ़िगरेशन, डिफ़ॉल्ट LP-EM-CC2745R10-Q1 जंपर कॉन्फ़िगरेशन से मेल खाने के लिए, 2-वायर cJTAG का इस्तेमाल करता है. JTAG के ज़रिए प्रोग्रामिंग करने के बाद, बोर्ड को पावर-साइकल करें, ताकि बूटिंग में रुकावट डालने वाले फ़्लैग को हटाया जा सके.

6. एचएसएम को प्रोग्राम करना

CC2745R10-Q1 में हार्डवेयर सिक्योरिटी मॉड्यूल (एचएसएम) होता है. थ्रेड या अन्य सुरक्षित ऐप्लिकेशन फ़र्मवेयर चलाने से पहले, इसे चालू करना ज़रूरी है. अगर आपके LP-EM-CC2745R10-Q1 बोर्ड में अब तक HSM प्रोग्राम नहीं किया गया है, तो अभी यह चरण पूरा करें.

UniFlash का इस्तेमाल करके, एचएसएम को प्रोग्राम करने के लिए:

  1. UniFlash खोलें और Detected Devices में जाकर, LP-EM-CC2745R10-Q1 बोर्ड चुनें.
  2. एचएसएम प्रोग्रामिंग पैनल पर जाएं और एचएसएम फ़र्मवेयर इमेज लोड करें. इसके लिए, यहां दिया गया तरीका अपनाएं.

UniFlash HSM प्रोग्रामिंग

  1. एचएसएम प्रोविज़निंग की प्रोसेस पूरी करने के लिए, स्क्रीन पर दिए गए निर्देशों का पालन करें. इस कार्रवाई को UniFlash के आउटपुट कंसोल में लॉग किया जाता है.

एचएसएम प्रोग्रामिंग की पूरी प्रोसेस के लिए, TI Resource Explorer में CC2745R10-Q1 Quick Start Guide देखें. इसमें SimpleLink Low Power F3 SDK में ज़रूरी फ़र्मवेयर इमेज पाथ भी शामिल है.

7. फ़र्मवेयर की खास जानकारी

इस समय, तीनों बोर्ड दिखने चाहिए:

  • बोर्ड 1: ot-rcp.out: होस्ट कंप्यूटर से डिस्कनेक्ट करें और यूएसबी के ज़रिए Raspberry Pi से कनेक्ट करें.
  • बोर्ड 2: ot-cli-ftd.out: होस्ट कंप्यूटर से कनेक्ट रहें.
  • बोर्ड 3: ot-cli-ftd.out: होस्ट कंप्यूटर से कनेक्ट रहें.

आपका हार्डवेयर सेटअप, नीचे दिए गए डायग्राम की तरह दिखेगा. बोर्ड 1, Raspberry Pi से OTBR के रेडियो को-प्रोसेसर के तौर पर कनेक्ट होता है. वहीं, बोर्ड 2 और 3, सीरियल कंसोल ऐक्सेस के लिए होस्ट कंप्यूटर से कनेक्ट रहते हैं.

FTD के साथ CC2745R10 हार्डवेयर सेटअप करना

8. ot-cli-ftd डिवाइसों के लिए सीरियल कंसोल सेट अप करना

LP-EM-CC2745R10-Q1, यूएसबी के ज़रिए ऐप्लिकेशन यूएआरटी को 921600 बॉड पर दिखाता है.

इन सेटिंग का इस्तेमाल करके, हर FTD बोर्ड के लिए ऐप्लिकेशन UART COM पोर्ट (Windows) या /dev/ttyACM* डिवाइस (Linux/macOS) पर एक सीरियल टर्मिनल खोलें:

पैरामीटर

वैल्यू

स्पीड (बॉड)

921600

डेटा बिट

8

स्टॉप बिट

1

Parity

None

फ़्लो कंट्रोल

None

अहम जानकारी (Linux/macOS): बोर्ड को प्लग इन करने से पहले और बाद में ls /dev/ttyACM* चलाकर, सही डिवाइस नोड की पहचान करें. साथ ही, यह नोट करें कि कौनसी एंट्री दिखती है. हर LP-EM-CC2745R10-Q1 दो एंट्री बनाता है: कम नंबर वाला पोर्ट, XDS110 डीबग UART होता है और ज़्यादा नंबर वाला पोर्ट, ऐप्लिकेशन UART होता है. उदाहरण के लिए, अगर बोर्ड /dev/ttyACM0 और /dev/ttyACM1 बनाता है, तो /dev/ttyACM1 का इस्तेमाल करें.

अहम जानकारी (Windows): डिवाइस मैनेजर खोलें. इसके बाद, बोर्ड के प्लग इन होने पर, पोर्ट (COM और LPT) में जाकर दो नए COM पोर्ट देखें. XDS110 डीबग डेटा पोर्ट आम तौर पर पहले दिखता है. ऐप्लिकेशन कंसोल के लिए, दूसरे (ज़्यादा नंबर वाले) COM पोर्ट का इस्तेमाल करें.

OpenThread CLI प्रॉम्प्ट (>) पाने के लिए, टर्मिनल में Enter दबाएं. उपलब्ध सभी निर्देशों की पूरी सूची के लिए, OpenThread CLI के बारे में जानकारी देखें. पुष्टि करें कि FTD काम कर रहा है:

> state
disabled
Done

सीरियल टर्मिनल एफ़टीडी

आपको आरसीपी बोर्ड के लिए, सीरियल कंसोल अभी सेट अप नहीं करना है. Raspberry Pi पर मौजूद OTBR, सीधे तौर पर आरसीपी से कम्यूनिकेट करता है. अगले चरण में, Raspberry Pi को OpenThread बॉर्डर राऊटर के तौर पर कॉन्फ़िगर किया जाएगा.

9. Raspberry Pi को बॉर्डर राउटर के तौर पर सेट अप करना

OTBR को ot-br-posix से बनाया गया है. यह OpenThread बॉर्डर राउटर का ओपन-सोर्स प्रोजेक्ट है. बॉर्डर राऊटर, Raspberry Pi पर चलता है. यह यूएसबी के ज़रिए, बोर्ड 1 (आरसीपी) को 802.15.4 रेडियो के तौर पर इस्तेमाल करता है.

Raspberry Pi सेटअप करना

  1. Raspberry Pi Imager का इस्तेमाल करके, अपने एसडी कार्ड में Raspberry Pi OS (64-बिट लाइट या डेस्कटॉप) फ़्लैश करें.
  2. Raspberry Pi को बूट करें और कोई टर्मिनल खोलें. इसके लिए, एसएसएच का इस्तेमाल करें या सीधे तौर पर टर्मिनल खोलें.
  3. पैकेज मैनेजर को अपडेट करें और इंस्टॉल किए गए पैकेज अपग्रेड करें:
    $ sudo apt-get update
    $ sudo apt-get upgrade -y
    

अपडेट के बाद, Raspberry Pi को रीबूट करें. इसके बाद, आगे की प्रोसेस करें: sudo reboot

पहले बोर्ड (आरसीपी) को Raspberry Pi से कनेक्ट करें

माइक्रो-यूएसबी के ज़रिए, Board 1 (जिसमें ot-rcp फ़्लैश किया गया है) को Raspberry Pi से कनेक्ट करें. कनेक्ट करने के बाद, पुष्टि करें कि डिवाइस नोड दिख रहा है:

$ ls /dev/ttyACM*
/dev/ttyACM0
/dev/ttyACM1

RCP बोर्ड का ऐप्लिकेशन UART आम तौर पर /dev/ttyACM1 होता है (XDS110 डीबग UART /dev/ttyACM0 होता है). यह पुष्टि करें कि ऐप्लिकेशन UART कौन-सा पोर्ट है. इसके लिए, यह देखें कि बाद के चरण में OTBR एजेंट शुरू होने पर, वह जवाब देता है या नहीं. अगर अन्य यूएसबी सीरियल डिवाइस कनेक्ट हैं, तो डिवाइस नोड नंबर अलग हो सकता है. इसके मुताबिक, OTBR कॉन्फ़िगरेशन में पाथ में बदलाव करें.

ot-br-posix को बिल्ड और इंस्टॉल करना

Raspberry Pi पर, ot-br-posix को क्लोन करें और बनाएं:

$ git clone https://github.com/openthread/ot-br-posix.git
$ cd ot-br-posix
$ ./script/bootstrap

सेटअप स्क्रिप्ट चलाएं. इसमें अपने ईथरनेट इंटरफ़ेस को बैकबोन (इन्फ़्रास्ट्रक्चर) इंटरफ़ेस के तौर पर तय करें:

$ INFRA_IF_NAME=eth0 ./script/setup

eth0, वायर्ड ईथरनेट इंटरफ़ेस का सामान्य नाम है. अगर आपको Raspberry Pi को ईथरनेट के बजाय वाई-फ़ाई से कनेक्ट करना है, तो eth0 को wlan0 से बदलें. साथ ही, पक्का करें कि Pi पहले से ही आपके वाई-फ़ाई नेटवर्क से कनेक्ट हो. ip link show की मदद से, चालू इंटरफ़ेस के नाम की पुष्टि करें.

सेटअप स्क्रिप्ट, ot-br-posix को सोर्स से बनाती है. साथ ही, otbr-agent और otbr-web सिस्टम सेवाओं को इंस्टॉल करती है और नेटवर्किंग स्टैक को कॉन्फ़िगर करती है. आम तौर पर, Raspberry Pi 4B पर इस प्रोसेस में 10 से 20 मिनट लगते हैं.

OTBR एजेंट को कॉन्फ़िगर करना

आरसीपी डिवाइस का पाथ और बॉड रेट तय करने के लिए, OTBR एजेंट की कॉन्फ़िगरेशन फ़ाइल में बदलाव करें:

$ sudo nano /etc/default/otbr-agent

OTBR_AGENT_OPTS लाइन ढूंढें और इसे RCP Application UART को रेफ़र करने के लिए अपडेट करें:

OTBR_AGENT_OPTS="-I wpan0 -B eth0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"

अगर आपका Raspberry Pi वाई-फ़ाई से कनेक्ट है, तो eth0 को wlan0 से बदलें.

OTBR_AGENT_OPTS="-I wpan0 -B wlan0 spinel+hdlc+uart:///dev/ttyACM1?uart-baudrate=921600"

LP-EM-CC2745R10-Q1 RCP ऐप्लिकेशन UART, 921600 बॉड पर काम करता है. पुष्टि करें कि डिवाइस का पाथ (इस उदाहरण में /dev/ttyACM1) आपके आरसीपी बोर्ड के ऐप्लिकेशन यूएआरटी से मेल खाता हो.

कॉन्फ़िगरेशन लागू करने के लिए, OTBR एजेंट को रीस्टार्ट करें:

$ sudo systemctl restart otbr-agent
$ sudo systemctl enable otbr-agent

पुष्टि करें कि एजेंट काम कर रहा है:

$ sudo systemctl status otbr-agent

आरसीपी नोड के साथ इंटरैक्ट करना

ot-ctl टूल का इस्तेमाल करके, आरसीपी नोड से कम्यूनिकेट करें:

$ sudo ot-ctl state
disabled
Done

कनेक्शन और स्टेटस मैसेज के लिए, OTBR एजेंट के लॉग को मॉनिटर किया जा सकता है:

$ sudo journalctl -u otbr-agent -f

इसके अलावा, OTBR का वेब इंटरफ़ेस http://:80 पर उपलब्ध है. इससे Thread नेटवर्क का ग्राफ़िकल व्यू मिलता है.

OTBR एजेंट को रोकने या फिर से शुरू करने के लिए:

$ sudo systemctl stop otbr-agent
$ sudo systemctl start otbr-agent

इस समय, आपके पास तीन चालू कंसोल होने चाहिए:

  1. होस्ट कंप्यूटर पर Board 2 (ot-cli-ftd 1) के लिए सीरियल टर्मिनल.
  2. होस्ट कंप्यूटर पर, तीसरे बोर्ड (ot-cli-ftd 2) के लिए सीरियल टर्मिनल.
  3. ot-ctl (OTBR/RCP) के लिए, Raspberry Pi पर एसएसएच या टर्मिनल सेशन.

अब थ्रेड नेटवर्क बनाया जा सकता है.

10. थ्रेड नेटवर्क बनाना

RCP (OTBR) सेट अप करना

Raspberry Pi पर मौजूद ot-ctl शेल से नया Thread नेटवर्क बनाएं. नीचे दी गई कमांड को क्रम से डालें:

इंडेक्स

निर्देश

जानकारी

उम्मीद के मुताबिक जवाब

1

dataset init new

नया नेटवर्क कॉन्फ़िगरेशन बनाएं.

हो गया

2

dataset commit active

नए डेटासेट को चालू ऑपरेशनल डेटासेट में कमिट करें.

हो गया

3

ifconfig up

Thread इंटरफ़ेस चालू करें.

हो गया

4

thread start

Thread प्रोटोकॉल ऑपरेशन चालू करें और उसे अटैच करें.

हो गया

थ्रेड इंटरफ़ेस के दिखने के लिए, 10 सेकंड तक इंतज़ार करें.

5

state

डिवाइस की स्थिति देखें. इसकी वैल्यू leader होनी चाहिए. अन्य संभावित स्थितियां: ऑफ़लाइन, बंद, अलग किया गया, चाइल्ड, राऊटर या लीडर.

लीडर
हो गया

6

dataset

नेटवर्क कॉन्फ़िगरेशन देखें. आपकी वैल्यू अलग-अलग होंगी. चैनल, नेटवर्क की, नेटवर्क का नाम, और पैन आईडी नोट करें. नेटवर्क से FTD को जोड़ने के लिए इनकी ज़रूरत होती है.

चालू टाइमस्टैंप: 1
चैनल: 20
चैनल मास्क: 0x07fff800
एक्सटेंडेड पैन आईडी: 39ba71f7fc367160
मेश लोकल प्रीफ़िक्स: fd5c:c6b:3a17:40b9::/64
नेटवर्क कुंजी: 81ae2c2c17368d585dee71eaa8cf1e90
नेटवर्क का नाम: OpenThread-008c
पैन आईडी: 0x008c
PSKc: c98f0193d4236025d22dd0ee614e641f
सुरक्षा नीति: 0, onrcb
हो गया

थ्रेड नेटवर्क में FTD जोड़ना (आउट-ऑफ़-बैंड तरीका)

आउट-ऑफ़-बैंड कमीशनिंग के तरीके का इस्तेमाल करके, नेटवर्क के क्रेडेंशियल सीधे तौर पर दिए जाते हैं. हर एफ़टीडी बोर्ड के सीरियल टर्मिनल में, ऊपर दिए गए OTBR डेटासेट के आउटपुट से चैनल और नेटवर्क की का इस्तेमाल करके, ये कमांड डालें:

इंडेक्स

निर्देश

जानकारी

उम्मीद के मुताबिक जवाब

1

dataset channel 20

चैनल को ओटीबीआर से मैच करने के लिए सेट करें. 20 को अपने ओटीबीआर की चैनल वैल्यू से बदलें.

हो गया

2

dataset networkkey 81ae2c2c17368d585dee71eaa8cf1e90

नेटवर्क की सेट करें. इसकी जगह अपने OTBR की नेटवर्क कुंजी डालें. अटैच करने के लिए, सिर्फ़ इस बटन की ज़रूरत होती है.

हो गया

3

dataset commit active

नए डेटासेट को चालू ऑपरेशनल डेटासेट में कमिट करें.

हो गया

4

ifconfig up

Thread इंटरफ़ेस चालू करें.

हो गया

5

thread start

Thread प्रोटोकॉल ऑपरेशन चालू करें और उसे अटैच करें.

हो गया

डिवाइस के कनेक्ट होने और कॉन्फ़िगर होने के दौरान, 20 सेकंड तक इंतज़ार करें.

6

state

डिवाइस की स्थिति देखें.

बच्चा
हो गया

थ्रेड नेटवर्क अपने-आप कॉन्फ़िगर हो जाते हैं. साथ ही, ये फ़ुल थ्रेड डिवाइस होते हैं. इसलिए, दोनों में से कोई एक या दोनों FTD, राउटर बन सकते हैं. state कमांड का इस्तेमाल करके, किसी भी समय मौजूदा भूमिका की पुष्टि की जा सकती है.

Thread डिवाइसों के बीच कम्यूनिकेशन

डिवाइसों के बीच कम्यूनिकेशन हो रहा है या नहीं, इसकी पुष्टि करने के लिए ping कमांड का इस्तेमाल करें. ipaddr की मदद से, हर डिवाइस के IPv6 पते पाएं:

> 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)
Done

दोनों FTD से, OTBR को उसके RLOC पते का इस्तेमाल करके पिंग करें:

> 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

सही रिस्पॉन्स से पता चलता है कि Thread नेटवर्क काम कर रहा है और डिवाइस एक-दूसरे से कम्यूनिकेट कर सकते हैं. OTBR (sudo ot-ctl ping ) से हर FTD को पिंग करने के लिए, इस प्रोसेस को दोहराएं.

11. बधाई हो

आपने TI CC2745R10-Q1 बोर्ड की मदद से थ्रेड नेटवर्क बनाया है!

अब आपको यह जानकारी मिल गई है:

  • Texas Instruments ot-ti के बिल्ड एनवायरमेंट को सेट अप करने का तरीका.
  • LP-EM-CC2745R10-Q1 LaunchPad पर OpenThread CLI बाइनरी को बनाने और फ़्लैश करने का तरीका.
  • ot-br-posix का इस्तेमाल करके, Raspberry Pi को OpenThread बॉर्डर राऊटर (ओटीबीआर) के तौर पर सेट अप करने का तरीका.
  • OTBR पर थ्रेड नेटवर्क बनाने का तरीका.
  • डिवाइसों को Thread नेटवर्क पर आउट-ऑफ़-बैंड तरीके से चालू करना.
  • पिंग कमांड का इस्तेमाल करके, नोड के बीच Thread कम्यूनिकेशन की पुष्टि करने का तरीका.

इस बारे में और पढ़ें

OpenThread के अलग-अलग संसाधनों के लिए, openthread.io और GitHub देखें. इनमें ये संसाधन शामिल हैं: