عصای جادویی هوش مصنوعی با TensorFlow Lite برای میکروکنترلرها و آردوینو

۱. مقدمه

آنچه خواهید ساخت

در این آزمایشگاه کد، یاد خواهیم گرفت که از TensorFlow Lite برای میکروکنترلرها برای اجرای یک مدل یادگیری عمیق روی Arduino Nano 33 BLE استفاده کنیم. میکروکنترلر توسط کاربر به یک "عصای جادویی" دیجیتال تبدیل می‌شود تا انواع طلسم‌ها را تکان دهد و اجرا کند. با حرکت دادن عصا توسط کاربر، این داده‌های حسگر پیچیده و چندبعدی که برای انسان غیرقابل درک است، به عنوان ورودی به مدل منتقل می‌شود که خروجی آن یک طبقه‌بندی ساده است که در صورت وقوع یکی از چندین حرکت، به ما هشدار می‌دهد.

9208eb1207211349.gif

یادگیری ماشین در میکروکنترلرها

یادگیری ماشینی می‌تواند برای ایجاد ابزارهای هوشمندی مانند دستیار گوگل که زندگی کاربران را آسان‌تر می‌کنند، مورد استفاده قرار گیرد. اما اغلب، این تجربیات نیاز به محاسبات یا منابع زیادی دارند که می‌تواند شامل یک سرور ابری قدرتمند یا یک دسکتاپ باشد. با این حال، اکنون می‌توان استنتاج یادگیری ماشینی را روی سخت‌افزارهای کوچک و کم‌مصرف مانند میکروکنترلرها اجرا کرد.

میکروکنترلرها بسیار رایج، ارزان، با مصرف انرژی بسیار کم و بسیار قابل اعتماد هستند. آنها بخشی از انواع دستگاه‌های خانگی هستند: به لوازم خانگی، اتومبیل‌ها و اسباب‌بازی‌ها فکر کنید. در واقع، سالانه حدود 30 میلیارد دستگاه مجهز به میکروکنترلر تولید می‌شود.

۱۹۱۴a۴۱۹dfacf۰b۵.jpeg

با آوردن یادگیری ماشینی به میکروکنترلرهای کوچک، می‌توانیم هوش میلیاردها دستگاهی را که در زندگی خود استفاده می‌کنیم، بدون تکیه بر سخت‌افزارهای گران‌قیمت یا اتصالات اینترنتی قابل اعتماد، افزایش دهیم. لوازم خانگی هوشمندی را تصور کنید که می‌توانند با روال روزانه شما سازگار شوند، حسگرهای صنعتی هوشمندی که تفاوت بین مشکلات و عملکرد عادی را درک می‌کنند و اسباب‌بازی‌های جادویی که می‌توانند به کودکان کمک کنند تا به روش‌های سرگرم‌کننده و لذت‌بخش یاد بگیرند.

TensorFlow Lite برای میکروکنترلرها (نرم‌افزار)

864114d0c2b4c919.png

TensorFlow چارچوب یادگیری ماشین متن‌باز گوگل برای آموزش و اجرای مدل‌ها است. TensorFlow Lite یک چارچوب نرم‌افزاری و نسخه‌ای بهینه‌شده از TensorFlow است که برای اجرای مدل‌های Tensorflow روی دستگاه‌های کوچک و نسبتاً کم‌مصرف مانند تلفن‌های همراه طراحی شده است.

TensorFlow Lite برای میکروکنترلرها یک چارچوب نرم‌افزاری، نسخه‌ای بهینه‌شده از TensorFlow است که برای اجرای مدل‌های Tensorflow روی سخت‌افزارهای کوچک و کم‌مصرف مانند میکروکنترلرها طراحی شده است. این چارچوب به محدودیت‌های مورد نیاز در این محیط‌های تعبیه‌شده پایبند است، یعنی اندازه دودویی کوچکی دارد، به پشتیبانی سیستم عامل، هیچ کتابخانه استاندارد C یا C++ یا تخصیص حافظه پویا و غیره نیاز ندارد.

آردوینو نانو ۳۳ BLE (سخت‌افزار)

bcd452d4d660efa9.jpeg

آردوینو یک پلتفرم متن‌باز محبوب است که برای ساخت پروژه‌های الکترونیکی استفاده می‌شود. این پلتفرم شامل موارد زیر است:

  1. یک برد مدار فیزیکی قابل برنامه‌ریزی (اغلب یک میکروکنترلر) مانند Arduino Nano 33 BLE که در این آزمایشگاه کد استفاده شده است.
  2. محیط توسعه یکپارچه آردوینو (IDE) نرم‌افزاری است که برای نوشتن و آپلود کد کامپیوتری روی برد فیزیکی استفاده می‌شود.

آردوینو نانو ۳۳ BLE یک پلتفرم مبتنی بر میکروکنترلر است: یک کامپیوتر کوچک روی یک برد مدار چاپی. این برد دارای پردازنده، حافظه و سخت‌افزار ورودی/خروجی است که به آن امکان ارسال و دریافت سیگنال‌های دیجیتال به دستگاه‌های دیگر را می‌دهد. برخلاف کامپیوتر، میکروکنترلر قدرتمند نیست و معمولاً سیستم عاملی را اجرا نمی‌کند. در عوض، آنها پردازنده‌های کوچکی دارند، حافظه زیادی ندارند و برنامه‌هایی که می‌نویسید مستقیماً روی سخت‌افزار اجرا می‌شوند. اما از آنجا که آنها به ساده‌ترین شکل ممکن طراحی شده‌اند، میکروکنترلر می‌تواند انرژی بسیار کمی مصرف کند.

کاری که انجام خواهید داد

  • میکروکنترلر Arduino Nano 33 BLE را راه‌اندازی کنید و آن را به یک "عصای جادویی" دیجیتال تبدیل کنید
  • راه‌اندازی IDE آردوینو و نصب کتابخانه‌های مورد نیاز
  • برنامه را روی دستگاه نصب کنید
  • با تکان دادن عصای جادویی، انواع طلسم‌ها را اجرا کنید و پیش‌بینی‌ها را مشاهده کنید

آنچه نیاز دارید

  • لپ‌تاپ لینوکس، مک‌او‌اس یا ویندوز
  • آردوینو نانو BLE Sense 33 (بدون هدر)
  • کابل میکرو USB (اگر از لپ‌تاپ USB-C استفاده می‌کنید، به جای آن یک کابل USB-C به میکرو USB تهیه کنید)
  • (اختیاری) چوب، حدود ۱۲ اینچ (۳۰ سانتی‌متر)
  • (اختیاری) نوار چسب

۲. میکروکنترلر آردوینو را راه‌اندازی کنید

آردوینو خود را از بسته‌بندی خارج کنید

آن را از جعبه خارج کرده و از فوم بسته‌بندی بیرون بکشید. رسانا است و در غیر این صورت می‌تواند مشکل ایجاد کند!

6ed84a651c871a58.jpeg

آن را به لپ‌تاپ خود وصل کنید

  • کابل MicroUSB را به سوکت موجود در تراشه وصل کنید.
  • سر دیگر کابل را به سوکت USB لپ‌تاپ خود وصل کنید.
  • LED پایین سمت چپ روی آردوینو (بالا سمت چپ در تصویر زیر) باید روشن شود.

c6936696f9659104.jpeg

با روند کار آشنا شوید

۹۹۸۵۲afbed7e78b0.png

همانطور که در نمودار بالا نشان داده شده است، مفسر TFLite در آردوینو به صورت دوره‌ای استنتاج را روی مدل اجرا می‌کند. مدل از داده‌های شتاب‌سنج پردازش‌شده به عنوان ورودی استفاده می‌کند و پیش‌بینی‌ای را ارائه می‌دهد که نشان می‌دهد حرکتی که به احتمال زیاد رخ داده است، کدام است. علاوه بر این، خروجی مورد نظر چاپ می‌شود و LEDهای مناسب روشن می‌شوند.

۳. نرم‌افزار آردوینو IDE را راه‌اندازی کنید

۱. نرم‌افزار آردوینو IDE را دانلود کنید

برای پیاده‌سازی برنامه روی میکروکنترلر آردوینو، از محیط برنامه‌نویسی آردوینو (Arduino IDE) استفاده می‌کنیم.

پس از دانلود، نرم‌افزار Arduino IDE را با کلیک روی برنامه‌ای که آیکون آن شبیه به این است، نصب و باز کنید: 75717f13527f36b9.png

صفحه فرود اولیه به صورت زیر باز می‌شود:

۹۳۳c۹۱e۶e۱۹۹۷c۶۱.png

۲. راه‌اندازی مدیر هیئت مدیره

  1. از منوی آردوینو، Tools -> Board: "Arduino .." —> Boards Manager
  2. عبارت "Arduino Nano 33 BLE" را جستجو کنید و Arduino nRF528x Boards (Mbed OS) نصب کنید. این کار تضمین می‌کند که میکروکنترلر Arduino Nano 33 BLE ما توسط Arduino IDE پشتیبانی می‌شود. 817c63346152eda9.png
  1. از منوی آردوینو، Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"

۹۳۵۷۶۹۱e1a1348eb.png

  1. در نهایت، مطمئن شوید که برد انتخابی شما «Arduino Nano 33 BLE» است که در پایین سمت راست IDE قرار دارد.

aa08706bb84fa9b2.png

۳. راه‌اندازی پورت

از منوی آردوینو، Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE) را انتخاب کنید. باید چیزی شبیه به این را ببینید:

8c25990d0c6fb6f8.png

۴. اتصال برد را بررسی کنید

از منوی آردوینو، Tools -> Get Board Info انتخاب کنید. باید چیزی شبیه به این را ببینید:

ccd8f5305be6cf59.png

۴. نصب کتابخانه‌ها

۱. کتابخانه آردوینو TensorFlow

این کتابخانه شامل تمام مثال‌های TensorFlow Lite برای میکروکنترلر است، که شامل کد منبع عصای جادویی مورد نیاز برای این آزمایشگاه کد نیز می‌شود.

  1. از منوی آردوینو، Sketch -> Include Library -> Add .ZIP Library... را انتخاب کنید.
  2. کتابخانه آردوینوی TensorFlow .zip که دانلود کرده‌اید را اضافه کنید.

۲. کتابخانه آردوینو LSM9DS1

این کتابخانه به شما امکان می‌دهد مقادیر شتاب‌سنج، مغناطیس‌سنج و ژیروسکوپ را از IMU LSM9DS1 روی برد آردوینو نانو 33 BLE Sense خود بخوانید.

  1. از منوی آردوینو، Sketch -> Include -> Manage Libraries... را انتخاب کنید.
  2. "Arduino_LSM9DS1" را جستجو و نصب کنید. ac2f78a737c5f233.png

۵. بارگذاری و ساخت نمونه

۱. مثال را بارگذاری کنید

از منوی آردوینو، برای بارگذاری کد نمونه، File -> Examples -> Arduino_TensorFlowLite -> magic_wand را انتخاب کنید.

de349f2d3cb49b98.png

این کد منبع عصای جادویی را بارگذاری می‌کند.

cda8c35a597b0798.png

۲. مثال را بسازید

روی دکمه Upload در پنجره طرح کلیک کنید.

71cb1474d5e14669.png

بعد از چند دقیقه باید متن قرمز رنگی را ببینید که نشان می‌دهد چشمک زدن کامل شده است. در طول آپلود، چراغ LED سمت راست باید پالس بدهد و سپس در پایان خاموش شود.

3df1d0858c6e40a4.png

۶. نسخه آزمایشی

عصای جادویی در حال حاضر می‌تواند ۳ حرکت را تشخیص دهد، همانطور که در زیر نشان داده شده است: 99a607da66af9fc8.png

  1. بال : از گوشه بالا سمت چپ شروع کنید و با دقت حرف "W" را به مدت دو ثانیه دنبال کنید.
  2. حلقه : به صورت عمودی شروع کنید، میله را به مدت یک ثانیه در جهت عقربه‌های ساعت حرکت دهید.
  3. شیب : با نگه داشتن دسته به سمت بالا، به طوری که LEDها به سمت شما باشند، شروع کنید. دسته را به مدت یک ثانیه به سمت چپ و سپس به صورت افقی به سمت راست حرکت دهید.

تصویر زیر دو حرکت را نشان می‌دهد. ابتدا یک شیب و سپس یک بال (از این به عنوان مرجع برای نسخه آزمایشی خود استفاده کنید).

9208eb1207211349.gif

برای اجرای نسخه آزمایشی، دستورالعمل‌های زیر را دنبال کنید:

  1. با اتصال USB، از منوی آردوینو، Tools -> Serial Monitor انتخاب کنید. در ابتدا یک صفحه خالی بدون هیچ خروجی باز می‌شود.

38e8d53652eb28f2.png

  1. میکروکنترلر آردوینو را حرکت دهید تا هر یک از شکل‌های بالا را با دقت دنبال کند و ببینید آیا مانیتور سریال حرکت را تشخیص می‌دهد یا خیر.

60b8a0017bcae419.png

  1. از خروجی سریال مانیتور، متوجه می‌شویم که عصای جادویی واقعاً همه شکل‌ها را تشخیص داده است! همچنین متوجه خواهید شد که LED سمت راست روشن می‌شود.

۷. مراحل بعدی

تبریک می‌گویم، شما با موفقیت اولین «عصای جادویی» خود را که قابلیت تشخیص حرکات را دارد، روی میکروکنترلر آردوینو ساختید!

امیدواریم از این مقدمه کوتاه در مورد توسعه با TensorFlow Lite برای میکروکنترلرها لذت برده باشید. ایده یادگیری عمیق در میکروکنترلرها جدید و هیجان‌انگیز است و ما شما را تشویق می‌کنیم که بیرون بروید و آزمایش کنید!

اسناد مرجع

647c3ef0dc103804.png

متشکرم، و از ساختن لذت ببرید!