عصا سحرية تعتمد على الذكاء الاصطناعي مع TensorFlow Lite لاستخدامها في وحدات التحكّم الصغيرة وArduino

1. مقدمة

ما ستنشئه

في هذا الدرس التطبيقي حول الترميز، سنتعلّم كيفية استخدام TensorFlow Lite For Microcontrollers لتشغيل نموذج تعلُّم معمّق على Arduino Nano 33 BLE. يحوّل المستخدم وحدة التحكّم الدقيق إلى "عصا سحرية" رقمية يمكنه التلويح بها وإلقاء مجموعة متنوعة من التعاويذ. عندما يحرّك المستخدم العصا، يتم تمرير بيانات جهاز الاستشعار المعقّدة والمتعددة الأبعاد التي لا يمكن للبشر فهمها كمدخل إلى النموذج، الذي يعرض تصنيفًا بسيطًا ينبّهنا في حال حدوث إحدى الحركات المتعددة.

9208eb1207211349.gif

تعلُّم الآلة على المتحكّمات الدقيقة

يمكن استخدام تعلُّم الآلة لإنشاء أدوات ذكية تسهّل حياة المستخدمين، مثل مساعد Google. ولكن غالبًا ما تتطلّب هذه التجارب الكثير من العمليات الحسابية أو الموارد التي يمكن أن تشمل خادمًا سحابيًا قويًا أو جهاز كمبيوتر. ومع ذلك، أصبح من الممكن الآن تنفيذ استنتاج تعلُّم الآلة على أجهزة صغيرة منخفضة الطاقة، مثل وحدات التحكّم الدقيقة.

تُستخدَم وحدات التحكّم الدقيقة على نطاق واسع، وهي رخيصة الثمن، ولا تتطلّب سوى القليل من الطاقة، كما أنّها موثوقة للغاية. وهي جزء من جميع أنواع الأجهزة المنزلية، مثل الأجهزة والسيارات والألعاب. في الواقع، يتم إنتاج حوالي 30 مليار جهاز يعمل بوحدة تحكّم دقيقة كل عام.

1914a419dfacf0b5.jpeg

من خلال دمج تعلُّم الآلة في وحدات التحكّم الدقيقة الصغيرة، يمكننا تعزيز ذكاء مليارات الأجهزة التي نستخدمها في حياتنا، بدون الاعتماد على أجهزة باهظة الثمن أو اتصالات إنترنت موثوقة. تخيَّل أجهزة منزلية ذكية يمكنها التكيّف مع روتينك اليومي، وأجهزة استشعار صناعية ذكية يمكنها التمييز بين المشاكل والتشغيل العادي، وألعاب سحرية يمكنها مساعدة الأطفال على التعلّم بطرق ممتعة ومسلية.

TensorFlow Lite For Microcontrollers (برنامج)

864114d0c2b4c919.png

TensorFlow هو إطار عمل مفتوح المصدر من Google لتعلُّم الآلة يُستخدم في تدريب النماذج وتشغيلها. ‫TensorFlow Lite هو إطار عمل برمجي، وهو إصدار محسّن من TensorFlow، يهدف إلى تشغيل نماذج TensorFlow على أجهزة صغيرة ذات طاقة منخفضة نسبيًا، مثل الهواتف الجوّالة.

‫TensorFlow Lite For Microcontrollers هو إطار عمل برمجي، وهو إصدار محسّن من TensorFlow، يستهدف تشغيل نماذج TensorFlow على أجهزة صغيرة منخفضة الطاقة، مثل المتحكّمات الدقيقة. وهي تلتزم بالقيود المطلوبة في هذه البيئات المضمّنة، أي أنّ حجمها الثنائي صغير، ولا تتطلّب دعم نظام التشغيل أو أي مكتبات C أو C++ عادية أو تخصيص الذاكرة الديناميكية وما إلى ذلك.

‫Arduino Nano 33 BLE (أجهزة)

bcd452d4d660efa9.jpeg

Arduino هي منصة مفتوحة المصدر شائعة تُستخدم لإنشاء مشاريع إلكترونية. ويتألف من:

  1. لوحة دوائر مادية قابلة للبرمجة (غالبًا ما تكون وحدة تحكّم دقيقة)، مثل Arduino Nano 33 BLE المستخدَمة في هذا الدرس العملي
  2. بيئة التطوير المتكاملة (IDE) في Arduino، وهي برنامج يُستخدم لكتابة رمز الكمبيوتر وتحميله إلى اللوحة المادية

‫Arduino Nano 33 BLE هي منصة تستند إلى وحدة تحكّم دقيقة: جهاز كمبيوتر صغير على لوحة دوائر واحدة. ويحتوي على معالج وذاكرة ووحدات إدخال وإخراج تتيح له إرسال الإشارات الرقمية وتلقّيها من الأجهزة الأخرى. على عكس الكمبيوتر، لا يتمتع المتحكّم الدقيق بقوة معالجة كبيرة ولا يشغّل عادةً نظام تشغيل. بدلاً من ذلك، تحتوي على معالِجات صغيرة وذاكرة محدودة، ويتم تشغيل البرامج التي تكتبها مباشرةً على الأجهزة. ولكن بما أنّها مصمَّمة لتكون بسيطة قدر الإمكان، يمكن أن تستخدم وحدة التحكّم الدقيق قدرًا ضئيلاً جدًا من الطاقة.

المهام التي ستنفذها

  • إعداد وحدة التحكّم الدقيق Arduino Nano 33 BLE وتحويلها إلى "عصا سحرية" رقمية
  • إعداد بيئة تطوير Arduino المتكاملة وتثبيت المكتبات المطلوبة
  • نشر البرنامج على الجهاز
  • إلقاء مجموعة متنوعة من التعاويذ من خلال التلويح بالعصا السحرية وعرض التوقعات

المتطلبات

  • كمبيوتر محمول يعمل بنظام التشغيل Linux أو MacOS أو Windows
  • ‫Arduino Nano BLE Sense 33 (بدون رؤوس)
  • كابل USB صغير (إذا كان لديك كمبيوتر محمول مزوّد بمنفذ USB-C، احصل على كابل USB-C إلى USB صغير بدلاً من ذلك)
  • (اختياري) عصا بطول 30 سم تقريبًا
  • (اختياري) شريط لاصق

2. إعداد وحدة التحكّم الدقيقة Arduino

فتح صندوق Arduino

أخرِجها من العلبة واسحبها من رغوة التغليف. فهو موصّل للكهرباء، وقد يتسبب في حدوث مشاكل إذا لم يتم التعامل معه بشكل صحيح.

6ed84a651c871a58.jpeg

توصيل الجهاز بالكمبيوتر المحمول

  • وصِّل كابل MicroUSB بالمقبس الموجود في الشريحة.
  • وصِّل الطرف الآخر من الكابل بمقبس USB على الكمبيوتر المحمول.
  • يجب أن يضيء مؤشر LED في أسفل يسار لوحة Arduino (أعلى يسار الصورة أدناه).

c6936696f9659104.jpeg

التعرّف على سير العمل

99852afbed7e78b0.png

كما هو موضّح في الرسم البياني أعلاه، ينفّذ مفسّر TFLite على Arduino استنتاجًا بشكل دوري على النموذج. يستخدم النموذج بيانات مقياس التسارع المعالَجة كمدخلات ويقدّم توقّعًا يشير إلى الإيماءة التي من المرجّح أنّها حدثت. بالإضافة إلى ذلك، ستتم طباعة الناتج المطلوب وستضيء مصابيح LED الصحيحة.

3- إعداد Arduino IDE

1. تنزيل Arduino IDE

لنشر البرنامج على Arduino Microcontroller، نستخدم Arduino IDE.

بعد تنزيله، ثبِّت برنامج Arduino IDE وافتحه من خلال النقر على التطبيق الذي يبدو رمزه على النحو التالي: 75717f13527f36b9.png

سيتم فتح الصفحة المقصودة الأولية على النحو التالي:

933c91e6e1997c61.png

2. إعداد "إدارة اللوحات"

  1. من قائمة Arduino، اختَر Tools -> Board: "Arduino .." —> Boards Manager
  2. ابحث عن "Arduino Nano 33 BLE" وثبِّت Arduino nRF528x Boards (Mbed OS). سيضمن ذلك توافق لوحة التحكّم الدقيق Arduino Nano 33 BLE مع بيئة تطوير Arduino المتكاملة. 817c63346152eda9.png
  1. من قائمة Arduino، اختَر Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"

9357691e1a1348eb.png

  1. أخيرًا، تأكَّد من أنّ اللوحة التي اخترتها هي "Arduino Nano 33 BLE" في أسفل يسار بيئة التطوير المتكاملة.

aa08706bb84fa9b2.png

3. إعداد المنفذ

من قائمة Arduino، انقر على Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE). من المفترض أن يظهر لك ما يلي:

8c25990d0c6fb6f8.png

4. التحقّق من اتصال اللوحة

من قائمة Arduino، انقر على Tools -> Get Board Info. من المفترض أن يظهر لك ما يلي:

ccd8f5305be6cf59.png

4. تثبيت المكتبات

1. مكتبة TensorFlow Arduino

تحتوي هذه المكتبة على جميع أمثلة TensorFlow Lite for Microcontroller، بما في ذلك الرمز المصدر الخاص بالعصا السحرية المطلوب لهذا الدرس التطبيقي حول الترميز.

  1. من قائمة Arduino، اختَر Sketch -> Include Library -> Add .ZIP Library...
  2. أضِف مكتبة TensorFlow Arduino .zip التي نزّلتها.

2. LSM9DS1 Arduino Library

تتيح لك هذه المكتبة قراءة قيم مقياس التسارع ومقياس المغناطيسية والجيروسكوب من وحدة القياس بالقصور الذاتي LSM9DS1 على جهاز Arduino Nano 33 BLE Sense.

  1. من قائمة Arduino، اختَر Sketch -> Include -> Manage Libraries...
  2. ابحث عن "Arduino_LSM9DS1" وثبِّته. ac2f78a737c5f233.png

5- تحميل المثال وإنشاؤه

1. تحميل المثال

من قائمة Arduino، انقر على File -> Examples -> Arduino_TensorFlowLite -> magic_wand لتحميل رمز نموذجي.

de349f2d3cb49b98.png

سيؤدي ذلك إلى تحميل رمز مصدر العصا السحرية.

cda8c35a597b0798.png

2. إنشاء المثال

انقر على الزر Upload في نافذة التصميم.

71cb1474d5e14669.png

بعد بضع دقائق، من المفترض أن يظهر نص أحمر يشير إلى اكتمال عملية التحديث. أثناء التحميل، يجب أن يومض مؤشر LED الأيمن، ثم ينطفئ في النهاية.

3df1d0858c6e40a4.png

6. عرض توضيحي

يمكن لعصا السحر حاليًا رصد 3 إيماءات كما هو موضّح أدناه: 99a607da66af9fc8.png

  1. الجناح: ابدأ من أعلى يسار الشاشة وارسم الحرف "W" بعناية لمدة ثانيتين.
  2. الرنين: ابدأ بشكل مستقيم، وحرِّك العصا في دائرة باتجاه عقارب الساعة لمدة ثانية واحدة.
  3. الميل: ابدأ بإمساك العصا مع توجيهها للأعلى، بحيث تكون مصابيح LED مواجهة لك. حرِّك العصا إلى الأسفل بشكل مائل إلى اليسار ثم بشكل أفقي إلى اليمين لمدة ثانية واحدة.

توضّح الصورة التالية إيماءتَين. أولاً، منحدر ثم جناح (استخدِم هذا كمرجع للعرض التوضيحي).

9208eb1207211349.gif

لتشغيل العرض التوضيحي، اتّبِع التعليمات الواردة أدناه:

  1. بعد توصيل جهاز USB، انقر على Tools -> Serial Monitor من قائمة Arduino. سيتم في البداية فتح شاشة فارغة بدون أي ناتج.

38e8d53652eb28f2.png

  1. حرِّك وحدة التحكّم الدقيق Arduino لتتبُّع كل الأشكال المذكورة أعلاه بعناية ومعرفة ما إذا كانت شاشة العرض التسلسلي ترصد الإيماءة.

60b8a0017bcae419.png

  1. من النتائج في شاشة العرض التسلسلي، نلاحظ أنّ عصا السحر رصدت جميع الأشكال بالفعل. ستلاحظ أيضًا أنّ ضوء LED الأيمن يضيء.

7. الخطوات التالية

تهانينا، لقد نجحت في إنشاء أول "عصا سحرية" تتعرّف على الإيماءات باستخدام وحدة تحكّم دقيقة من Arduino.

نأمل أن تكون قد استفدت من هذه المقدّمة الموجزة حول التطوير باستخدام TensorFlow Lite for Microcontrollers. إنّ فكرة التعلّم العميق على وحدات التحكّم الدقيقة جديدة ومثيرة، وننصحك بتجربتها.

المستندات المرجعية

647c3ef0dc103804.png

شكرًا لك، ونتمنى لك الاستمتاع بالبناء.