1. مقدمة
ما الذي ستنشئه
في هذا الدرس التطبيقي حول الترميز، سنتعلم كيفية استخدام TensorFlow Lite For Microcontrollers لتشغيل نموذج التعليم المعمّق على Arduino Nano 33 BLE. تحويل وحدة التحكم الدقيقة إلى "عصا سحرية" رقمية بواسطة المستخدم بالتلويح وإلقاء مجموعة متنوعة من التعاويذ. عندما يحرك المستخدم العصا، يتم تمرير بيانات جهاز الاستشعار متعددة الأبعاد المعقدة هذه والتي قد يصعب على الإنسان إحكامها، كمدخل للنموذج، وهو ما يُخرج تصنيفًا بسيطًا ينبهنا في حالة حدوث واحدة من الحركات المتعددة.
تعلُّم الآلة على وحدات التحكّم الدقيقة
ويمكن استخدام التعلم الآلي لإنشاء أدوات ذكية تجعل المستخدمين أسهل، تمامًا مثل مساعد Google. ولكن غالبًا ما تتطلب هذه التجارب الكثير من العمليات الحسابية أو الموارد التي يمكن أن تشمل خادمًا سحابيًا قويًا أو جهاز كمبيوتر مكتبي. ومع ذلك، أصبح من الممكن الآن تنفيذ استنتاج التعلم الآلي على أجهزة صغيرة ومنخفضة الطاقة، مثل وحدات التحكم الدقيقة.
تُعد وحدات التحكم الدقيقة شائعة للغاية، ورخيصة، وتتطلب القليل من الطاقة، وموثوقة جدًا. وهي تشكّل جزءًا من جميع أنواع الأجهزة المنزلية، مثل الأجهزة المنزلية والسيارات والألعاب. وفي الواقع، يتم إنتاج حوالي 30 مليار جهاز يعمل بوحدة تحكم دقيقة كل عام.
من خلال الاستعانة بأدوات تعلُّم الآلة لوحدات التحكّم الدقيقة الصغيرة، يمكننا تعزيز الذكاء في مليارات الأجهزة التي نستخدمها في حياتنا، بدون الاعتماد على أجهزة باهظة الثمن أو اتصالات إنترنت موثوقة. تخيَّل أنّ أجهزة ذكية يمكنها التكيّف مع روتينك اليومي، وأجهزة استشعار صناعية ذكية يمكنها فهم الفرق بين المشاكل والتشغيل العادي، وألعاب سحرية تساعد الأطفال على التعلّم بطرق مرحة وممتعة.
TensorFlow Lite لأجهزة التحكّم الدقيقة (البرامج)
TensorFlow هو إطار عمل مفتوح المصدر من Google لتعلُّم الآلة يهدف إلى تدريب النماذج وتشغيلها. TensorFlow Lite هو إطار عمل برمجي، وهو إصدار مُحسَّن من TensorFlow يستهدف تشغيل نماذج TensorFlow على الأجهزة الصغيرة منخفضة الطاقة نسبيًا، مثل الهواتف الجوّالة.
TensorFlow Lite لوحدات التحكّم الدقيقة هو إطار عمل برمجي، وهو إصدار محسّن من TensorFlow يستهدف تشغيل نماذج TensorFlow على أجهزة صغيرة منخفضة الطاقة، مثل وحدات التحكّم الدقيقة. كما أنها تلتزم بالقيود المطلوبة في هذه البيئات المضمنة، أي أنها ذات حجم ثنائي صغير، ولا تتطلب دعم نظام التشغيل، أو أي مكتبات C أو C++ قياسية، أو تخصيص ذاكرة ديناميكي، وما إلى ذلك.
Arduino Nano 33 BLE (الأجهزة)
Arduino هي منصة شهيرة مفتوحة المصدر تُستخدم لإنشاء المشاريع الإلكترونية. وتتألف هذه المواد من:
- لوحة كهرباء قابلة للبرمجة (غالبًا ما تكون وحدة تحكم دقيقة) مثل Arduino Nano 33 BLE، وهي مستخدَمة في هذا الدرس التطبيقي حول الترميز.
- بيئة التطوير المتكاملة من Arduino، وهي برنامج يُستخدم لكتابة التعليمات البرمجية للكمبيوتر وتحميله على اللوحة الفعلية.
Arduino Nano 33 BLE هي منصة تستند إلى وحدة تحكُّم دقيقة: جهاز كمبيوتر صغير على لوحة دائرة كهربائية واحدة. فهو يضم معالجًا وذاكرة وأجهزة إدخال وإخراج ما تسمح له بإرسال إشارات رقمية واستقبالها إلى أجهزة أخرى. على عكس الكمبيوتر، لا تكون وحدة التحكم الدقيقة قوية ولا تعمل عادةً بنظام تشغيل. بدلاً من ذلك، فإن لديهم معالجات صغيرة، ولا يوجد الكثير من الذاكرة والبرامج التي تكتبها تعمل مباشرة على الأجهزة. ولكن نظرًا لتصميمها لتكون بسيطة قدر الإمكان، يمكن أن تستهلك وحدة التحكم الدقيقة القليل جدًا من الطاقة.
الأنشطة
- ابدأ إعداد وحدة التحكم الدقيقة Arduino Nano 33 BLE وحوّلها إلى "عصا سحرية" رقمية
- ابدأ إعداد Arduino IDE وثبِّت المكتبات المطلوبة
- نشر البرنامج على الجهاز
- ألقِ مجموعة متنوعة من التعاويذ عن طريق التلويح بالعصا السحرية واطّلِع على التوقعات
المتطلبات
- كمبيوتر محمول يعمل بنظام التشغيل Linux أو MacOS أو Windows
- Arduino Nano BLE Sense 33 (بدون رؤوس)
- كابل Micro USB (إذا كنت تستخدم كمبيوتر محمول بمنفذ USB-C، احصل بدلاً من ذلك على كابل USB-C إلى Micro USB)
- (اختياري) مكعب، حوالي 12 بوصة (30 سم)
- (اختياري) شريط لاصق
2. إعداد وحدة التحكم الدقيقة Arduino
استمتِع بألعاب Arduino
أخرجها من العلبة واسحبها من رغوة التغليف. وهذه مادة موصّلة ويمكن أن تسبب مشاكل في الحالات الأخرى.
توصيله بالكمبيوتر المحمول
- وصِّل كابل USB المصغّر بالمقبس الموجود في الشريحة.
- وصِّل الطرف الآخر من الكابل بمقبس USB على الكمبيوتر المحمول.
- يُفترَض أن يكون ضوء LED السفلي الأيسر على Arduino (أعلى يسار الصورة أدناه) مضاءً.
التعرّف على سير العمل
كما هو موضح في الرسم البياني أعلاه، يُجري مترجم TFLite على Arduino بشكل دوري الاستنتاج على النموذج. يستخدم النموذج بيانات مقياس التسارع التي تمت معالجتها كمدخل وينتج توقّعًا يشير إلى الإيماءة التي حدثت على الأرجح. علاوة على ذلك، ستتم طباعة المخرجات المطلوبة وستضيء مصابيح LED الصحيحة.
3- إعداد Arduino IDE
1. نزِّل Arduino IDE
لنشر البرنامج على وحدة التحكم الدقيقة Arduino، نستخدم Arduino IDE.
بعد تنزيله، عليك تثبيت Arduino IDE وفتحه من خلال النقر على التطبيق الذي يظهر رمزه على النحو التالي:
ستفتح الصفحة المقصودة الأولية على النحو التالي:
2. إعداد مدير مجلس الإدارة
- من قائمة 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"
- أخيرًا، تأكَّد من أنّ اللوحة التي اخترتها هي "Arduino Nano 33 BLE". في الجزء السفلي الأيمن من بيئة التطوير المتكاملة.
3. إعداد المنفذ
من قائمة Arduino، اختَر Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE)
. من المفترض أن يظهر لك محتوى مشابه لما يلي:
4- التحقّق من اتصال اللوحة
من قائمة Arduino، اختَر Tools -> Get Board Info
. من المفترض أن يظهر لك محتوى مشابه لما يلي:
4. تثبيت المكتبات
1. مكتبة TensorFlow Arduino
تحتوي هذه المكتبة على جميع أمثلة TensorFlow Lite لوحدة التحكم الدقيقة، والتي تتضمن رمز مصدر العصا السحرية المطلوب لهذا الدرس التطبيقي حول الترميز.
- من قائمة Arduino، اختَر
Sketch -> Include Library -> Add .ZIP Library...
- أضِف مكتبة TensorFlow Arduino
.zip
التي نزّلتها.
2. LSM9DS1 Arduino مكتبة
تتيح لك هذه المكتبة قراءة قيم مقياس التسارع ومقياس المغناطيسية والجيروسكوب من خلال LSM9DS1 IMU على جهاز Arduino Nano 33 BLE Sense.
- من قائمة Arduino، اختَر
Sketch -> Include -> Manage Libraries...
- البحث عن "
"Arduino_LSM9DS1"
" وتثبيته
5- تحميل المثال وإنشائه
1. تحميل المثال
من قائمة Arduino، اختَر File -> Examples -> Arduino_TensorFlowLite -> magic_wand
لتحميل الرمز النموذجي.
سيؤدي هذا إلى تحميل رمز مصدر العصا السحرية.
2. بناء المثال
انقر على الزر Upload
في نافذة الرسم التخطيطي.
بعد بضع دقائق، من المفترض أن يظهر لك نص أحمر يشير إلى اكتمال الوميض. أثناء عملية التحميل، من المفترض أن يومض مصباح LED الأيمن، ثم يختفي في النهاية.
6- عرض توضيحي
يمكن للعصا السحرية حاليًا اكتشاف 3 إيماءات كما هو موضّح أدناه:
- الجناح: ابدأ من أعلى اليسار وتتبَّع الحرف "W" بعناية لمدة ثانيتين.
- الرنين: ابدأ في وضع مستقيم، وحرِّك العصا في دائرة في اتجاه عقارب الساعة لمدة ثانية واحدة.
- المنحدر: ابدأ بإمساك العصا باتجاه الأعلى، مع توجيه مصابيح LED نحوك. حرِّك العصا لأسفل إلى اليسار بدرجة منحدرة، ثم حرِّك العصا باتجاه اليمين أفقيًا لمدة ثانية واحدة.
توضح الصورة التالية إيماءتين. أولاً، منحدر ثم جناح (استخدم هذا كمرجع للعرض التوضيحي).
لتشغيل العرض التوضيحي، اتبع التعليمات الموضحة أدناه:
- أثناء توصيل USB، اختَر
Tools -> Serial Monitor
من قائمة Arduino. وفي البداية، سيتم فتح شاشة فارغة بدون أي إخراج.
- حرِّك وحدة التحكم الدقيقة من Arduino لتتبع كل شكل من الأشكال أعلاه بعناية ومعرفة ما إذا كانت الشاشة التسلسلية قد رصدت الإيماءة.
- ومن النتائج المعروضة على الشاشة التسلسلية، نلاحظ أنّ العصا السحرية قد اكتشفت كل الأشكال! وستلاحظ أيضًا أنّ مصباح LED الأيمن يشعّ.
7. الخطوات التالية
تهانينا، لقد نجحت في إنشاء أول "عصا سحرية" للتعرف على الإيماءات على وحدة تحكم دقيقة من Arduino!
نأمل أن تكون قد استفدت من هذه المقدمة الموجزة حول عملية تطوير البرامج باستخدام TensorFlow Lite لوحدات التحكّم الدقيقة. إنّ فكرة التعليم المعمّق باستخدام وحدات التحكم الدقيقة هي فكرة جديدة ومشوّقة، وننصحك بتجربتها.
المستندات المرجعية
- يمكنك تدريب النموذج الخاص بك بعد أن أصبحت لديك خبرة في استخدام البرنامج الأساسي.
- يمكنك الاطّلاع على مزيد من المعلومات حول TensorFlow Lite لوحدات التحكّم الدقيقة ( الموقع الإلكتروني وGitHub).
- يمكنك تجربة أمثلة أخرى ومحاولة تشغيلها على Arduino، إذا كان ذلك ممكنًا.
- جرِّب الدرس التطبيقي الآخر حول الترميز: الذكاء الاصطناعي على وحدة تحكُّم دقيقة من خلال TensorFlow Lite وSparkFun Edge.
- يمكنك الرجوع إلى كتاب O'Reilly بعنوان TinyML: Machine Learning with TensorFlow على Arduino وأجهزة التحكّم الصغيرة جدًا التي تتميز بالطاقة القصوى، الذي يتناول تعلّم الآلة على الأجهزة الصغيرة ويستعرض العديد من المشاريع الممتعة. يستند هذا الدرس التطبيقي حول الترميز إلى الفصل 11 من هذا الكتاب.
مع أطيب التحيات،