সুচিপত্র:

হামিংবার্ড ডিটেক্টর/পিকচার টেকার: 12 টি ধাপ (ছবি সহ)
হামিংবার্ড ডিটেক্টর/পিকচার টেকার: 12 টি ধাপ (ছবি সহ)

ভিডিও: হামিংবার্ড ডিটেক্টর/পিকচার টেকার: 12 টি ধাপ (ছবি সহ)

ভিডিও: হামিংবার্ড ডিটেক্টর/পিকচার টেকার: 12 টি ধাপ (ছবি সহ)
ভিডিও: হামিংবার্ড এর বিস্ময়কর ক্ষমতা || বিশ্বের সবচেয়ে ছোট্ট পাখি হামিংবার্ড || Amazing Hummingbird 2024, জুলাই
Anonim
হামিংবার্ড ডিটেক্টর/পিকচার টেকার
হামিংবার্ড ডিটেক্টর/পিকচার টেকার

আমাদের পেছনের ডেকের উপর হামিংবার্ড ফিডার আছে এবং গত কয়েক বছর ধরে আমি তাদের ছবি তুলছি। হামিংবার্ডগুলি আশ্চর্যজনক ছোট প্রাণী, খুব আঞ্চলিক এবং তাদের লড়াই উভয়ই হাস্যকর এবং আশ্চর্যজনক হতে পারে। কিন্তু তাদের ছবি তোলার জন্য আমি আমার বাড়ির পিছনে মূর্তির মতো দাঁড়িয়ে থাকতে থাকতে ক্লান্ত হয়ে পড়ছিলাম। দীর্ঘ সময় অপেক্ষা করার জন্য বাড়ির পিছনে না দাঁড়িয়ে ছবি তোলার আমার একটি উপায় দরকার ছিল। আমি জানি যে আমি একটি রিমোট কন্ট্রোল্ড শাটার ব্যবহার করতে পারতাম কিন্তু আমি চেয়েছিলাম যে আমি সেখানে না থাকলে স্বয়ংক্রিয়ভাবে ছবি তোলা হোক। তাই আমি হামিংবার্ড সনাক্ত করতে এবং স্বয়ংক্রিয়ভাবে একটি ছবি তোলার জন্য একটি ডিভাইস তৈরি করার সিদ্ধান্ত নিয়েছি।

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

ধাপ 1: একটি মাইক্রোকন্ট্রোলার নির্বাচন করা

একটি মাইক্রোকন্ট্রোলার নির্বাচন করা
একটি মাইক্রোকন্ট্রোলার নির্বাচন করা

আমি যে মাইক্রোকন্ট্রোলারটি বেছে নিয়েছিলাম তা ছিল একটি PJRC Teensy। Teensy একটি ARM মাইক্রোকন্ট্রোলার ব্যবহার করে, বিশেষ করে, একটি ARM Cortex M4। কর্টেক্স এম 4 এ একটি FFT (ফাস্ট ফুরিয়ার ট্রান্সফর্ম) করার হার্ডওয়্যার রয়েছে যা সনাক্তকরণ করবে। PJRC একটি অডিও বোর্ডও বিক্রি করে যা আপনাকে Teensy ব্যবহার করে মিউজিক বাজানোর পাশাপাশি বাইরের ইনপুট দিয়ে অডিও রেকর্ড করার অনুমতি দেয়, অথবা, একটি ছোট মাইক্রোফোন যা আপনি বোর্ডে যোগ করতে পারেন। আমার পরিকল্পনা ছিল Teensy মাইক্রোফোন থেকে অডিওতে একটি FFT সঞ্চালন করবে।

ধাপ 2: FFT?

এফএফটি?
এফএফটি?

একটি এফএফটি একটি গাণিতিক সূত্র/অ্যালগরিদম যা সময় ডোমেন থেকে একটি সংকেতকে ফ্রিকোয়েন্সি ডোমেনে রূপান্তর করে। এর মানে হল যে এটি মাইক্রোফোন থেকে সময়-নমুনা অডিও গ্রহণ করে এবং এটি মূল তরঙ্গে উপস্থিত ফ্রিকোয়েন্সিগুলির পরিমাপে পরিণত করে। আপনি দেখতে পাচ্ছেন, সাইন বা কোসাইন তরঙ্গের একটি সিরিজ থেকে যে কোনো নির্বিচারে, অবিচ্ছিন্ন তরঙ্গ তৈরি করা যেতে পারে যা কিছু বেস ফ্রিকোয়েন্সি এর পূর্ণসংখ্যা গুণক। একটি এফএফটি বিপরীত কাজ করে: এটি একটি নির্বিচারে তরঙ্গ নেয় এবং এটিকে তরঙ্গের মাত্রায় পরিণত করে যা একত্রে সংক্ষেপে মূল স্বেচ্ছাচারী তরঙ্গ তৈরি করে। এটি বলার একটি সহজ উপায় হল, আমি টিনসিতে সফটওয়্যার এবং এফএফটি হার্ডওয়্যার ব্যবহার করার পরিকল্পনা করেছিলাম যে এটি একটি হামিংবার্ডের ডানা ঝাপটানোর ফ্রিকোয়েন্সি এ 'শুনতে' পায় কিনা। যদি এটি একটি হামিংবার্ড 'শুনতে' পায়, আমি একটি ছবি তোলার জন্য একটি ক্যামেরায় একটি আদেশ পাঠাব।

এটা কাজ করেছে! তাহলে, আমি এটা কিভাবে করলাম, আপনি কিভাবে এটা করতে পারলেন এবং কিভাবে আপনি এটিকে আরও ভালো করতে পারলেন?

ধাপ 3: হামিংবার্ড শব্দটি কেমন?

হভারিং হামিংবার্ড শব্দটি কেমন?
হভারিং হামিংবার্ড শব্দটি কেমন?

প্রথম জিনিস প্রথমে, আমি হামিংবার্ড এর ডানা flaps শুনতে হবে কি ফ্রিকোয়েন্সি খুঁজে বের করতে প্রয়োজন। এটি নির্ধারণ করতে, আমি আমার আইফোন ব্যবহার করেছি। আমি আইফোনটিকে একটি ট্রাইপোডে সংযুক্ত করেছিলাম এবং এটি আমাদের ডেকের হামিংবার্ড ফিডারের সামনে সরাসরি স্লো মোশন ভিডিও রেকর্ড করেছিল। কিছু সময় পর আমি ক্যামেরা সরিয়ে ভিডিওটি ডাউনলোড করলাম। আমি তখন ভিডিও দেখলাম ফিডারের সামনে হামিং বার্ড খুঁজছি। যখন আমি একটি ভাল ক্রম খুঁজে পেয়েছিলাম, আমি হামিংবার্ডের জন্য একটি পৃথক ফ্রেমের সংখ্যা গণনা করেছি যা তার অবস্থানগুলি থেকে একই অবস্থানে ফিরে আসার জন্য তার ডানা ঝাপটায়। আইফোনে স্লো মোশন প্রতি সেকেন্ডে প্রায় 240 ফ্রেম। আমি দেখলাম একটি হামিংবার্ড ফিডারের সামনে ঘোরাফেরা করছে এবং আমি এর জন্য 5 টি ফ্রেম গণনা করেছি যাতে এর ডানা সামনের অবস্থান থেকে পিছনের অবস্থানে চলে যায় এবং তারপরে সামনের অবস্থানে ফিরে আসে। এটি 240 টির মধ্যে 5 টি ফ্রেম। একটি চক্র বা পিরিয়ডের জন্য 5 টি ফ্রেমের জন্য, আমরা ফ্রিকোয়েন্সিটি 1 / (5/240) বা 48 Hz এর সময়কাল দ্বারা বিভক্ত হিসাবে গণনা করতে পারি। এর মানে হল যে যখন এই হামিং বার্ডটি ঘোরাফেরা করছে, তখন আমরা যে শব্দ শুনি তা দ্বিগুণ বা প্রায় 96 Hz হতে হবে। ফ্রিকোয়েন্সি সম্ভবত বেশি হয় যখন তারা উড়ছে এবং না ঘুরছে। এটি তাদের ভর দ্বারাও প্রভাবিত হতে পারে কিন্তু আমি মনে করি আমরা ধরে নিতে পারি যে একই প্রজাতির বেশিরভাগ পাখির একই ভর রয়েছে।

ধাপ 4: ফুরিয়ার সিরিজ এবং টিনসি

ফুরিয়ার সিরিজ এবং টিনসি
ফুরিয়ার সিরিজ এবং টিনসি

Teensy (আমি একটি Teensy 3.2 ব্যবহার করেছি) PJRC (www.pjrc.com) দ্বারা তৈরি। FFT শব্দের নমুনায় গণনা করা হবে। সাউন্ড অর্জন করতে, PJRC Teensy (TEENSY3_AUDIO - $ 14.25) এর জন্য একটি অডিও অ্যাডাপ্টার বোর্ড বিক্রি করে। তারা একটি ছোট মাইক্রোফোনও বিক্রি করে যা অডিও অ্যাডাপ্টার বোর্ডে বিক্রি করা যায় (মাইক্রোফোন - $ 1.25)। অডিও অ্যাডাপ্টার বোর্ড একটি চিপ (SGTL5000) ব্যবহার করে যা Teensy একটি সিরিয়াল বাস (I2S) এর উপর কথা বলতে পারে। Teensy SGTL5000 ব্যবহার করে মাইক্রোফোন থেকে অডিও স্যাম্পল করে এবং এটি ডিজিটাইজ করে, অর্থাৎ, সংখ্যার একটি সেট তৈরি করে যা মাইক্রোফোন শুনছে এমন শব্দকে উপস্থাপন করে।

একটি এফএফটি একটি ডিস্ক্রিট ফুরিয়ার ট্রান্সফর্ম (ডিএফটি) নামে একটি দ্রুত সংস্করণ। একটি ডিএফটি নির্ধারিত সংখ্যক নমুনায় সঞ্চালিত হতে পারে, তবে একটি এফএফটি -র নমুনাগুলি সেটে সংরক্ষণ করা প্রয়োজন যা বাইনারি গুণক। Teensy হার্ডওয়্যার 1024 নমুনার (1024 = 2^10) একটি সেটে একটি FFT সঞ্চালন করতে পারে তাই আমরা সেটাই ব্যবহার করব।

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

Teensy অডিও বোর্ড 44, 100 Hz একটি ফ্রিকোয়েন্সি অডিও নমুনা। সুতরাং, এই ফ্রিকোয়েন্সিতে 1024 টি নমুনা 1024/44100 বা প্রায় 23.2 মিলিসেকেন্ডের সময়ের ব্যবধানে প্রতিনিধিত্ব করে। এই ক্ষেত্রে, FFT আউটপুট হিসাবে উৎপাদন করবে, পরিমাপ যা 43 Hz এর নমুনা সময়ের পূর্ণসংখ্যা গুণক (আবার, 1/0.0232 প্রায় 43 Hz এর সমান)। আমরা এই ফ্রিকোয়েন্সিটির প্রায় দ্বিগুণ মাত্রার সন্ধান করতে চাই: 86 হার্জ। এটা আমাদের হিসেব করা হামিংবার্ড উইং ফ্ল্যাপের ঠিক ফ্রিকোয়েন্সি নয় কিন্তু, আমরা দেখতে পাচ্ছি এটি যথেষ্ট কাছাকাছি।

ধাপ 5: ফুরিয়ার ডেটা ব্যবহার করা

ফুরিয়ার ডেটা ব্যবহার করা
ফুরিয়ার ডেটা ব্যবহার করা

পিজেআরসি লাইব্রেরিগুলি টিনসির জন্য সরবরাহ করে নমুনাগুলি প্রক্রিয়া করবে এবং পরিমাপের মানগুলির একটি অ্যারে ফিরিয়ে দেবে। আমরা ফেরত অ্যারের প্রতিটি মাত্রাকে একটি বিন হিসাবে উল্লেখ করব। প্রথম বিন (ডেটা অ্যারেতে শূন্য অফসেট এ আমরা ফিরে পাই) হল তরঙ্গের ডিসি অফসেট। আমরা নিরাপদে এই মান উপেক্ষা করতে পারি। দ্বিতীয় বিন (অফসেট 1 এ) 43 Hz কম্পোনেন্টের মাত্রা প্রতিনিধিত্ব করবে। এটি আমাদের বেস পিরিয়ড। পরবর্তী বিন (অফসেট 2 এ) 86 Hz কম্পোনেন্টের মাত্রা প্রতিনিধিত্ব করবে, এবং তাই। প্রতিটি পরবর্তী বিন বেস সময়ের (43 Hz) একটি পূর্ণসংখ্যা গুণক।

এখন এই যেখানে একটু অদ্ভুত পায়। যদি আমরা একটি নিখুঁত 43 Hz শব্দ বিশ্লেষণ করার জন্য একটি FFT ব্যবহার করি তাহলে FFT প্রথম বিনটি কিছু বড় মাত্রায় ফিরিয়ে দেবে এবং বাকি সব ডাব শূন্যের সমান হবে (আবার, একটি নিখুঁত জগতে)। যদি আমরা যে শব্দটি ধরতাম এবং বিশ্লেষণ করতাম সেটি ছিল 86 Hz তাহলে অফসেট এ বিনটি হবে শূন্য এবং অফসেট 2 এ বিন (দ্বিতীয় হারমোনিক) হবে কিছু বড় মাত্রা এবং বাকী বাক্সগুলো হবে শূন্য, ইত্যাদি। কিন্তু যদি আমরা একটি হামিং বার্ডের শব্দ ধরতাম এবং এটি ছিল 96 Hz (যেমন আমি আমার এক পাখির উপর পরিমাপ করেছিলাম) তাহলে অফসেট 2 বিন @ 86 Hz এর মাত্রা একটু কম হবে (নিখুঁত 86 Hz তরঙ্গের চেয়ে) এবং এর চারপাশের ডোবাগুলি (একটি নিম্ন এবং কয়েকটি উচ্চতর) প্রত্যেকটির একটি শূন্য অ-মান থাকবে।

যদি আমাদের FFT এর নমুনার আকার 1024 এর চেয়ে বড় হয় বা আমাদের অডিও স্যাম্পলিং ফ্রিকোয়েন্সি কম হয়, তাহলে আমরা আমাদের ডাবের রেজোলিউশনকে আরও ভালো করে তুলতে পারি (যেমন ছোট)। কিন্তু আমরা যদি আমাদের FFT বিনগুলোকে 1 Hz বেস পিরিয়ডের গুণক করে তুলতে এই জিনিসগুলি পরিবর্তন করি, তবুও আমাদের এই বিন 'স্পিলেজ' মোকাবেলা করতে হবে। এর কারণ হল আমরা কখনই একটি উইং ফ্রিকোয়েন্সি পাব না যা সর্বদা এবং ঠিক, একটি একক বিনে। এর মানে হল যে আমরা শুধু একটি হামিং বার্ডের শনাক্তকরণকে অফসেট 2 বিনের মূল্যের উপর ভিত্তি করে তৈরি করতে পারি না এবং বাকিগুলিকে উপেক্ষা করতে পারি না। আমরা চেষ্টা করি এবং তা বোঝার জন্য কয়েকটি বিন্দুতে ডেটা বিশ্লেষণ করার একটি উপায় প্রয়োজন। এই বিষয়ে পরে।

ধাপ 6: নির্মাণ শুরু করুন

নির্মাণ শুরু করুন
নির্মাণ শুরু করুন
নির্মাণ শুরু করুন
নির্মাণ শুরু করুন

আমার প্রোটোটাইপ হামিংবার্ড ডিটেক্টরের জন্য আমি টিনসিতে পিনগুলিতে বিক্রি হওয়া অতিরিক্ত দীর্ঘ পুরুষ-পুরুষ পিন ব্যবহার করেছি। আমি এটি করেছি যাতে আমি টেনসিকে একটি ছোট ঝাল-কম রুটিবোর্ডে প্লাগ করতে পারি। আমি এটি করেছি কারণ আমি ধরে নিয়েছিলাম যে আমি প্রোটোটাইপ এবং রুটিবোর্ডের সাথে অনেক পরিবর্তন করব, আমি এটি পরিবর্তন করতে পারি এবং যেখানেই প্রয়োজন সেখানে কেবল জাম্পার তারগুলি পরিবর্তন করতে পারি। আমি অডিও বোর্ডের নিচের দিকে মহিলা স্ট্রিপগুলি বিক্রি করেছি যা এটি টিনসির উপরে প্লাগ করার অনুমতি দেয়। মাইক্রোফোনটি অডিও বোর্ডের উপরের দিকে বিক্রি করা হয় (ছবি দেখুন)। সমাবেশের আরও বিশদ বিবরণ PJRC সাইটে পাওয়া যাবে:

(https://www.pjrc.com/store/teensy3_audio.html)।

ধাপ 7: একটি ছবি স্ন্যাপ করার জন্য হার্ডওয়্যার

একটি ছবি স্ন্যাপ করার জন্য হার্ডওয়্যার
একটি ছবি স্ন্যাপ করার জন্য হার্ডওয়্যার
একটি ছবি স্ন্যাপ করার জন্য হার্ডওয়্যার
একটি ছবি স্ন্যাপ করার জন্য হার্ডওয়্যার

আমার (ভাল, আমার স্ত্রীর আছে) একটি ক্যানন বিদ্রোহী ডিজিটাল ক্যামেরা আছে। ক্যামেরায় একটি জ্যাক রয়েছে যা আপনাকে একটি ম্যানুয়াল রিমোট শাটার কন্ট্রোল সংযুক্ত করতে দেয়। আমি B&H ফটো থেকে একটি ম্যানুয়াল রিমোট কন্ট্রোল কিনেছি। তারের একটি প্রান্তে ক্যামেরা ফিট করার জন্য সঠিক জ্যাক রয়েছে এবং এটি প্রায় 6 ফুট লম্বা। আমি বোতাম কন্ট্রোল বক্সের কাছে শেষের দিকে তারটি কেটে ফেললাম এবং আমি তারগুলি ফিরিয়ে দিয়েছিলাম এবং সেগুলিকে তিনটি হেডার পিনে বিক্রি করেছিলাম যা আমি ব্রেডবোর্ডে প্লাগ করতে পারতাম। একটি খালি তার আছে যা স্থল এবং দুটি অন্যান্য সংকেত: টিপটি ট্রিগার (গোলাপী) এবং রিং (সাদা) ফোকাস (ছবি দেখুন)। টিপ এবং/অথবা মাটিতে রিং ছোট করা শাটার এবং ক্যামেরায় ফোকাস পরিচালনা করে।

একটি জাম্পার ওয়্যার ব্যবহার করে আমি টিনসি থেকে এমন একটি জায়গায় গিয়েছিলাম যেখানে আমি এটি রুটিবোর্ডে ব্যবহার করতে পারতাম। আমি একটি LED এর অ্যানোডকে টিনসিতে 2 পিন করতে এবং LED এর ক্যাথোডটিকে একটি প্রতিরোধকের (100-220 ohms) মাটিতে সংযুক্ত করেছি। আমি Teensy এর পিন 2 কে 10K রোধকারী এবং রোধকের অন্য দিকে সংযুক্ত করেছি যা আমি একটি NPN ট্রানজিস্টারের বেসের সাথে সংযুক্ত (একটি 2N3904 সর্বত্র পাওয়া যায়)। আমি ট্রানজিস্টরের ইমিটরকে মাটিতে সংযুক্ত করেছি এবং যে কালেক্টরকে আমি ক্যামেরায় যাওয়া তার থেকে সাদা এবং গোলাপী তারের সাথে সংযুক্ত করেছি। খালি তার, আবার, মাটির সাথে সংযুক্ত ছিল। যখনই LED টিনসি দ্বারা চালু করা হবে, NPN ট্রানজিস্টরও চালু হবে এবং এটি ক্যামেরা (এবং ফোকাস) ট্রিগার করবে। পরিকল্পিত দেখুন।

ধাপ 8: সিস্টেম ডিজাইন

ব্যবস্থা পরিকল্পনা
ব্যবস্থা পরিকল্পনা

যেহেতু হামিংবার্ডের ডানা ঝাপটানোর ফ্রিকোয়েন্সিগুলি সম্ভবত কয়েকশ Hz এর উপরে যায় না, তাহলে আমাদের সত্যিই শব্দ ফ্রিকোয়েন্সিগুলি রেকর্ড করার দরকার নেই, বলুন, কয়েকশ Hz। আমাদের যা প্রয়োজন তা হল আমরা যে ফ্রিকোয়েন্সিগুলি চাই তা ফিল্টার করার একটি উপায়। একটি ব্যান্ডপাস বা এমনকি লোপাস ফিল্টার দুর্দান্ত হবে। Traতিহ্যগতভাবে আমরা OpAmps বা সুইচড-ক্যাপাসিটর ফিল্টার ব্যবহার করে হার্ডওয়্যারে একটি ফিল্টার প্রয়োগ করব। কিন্তু ডিজিটাল সিগন্যাল প্রসেসিং এবং টেনসির সফটওয়্যার লাইব্রেরির জন্য ধন্যবাদ, আমরা একটি ডিজিটাল ফিল্টার ব্যবহার করতে পারি (কোন সোল্ডারিং প্রয়োজন নেই … শুধু সফটওয়্যার)।

PJRC- এর একটি দুর্দান্ত GUI উপলব্ধ রয়েছে যা আপনাকে Teensy এবং অডিও বোর্ডের জন্য আপনার অডিও সিস্টেমটি টেনে আনতে এবং ছাড়তে দেয়। আপনি এখানে পেতে পারেন:

www.pjrc.com/teensy/gui/

আমি মাইক্রোফোন (ফিল্টার) থেকে সাউন্ড ফ্রিকোয়েন্সি সীমাবদ্ধ করার জন্য PJRC- প্রদত্ত বাইক্যাড্রেটিক ক্যাসকেড ফিল্টারগুলির একটি ব্যবহার করার সিদ্ধান্ত নিয়েছি। আমি এই ধরনের তিনটি ফিল্টার ক্যাসকেড করেছি এবং সেগুলোকে 100 Hz এ ব্যান্ডপাস অপারেশনের জন্য সেট করেছি। এই ফিল্টারটি সিস্টেমের ফ্রিকোয়েন্সিগুলিকে একটু উপরে এবং আমাদের আগ্রহের ফ্রিকোয়েন্সি থেকে কিছুটা নীচে প্রবেশ করতে দেবে।

ব্লক ডায়াগ্রামে (ছবি দেখুন) i2s1 হল অডিও বোর্ডে অডিও ইনপুট। আমি উভয় অডিও চ্যানেলগুলিকে একটি মিক্সারে এবং তারপর ফিল্টারের সাথে সংযুক্ত করেছি (মাইক্রোফোনটি কেবল একটি চ্যানেল কিন্তু, আমি উভয়ই মিশ্রিত করেছি তাই কোন চ্যানেলটি ছিল তা আমাকে বুঝতে হয়নি… আমাকে অলস বলুন)। আমি ফিল্টারের আউটপুটটি অডিও আউটপুটে চালাই (তাই আমি চাইলে অডিও শুনতে পারি)। আমি ফিল্টার থেকে FFT ব্লকে অডিও সংযুক্ত করেছি। ব্লক ডায়াগ্রামে, sgtl5000_1 লেবেলযুক্ত ব্লকটি অডিও কন্ট্রোলার চিপ। এটি ডায়াগ্রামে কোন সংযোগের প্রয়োজন নেই।

আপনি এই সমস্ত ব্লক নির্মাণ করার পরে আপনি রপ্তানি ক্লিক করুন। এটি একটি ডায়ালগ বক্স নিয়ে আসে যেখানে আপনি ব্লক ডায়াগ্রাম থেকে তৈরি হওয়া কোডটি অনুলিপি করতে পারেন এবং আপনার টিনসি অ্যাপ্লিকেশনটিতে পেস্ট করতে পারেন। আপনি যদি কোডটি দেখেন তবে আপনি দেখতে পাবেন এটি উপাদানগুলির মধ্যে 'সংযোগ' সহ প্রতিটি নিয়ন্ত্রণের তাত্ক্ষণিক।

ধাপ 9: কোড

কোড
কোড

বিস্তারিতভাবে সফটওয়্যারের উপর যেতে এই নির্দেশনায় খুব বেশি জায়গা লাগবে। আমি যা করার চেষ্টা করব তা হল কোডের কিছু মূল বিট তুলে ধরা। কিন্তু এটি একটি খুব বড় অ্যাপ্লিকেশন যাই হোক না কেন। PJRC তে Teensy এবং অডিও লাইব্রেরি/টুলস (https://www.youtube.com/embed/wqt55OAabVs) ব্যবহার করার জন্য একটি দুর্দান্ত ভিডিও টিউটোরিয়াল রয়েছে।

আমি PJRC থেকে কিছু FFT উদাহরণ কোড দিয়ে শুরু করেছি। আমি অডিও সিস্টেম ডিজাইন টুল থেকে যা পেয়েছি তা কোডের শীর্ষে আটকিয়েছি। আপনি যদি এর পরে কোডটি দেখেন তবে আপনি কিছু সূচনা দেখতে পাবেন এবং তারপরে সিস্টেমটি মাইক্রোফোন থেকে অডিও ডিজিটাইজ করা শুরু করে। সফটওয়্যারটি 'চিরতরে' লুপ () এ প্রবেশ করে এবং fft1024_1.available () ফাংশনে কল ব্যবহার করে FFT ডেটা উপলব্ধ হওয়ার জন্য অপেক্ষা করে। যখন এফএফটি ডেটা পাওয়া যায়, আমি ডেটার একটি অনুলিপি ধরি এবং এটি প্রক্রিয়া করি। মনে রাখবেন, আমি শুধুমাত্র ডেটা দখল করি যদি সবচেয়ে বড় বিন পরিমান একটি সেট মানের উপরে থাকে। এই মান হল কিভাবে আমি সিস্টেমের সংবেদনশীলতা সেট করি। যদি বিনগুলি সেট মানের উপরে থাকে তবে আমি তরঙ্গকে স্বাভাবিক করি এবং এটি প্রক্রিয়াকরণের জন্য একটি অস্থায়ী অ্যারেতে স্থানান্তর করি, অন্যথায়, আমি এটি উপেক্ষা করি এবং অন্য FFT এর জন্য অপেক্ষা করতে থাকি। আমার উল্লেখ করা উচিত যে আমি সার্কিটের সংবেদনশীলতা সামঞ্জস্য করতে মাইক্রোফোন লাভ নিয়ন্ত্রণ ফাংশনটি ব্যবহার করি (sgtl5000_1.micGain (50))।

তরঙ্গকে স্বাভাবিক করার মানে হল যে আমি সমস্ত ডাবকে সামঞ্জস্য করি যাতে সর্বাধিক মানযুক্ত বিনটি একের সমান হয়। অন্যান্য সমস্ত ডাব একই অনুপাত দ্বারা স্কেল করা হয়। এটি ডেটা বিশ্লেষণ করা সহজ করে তোলে।

আমি ডেটা বিশ্লেষণ করতে বেশ কয়েকটি অ্যালগরিদম ব্যবহার করেছি কিন্তু, আমি মাত্র দুটি ব্যবহার করে স্থির হয়েছি। একটি অ্যালগরিদম বিন্দু দ্বারা গঠিত বক্ররেখা অধীনে এলাকা গণনা করে। এটি একটি সহজ হিসাব যা শুধু আগ্রহের অঞ্চল জুড়ে ডাবের মান যোগ করে। আমি এই এলাকাটি একটি থ্রেশহোল্ডের উপরে কিনা তা নির্ধারণ করতে তুলনা করি।

অন্যান্য অ্যালগরিদম মানগুলির একটি ধ্রুবক অ্যারে ব্যবহার করে যা একটি সাধারণ FFT উপস্থাপন করে। এই তথ্যটি একটি বাস্তব (অনুকূল) হামিংবার্ড স্বাক্ষরের ফলাফল। আমি এটাকে হেজ বলি। আমি হেজ ডেটাকে সাধারণীকৃত এফএফটি ডেটার সাথে তুলনা করি যাতে সংশ্লিষ্ট বিনগুলি একে অপরের 20% এর মধ্যে থাকে। আমি 20% বেছে নিয়েছি কিন্তু, এই মানটি সহজেই সামঞ্জস্য করা যেতে পারে।

আমি এটাও গণনা করি যে কতবার পৃথক অ্যালগরিদম মনে করে যে তাদের একটি মিল আছে, মানে, মনে হয় তারা একটি হামিংবার্ড শুনতে পায়। আমি এই গণনাটি হামিংবার্ড নির্ধারণের অংশ হিসাবে ব্যবহার করি কারণ, মিথ্যা ট্রিগারিং ঘটতে পারে। উদাহরণস্বরূপ, যখন কোন শব্দ জোরে হয় বা পাখির ডানা ফ্রিকোয়েন্সি থাকে, যেমন হাত তালি দেওয়া, আপনি একটি ট্রিগার পেতে পারেন। কিন্তু যদি গণনা একটি নির্দিষ্ট সংখ্যার উপরে হয় (একটি সংখ্যা যা আমি বেছে নিই) আমি বলি এটি একটি হামিংবার্ড। যখন এটি ঘটে তখন আমি LED চালু করি এটা নির্দেশ করার জন্য যে আমাদের একটি আঘাত আছে এবং এই একই সার্কিট্রি NPN ট্রানজিস্টরের মাধ্যমে ক্যামেরা ট্রিগার করে। সফটওয়্যারে আমি ক্যামেরা ট্রিগার টাইম 2 সেকেন্ড (LED এবং ট্রানজিস্টর চালু থাকার সময়) সেট করেছি।

ধাপ 10: মাউন্ট করা

মাউন্ট করা
মাউন্ট করা

আপনি ছবিতে দেখতে পারেন কিভাবে আমি (unceremoniously) ইলেকট্রনিক্স মাউন্ট। আমি Teensy একটি breadboard মধ্যে প্লাগ ছিল যা অন্য (অব্যবহৃত) Arduino সামঞ্জস্যপূর্ণ (একটি Arduino জিরো আমি মনে করি) সঙ্গে একটি ক্যারিয়ার বোর্ড আটকে ছিল। আমি আমার ডেকের উপর একটি ধাতব শামিয়ানা মেরুতে পুরো জিনিসটি তারের সাথে বেঁধেছি (আমি ক্যামেরায় চলমান তারের সাথে স্ট্রেন ত্রাণও যুক্ত করেছি)। হামিংবার্ড ফিডারের ঠিক পাশেই ছিল মেরু। আমি একটি ছোট LiPo পাওয়ার ইট দিয়ে ইলেকট্রনিক্স চালিত করেছি যা আপনি একটি মৃত সেল ফোন রিচার্জ করতে ব্যবহার করতে পারেন। পাওয়ার ইটের একটি ইউএসবি সংযোগকারী ছিল যা আমি টিনসিতে পাওয়ার চালাতাম। আমি ক্যামেরার কাছে রিমোট ট্রিগার ক্যাবল চালালাম এবং প্লাগ ইন করলাম। আমি কিছু পাখির কর্মের জন্য প্রস্তুত ছিলাম!

ধাপ 11: ফলাফল

ফলাফল
ফলাফল

আমি ফিডারের কাছে একটি ট্রাইপোডে ক্যামেরা সেট আপ করলাম। আমি ক্যামেরাটি ফিডারের একেবারে সামনের প্রান্তে ফোকাস করেছিলাম এবং আমি এটিকে স্পোর্ট মোডে সেট করেছি যা শাটারটি চাপলে বেশ কয়েকটি দ্রুত ছবি তোলে। 2 সেকেন্ডের শাটার ডাউন টাইম দিয়ে আমি প্রতি ট্রিগার ইভেন্টে প্রায় 5 টি ছবি তুলেছি।

আমি এই সফ্টওয়্যারটি নিয়ে প্রথমবার চেষ্টা করে কয়েক ঘণ্টা কাটিয়েছি। আমাকে সংবেদনশীলতা এবং ধারাবাহিক অ্যালগরিদম হিট কাউন্ট সামঞ্জস্য করতে হয়েছিল। আমি অবশেষে এটি tweaked পেয়েছিলাম এবং আমি প্রস্তুত ছিলাম।

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

ধাপ 12: চূড়ান্ত চিন্তা

সর্বশেষ ভাবনা
সর্বশেষ ভাবনা

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

আমাকে বলা হয়েছে সেখানে ওপেন সোর্স মেশিন লার্নিং কোড আছে … হয়তো সিস্টেমটিকে হামিংবার্ড শনাক্ত করার জন্য 'প্রশিক্ষিত' করা যেতে পারে! আমি নিশ্চিত নই যে আমি এটি চেষ্টা করব কিন্তু, সম্ভবত।

এই প্রকল্পে আর কি কি জিনিস যোগ করা যেতে পারে? যদি ক্যামেরার একটি তারিখ/সময় স্ট্যাম্পার থাকে তবে আপনি ছবিগুলিতে সেই তথ্য যোগ করতে পারেন। আরেকটি জিনিস যা আপনি করতে পারেন তা হল অডিও রেকর্ড করা এবং এটি একটি ইউএসডি কার্ডে সংরক্ষণ করা (পিজেআরসি অডিও বোর্ডে একটি স্লট রয়েছে)। সংরক্ষিত অডিও একটি শেখার অ্যালগরিদম প্রশিক্ষণের জন্য ব্যবহার করা যেতে পারে।

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

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

পড়ার জন্য ধন্যবাদ!

আমি যে কোডটি পোস্ট করেছি তা ব্যবহার করতে আপনার Arduino IDE (https://www.arduino.cc/en/Main/Software) লাগবে। আপনার PJRC (https://www.pjrc.com/teensy/td_download.html) থেকে Teensyduino কোডেরও প্রয়োজন হবে।

প্রস্তাবিত: