Arduino এবং APDS-9960 সেন্সর দিয়ে অঙ্গভঙ্গি কিভাবে সনাক্ত করা যায়

  • APDS-9960 অঙ্গভঙ্গি, প্রক্সিমিটি, রঙ এবং পরিবেষ্টিত আলো সনাক্ত করে।
  • এটি I2C বাসের মাধ্যমে যোগাযোগ করে এবং 3.3V এ কাজ করে।
  • Arduino এর মতো প্ল্যাটফর্মে সংযোগ করা এবং প্রোগ্রাম করা সহজ।
  • অ্যাডাফ্রুট লাইব্রেরি রয়েছে যা এর একীকরণ এবং ব্যবহারকে সহজতর করে।

apds-9960

সেন্সর APDS-9960, প্রকৌশলের একটি সামান্য রত্ন, একটি আশ্চর্যজনক উপাদান যা অঙ্গভঙ্গি এবং নৈকট্য সনাক্তকরণ সক্ষম করে, সেইসাথে পরিবেষ্টিত আলো এবং রঙ পরিমাপ করে। স্যামসাং গ্যালাক্সি S5-এর মতো অত্যাধুনিক ইলেকট্রনিক ডিভাইসে ব্যবহৃত, আজ এটি যে কোনো ইলেকট্রনিক্স উত্সাহীর নাগালের মধ্যে রয়েছে যারা আরডুইনোর মতো প্ল্যাটফর্মে কাজ করে। 5 থেকে 20 সেন্টিমিটার পরিসরে অঙ্গভঙ্গি সনাক্ত করার ক্ষমতা এবং অন্যান্য ডিভাইসের সাথে এটির সহজ একীকরণের সাথে, এটি তাদের প্রকল্পে অঙ্গভঙ্গি নিয়ন্ত্রণ অন্তর্ভুক্ত করতে চায় তাদের জন্য আদর্শ পছন্দ।

এই প্রবন্ধে আমরা গভীরভাবে অন্বেষণ করব কিভাবে এই সেন্সর কাজ করে এবং কিভাবে এটিকে একটি Arduino এর সাথে সংযুক্ত করা যায়, এটির অনেকগুলি ব্যবহারে মনোযোগ দেওয়া এবং কোড উদাহরণগুলি অফার করা যা আপনাকে এটির সাথে দ্রুত কাজ শুরু করতে দেয়৷

APDS-9960 সেন্সর কি?

El APDS-9960 এটি একটি সেন্সর যা চারটি প্রধান কার্যকারিতাকে একত্রিত করে: অঙ্গভঙ্গি সনাক্তকরণ, প্রক্সিমিটি, রঙ এবং পরিবেষ্টিত আলো। এটি এমন একটি ডিভাইস যা I2C কমিউনিকেশন প্রোটোকল ব্যবহার করে এর রিডিংগুলিকে যোগাযোগ করে, যা মাইক্রোকন্ট্রোলারগুলির সাথে এটির ব্যবহারকে ব্যাপকভাবে সহজ করে তোলে যেমন যাও Arduino. এর গুণাবলীর মধ্যে, এর রঙ এবং পরিবেষ্টিত আলো পরিমাপ করার এবং যোগাযোগ ছাড়াই অঙ্গভঙ্গি সনাক্ত করার ক্ষমতা আলাদা, বাম, ডান, উপরে, নীচে, কাছাকাছি এবং দূরের মতো আন্দোলনগুলিকে স্বীকৃতি দেয়।

এই সেন্সর একটি একত্রীকরণ ধন্যবাদ কাজ করে ইনফ্রারেড emitter এবং চার নির্দেশমূলক ফটোডিওডস, যা কাছাকাছি বস্তুর গতিবিধি সনাক্তকরণ এবং গণনা করার অনুমতি দেয়। এছাড়াও, এটি পরিবেষ্টিত আলোর পরিমাণ পরিমাপ করার ক্ষমতা রাখে এবং আরজিবি রঙ সনাক্ত করে।

Arduino এর সাথে APDS-9960 সেন্সর সংযোগ করা হচ্ছে

apds9960

সংযোগ করতে APDS-9960 Arduino এর সাথে, আপনাকে কেবল বাসে যোগাযোগ স্থাপন করতে হবে I2C. এই সেন্সরটি 3.3V এর ভোল্টেজে কাজ করে, তাই এটির ক্ষতি এড়াতে উপযুক্ত সংযোগ তৈরি করা অত্যন্ত গুরুত্বপূর্ণ, বিশেষ করে যদি আপনি একটি 5V আরডুইনো. এই ক্ষেত্রে, এটি একটি ব্যবহার করার পরামর্শ দেওয়া হয় লজিক লেভেল অ্যাডাপ্টার I2C বাস ভোল্টেজ কমাতে।

সংযোগ করতে পিন:
  • GND Arduino এর GND পিনে।
  • ভিসি Arduino এর 3.3V পিনে।
  • এস্ ডি Arduino এর SDA পিনে।
  • SCL Arduino এর SCL পিনে।

আপনার Arduino মডেল 5V হলে, অবশ্যই অতিরিক্ত সতর্কতা অবলম্বন করতে হবে, যদিও কিছু ক্ষেত্রে রিপোর্ট করা হয়েছে যে সেন্সর ক্ষতিগ্রস্ত না হয়েও কাজ করতে পারে। যাইহোক, দীর্ঘ মেয়াদে এটি সম্পূর্ণরূপে নিশ্চিত নয়।

Arduino জন্য লাইব্রেরি এবং কোড

Arduino-এর সাথে APDS-9960 ব্যবহার করার জন্য, সবচেয়ে সহজ উপায়গুলির মধ্যে একটি হল লাইব্রেরি ব্যবহার করা Adafruit, যা এর ব্যবহার সহজ করে। থেকে ডাউনলোড করতে পারেন GitHub এবং এটি সরাসরি Arduino উন্নয়ন পরিবেশে ইনস্টল করুন।

মৌলিক উদাহরণ: সিরিয়াল পোর্টের মাধ্যমে অঙ্গভঙ্গি দেখান

এই প্রথম উদাহরণে, সনাক্ত করা অঙ্গভঙ্গিগুলি সিরিয়াল পোর্টে পড়া এবং প্রদর্শিত হবে। ইঙ্গিত সনাক্ত করার জন্য 5 থেকে 20 সেন্টিমিটার দূরত্বে কেবল আপনার হাতটি সেন্সরের উপর দিয়ে দিন:

#include "Adafruit_APDS9960.h"

Adafruit_APDS9960 apds;

void setup() {
  Serial.begin(115200);
  if (!apds.begin()) {
    Serial.println("Error al inicializar el sensor, comprueba el cableado");
    while (1);
  }
  apds.enableGesture(true);
}

void loop() {
  uint8_t gesture = apds.readGesture();
  if (gesture == APDS9960_DOWN) Serial.println("Abajo");
  if (gesture == APDS9960_UP) Serial.println("Arriba");
  if (gesture == APDS9960_LEFT) Serial.println("Izquierda");
  if (gesture == APDS9960_RIGHT) Serial.println("Derecha");
}

এই কোডটি APDS-9960 এর মতো একটি অঙ্গভঙ্গি সেন্সর দিয়ে আপনি কী করতে পারেন তার একটি নমুনা। আপনি যখন ডিভাইসের উপর আপনার হাত দিয়ে যান, প্রোগ্রামটি অঙ্গভঙ্গি সনাক্ত করবে এবং ফলাফলটি সিরিয়াল পোর্ট কনসোলে প্রদর্শন করবে।

উন্নত উদাহরণ: অঙ্গভঙ্গির উপর ভিত্তি করে Blink LED

এই দ্বিতীয় উদাহরণের জন্য, আমরা সনাক্ত করা অঙ্গভঙ্গিগুলির সাথে একত্রিত করব LED বোর্ডে একত্রিত. সনাক্ত করা অঙ্গভঙ্গির উপর নির্ভর করে, আমরা নির্দিষ্ট সংখ্যক বার LED ফ্ল্যাশ করব:

#include "Adafruit_APDS9960.h"

Adafruit_APDS9960 apds;

void setup() {
  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  if (!apds.begin()) {
    Serial.println("Error al inicializar el sensor");
    while (1);
  }
  apds.enableGesture(true);
}

void loop() {
  uint8_t gesture = apds.readGesture();
  if (gesture == APDS9960_DOWN) blink(1);
  if (gesture == APDS9960_UP) blink(2);
  if (gesture == APDS9960_LEFT) blink(3);
  if (gesture == APDS9960_RIGHT) blink(4);
}

void blink(int times) {
  for (int i = 0; i < times; i++) {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(100);
    digitalWrite(LED_BUILTIN, LOW);
    delay(100);
  }
}

সাধারণ সমস্যা এবং সমাধান

যদিও APDS-9960 এটি একটি মোটামুটি শক্তিশালী সেন্সর, এটি সত্য যে প্রচুর আলো বা হস্তক্ষেপ সহ পরিবেশে, রিডিং ব্যর্থ হতে পারে। উপরন্তু, অ-আদর্শ পরিস্থিতিতে ব্যবহার করা হলে, এটি গতি সনাক্ত করতে বা এমনকি মিথ্যা ইতিবাচক উৎপন্ন করতে ব্যর্থ হতে পারে।

আরেকটি দিক মনে রাখতে হবে যে এই সেন্সরটি সঠিক পরিবেষ্টিত আলোর উপর নির্ভরশীল এবং যদিও এটি খুব সংবেদনশীল, এটি চকচকে পৃষ্ঠ বা গ্লাভসের মতো পরিস্থিতিতে বস্তুর সাথে ভালভাবে কাজ করতে পারে না, কারণ এগুলি সঠিকভাবে আলোকে প্রতিফলিত করতে পারে না। নির্গত ইনফ্রারেড আলো।

এই ডিভাইসটি যে I2C প্রোটোকলটি ব্যবহার করে তা বেশ সহজ, তবে সংযোগগুলি সঠিক এবং ভোল্টেজের সাথে কোনও সমস্যা নেই তা নিশ্চিত করা এখনও অপরিহার্য।

APDS-9960 সেন্সরটি অঙ্গভঙ্গি এবং প্রক্সিমিটি সনাক্তকরণকে একীভূত করতে চাওয়া প্রকল্পগুলির জন্য একটি দুর্দান্ত সরঞ্জাম। এটি মিতব্যয়ী, I2C এর মাধ্যমে সংহত করা সহজ এবং লাইব্রেরি রয়েছে যা এর ব্যবহার সহজ করে। যদিও এটি কিছু পরিবেশে সমস্যাগুলি উপস্থাপন করতে পারে, এর সামঞ্জস্যযোগ্য সংবেদনশীলতা এবং কাচের পিছনে কাজ করার ক্ষমতা এটিকে একটি বহুমুখী পছন্দ করে তোলে। প্রদত্ত কোড উদাহরণগুলির সাহায্যে, আপনি এই সেন্সরটির সাথে কাজ শুরু করতে পারেন এবং আপনার প্রকল্পগুলিতে এর সম্পূর্ণ সম্ভাবনা আবিষ্কার করতে পারেন৷