১. ভূমিকা
আপনি যা তৈরি করবেন
এই কোডল্যাবে, আমরা Arduino Nano 33 BLE- তে একটি ডিপ লার্নিং মডেল চালানোর জন্য TensorFlow Lite For Microcontrollers ব্যবহার করতে শিখব। ব্যবহারকারী মাইক্রোকন্ট্রোলারটিকে একটি ডিজিটাল "জাদুর কাঠি"-তে পরিণত করেন, যা নেড়ে বিভিন্ন ধরনের জাদু করা যায়। ব্যবহারকারী যখন কাঠিটি নাড়ান, তখন এই জটিল, বহুমাত্রিক সেন্সর ডেটা—যা মানুষের পক্ষে দুর্বোধ্য—মডেলে ইনপুট হিসেবে যায়। মডেলটি একটি সাধারণ ক্লাসিফিকেশন আউটপুট দেয়, যা আমাদের জানিয়ে দেয় যে নির্দিষ্ট কয়েকটি নড়াচড়ার মধ্যে কোনটি ঘটেছে।

মাইক্রোকন্ট্রোলারে মেশিন লার্নিং
মেশিন লার্নিং ব্যবহার করে এমন সব বুদ্ধিমান টুল তৈরি করা যায় যা ব্যবহারকারীদের জীবনকে সহজ করে তোলে, যেমন গুগল অ্যাসিস্ট্যান্ট । কিন্তু প্রায়শই, এই অভিজ্ঞতাগুলোর জন্য প্রচুর কম্পিউটেশন বা রিসোর্সের প্রয়োজন হয়, যার মধ্যে একটি শক্তিশালী ক্লাউড সার্ভার বা ডেস্কটপ অন্তর্ভুক্ত থাকতে পারে। তবে, এখন মাইক্রোকন্ট্রোলারের মতো ক্ষুদ্র ও কম শক্তি-চালিত হার্ডওয়্যারেও মেশিন লার্নিং ইনফারেন্স চালানো সম্ভব।
মাইক্রোকন্ট্রোলার অত্যন্ত সহজলভ্য, সস্তা, খুব কম শক্তি খরচ করে এবং খুবই নির্ভরযোগ্য। এগুলো নানা ধরনের গৃহস্থালি যন্ত্রপাতির অংশ: যেমন অ্যাপ্লায়েন্স, গাড়ি এবং খেলনা। প্রকৃতপক্ষে, প্রতি বছর প্রায় ৩০ বিলিয়ন মাইক্রোকন্ট্রোলার-চালিত ডিভাইস উৎপাদিত হয়।

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

TensorFlow হলো মডেল প্রশিক্ষণ এবং চালানোর জন্য গুগলের একটি ওপেন সোর্স মেশিন লার্নিং ফ্রেমওয়ার্ক। TensorFlow Lite হলো একটি সফটওয়্যার ফ্রেমওয়ার্ক, যা TensorFlow-এর একটি অপ্টিমাইজড সংস্করণ এবং এটি মোবাইল ফোনের মতো ছোট ও তুলনামূলকভাবে কম শক্তিশালী ডিভাইসে টেনসরফ্লো মডেল চালানোর জন্য তৈরি করা হয়েছে।
মাইক্রোকন্ট্রোলারের জন্য টেনসরফ্লো লাইট হলো একটি সফটওয়্যার ফ্রেমওয়ার্ক, যা টেনসরফ্লো-এর একটি অপ্টিমাইজড সংস্করণ। এটি মাইক্রোকন্ট্রোলারের মতো ক্ষুদ্র ও কম শক্তি-চালিত হার্ডওয়্যারে টেনসরফ্লো মডেল চালানোর জন্য তৈরি করা হয়েছে। এটি এই ধরনের এমবেডেড পরিবেশে প্রয়োজনীয় সীমাবদ্ধতাগুলো মেনে চলে; যেমন—এর বাইনারি ফাইলের আকার ছোট, এবং এর জন্য অপারেটিং সিস্টেমের সমর্থন, কোনো স্ট্যান্ডার্ড C বা C++ লাইব্রেরি, বা ডাইনামিক মেমরি অ্যালোকেশন ইত্যাদির প্রয়োজন হয় না।
আরডুইনো ন্যানো ৩৩ বিএলই (হার্ডওয়্যার)

আরডুইনো হলো ইলেকট্রনিক প্রকল্প তৈরির জন্য ব্যবহৃত একটি জনপ্রিয় ওপেন-সোর্স প্ল্যাটফর্ম। এটিতে রয়েছে:
- একটি ভৌত প্রোগ্রামেবল সার্কিট বোর্ড (প্রায়শই একটি মাইক্রোকন্ট্রোলার), যেমন এই কোডল্যাবে ব্যবহৃত Arduino Nano 33 BLE।
- আরডুইনো আইডিই (ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট) হলো এমন একটি সফটওয়্যার যা ফিজিক্যাল বোর্ডে কম্পিউটার কোড লিখতে এবং আপলোড করতে ব্যবহৃত হয়।
আরডুইনো ন্যানো ৩৩ বিএলই হলো একটি মাইক্রোকন্ট্রোলার-ভিত্তিক প্ল্যাটফর্ম: একটিমাত্র সার্কিট বোর্ডের উপর থাকা একটি ক্ষুদ্র কম্পিউটার। এতে একটি প্রসেসর, মেমরি এবং আই/ও হার্ডওয়্যার রয়েছে, যা এটিকে অন্যান্য ডিভাইসে ডিজিটাল সংকেত পাঠাতে ও গ্রহণ করতে সক্ষম করে। কম্পিউটারের মতো শক্তিশালী না হওয়ায়, একটি মাইক্রোকন্ট্রোলার সাধারণত কোনো অপারেটিং সিস্টেম চালায় না। এর পরিবর্তে, এগুলোতে ছোট প্রসেসর ও অল্প মেমরি থাকে এবং আপনার লেখা প্রোগ্রামগুলো সরাসরি হার্ডওয়্যারে চলে। কিন্তু এগুলোকে যথাসম্ভব সহজভাবে ডিজাইন করা হয় বলে, একটি মাইক্রোকন্ট্রোলার খুব কম শক্তি ব্যবহার করতে পারে।
আপনি যা করবেন
- Arduino Nano 33 BLE মাইক্রোকন্ট্রোলারটি সেটআপ করে এটিকে একটি ডিজিটাল 'জাদুর কাঠি'-তে পরিণত করুন।
- Arduino IDE সেটআপ করুন এবং প্রয়োজনীয় লাইব্রেরিগুলো ইনস্টল করুন।
- ডিভাইসটিতে প্রোগ্রামটি স্থাপন করুন।
- জাদুর কাঠি নেড়ে বিভিন্ন ধরনের জাদু করুন এবং ভবিষ্যদ্বাণীগুলো দেখুন।
আপনার যা যা লাগবে
- লিনাক্স, ম্যাকওএস বা উইন্ডোজ ল্যাপটপ
- আরডুইনো ন্যানো বিএলই সেন্স ৩৩ (হেডার ছাড়া)
- মাইক্রো ইউএসবি কেবল (যদি আপনার ল্যাপটপটি ইউএসবি-সি হয়, তবে এর পরিবর্তে একটি ইউএসবি-সি থেকে মাইক্রো ইউএসবি কেবল নিন)
- (ঐচ্ছিক) লাঠি, প্রায় ১২ ইঞ্চি (৩০ সেমি) লম্বা
- (ঐচ্ছিক) আঠালো টেপ
২. আরডুইনো মাইক্রোকন্ট্রোলার সেটআপ করুন
আপনার আরডুইনো আনপ্যাক করুন
বাক্স থেকে এটি বের করুন এবং প্যাকিং ফোম থেকে এটিকে বের করে নিন। এটি বিদ্যুৎ পরিবাহী, এবং তা না হলে সমস্যা সৃষ্টি করতে পারে!

আপনার ল্যাপটপে এটি প্লাগ করুন
- মাইক্রোইউএসবি কেবলটি চিপের সকেটে লাগান।
- ক্যাবলটির অপর প্রান্তটি আপনার ল্যাপটপের একটি ইউএসবি সকেটে লাগিয়ে দিন।
- আরডুইনোর নিচের বাম দিকের এলইডি-টি (নিচের ছবিতে উপরের বাম দিকে) জ্বলে উঠবে।

কার্যপ্রবাহের সাথে পরিচিত হন।

উপরের ডায়াগ্রামে যেমন দেখানো হয়েছে, আরডুইনোর TFLite ইন্টারপ্রেটারটি পর্যায়ক্রমে মডেলটির উপর ইনফারেন্স চালায়। মডেলটি প্রক্রিয়াকৃত অ্যাক্সেলেরোমিটার ডেটাকে ইনপুট হিসেবে ব্যবহার করে এবং একটি পূর্বাভাস আউটপুট দেয়, যা থেকে সবচেয়ে সম্ভাব্য অঙ্গভঙ্গিটি অনুমান করা যায়। এছাড়াও, একটি কাঙ্ক্ষিত আউটপুট প্রিন্ট করা হয় এবং সঠিক এলইডিগুলো জ্বলে ওঠে।
৩. Arduino IDE সেটআপ করুন
১. Arduino IDE ডাউনলোড করুন।
আরডুইনো মাইক্রোকন্ট্রোলারে প্রোগ্রামটি স্থাপন করার জন্য আমরা আরডুইনো আইডিই (Arduino IDE) ব্যবহার করি।
ডাউনলোড করার পর, এইরকম আইকনযুক্ত অ্যাপ্লিকেশনটিতে ক্লিক করে Arduino IDE ইনস্টল ও ওপেন করুন: 
প্রাথমিক ল্যান্ডিং পেজটি নিম্নরূপভাবে খুলবে:

২. বোর্ড ম্যানেজার সেটআপ করুন
- আরডুইনো মেনু থেকে,
Tools -> Board: "Arduino .." —> Boards Managerনির্বাচন করুন। -
"Arduino Nano 33 BLE"লিখে সার্চ করুন এবংArduino nRF528x Boards (Mbed OS)ইনস্টল করুন। এর ফলে আমাদের Arduino Nano 33 BLE মাইক্রোকন্ট্রোলারটি Arduino IDE দ্বারা সমর্থিত হবে।
- আরডুইনো মেনু থেকে,
Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"নির্বাচন করুন।

- অবশেষে, IDE-র নীচের ডানদিকে যাচাই করে নিন যে আপনার নির্বাচিত বোর্ডটি 'Arduino Nano 33 BLE' কিনা।

৩. পোর্টটি সেটআপ করুন
আরডুইনো মেনু থেকে, Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE) নির্বাচন করুন। আপনি এর মতো কিছু দেখতে পাবেন:

৪. বোর্ডের সংযোগ পরীক্ষা করুন।
আরডুইনো মেনু থেকে, Tools -> Get Board Info নির্বাচন করুন। আপনি এর মতো কিছু দেখতে পাবেন:

৪. লাইব্রেরি ইনস্টল করুন
১. টেনসরফ্লো আরডুইনো লাইব্রেরি
এই লাইব্রেরিতে মাইক্রোকন্ট্রোলারের জন্য টেনসরফ্লো লাইট-এর সমস্ত উদাহরণ রয়েছে, যার মধ্যে এই কোডল্যাবের জন্য প্রয়োজনীয় ম্যাজিক ওয়ান্ড সোর্স কোডও অন্তর্ভুক্ত।
- আরডুইনো মেনু থেকে,
Sketch -> Include Library -> Add .ZIP Library...নির্বাচন করুন। - আপনার ডাউনলোড করা TensorFlow Arduino Library
.zipফাইলটি যোগ করুন।
২. LSM9DS1 আরডুইনো লাইব্রেরি
এই লাইব্রেরিটি আপনাকে আপনার Arduino Nano 33 BLE Sense-এর LSM9DS1 IMU থেকে অ্যাক্সেলেরোমিটার, ম্যাগনেটোমিটার এবং জাইরোস্কোপের মান পড়তে দেয়।
- আরডুইনো মেনু থেকে,
Sketch -> Include -> Manage Libraries...নির্বাচন করুন। -
"Arduino_LSM9DS1"অনুসন্ধান করুন এবং ইনস্টল করুন।
৫. উদাহরণটি লোড এবং বিল্ড করুন
১. উদাহরণটি লোড করুন
স্যাম্পল কোডটি লোড করতে Arduino মেনু থেকে File -> Examples -> Arduino_TensorFlowLite -> magic_wand নির্বাচন করুন।

এটি ম্যাজিক ওয়ান্ড সোর্স কোড লোড করবে।

২. উদাহরণটি তৈরি করুন
স্কেচ উইন্ডোতে থাকা Upload বাটনটিতে ক্লিক করুন।

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

৬. ডেমো
ম্যাজিক ওয়ান্ডটি বর্তমানে নিচে দেখানো ৩টি অঙ্গভঙ্গি শনাক্ত করতে পারে: 
- ডানা : উপরের বাম কোণ থেকে শুরু করে দুই সেকেন্ড ধরে সাবধানে 'W' অক্ষরটি আঁকুন।
- রিং : সোজাভাবে শুরু করুন, এক সেকেন্ডের জন্য দণ্ডটি ঘড়ির কাঁটার দিকে বৃত্তাকারে ঘোরান।
- ঢাল : ওয়ান্ডটি ওপরের দিকে মুখ করে ধরুন, এলইডিগুলো আপনার দিকে থাকবে। ওয়ান্ডটি এক সেকেন্ডের জন্য প্রথমে বাম দিকে ঢালুভাবে নিচে নামান এবং তারপর ডান দিকে আনুভূমিকভাবে নাড়ান।
নিচের ছবিতে দুটি অঙ্গভঙ্গি দেখানো হয়েছে। প্রথমে একটি স্লোপ এবং তারপর একটি উইং (আপনার ডেমোর জন্য এটিকে রেফারেন্স হিসেবে ব্যবহার করুন)।

ডেমোটি চালানোর জন্য, নিচে দেওয়া নির্দেশাবলী অনুসরণ করুন:
- ইউএসবি সংযুক্ত থাকা অবস্থায়, আরডুইনো মেনু থেকে
Tools -> Serial Monitorনির্বাচন করুন। এটি প্রাথমিকভাবে কোনো আউটপুট ছাড়া একটি ফাঁকা স্ক্রিন খুলবে।

- উপরের প্রতিটি আকৃতি সাবধানে অনুসরণ করার জন্য আরডুইনো মাইক্রোকন্ট্রোলারটি নাড়াচাড়া করুন এবং দেখুন সিরিয়াল মনিটর অঙ্গভঙ্গিটি শনাক্ত করতে পারে কি না।

- সিরিয়াল মনিটরের আউটপুট থেকে আমরা দেখতে পাচ্ছি যে, ম্যাজিক ওয়ান্ডটি সত্যিই সব আকৃতিগুলো শনাক্ত করেছে! আপনি আরও লক্ষ্য করবেন যে ডানদিকের এলইডি-টি জ্বলে উঠেছে।
৭. পরবর্তী পদক্ষেপ
অভিনন্দন, আপনি সফলভাবে একটি আরডুইনো মাইক্রোকন্ট্রোলারে আপনার প্রথম অঙ্গভঙ্গি-শনাক্তকারী 'জাদুর কাঠি' তৈরি করেছেন!
আমরা আশা করি, মাইক্রোকন্ট্রোলারের জন্য টেনসরফ্লো লাইট ব্যবহার করে ডেভেলপমেন্টের এই সংক্ষিপ্ত পরিচিতিটি আপনারা উপভোগ করেছেন। মাইক্রোকন্ট্রোলারে ডিপ লার্নিং-এর ধারণাটি নতুন এবং উত্তেজনাপূর্ণ, এবং আমরা আপনাদেরকে এটি নিয়ে পরীক্ষা-নিরীক্ষা করার জন্য উৎসাহিত করছি!
রেফারেন্স নথি
- এখন যেহেতু বেসিক প্রোগ্রামটি নিয়ে কাজ করার অভিজ্ঞতা আপনার হয়েছে, নিজের মডেলকে প্রশিক্ষণ দিন ।
- মাইক্রোকন্ট্রোলারের জন্য TensorFlow Lite সম্পর্কে আরও জানুন ( ওয়েবসাইট , গিটহাব )।
- অন্যান্য উদাহরণগুলো চেষ্টা করুন এবং আর্ডুইনো সমর্থিত হলে সেগুলোতে চালানোর চেষ্টা করুন।
- অন্য কোডল্যাবটি চেষ্টা করুন: TensorFlow Lite এবং SparkFun Edge ব্যবহার করে মাইক্রোকন্ট্রোলারে AI
- O'Reilly-র বই TinyML: Machine Learning with TensorFlow on Arduino and Ultra-Low Power Micro-Controllers দেখুন, যেখানে ক্ষুদ্র ডিভাইসে মেশিন লার্নিংয়ের সাথে পরিচয় করিয়ে দেওয়া হয়েছে এবং বেশ কিছু মজার প্রজেক্ট ধাপে ধাপে দেখানো হয়েছে। এই কোডল্যাবটি বইটির ১১ নম্বর অধ্যায়ের উপর ভিত্তি করে তৈরি।

ধন্যবাদ, এবং নির্মাণ করতে মজা নিন!