1. परिचय
आपको क्या बनाने को मिलेगा
इस कोडलैब में, हम TensorFlow Lite For Microcontrollers का इस्तेमाल करके, Arduino Nano 33 BLE पर डीप लर्निंग मॉडल चलाने का तरीका जानेंगे. उपयोगकर्ता, माइक्रो कंट्रोलर को डिजिटल "जादुई छड़ी" में बदल देता है, ताकि वह उसे घुमाकर अलग-अलग तरह के जादू कर सके. जब उपयोगकर्ता छड़ी को घुमाता है, तो यह जटिल और कई डाइमेंशन वाला सेंसर डेटा, मॉडल को इनपुट के तौर पर भेजा जाता है. इस डेटा को कोई इंसान नहीं समझ सकता. मॉडल, इस डेटा के आधार पर एक आसान क्लासिफ़िकेशन आउटपुट करता है. इससे हमें यह पता चलता है कि छड़ी को कई तरह से घुमाया गया है या नहीं.

माइक्रोकंट्रोलर पर मशीन लर्निंग
मशीन लर्निंग का इस्तेमाल करके, ऐसे स्मार्ट टूल बनाए जा सकते हैं जो लोगों की ज़िंदगी को आसान बनाते हैं. जैसे, Google Assistant. हालांकि, अक्सर इन अनुभवों के लिए बहुत ज़्यादा कंप्यूटेशन या संसाधनों की ज़रूरत होती है. इनमें एक पावरफ़ुल क्लाउड सर्वर या डेस्कटॉप शामिल हो सकता है. हालांकि, अब मशीन लर्निंग इन्फ़्रेंस को छोटे और कम पावर वाले हार्डवेयर, जैसे कि माइक्रोकंट्रोलर पर चलाया जा सकता है.
माइक्रोकंट्रोलर का इस्तेमाल बहुत ज़्यादा किया जाता है. ये सस्ते होते हैं और इनमें बहुत कम ऊर्जा की ज़रूरत होती है. साथ ही, ये बहुत भरोसेमंद होते हैं. ये हर तरह के घरेलू डिवाइसों का हिस्सा हैं. जैसे, उपकरण, कारें, और खिलौने. हर साल, माइक्रोकंट्रोलर से चलने वाले करीब 30 अरब डिवाइस बनाए जाते हैं.

मशीन लर्निंग को छोटे-छोटे माइक्रोकंट्रोलर में शामिल करके, हम उन अरबों डिवाइसों को ज़्यादा स्मार्ट बना सकते हैं जिनका इस्तेमाल हम अपनी ज़िंदगी में करते हैं. इसके लिए, हमें महंगे हार्डवेयर या भरोसेमंद इंटरनेट कनेक्शन की ज़रूरत नहीं होगी. कल्पना करें कि आपके घर में ऐसे स्मार्ट डिवाइस हैं जो आपके रोज़ के रूटीन के हिसाब से काम करते हैं. ऐसे इंडस्ट्रियल सेंसर हैं जो समस्याओं और सामान्य ऑपरेशन के बीच के अंतर को समझते हैं. साथ ही, ऐसे जादुई खिलौने हैं जो बच्चों को मज़ेदार और दिलचस्प तरीके से सीखने में मदद करते हैं.
माइक्रोकंट्रोलर के लिए TensorFlow Lite (सॉफ़्टवेयर)

TensorFlow, Google का ओपन सोर्स मशीन लर्निंग फ़्रेमवर्क है. इसका इस्तेमाल मॉडल को ट्रेनिंग देने और उन्हें चलाने के लिए किया जाता है. TensorFlow Lite एक सॉफ़्टवेयर फ़्रेमवर्क है. यह TensorFlow का ऑप्टिमाइज़ किया गया वर्शन है. इसे मोबाइल फ़ोन जैसे छोटे और कम पावर वाले डिवाइसों पर TensorFlow मॉडल चलाने के लिए बनाया गया है.
TensorFlow Lite For Microcontrollers एक सॉफ़्टवेयर फ़्रेमवर्क है. यह TensorFlow का ऑप्टिमाइज़ किया गया वर्शन है. इसे छोटे और कम पावर वाले हार्डवेयर, जैसे कि माइक्रोकंट्रोलर पर TensorFlow मॉडल चलाने के लिए बनाया गया है. यह एम्बेड किए गए इन एनवायरमेंट में ज़रूरी शर्तों का पालन करता है.जैसे, इसका बाइनरी साइज़ छोटा होता है, इसे ऑपरेटिंग सिस्टम, किसी भी स्टैंडर्ड C या C++ लाइब्रेरी या डाइनैमिक मेमोरी ऐलोकेशन की ज़रूरत नहीं होती.
Arduino Nano 33 BLE (हार्डवेयर)

Arduino एक लोकप्रिय ओपन-सोर्स प्लैटफ़ॉर्म है. इसका इस्तेमाल इलेक्ट्रॉनिक प्रोजेक्ट बनाने के लिए किया जाता है. इसमें ये शामिल हैं:
- प्रोग्राम किया जा सकने वाला फ़िज़िकल सर्किट बोर्ड (अक्सर माइक्रोकंट्रोलर), जैसे कि इस कोडलैब में इस्तेमाल किया गया Arduino Nano 33 BLE.
- Arduino IDE (इंटिग्रेटेड डेवलपमेंट एनवायरमेंट), एक ऐसा सॉफ़्टवेयर जिसका इस्तेमाल कंप्यूटर कोड लिखने और उसे फ़िज़िकल बोर्ड पर अपलोड करने के लिए किया जाता है.
Arduino Nano 33 BLE, माइक्रोकंट्रोलर पर आधारित एक प्लैटफ़ॉर्म है. यह एक सर्किट बोर्ड पर मौजूद छोटा कंप्यूटर होता है. इसमें प्रोसेसर, मेमोरी, और I/O हार्डवेयर होता है. इससे यह अन्य डिवाइसों को डिजिटल सिग्नल भेज और उनसे डिजिटल सिग्नल पा सकता है. कंप्यूटर के मुकाबले, माइक्रोकंट्रोलर ज़्यादा पावरफुल नहीं होता. साथ ही, आम तौर पर इसमें ऑपरेटिंग सिस्टम नहीं होता. इनमें छोटे प्रोसेसर होते हैं और मेमोरी भी ज़्यादा नहीं होती. साथ ही, इनमें लिखे गए प्रोग्राम सीधे हार्डवेयर पर चलते हैं. हालांकि, इन्हें इस तरह से डिज़ाइन किया जाता है कि ये कम से कम ऊर्जा का इस्तेमाल करें. इसलिए, एक माइक्रोकंट्रोलर बहुत कम ऊर्जा का इस्तेमाल कर सकता है.
आपको क्या करना होगा
- Arduino Nano 33 BLE माइक्रोकंट्रोलर सेट अप करें और इसे डिजिटल "मैजिक वैंड" में बदलें
- Arduino IDE को सेट अप करें और ज़रूरी लाइब्रेरी इंस्टॉल करें
- प्रोग्राम को डिवाइस पर डिप्लॉय करना
- जादुई छड़ी घुमाकर अलग-अलग मंत्रों का इस्तेमाल करें और अनुमान देखें
आपको इन चीज़ों की ज़रूरत होगी
- Linux, MacOS या Windows लैपटॉप
- Arduino Nano BLE Sense 33 (बिना हेडर के)
- माइक्रो यूएसबी केबल (अगर आपके पास यूएसबी-सी वाला लैपटॉप है, तो यूएसबी-सी से माइक्रो यूएसबी केबल लें)
- (ज़रूरी नहीं) स्टिक, करीब 12 इंच (30 सेमी लंबी)
- (ज़रूरी नहीं) स्टिकी टेप
2. Arduino माइक्रो कंट्रोलर सेट अप करना
Arduino को अनपैक करना
इसे बॉक्स से हटाएं और पैकिंग फ़ोम से बाहर निकालें. यह बिजली का सुचालक होता है. इसलिए, इसे किसी और काम के लिए इस्तेमाल करने पर समस्याएं हो सकती हैं!

इसे अपने लैपटॉप से कनेक्ट करें
- माइक्रोयूएसबी केबल को चिप के सॉकेट में लगाएं.
- केबल के दूसरे सिरे को अपने लैपटॉप के यूएसबी सॉकेट में लगाएं.
- Arduino पर सबसे नीचे बाईं ओर मौजूद एलईडी (नीचे दी गई इमेज में सबसे ऊपर बाईं ओर) चालू होनी चाहिए.

वर्कफ़्लो के बारे में जानकारी

ऊपर दिए गए डायग्राम में दिखाया गया है कि Arduino पर मौजूद TFLite इंटरप्रेटर, मॉडल पर समय-समय पर अनुमान लगाता है. यह मॉडल, प्रोसेस किए गए ऐक्सिलरोमीटर डेटा को इनपुट के तौर पर इस्तेमाल करता है. साथ ही, अनुमान के तौर पर एक आउटपुट देता है. इससे यह पता चलता है कि कौनसी जेस्चर सबसे ज़्यादा बार हुई है. इसके बाद, मनचाहा आउटपुट प्रिंट हो जाएगा और सही एलईडी लाइटें जल जाएंगी.
3. Arduino IDE को सेटअप करना
1. Arduino IDE डाउनलोड करें
प्रोग्राम को Arduino Microcontroller पर डिप्लॉय करने के लिए, हम Arduino IDE का इस्तेमाल करते हैं.
इसे डाउनलोड करने के बाद, Arduino IDE को इंस्टॉल करें और खोलें. इसके लिए, उस ऐप्लिकेशन पर क्लिक करें जिसका आइकॉन ऐसा दिखता है: 
शुरुआती लैंडिंग पेज इस तरह खुलेगा:

2. Board Manager को सेट अप करना
- Arduino मेन्यू में जाकर,
Tools -> Board: "Arduino .." —> Boards Managerचुनें "Arduino Nano 33 BLE"खोजें औरArduino nRF528x Boards (Mbed OS)इंस्टॉल करें. इससे यह पक्का हो जाएगा कि Arduino Nano 33 BLE माइक्रो कंट्रोलर, Arduino IDE के साथ काम करता है.
- Arduino मेन्यू में जाकर,
Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"चुनें

- आखिर में, पुष्टि करें कि आपने जो बोर्ड चुना है वह IDE में सबसे नीचे दाईं ओर "Arduino Nano 33 BLE" के तौर पर दिख रहा हो.

3. पोर्ट सेट अप करना
Arduino मेन्यू में जाकर, Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE) को चुनें. आपको कुछ ऐसा दिखेगा:

4. बोर्ड के कनेक्शन की जांच करना
Arduino मेन्यू में जाकर, Tools -> Get Board Info को चुनें. आपको कुछ ऐसा दिखेगा:

4. लाइब्रेरी इंस्टॉल करना
1. TensorFlow Arduino Library
इस लाइब्रेरी में, माइक्रोकंट्रोलर के लिए TensorFlow Lite के सभी उदाहरण शामिल हैं. इनमें, इस कोडलैब के लिए ज़रूरी मैजिक वैंड का सोर्स कोड भी शामिल है.
- Arduino मेन्यू में जाकर,
Sketch -> Include Library -> Add .ZIP Library...चुनें - डाउनलोड की गई TensorFlow Arduino Library
.zipजोड़ें.
2. LSM9DS1 Arduino Library
इस लाइब्रेरी की मदद से, Arduino Nano 33 BLE Sense पर LSM9DS1 IMU से ऐक्सिलरोमीटर, मैग्नेटोमीटर, और जायरोस्कोप की वैल्यू पढ़ी जा सकती हैं.
- Arduino मेन्यू में जाकर,
Sketch -> Include -> Manage Libraries...चुनें "Arduino_LSM9DS1"खोजें और इंस्टॉल करें.
5. उदाहरण लोड करना और बनाना
1. उदाहरण लोड करें
संपल कोड लोड करने के लिए, Arduino मेन्यू में जाकर File -> Examples -> Arduino_TensorFlowLite -> magic_wand चुनें.

इससे मैजिक वैंड का सोर्स कोड लोड हो जाएगा.

2. उदाहरण बनाना
स्केच विंडो में मौजूद, Upload बटन पर क्लिक करें.

कुछ मिनट बाद, आपको लाल रंग का टेक्स्ट दिखेगा. इससे पता चलेगा कि फ़्लैशिंग पूरी हो गई है. अपलोड के दौरान, दाईं ओर मौजूद एलईडी लाइट जलती-बुझती रहनी चाहिए. अपलोड पूरा होने के बाद, यह बंद हो जाएगी.

6. डेमो
फ़िलहाल, मैजिक वैंड से तीन जेस्चर का पता लगाया जा सकता है. ये जेस्चर यहां दिखाए गए हैं: 
- विंग: ऊपर बाएँ कोने से शुरू करें और दो सेकंड तक "W" अक्षर को ध्यान से ट्रेस करें.
- रिंग: सीधे खड़े हो जाएं. छड़ी को घड़ी की सुई की दिशा में एक सेकंड तक घुमाएं.
- स्लोप: वैंड को ऊपर की ओर करके पकड़ें. एलईडी आपकी तरफ़ होनी चाहिए. छड़ी को बाईं ओर झुकाकर नीचे की ओर ले जाएं. इसके बाद, उसे एक सेकंड के लिए दाईं ओर हॉरिज़ॉन्टल तरीके से घुमाएं.
इस इमेज में दो जेस्चर दिखाए गए हैं. पहले ढलान और फिर विंग (इसे अपने डेमो के लिए रेफ़रंस के तौर पर इस्तेमाल करें).

डेमो चलाने के लिए, यहां दिए गए निर्देशों का पालन करें:
- यूएसबी प्लग इन करने के बाद, Arduino मेन्यू में जाकर
Tools -> Serial Monitorचुनें. शुरुआत में, यह बिना किसी आउटपुट के एक खाली स्क्रीन खोलेगा.

- ऊपर दिए गए हर शेप को ध्यान से ट्रेस करने के लिए, Arduino माइक्रोकंट्रोलर को घुमाएं. देखें कि सीरियल मॉनिटर, जेस्चर का पता लगाता है या नहीं.

- सीरियल मॉनिटर में मौजूद आउटपुट से पता चलता है कि मैजिक वैंड ने सभी शेप का पता लगा लिया है! आपको यह भी दिखेगा कि दाईं ओर की एलईडी लाइट जल रही है.
7. अगले चरण
बधाई हो, आपने Arduino माइक्रोकंट्रोलर पर, जेस्चर पहचानने वाली पहली "मैजिक वैंड" बना ली है!
हमें उम्मीद है कि आपको माइक्रोकंट्रोलर के लिए TensorFlow Lite का इस्तेमाल करके डेवलपमेंट करने के बारे में यह छोटी सी जानकारी पसंद आई होगी. माइक्रोकंट्रोलर पर डीप लर्निंग का कॉन्सेप्ट नया और दिलचस्प है. हम आपको इसे आज़माने के लिए बढ़ावा देते हैं!
रेफ़रंस दस्तावेज़
- अब आपके पास बुनियादी प्रोग्राम के साथ काम करने का अनुभव है. इसलिए, अपना मॉडल ट्रेन करें.
- माइक्रोकंट्रोलर के लिए TensorFlow Lite के बारे में ज़्यादा जानें ( वेबसाइट, GitHub).
- अन्य उदाहरण आज़माएं. अगर Arduino के साथ काम करता है, तो उसे Arduino पर चलाकर देखें.
- यह कोडलैब आज़माएं: TensorFlow Lite और SparkFun Edge की मदद से माइक्रोकंट्रोलर पर एआई
- O'Reilly की किताब TinyML: Machine Learning with TensorFlow on Arduino and Ultra-Low Power Micro-Controllers पढ़ें. इसमें छोटे डिवाइसों पर मशीन लर्निंग के बारे में बताया गया है. साथ ही, इसमें कई मज़ेदार प्रोजेक्ट के बारे में भी जानकारी दी गई है. यह कोडलैब, इस किताब के 11वें चैप्टर पर आधारित है.

धन्यवाद, और मज़े से वीडियो बनाएं!