সুচিপত্র:
ভিডিও: ইনফ্রারেড সেন্সর ব্যবহার করে আই মোশন ট্র্যাকিং: ৫ টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:01
আমি চোখের গতিবিধি বুঝতে এবং LED নিয়ন্ত্রণ করতে একটি ইনফ্রারেড সেন্সর ব্যবহার করেছি।
আমি LED টেপ NeoPixel দিয়ে চোখের পাতা তৈরি করেছি।
ধাপ 1: সংবিধান
আমি চোখ সন্ধানের জন্য দুটি সেন্সর QTR - 1A ব্যবহার করেছি। Arduino এর সাথে সেন্সিং এবং LED নিয়ন্ত্রণ করা।
উপাদান
- SparkFun Arduino Pro Mini 328 - 5V/16MHz
- Adafruit LiIon/LiPoly Backpack Add-on for Pro Trinket/ItsyBitsy
- LiPo ব্যাটারি
- নিওপিক্সেল স্ট্রিপ
- QTR-1A প্রতিফলন সেন্সর
ধাপ 2: NeoPixel LED Eye Ball
NeoPixel LED টেপ ব্যবহার করা হয়। LED 68 ইউনিট।
LED ডবল পার্শ্বযুক্ত টেপ এবং তারের সঙ্গে বাটি সংশোধন করা হয়।
ধাপ 3: সেন্সর ইউনিট
আমি চোখ সন্ধানের জন্য দুটি সেন্সর QTR - 1A ব্যবহার করেছি। কিউটিআর - ১ এ চোখের প্রস্থের দূরত্বে একটি প্লাস্টিকের পাতায় রাখা হয়।
সেন্সর অংশ এবং মাইক্রোকন্ট্রোলার অংশ যথাক্রমে একটি ক্লিপ দিয়ে চশমার সাথে স্থির করা হয়েছিল।
ধাপ 4: Arduino কোড
যখন আইরিস একটি সেন্সরের কাছে আসে, প্রতিফলিত আলো হ্রাস পায় এবং সেন্সরের মান বৃদ্ধি পায়। বিপরীতভাবে, যখন আইরিস দূরে সরে যায়, প্রতিফলিত আলো বৃদ্ধি পায় এবং ছবির প্রতিফলকের সেন্সর মান হ্রাস পায়।
LED চোখের বলের ছাত্রের ডান এবং বাম আন্দোলন একটি সেন্সরের মান বৃদ্ধি এবং হ্রাস অনুভব করে এবং এটি নিয়ন্ত্রণ করে। জ্বলজ্বল করার সময়, উভয় সেন্সরের মান কমে যায়, তাই যদি দুটি সেন্সরের মান একসাথে কমে যায়, LED চোখের পলকের চোখের পাতা কমে যাবে।
আমি নিম্নলিখিত লাইব্রেরি ব্যবহার করেছি।
- QTRsensors:
- Adafruit_NeoPixel:
#অন্তর্ভুক্ত #অন্তর্ভুক্ত
#সংজ্ঞায়িত NUM_SENSORS 2 // ব্যবহৃত সেন্সরের সংখ্যা#সংজ্ঞায়িত NUM_SAMPLES_PER_SENSOR 10 // গড়#সংজ্ঞায়িত EMITTER_PIN QTR_NO_EMITTER_PIN
int iniSensorValL, sensorValL; int iniSensorValR, sensorValR; #PIN A3 Adafruit_NeoPixel led = Adafruit_NeoPixel (68, PIN, NEO_GRB + NEO_KHZ800) নির্ধারণ করুন; int blackNum = 24; int pupilNum = 12; uint32_t রঙ; int উজ্জ্বলতা = 40; বাইট আই কালার; int LR = 7; বুলিয়ান idাকনা = মিথ্যা; int cnt = 0;
// কালো চোখ L&R অ্যানিমেশন কালো LED [15] [24] = {{12, 32, 35, 55, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, {12, 13, 31, 36, 54, 55, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, {11, 13, 14, 30, 37, 53, 54, 56, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, {10, 11, 14, 15, 29, 38, 52, 53, 56, 57, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, {9, 10, 11, 12, 15, 16, 28, 33, 34, 39, 51, 52, 55, 56, 57, 58, 68, 68, 68, 68, 68, 68, 68, 68, 68, {0, 8, 9, 10, 11, 12, 13, 16, 17, 27, 32, 35, 40, 50, 51, 54, 55, 56, 57, 58, 59, 67, 68, 68}, {0, 1, 7, 8, 9, 10, 13, 14, 17, 18, 26, 31, 36, 41, 49, 50, 53, 54, 57, 58, 59, 60, 66, 67}, {1, 2, 6, 7, 8, 9, 14, 15, 18, 19, 25, 30, 37, 42, 48, 49, 52, 53, 58, 59, 60, 61, 65, 66}, {2, 3, 5, 6, 7, 8, 15, 16, 19, 20, 24, 29, 38, 43, 47, 48, 51, 52, 59, 60, 61, 62, 64, 65}, {3, 4, 5, 6, 7, 16, 17, 20, 21, 23, 28, 39, 44, 46, 47, 50, 51, 60, 61, 62, 63, 64, 68, 68}, {4, 5, 6, 17, 18, 21, 22, 27, 40, 45, 46, 49, 50, 61, 62, 63, 68, 68, 68, 68, 68, 68, 68}, {4, 5, 18, 19, 26, 41, 48, 49, 62, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68}, {4, 19, 20, 25, 42, 47, 48, 63, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68}, {20, 21, 24, 43, 46, 47, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68 68, 68}, {21, 23, 44, 46, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68 68, 68}};
// ছাত্র L&R অ্যানিমেশন ছাত্র ছাত্রী [15] [12] = {{33, 34, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68}, {32, 33, 34, 35, 68 {68, 68, 68, 68, 68, 68, 68, 68}, {12, 31, 32, 33, 34, 35, 36, 55, 68, 68, 68, 68}, {12, 13, 30, 31, 32, 33, 34, 35, 36, 37, 54, 55}, {13, 14, 29, 30, 31, 32, 35, 36, 37, 38, 53, 54}, {14, 15, 28, 29, 30, 31, 36, 37, 38, 39, 52, 53}, {15, 16, 27, 28, 29, 30, 37, 38, 39, 40, 51, 52}, {16, 17, 26, 27, 28, 29, 38, 39, 40, 41, 50, 51}, {17, 18, 25, 26, 27, 28, 39, 40, 41, 42, 49, 50}, {18, 19, 24, 25, 26, 27, 40, 41, 42, 43, 48, 49}, {19, 20, 23, 24, 25, 26, 41, 42, 43, 44, 47, 48}, {20, 21, 22, 23, 24, 25, 42, 43, 44, 45, 46, 47}, {21, 22, 23, 24, 43, 44, 45, 46, 68, 68, 68 }, {22, 23, 44, 45, 68, 68, 68, 68, 68, 68, 68, 68}, {22, 45, 68, 68, 68, 68, 68, 68, 68, 68, 68}};
// ঝলকানি অ্যানিমেশন চোখের পাতা = 0; int eyelidNum [8] = {0, 4, 8, 16, 24, 34, 44, 56}; int eyelidLED [56] = {64, 65, 66, 67, 58, 59, 60, 61, 56, 57, 62, 63, 49, 50, 51, 52, 47, 48, 53, 54, 38, 39, 40, 41, 46, 55, 36, 37, 42, 43, 26, 27, 28, 29, 35, 44, 24, 25, 30, 31, 15, 16, 17, 18, 34, 45, 23 {32, 13, 14, 19, 20, 6, 7, 8, 9}; QTRSensorsAnalog qtra ((স্বাক্ষরবিহীন চার ) {0, 1}, NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN); স্বাক্ষরবিহীন int sensorValues [NUM_SENSORS];
অকার্যকর পলক (int eyelid, int LR) {if (eyelid! = 8) {// Pewter for (uint16_t i = 0; i <led.numPixels (); i ++) {led.setPixelColor (i, led. Color (66, 66, 66)); }
// কালো চোখের জন্য (uint16_t i = 0; i led.setPixelColor (blackLED [LR] , color);}
// ছাত্রের জন্য (uint16_t i = 0; i
led.setPixelColor (pupilLED [LR] , led. Color (0, 0, 66)); }
// চোখের পাতা (int i = 0; i <eyelidNum [eyelid]; i ++) {led.setPixelColor (eyelidLED , 0); }} অন্যথায় যদি (চোখের পাতা == 8) {led.clear (); } led.show ();}
অকার্যকর সেটআপ() {
Serial.begin (115200); led.begin (); led.setBrightness (উজ্জ্বলতা); // প্রাথমিক উজ্জ্বলতা 40 led.show (); // সব পিক্সেলকে 'অফ' কালার = নেতৃত্বে শুরু করুন। রঙ (0, 177, 55); // ছাত্র রঙ বিলম্ব (100); qtra.read (sensorValues); iniSensorValL = sensorValues [0]; iniSensorValR = sensorValues [1]; পলক (চোখের পাতা, এলআর); }
অকার্যকর লুপ () {// QTR - 1A সেন্সর মান qtra.read (sensorValues); sensorValL = sensorValues [0]; sensorValR = sensorValues [1];
ডাবল রাসিওএল = (ডবল) সেন্সরভ্যাল / ইনসেন্সরভাল;
ডাবল রাসিওআর = (ডবল) সেন্সরভ্যালআর / ইনসেন্সরভালআর;
সিরিয়াল.প্রিন্ট (রাসিওএল);
সিরিয়াল.প্রিন্ট (""); Serial.println (rasioR);
যদি (rasioL> 0.985 && rasioR <0.985) {// right for (int i = LR; i <12; i ++) {blink (0, i); বিলম্ব (40); এলআর = আমি; }} অন্যথায় যদি (rasioL 0.985) {// বাকি থাকে (int i = LR; i> 2; i-) {blink (0, i); বিলম্ব (40); এলআর = আমি; }} অন্যথায় যদি (lid == false && rasioL <0.96 && rasioR <0.96) {// blinking close for (int i = 1; i 0.96 && rasioR> 0.96) {// ঝলকানি খোলা (int i = 8; i > 0; i-) {blink (i, LR); বিলম্ব (40); lাকনা = মিথ্যা; }} অন্যথায় যদি (lid == false && rasioL> 0.96 && rasioR> 0.96) {// স্বাভাবিক // cnt ++; // চোখের পাতা = 0; যদি (LR <= 7) {for (int i = LR; i <= 7; i ++) {blink (0, i); বিলম্ব (40); এলআর = আমি; }} অন্য {জন্য (int i = LR; i> = 7; i-) {blink (0, i); বিলম্ব (40); এলআর = আমি; }}}
// প্রাথমিক মান রিফ্রেশ করুন যদি (cnt> 10) {iniSensorValL = sensorValL; iniSensorValR = sensorValR; cnt = 0; }}
ধাপ 5: অপারেশন
সেন্সর দিয়ে শিক্ষার্থীর বাম এবং ডান গতি এবং চোখের পলক সনাক্ত করুন এবং চোখের বল LED নিয়ন্ত্রণ করুন।
প্রস্তাবিত:
Arduino এবং Solenoid ভালভ ব্যবহার করে মোশন সেন্সর ওয়াটার ট্যাপ - DIY: 6 টি ধাপ
আরডুইনো এবং সোলেনয়েড ভালভ ব্যবহার করে মোশন সেন্সর ওয়াটার ট্যাপ - DIY: এই প্রকল্পে, আমি আপনাকে দেখাব কিভাবে সোলেনয়েড ভালভ ব্যবহার করে মোশন সেন্সর ওয়াটার ট্যাপ তৈরি করা যায়। এই প্রকল্পটি আপনাকে আপনার বিদ্যমান ম্যানুয়াল ওয়াটার ট্যাপকে একটি ট্যাপে রূপান্তর করতে সাহায্য করতে পারে যা মোশন ডিটেকশনের উপর ভিত্তি করে নিয়ন্ত্রণ করা যায়। আইআর সেন্সর ইন্টারফেস ব্যবহার করে
MPU-6000 এবং কণা ফোটন ব্যবহার করে মোশন ট্র্যাকিং: 4 টি ধাপ
এমপিইউ -6000 এবং কণা ফোটন ব্যবহার করে মোশন ট্র্যাকিং: এমপিইউ -6000 একটি 6-অ্যাক্সিস মোশন ট্র্যাকিং সেন্সর যার মধ্যে 3-অ্যাক্সিস অ্যাকসিলরোমিটার এবং 3-অ্যাক্সিস জাইরোস্কোপ রয়েছে। এই সেন্সরটি ত্রিমাত্রিক সমতলে কোন বস্তুর সঠিক অবস্থান এবং অবস্থানের দক্ষ ট্র্যাকিং করতে সক্ষম। এটি কাজে লাগানো যেতে পারে
MPU-6000 এবং Arduino Nano ব্যবহার করে মোশন ট্র্যাকিং: 4 টি ধাপ
MPU-6000 এবং Arduino Nano ব্যবহার করে মোশন ট্র্যাকিং: MPU-6000 হল একটি 6-Axis মোশন ট্র্যাকিং সেন্সর যার মধ্যে 3-Axis অ্যাকসিলরোমিটার এবং 3-Axis জাইরোস্কোপ রয়েছে। এই সেন্সরটি ত্রিমাত্রিক সমতলে কোন বস্তুর সঠিক অবস্থান এবং অবস্থানের দক্ষ ট্র্যাকিং করতে সক্ষম। এটি কাজে লাগানো যেতে পারে
MPU-6000 এবং রাস্পবেরি পাই ব্যবহার করে মোশন ট্র্যাকিং: 4 টি ধাপ
MPU-6000 এবং রাস্পবেরি পাই ব্যবহার করে মোশন ট্র্যাকিং: MPU-6000 হল একটি 6-অ্যাক্সিস মোশন ট্র্যাকিং সেন্সর যার মধ্যে 3-অ্যাক্সিস অ্যাকসিলরোমিটার এবং 3-অ্যাক্সিস জাইরোস্কোপ রয়েছে। এই সেন্সরটি ত্রিমাত্রিক সমতলে কোন বস্তুর সঠিক অবস্থান এবং অবস্থানের দক্ষ ট্র্যাকিং করতে সক্ষম। এটি কাজে লাগানো যেতে পারে
M5Stack IR তাপীয় ক্যামেরা AMG8833 ইনফ্রারেড অ্যারে ইমেজিং সেন্সর ব্যবহার করে: 3 টি ধাপ
M5Stack IR থার্মাল ক্যামেরা AMG8833 ইনফ্রারেড অ্যারে ইমেজিং সেন্সর ব্যবহার করে: অনেকের মত আমারও থার্মাল ক্যামেরার প্রতি আকর্ষণ ছিল কিন্তু তারা সবসময় আমার দামের সীমার বাইরে ছিল - এখন পর্যন্ত !! ESP32 মডিউল এবং অপেক্ষাকৃত কম খরচে