কম্পিউটার

কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

এই পোস্টটি মূলত www.jaredwolff.com থেকে

আমি পরাজিত হয়েছিলাম।

আমি একটি ব্লুটুথ লো এনার্জি প্রকল্পে কাজ করার চেষ্টা করে সারা রাত কাটিয়েছি। এটা খুবই কষ্টকর ছিল. এটা হতাশাজনক ছিল. আমি হাল ছেড়ে দিতে প্রস্তুত ছিলাম।

এটি ব্লুটুথ লো এনার্জির প্রথম দিনগুলিতে ছিল। তারপর থেকে এটি বিকাশ করা সহজ এবং সহজ হয়ে গেছে। পার্টিকেল মেশ ব্লুটুথ লাইব্রেরিও এর ব্যতিক্রম নয়৷

এই ওয়াকথ্রুতে, আমি আপনাকে দেখাব কিভাবে পার্টিকেলের ব্লুটুথ API ব্যবহার করতে হয়। আমরা কিছু এলইডি কনফিগার করব এবং মেশ নেটওয়ার্কের সমস্ত ডিভাইসে তাদের পরিবর্তন দেখব। আমরা একটি আর্গন এবং জেনন বোর্ড ব্যবহার করব।

প্রস্তুত? চলুন শুরু করা যাক!

পুনশ্চ. এই পোস্ট দীর্ঘ. আপনি যদি কিছু ডাউনলোড করতে চান তবে একটি সুন্দর ফরম্যাট করা PDF এর জন্য এখানে ক্লিক করুন।

পর্যায় 1:ব্লুটুথ সেট আপ করা হচ্ছে

  1. কণা ওয়ার্কবেঞ্চ ডাউনলোড/ইনস্টল করুন

  2. একটি নতুন প্রকল্প তৈরি করুন। আমি একটি উপযুক্ত অবস্থান বেছে নিয়েছি এবং তারপর এটির নাম ble_mesh করেছি

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

  3. আপনার /src/ এ যান direcory এবং আপনার <your project name>.ino খুলুন ফাইল

  4. তারপর নিশ্চিত করুন যে আপনি আপনার deviceOS-এর সংস্করণ 1.3.0-এ পরিবর্তন করেছেন৷

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

কোডটি লিখুন

আমরা 3টি বৈশিষ্ট্য সহ একটি পরিষেবা সেট আপ করতে চাই৷ বৈশিষ্ট্যগুলি যথাক্রমে আরজিবি এলইডিগুলির তীব্রতার সাথে সম্পর্কিত। কিভাবে আপনার ব্লুটুথ সেট আপ করবেন তা এখানে:

  1. আপনার Setup()-এ ফাংশন আপনার LED

    অ্যাপ নিয়ন্ত্রণ সক্ষম করে
    RGB.control(true);
    
  2. আপনার .ino এর উপরে আপনার UUID সেট আপ করুন ফাইল

     const char* serviceUuid = "6E400001-B5A3-F393-E0A9-E50E24DCCA9E";
     const char* red         = "6E400002-B5A3-F393-E0A9-E50E24DCCA9E";
     const char* green       = "6E400003-B5A3-F393-E0A9-E50E24DCCA9E";
     const char* blue        = "6E400004-B5A3-F393-E0A9-E50E24DCCA9E";
    

    UUID হল অনন্য শনাক্তকারী বা ঠিকানা। এগুলি একটি ডিভাইসে বিভিন্ন পরিষেবা এবং বৈশিষ্ট্যগুলিকে আলাদা করতে ব্যবহৃত হয়৷

    উপরের UUIDগুলি পূর্ববর্তী কণা উদাহরণগুলিতে ব্যবহৃত হয়। আপনি যদি নিজের তৈরি করতে চান তাহলে আপনি uuidgen ব্যবহার করতে পারেন OSX কমান্ড লাইনে। আপনি অনলাইন GUID জেনারেটর-এর মতো একটি ওয়েবসাইটেও যেতে পারেন

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

    আপনার নিজস্ব UUID পেতে উপরের সেটিংস ব্যবহার করুন। তারপর আপনি এই তৈরি করা থেকে আপনার পরিষেবা এবং বৈশিষ্ট্যযুক্ত UUIDS তৈরি করতে পারেন:

     const char* serviceUuid = "b425040**0**-fb4b-4746-b2b0-93f0e61122c6"; //service
     const char* red         = "b4250401-fb4b-4746-b2b0-93f0e61122c6"; //red char
     const char* green       = "b4250402-fb4b-4746-b2b0-93f0e61122c6"; //green char
     const char* blue        = "b4250403-fb4b-4746-b2b0-93f0e61122c6"; //blue char
    

    এটি করার কোন সঠিক বা ভুল উপায় নেই। কিন্তু আপনাকে সতর্ক থাকতে হবে আপনি ব্লুটুথ SIG দ্বারা সংরক্ষিত UUID ব্যবহার করছেন না। এটি অত্যন্ত অসম্ভাব্য। আপনি যদি দুবার চেক করতে চান তবে আপনি এখানে এবং এখানে যেতে পারেন।

    আপাতত, আমরা UUID-এর প্রথম সেটের সাথে লেগে থাকব।

  3. Setup()-এ , আপনার পরিষেবা শুরু করুন৷

     // Set the RGB BLE service
     BleUuid rgbService(serviceUuid);
    

    এটি আপনার পরিষেবা "নিবন্ধন" করার প্রথম ধাপ৷ নীচে এই সম্পর্কে আরও৷

  4. Setup()-এ প্রতিটি বৈশিষ্ট্য শুরু করুন

     BleCharacteristic redCharacteristic("red", BleCharacteristicProperty::WRITE_WO_RSP, red, serviceUuid, onDataReceived, (void*)red);
     BleCharacteristic greenCharacteristic("green", BleCharacteristicProperty::WRITE_WO_RSP, green, serviceUuid, onDataReceived, (void*)green);
     BleCharacteristic blueCharacteristic("blue", BleCharacteristicProperty::WRITE_WO_RSP, blue, serviceUuid, onDataReceived, (void*)blue);
    

    এই সেটআপের জন্য, আমরা WRITE_WO_RSP ব্যবহার করতে যাচ্ছি সম্পত্তি এটি আমাদের ডেটা লিখতে এবং কোন প্রতিক্রিয়া আশা করতে দেয়।
    আমি পরবর্তী দুটি পরামিতি হিসাবে UUIDs উল্লেখ করেছি। প্রথমটি বৈশিষ্ট্যযুক্ত UUID। দ্বিতীয়টি হল পরিষেবা UUID।

    পরবর্তী প্যারামিটার হল কলব্যাক ফাংশন। যখন এই কলব্যাকে ডেটা লেখা হয়, তখন এই ফাংশনটি ফায়ার হবে৷

    অবশেষে শেষ পরামিতি হল প্রসঙ্গ। তুমি আসলে কি বোজাতে ছাচ্ছ? আমরা তিনটি বৈশিষ্ট্যের জন্য একই কলব্যাক ব্যবহার করছি। কোন বৈশিষ্ট্যটি (অন্তত deviceOS এ) লেখা হয়েছে তা আমরা জানতে পারি একমাত্র উপায় হল একটি প্রসঙ্গ সেট করে। এই ক্ষেত্রে আমরা ইতিমধ্যে উপলব্ধ UUID ব্যবহার করতে যাচ্ছি।

  5. বৈশিষ্ট্যগুলি সংজ্ঞায়িত করার ঠিক পরে, আসুন সেগুলিকে যুক্ত করি যাতে তারা দেখায়:

     // Add the characteristics
     BLE.addCharacteristic(redCharacteristic);
     BLE.addCharacteristic(greenCharacteristic);
     BLE.addCharacteristic(blueCharacteristic);
    
  6. কলব্যাক ফাংশন সেট আপ করুন৷

     // Static function for handling Bluetooth Low Energy callbacks
     static void onDataReceived(const uint8_t* data, size_t len, const BlePeerDevice& peer, void* context) {
    
     }
    

    আপনি ফাইলের শীর্ষে এটি করতে পারেন (উপরে Setup() ) আমরা এটিকে আরও পরে সংজ্ঞায়িত করব।

  7. অবশেষে, আপনার ডিভাইসটি সংযোগযোগ্য হওয়ার জন্য, আমাদের বিজ্ঞাপন সেট আপ করতে হবে। এই কোডটি আপনার Setup() এর শেষে রাখুন ফাংশন

     // Advertising data
     BleAdvertisingData advData;
    
     // Add the RGB LED service
     advData.appendServiceUUID(rgbService);
    
     // Start advertising!
     BLE.advertise(&advData);
    

    প্রথমে আমরা একটি BleAdvertisingData তৈরি করি বস্তু আমরা rgbService যোগ করি ধাপ 3 থেকে। অবশেষে, আমরা বিজ্ঞাপন শুরু করতে পারি যাতে আমাদের পরিষেবা এবং বৈশিষ্ট্যগুলি আবিষ্কার করা যায়!

পরীক্ষা করার সময়

এই মুহুর্তে আমরা একটি ন্যূনতম কার্যকর প্রোগ্রাম আছে. আসুন এটিকে কম্পাইল করে আমাদের পার্টিকেল হার্ডওয়্যারে প্রোগ্রাম করি। এটি যেকোন মেশ সক্ষম ডিভাইসের সাথে কাজ করা উচিত। (জেনন, আর্গন, বোরন)

  1. আমরা পরীক্ষা শুরু করার আগে, সাময়িকভাবে SYSTEM_MODE(MANUAL); যোগ করুন আপনার ফাইলের শীর্ষে। এটি ডিভাইসটিকে জাল নেটওয়ার্কের সাথে সংযুক্ত হতে বাধা দেবে। যদি স্টার্টআপে ডিভাইসটি নীল হয়ে যায়, তাহলে চালিয়ে যাওয়ার আগে আপনাকে পার্টিকেল অ্যাপের সাথে এটি সেট আপ করতে হবে।

  2. 1.3.0-rc.1 ছবিটি এখানে ডাউনলোড করুন। জেননের জন্য, আপনার প্রয়োজন হবে [email protected] অন্যদের জন্য দেখুন [email protected] এবং [email protected] ফাইলগুলি সম্পদ-এর অধীনে পৃষ্ঠার নীচে রয়েছে৷

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

  3. আপনার ডিভাইসটি DFU মোডে রাখুন। মোড বোতাম ধরে রাখুন এবং মুহূর্তের জন্য রিসেট ক্লিক করুন বোতাম। মোড বোতাম ধরে রাখা চালিয়ে যান যতক্ষণ না এলইডি হলুদ হয়ে যায়।

  4. একটি কমান্ড লাইন উইন্ডোতে, আপনি ডাউনলোড করা ফাইলটি যেখানে সংরক্ষণ করেছেন সেখানে ডিরেক্টরি পরিবর্তন করুন। আমার ক্ষেত্রে কমান্ড হল cd ~/Downloads/

  5. তারপর চালান:

     particle flash --usb [email protected]
    

    এটি আপনার জেননে সর্বশেষ OS ইনস্টল করবে। একবার এটি সম্পন্ন হলে এটি দ্রুত হলুদ মিটমিট করতে থাকবে। আবার যদি আপনার কাছে আলাদা পার্টিকেল মেশ ডিভাইস থাকে, তাহলে ফাইলের নাম পরিবর্তন করুন।

  6. ভিজ্যুয়াল কোডে, Command + Shift + P ব্যবহার করুন কমান্ড মেনু পপ আপ করার জন্য কী সমন্বয়। কণা:কম্পাইল অ্যাপ্লিকেশন (স্থানীয়) নির্বাচন করুন

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

  7. পপ আপ হতে পারে যে কোনো ত্রুটি সংশোধন করুন.

  8. তারপর, একই মেনু খুলুন এবং ফ্ল্যাশ অ্যাপ্লিকেশন (স্থানীয়) নির্বাচন করুন৷

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

  9. প্রোগ্রামিং সম্পূর্ণ হলে, আপনার ফোন টানুন. তারপর, আপনার প্রিয় ব্লুটুথ লো এনার্জি অ্যাপ খুলুন। সেরাগুলো হল NRF কানেক্ট এবং হালকা নীল এক্সপ্লোরার। আমি এই উদাহরণের জন্য হালকা নীল এক্সপ্লোরার ব্যবহার করতে যাচ্ছি।

  10. "Xenon-" নামের একটি ডিভাইস আছে কিনা তা পরীক্ষা করুন বিজ্ঞাপন হয়। ঢোকান আপনার ডিভাইসের জন্য অনন্য আইডি সহ।

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

  11. আপনার ডিভাইস খুঁজুন এবং নাম ক্লিক করুন.

  12. পরিষেবা এবং বৈশিষ্ট্যের তালিকা দেখুন। এটি কি পরিষেবা এবং বৈশিষ্ট্যযুক্ত UUID এর অন্তর্ভুক্ত যা আমরা এখন পর্যন্ত সেট করেছি? উদাহরণস্বরূপ, পরিষেবা UUID কি 6E400001-B5A3-F393-E0A9-E50E24DCCA9E হিসাবে দেখায় ?

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

    যদি সবকিছু আপনার প্রত্যাশা অনুযায়ী দেখা যায়, আপনি একটি ভাল জায়গায় আছেন। যদি না হয় তবে সবকিছু মিলে যায় তা নিশ্চিত করতে আগের নির্দেশাবলীর মাধ্যমে যান৷

পর্যায় 2:ডেটা হ্যান্ডলিং

আমাদের প্রকল্পের পরবর্তী পর্যায় হল লেখার ইভেন্টগুলি প্রক্রিয়া করা। আমরা আমাদের onDataReceived আপডেট করব ফাংশন।

কোডটি লিখুন

  1. প্রথমে, আসুন একটি স্ট্রাকট তৈরি করি যা এলইডিগুলির অবস্থা বজায় রাখবে। এটি ফাইলের শীর্ষে করা যেতে পারে৷

     // Variables for keeping state
     typedef struct {
       uint8_t red;
       uint8_t green;
       uint8_t blue;
     } led_level_t;
    
  2. এর দ্বিতীয়ার্ধটি হল এই ডেটা টাইপ

    ব্যবহার করে একটি স্ট্যাটিক ভেরিয়েবল তৈরি করা
     // Static level tracking
     static led_level_t m_led_level;
    

    প্রথম দুটি ধাপে RGB LED-এর তিনটি মান উপস্থাপন করার জন্য আমাদের একটি একক ভেরিয়েবল ব্যবহার করার অনুমতি দেয়।

  3. এর পরে, আসুন onDataReceive-এর ভিতরে মৌলিক ত্রুটিগুলি পরীক্ষা করি৷ ফাংশন উদাহরণস্বরূপ আমরা নিশ্চিত করতে চাই যে আমরা শুধুমাত্র একটি বাইট পাচ্ছি।

     // We're only looking for one byte
       if( len != 1 ) {
         return;
     	}
    
  4. পরবর্তী, আমরা দেখতে চাই এই ঘটনাটি কোন বৈশিষ্ট্য থেকে এসেছে। আমরা context ব্যবহার করতে পারি এটি নির্ধারণ করতে পরিবর্তনশীল।

     // Sets the global level
       if( context == red ) {
         m_led_level.red = data[0];
       } else if ( context == green ) {
         m_led_level.green = data[0];
       } else if ( context == blue ) {
         m_led_level.blue = data[0];
       }
    

    মনে রাখবেন, এই ক্ষেত্রে প্রসঙ্গ লাল, সবুজ বা নীল UUID স্ট্রিং-এর পয়েন্টারের সমান হবে। এছাড়াও আপনি লক্ষ্য করতে পারেন যে আমরা m_led_level সেট করছি . এইভাবে আমরা আরজিবি লেড আপডেট করতে পারি এমনকি যদি শুধুমাত্র একটি মান পরিবর্তিত হয়।

  5. অবশেষে, একবার সেট হয়ে গেলে, আপনি RGB এ লিখতে পারেন বস্তু

     // Set RGB color
     	RGB.color(m_led_level.red, m_led_level.green, m_led_level.blue);
    

কোডটি পরীক্ষা করুন

ডিভাইসটি ফ্ল্যাশ করার জন্য আগের মতো একই পদ্ধতির মধ্য দিয়ে যাওয়া যাক।

  1. আপনার ডিভাইসটি DFU মোডে রাখুন। মোড বোতাম ধরে রাখুন এবং রিসেট ক্লিক করুন বোতাম। মোড বোতাম ধরে রাখা চালিয়ে যান যতক্ষণ না এলইডি হলুদ হয়ে যায়।

  2. তারপর, একই মেনু খুলুন এবং ফ্ল্যাশ অ্যাপ্লিকেশন (স্থানীয়) নির্বাচন করুন৷

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

  3. এটি প্রোগ্রামিং হয়ে গেলে, হালকা নীল এক্সপ্লোরার ব্যবহার করে ডিভাইসের সাথে সংযোগ করুন৷ .

  4. লাল LED-তে প্রযোজ্য বৈশিষ্ট্যটিতে আলতো চাপুন।

  5. FF লিখুন . লাল LED চালু করা উচিত।

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

  6. 00 লিখুন . লাল LED বন্ধ করা উচিত।

  7. অন্য দুটি বৈশিষ্ট্যের জন্য একই কাজ করুন। আমাদের এখন ব্লুটুথ লো এনার্জির উপর RGB LED এর সম্পূর্ণ নিয়ন্ত্রণ আছে!

পর্যায় 3:মেশের মাধ্যমে ভাগ করা

অবশেষে, এখন যেহেতু আমরা সফলভাবে BLE বার্তা পাচ্ছি, এখন সময় এসেছে সেগুলিকে আমাদের মেশ নেটওয়ার্কে ফরওয়ার্ড করার।

কোডটি লিখুন

  1. প্রথমে ম্যানুয়াল মোড সরিয়ে দেওয়া যাক। SYSTEM_MODE(MANUAL); মন্তব্য করুন

  2. ফাইলের শীর্ষে চলুন একটি ভেরিয়েবল যোগ করি যা আমরা প্রকাশ করার প্রয়োজন হলে ট্র্যাক করতে ব্যবহার করব

     // Tracks when to publish to Mesh
     static bool m_publish;
    
  3. তারপর এটিকে Setup() এ আরম্ভ করুন

     // Set to false at first
     m_publish = false;
    
  4. তারপর, RGB সেট করার পরে onDataReceived এ নেতৃত্ব দেয় কলব্যাক, আসুন এটি সত্য সেট করি:

     // Set RGB color
     RGB.color(m_led_level.red, m_led_level.green, m_led_level.blue);
    
     // Set to publish
     m_publish = true;
    
  5. চলুন loop() এ একটি শর্তসাপেক্ষ যোগ করি ফাংশন এর ফলে আমরা মেশ নেটওয়ার্কে LED স্ট্যাটাস প্রকাশ করব:

     if( m_publish ) {
     	// Reset flag
     	m_publish = false;
    
     	// Publish to Mesh
       Mesh.publish("red", String::format("%d", m_led_level.red));
       Mesh.publish("green", String::format("%d", m_led_level.green));
       Mesh.publish("blue", String::format("%d", m_led_level.blue));
     }
    

    Mesh.publish উভয় ইনপুটের জন্য একটি স্ট্রিং প্রয়োজন। সুতরাং, আমরা String::format ব্যবহার করছি আমাদের লাল, সবুজ এবং নীল মান দিয়ে একটি স্ট্রিং তৈরি করতে।

  6. তাহলে চলুন Setup()-এ একই ভেরিয়েবলের সদস্যতা নেওয়া যাক . এইভাবে অন্য ডিভাইস এই ডিভাইসে LED আপডেট করতে পারে।

     Mesh.subscribe("red", meshHandler);
     Mesh.subscribe("green", meshHandler);
     Mesh.subscribe("blue", meshHandler);
    
  7. ফাইলের উপরের দিকে আমরা meshHandler তৈরি করতে চাই

     // Mesh event handler
     static void meshHandler(const char *event, const char *data)
     {
     }
    
  8. এই অ্যাপ্লিকেশনে, আমাদের event প্রয়োজন প্যারামিটার এবং data প্যারামিটার এগুলি ব্যবহার করার জন্য, আমাদের সেগুলিকে একটি String এ পরিবর্তন করতে হবে প্রকার এইভাবে আমরা বিল্ট ইন কনভার্সন এবং তুলনা ফাংশন ব্যবহার করতে পারি। সুতরাং, meshHandler এর ভিতরে ফাংশন যোগ করুন:

       // Convert to String for useful conversion and comparison functions
       String eventString = String(event);
       String dataString = String(data);
    
  9. অবশেষে আমরা কিছু তুলনা করি। আমরা প্রথমে ইভেন্টের নাম মেলে কিনা তা পরীক্ষা করি। তারপর আমরা dataString এর মান সেট করি সংশ্লিষ্ট নেতৃত্বাধীন স্তরে।

       // Determine which event we recieved
       if( eventString.equals("red") ) {
         m_led_level.red = dataString.toInt();
       } else if ( eventString.equals("green") ) {
         m_led_level.green = dataString.toInt();
       } else if ( eventString.equals("blue") ) {
         m_led_level.blue = dataString.toInt();
       } else {
     		return;
     	}
    
       // Set RGB color
       RGB.color(m_led_level.red, m_led_level.green, m_led_level.blue);
    

    তারপর শেষে আমরা নতুন আরজিবি রঙ সেট করি। লক্ষ্য করুন কিভাবে আমি একটি return যোগ করে একটি অজানা অবস্থা পরিচালনা করি else এ বিবৃতি অধ্যায়. সর্বদা ত্রুটির শর্তগুলি ধ্বংস করার আগে ফিল্টার আউট করা ভাল!

কোডটি পরীক্ষা করুন

  1. আপনার ফোনে পার্টিকেল অ্যাপ খুলুন

  2. প্রথমে আর্গন সেট আপ করা যাক। যদি এটি নীল না জ্বলে, মোড বোতামটি যতক্ষণ না নীল হয়ে যাচ্ছে ততক্ষণ ধরে রাখুন৷

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

    দ্রষ্টব্য:আপনি যদি ইতিমধ্যে অ্যাপটি প্রোগ্রাম করে থাকেন তবে LED ডিফল্টরূপে বন্ধ হয়ে যাবে। 5 সেকেন্ডের জন্য মোড বোতামটি ধরে রাখুন এবং তারপর চালিয়ে যান৷

  3. পেয়ারিং প্রক্রিয়ার মধ্য দিয়ে যান। অ্যাপটি আপনাকে সমস্ত পদক্ষেপে নিয়ে যায়। নিশ্চিত করুন যে আপনি আপনার মেশ নেটওয়ার্কের জন্য অ্যাডমিন পাসওয়ার্ড মনে রেখেছেন৷

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

  4. সর্বশেষ ফার্মওয়্যার (1.3.0) সহ একটি আর্গন প্রোগ্রাম করুন (দেখুন পর্যায় 1 - পরীক্ষা করার সময় - ধাপ 2 এটি কিভাবে করতে হবে সে সম্পর্কে একটি অনুস্মারকের জন্য)

  5. একবার দ্রুত হলুদ হয়ে গেলে, টিঙ্কার অ্যাপের সাহায্যে আর্গন প্রোগ্রাম করুন। আপনি এটি রিলিজ পৃষ্ঠা থেকে ডাউনলোড করতে পারেন।

  6. একবার আমাদের কাছে একটি সুন্দর কঠিন সায়ান এলইডি (পার্টিকেল ক্লাউডের সাথে সংযুক্ত) হয়ে গেলে আমরা অ্যাপটি প্রোগ্রাম করব। ক্লাউড ফ্ল্যাশ ব্যবহার করুন ড্রপ ডাউন মেনুতে বিকল্প।

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

    আমি যতদূর বলতে পারি, ক্লাউডের সাথে সংযোগ করার সময় পার্টিকল যেকোনো ডিভাইসকে নিরাপদ মোডে ফ্ল্যাশ করে। এটা আমার সেটআপ হতে পারে. আপনার মাইলেজ এখানে পরিবর্তিত হতে পারে। ক্লাউড ফ্ল্যাশ ব্যবহার করা ভাল .

    নিশ্চিত করুন যে আপনি সঠিক deviceOS সংস্করণ নির্বাচন করেছেন (1.3.0-rc1 ), ডিভাইসের ধরন (আর্গন ) এবং ডিভাইসের নাম (সেটআপের সময় আপনি এটিকে কী নাম দিয়েছেন৷ )

  7. ফোন অ্যাপ ব্যবহার করে জেননের সাথে সংযোগ করুন৷

  8. ফোন অ্যাপ ব্যবহার করে জেননকে আপনার মেশ নেটওয়ার্কে সংযুক্ত করুন

  9. ক্লাউড ফ্ল্যাশ ব্যবহার করে আপনার জেনন ফ্ল্যাশ করুন . ফোন অ্যাপ সেটআপের সময় আপনি যে নামটি দিয়েছিলেন সেটি ব্যবহার করুন। যতক্ষণ পর্যন্ত ডিভাইসটি পার্টিকেল ক্লাউডের সাথে বা নিরাপদ মোডে (বেগুনি LED) সংযুক্ত থাকে, ততক্ষণ এটি প্রোগ্রাম করা উচিত।

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

  10. একবার সংযুক্ত হয়ে গেলে, মজার অংশে আসা যাক। হালকা নীল এক্সপ্লোরার খুলুন আর্গন এর সাথে সংযোগ করুন অথবা জেনন .

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

  11. LED বৈশিষ্ট্যগুলির মধ্যে একটি নির্বাচন করুন এবং মান পরিবর্তন করুন।

    কিভাবে কণা পাওয়ারফুল ব্লুটুথ এপিআই ব্যবহার করবেন

    সমস্ত ডিভাইসে LED পরিবর্তন করা উচিত!

চূড়ান্ত কোড

এখানে সব টুকরা একসাথে রাখা সঙ্গে চূড়ান্ত কোড আছে. আপনি তাদের সঠিক জায়গায় রেখেছেন তা নিশ্চিত করতে আপনি এটি ব্যবহার করতে পারেন!!

/*
 * Project ble_mesh
 * Description: Bluetooth Low Energy + Mesh Example
 * Author: Jared Wolff
 * Date: 7/13/2019
 */

//SYSTEM_MODE(MANUAL);

// UUIDs for service + characteristics
const char* serviceUuid = "6E400001-B5A3-F393-E0A9-E50E24DCCA9E";
const char* red         = "6E400002-B5A3-F393-E0A9-E50E24DCCA9E";
const char* green       = "6E400003-B5A3-F393-E0A9-E50E24DCCA9E";
const char* blue        = "6E400004-B5A3-F393-E0A9-E50E24DCCA9E";

// Set the RGB BLE service
BleUuid rgbService(serviceUuid);

// Variables for keeping state
typedef struct {
  uint8_t red;
  uint8_t green;
  uint8_t blue;
} led_level_t;

// Static level tracking
static led_level_t m_led_level;

// Tracks when to publish to Mesh
static bool m_publish;

// Mesh event handler
static void meshHandler(const char *event, const char *data)
{

  // Convert to String for useful conversion and comparison functions
  String eventString = String(event);
  String dataString = String(data);

  // Determine which event we recieved
  if( eventString.equals("red") ) {
    m_led_level.red = dataString.toInt();
  } else if ( eventString.equals("green") ) {
    m_led_level.green = dataString.toInt();
  } else if ( eventString.equals("blue") ) {
    m_led_level.blue = dataString.toInt();
  } else {
		return;
	}

  // Set RGB color
  RGB.color(m_led_level.red, m_led_level.green, m_led_level.blue);

}

// Static function for handling Bluetooth Low Energy callbacks
static void onDataReceived(const uint8_t* data, size_t len, const BlePeerDevice& peer, void* context) {

  // We're only looking for one byte
  if( len != 1 ) {
    return;
  }

  // Sets the global level
  if( context == red ) {
    m_led_level.red = data[0];
  } else if ( context == green ) {
    m_led_level.green = data[0];
  } else if ( context == blue ) {
    m_led_level.blue = data[0];
  }

  // Set RGB color
  RGB.color(m_led_level.red, m_led_level.green, m_led_level.blue);

  // Set to publish
  m_publish = true;

}

// setup() runs once, when the device is first turned on.
void setup() {

  // Enable app control of LED
  RGB.control(true);

  // Init default level
  m_led_level.red = 0;
  m_led_level.green = 0;
  m_led_level.blue = 0;

  // Set to false at first
  m_publish = false;

  // Set the subscription for Mesh updates
  Mesh.subscribe("red",meshHandler);
  Mesh.subscribe("green",meshHandler);
  Mesh.subscribe("blue",meshHandler);

  // Set up characteristics
  BleCharacteristic redCharacteristic("red", BleCharacteristicProperty::WRITE_WO_RSP, red, serviceUuid, onDataReceived, (void*)red);
  BleCharacteristic greenCharacteristic("green", BleCharacteristicProperty::WRITE_WO_RSP, green, serviceUuid, onDataReceived, (void*)green);
  BleCharacteristic blueCharacteristic("blue", BleCharacteristicProperty::WRITE_WO_RSP, blue, serviceUuid, onDataReceived, (void*)blue);

  // Add the characteristics
  BLE.addCharacteristic(redCharacteristic);
  BLE.addCharacteristic(greenCharacteristic);
  BLE.addCharacteristic(blueCharacteristic);

  // Advertising data
  BleAdvertisingData advData;

  // Add the RGB LED service
  advData.appendServiceUUID(rgbService);

  // Start advertising!
  BLE.advertise(&advData);
}

// loop() runs over and over again, as quickly as it can execute.
void loop() {

  // Checks the publish flag,
  // Publishes to a variable called "red" "green" and "blue"
  if( m_publish ) {

    // Reset flag
    m_publish = false;

    // Publish to Mesh
    Mesh.publish("red", String::format("%d", m_led_level.red));
    Mesh.publish("green", String::format("%d", m_led_level.green));
    Mesh.publish("blue", String::format("%d", m_led_level.blue));
  }

}

উপসংহার

এই টিউটোরিয়ালে আপনি শিখেছেন কিভাবে একটি পার্টিকেল মেশ প্রজেক্টে ব্লুটুথ যোগ করতে হয়। আপনি যেমন কল্পনা করতে পারেন, সম্ভাবনাগুলি অন্তহীন। উদাহরণ স্বরূপ আপনি অভিজ্ঞতায় ব্যবহারকারী/প্রশাসনিক অ্যাপ যোগ করতে পারেন। এখন এটি দুর্দান্ত৷৷ ?

আপনি আমার আসন্ন বইতে এই ধরনের আরও সামগ্রী আশা করতে পারেন:কণা জালের চূড়ান্ত নির্দেশিকা . আপডেট এবং অভ্যন্তরীণ বিষয়বস্তুর জন্য আমার তালিকা সদস্যতা. এছাড়াও সমস্ত প্রারম্ভিক গ্রাহকরা যখন এটি প্রকাশ করা হয় তখন একটি ছাড় পান! সাইন আপ করতে এখানে ক্লিক করুন৷


  1. কিভাবে AirPlay ব্যবহার করবেন

  2. Android এবং Windows এ AirPods কিভাবে ব্যবহার করবেন

  3. আপনার আইপ্যাড বা আইফোনের সাথে একটি মাউস কীভাবে ব্যবহার করবেন?

  4. Windows 10 এ ব্লুটুথ কিভাবে ব্যবহার করবেন