برد جتسون نانو Jetson Nano

آموزش کار با برد جتسون نانو Jetson Nano بخش اول: بررسی سخت افزار

getting-started-with-jetson-nano-nvidia-step-one-hardware-digispark
نوشته شده توسط فرهود جعفری

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

از اینجا بود که هوش مصنوعی یا همان Artificial intelligence، یادگیری ماشین یا همان Machine Learning، پردازش داده های با حجم عظیم و سیستم های امبدد بوجود آمدند. در دنیای امروز پیاده سازی هوش مصنوعی یا پردازش تصویر (بینایی کامپیوتری) بدون استفاده از سیستم های امبدد اگر نگوییم غیرممکن، بسیار دشوار و پرهزینه می نماید. در ادامه این آموزش با مرجع تخصصی جتسون نانو به زبان فارسی، دیجی اسپارک همراه باشید.

 


سیستم‌های امبدد Embedded Systems


سیستم امبدد، توکار یا تعبیه شده به سیستمی کامپیوتری اطلاق می شود که از یک پردازنده، حافظه و دستگاه های جانبی ورودی و خروجی تشکیل شده باشد و در یک سیستم مکانیکی یا الکترونیکی عملکرد مشخص و منحصر به فرد دارد. این سیستم به عنوان جزئی از کل یک دستگاه که اغلب شامل سخت افزار الکتریکی یا الکترونیکی و اجزاء مکانیکی می باشد تعبیه شده است. به دلیل اینکه یک سیستم تعبیه شده اساساً عملکردهای فیزیکی ماشینی را که در آن تعبیه شده است، کنترل میکند اغلب دارای پیش فرض محاسبه real-time است. امروزه بسیاری از دستگاه هایی که به صورت عمومی استفاده می شوند توسط سیستم های تعبیه شده کنترل می شوند. در سال ۲۰۰۹ تخمین زده میشد که ۹۸ درصد از کل میکروکنترلرهای ساخته شده در سیستم های تعبیه شده استفاده شده است.

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

سیستم های توکار از حیث اندازه بسیار متنوع هستند، از دستگاه های شخصی قابل حمل مانند ساعت های دیجیتال و پخش کننده MP3 گرفته تا دستگاه های بزرگتر مثل لوازم منزل، خطوط مونتاژ صنعتی، روبات ها، وسایل حمل نقل، کنترل کننده های چراغ های راهنمایی و رانندگی و سیستم های عکس برداری پزشکی. گاهی اوقات به عنوان یک زیرسیستم از ماشین های دیگر به کار گرفته می شوند مانند سیستم های ناوبری هوایی. تأسیسات بزرگ مانند کارخانه ها، خطوط انتقال برق و لوله، متکی بر چندین سیستم توکار با یکدیگر شبکه شده هستند. سیستم های تعبیه شده مانند کنترل کننده های منطقی برنامه پذیر (PLC) اغلب واحدهای عملکردی خود را طریق سفارشی سازی نرم افزاری تشکیل می دهند.

 


برد توسعه Jetson Nano


برد توسعه Jetson Nano محصول شرکت Nvidia یک کامپیوتر هوش مصنوعی است. برای آموزندگان، توسعه دهندگان و حتی سازندگان که توانمندی هوش مصنوعی مدرن را برای یک پلتفرم کم مصرف با استفاده آسان به ارمغان می آورد. این برد برای پروژه های عملی ایده آل است. یادگیری توأم با عمل برای هر کسی که در دنیای هوش مصنوعی و روباتیک تازه کار است یک عنصر کلیدی است، و به وسیله این کیت توسعه خواهید دید که کار شما به صورت real-time با دنیای اطرافتان درک و تعامل دارد. این بردها در دو مدل با حافظه رم ۴ گیگ و ۲ گیگا بایتی به بازار ارائه می شود. در این نوشتار بر روی برد Jetson Nano 2GB تمرکز می کنیم. برد توسعه Jetson Nano شامل یک ماژول با کاربری غیر تولیدی، ضمیمه شده به یک برد حامل است. جتسون نانو توسط یک SDK یا همان Software Development Kit جامع به نام Nvidia JetPack پشتیبانی می شود. از طرفی کارایی و قابلیت مورد نیاز جهت اجرای پروژه های هوش مصنوعی مدرن را هم دارا است. بسته Jetpack شامل موارد زیر است.

  • یک نسخه کامل لینوکس دسکتاپ به همراه درایورهای NVIDIA
  • کتابخانه و API (Application Programming Interface) های هوش مصنوعی و پردازش تصاویر (دید کامپیوتر)
  • ابزاری های توسعه
  • مستندات و کدهای نمونه

 


آشنایی با برد توسعه جتسون نانو


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

 

  1. اسلات کارت microSD که به عنوان منبع اصلی ذخیره اطلاعات استفاده می شود
  2. هدر پین های GPIO 40 تایی
  3. Micro-USB
  4. اتصال LAN
  5. پورت های USB 2.0
  6. پورت USB 3.0
  7. پورت HDMI
  8. پورت منبع تغذیه USB 3.0 Type C
  9. پورت اتصال دوربین

به جدول مشخصات جتسون نانو در زیر دقت کنید.

GPU

۱۲۸-Core NVIDIA maxvell

CPU

Quad-core ARM A57 1.43 GHz

Memory

۲ GB 64-bit LP DDR4 25.6 GB/s

Storage

microSD

Video Encode

۴Kp30 | 4x 1080p30 | 9x 720p30 (H.264/H.265)

Video Decode

۴Kp60 | 2x 4Kp30 | 8x 1080p30 | 18x 720p30 (H.264/H.265)

Connectivity

Gigabit Ethernet, 802.11ac wireless

Camera

۱x MIPI CSI-2 connector

Display

HDMI

USB

۱x USB 3.0 Type A,2x USB 2.0 Type A, USB 2.0 Micro-B

Others

۴۰-pin header (GPIO, I2C, I2S, SPI, UART)

۱۲-pin header (Power and related signals, UART)

۴-pin Fan header

Mechanical

۱۰۰ mm x 80 mm x 29 mm

 


نام گذاری فنی درگاه های روی برد


به تصویر زیر دقت کنید. برخی از درگاه‌های روی برد جتسون نانو به شرح زیر مشخص شده و نام گذاری می‌شوند. در ادامه وظیفه‌ی هر یک از این مورد توضیح داده شده است. برای پروژه‌های اجرایی با برد جتسون نانو، اطلاع کامل از این درگاه ها بسیار اهمیت دارد.

 

نمای پشت برد جستون نانو - دیجی اسپارک

[DS1] Power Led : زمانیکه برد از نظر منبع تغذیه روشن است این ال ای دی نیز روشن می شود.

[J1] کانکتور SO-DIMM جهت اتصال ماژول jetson. ماژول از پیش روی برد حامل مونتاژ شده است.

[J2] کانکتور USB-Type C جهت اتصال منبع تغذیه ۵ ولت ۳ آمپر مستقیم (DC)

[J3] کانکتور RJ45

[J4] کانکتور HDMI

[J5] کانکتور دوربین برای دوربین MIPI-CSI2

[J6] پین هدر ۴۰ پین: شامل پینهای منبع تغذیه ۵+ و ۳+ ولت و پین های سیگنال شامل I2C (دو عدد)، UART، SPI (دو عدد)، I2S و GPIO ها

[J7] کنترل کننده فن ۴ پین: ورودی های از نوع PWM و tachometer پشتیبای می شوند.

[J8] سوکت باطری های مدل سکه ای جهت بک آپ (اختیاری)

[J9] کانکتور USB3.0 Type A، حداکثر توان جریان دهی ۱ آمپر را دارد.

[J10] USB2.0 Type A دو عدد

[J11] button header انتخابی شامل: Reset، Force Recovery، کلید Power و غیر فعالسازی Auto-Power-on

[J12] Power LED, Reset/Force Recovery/Power Buttons, UART, and Auto-power-on disable

[J13] کانکتور Micro-USB 2.0که در دو حالت Recovery Mode و Device Mode پشتیبانی می شود.

 


پایه های GPIO برد جتسون نانو


این پین هدر ۴۰ تایی دسترسی به power، ground و پین های سیگنال را فراهم میکند.

  • پینهای منبع تغذیه
  • دو عدد پین تغذیه ۵ ولت و دو عدد پین تغذیه ۳٫۳ ولت وجود دارد. این پینها قابلیت قطع و وصل ندارند و از زمانی که به منبع تغذیه متصل شوند دارای ولتاژ هستند.
  • پینهای ۵ ولتی قادرند هر کدام به تنهایی برد را با توان جریان دهی ۲٫۵ آمپر روشن کنند.( هرگز به طور همزمان پینهای ۵ ولت و USB3.0 Type C را به منبع تغذیه متصل نکنید)
  • پینهای سیگنال
  • تمام پین های سیگنال از سطح ولتاژ ۳٫۳ ولت استفاده می کنند.
  • به صورت پیش فرض کلیه پین های سیگنال به صورت GPIO پیکربندی شده اند مگر آنهایی که I2C و UART هستند.

تصویر زیر ورودی و خروجی‌های GPIO برد جتسون نانو را نمایش میدهد.

 

کتابخانه Jetson.GPIO روشی آسان برای کنترل GPIO ها را پیشنهاد میکند. از Jetson-IO می توانید برای پیکربندی مجدد یک پین استفاده کنید، به عنوان مثال عملکرد آن را از GPIO به SFIO (Special Function I/O) مثل I2C، I2S و غیره تغییر دهید. JetPack شامل هر دو کتابخانه Jetson.GPIO و Jetson-IO می باشد. توجه داشته باشید که پینهای اینترفیس I2C توسط مقاومت های ۲٫۲ کیلو اهم به ۳٫۳ ولت پول آپ شده اند. تمامی سیگنال ها بجز اینترفیس های I2C از طریق لول شیفتر های Texas Instruments TXB0108RGYR به SoC متصل شده اند.

 


پین هدر ۱۲ تایی جتسون نانو


برد جتسون نانو دارای دو GPIO مجزا از همدیگر است. بخش J12 روی تصویر بالایی مشاهده کردید. این مورد را کاملا مشخص کرده است. این سری پین هدرها از GPIO برای کنترل وضعیت برد استفاده می کند. کنترل کننده ها (مثل انواع سوئیچ ها) می توانند به این پین هدر متصل شوند. در تصویر زیر تمامی این پایه ها معرفی شده اند. در جدولی که پس از تصویر قرار دارد، نام تمامی پایه‌ها و کاربری آن‌ها اعلام شده است. این بخش برای اجرای پروژه‌های تخصصی بسیار مورد نیاز است. به هنگام اجرای پروژه‌ها با جتسون نانو، حتما بایستی از این جدول استفاده کرد.

پایه های 12 تایی برد جتسون نانو jetson nano - دیجی اسپارک

 

پین نام توضیحات ولتاژ
۱ Power LED – به کاتد LED متصل می شود تا وضعیت فعال/خواب سیستم را نشان دهد.

(در زمانی که سیستم در حالت خواب باشد خاموش است)

+۵V
۲ Power LED + به آند LED متصل می شود (توضیحات ۱) +۵V
۳ UART2_RXD دریافت +۳٫۳V
۴ UART2_TXD ارسال +۳٫۳V
۵ Latch Set پین ۵ و ۶  را به هم متصل کنید تا حالت روشن شدن خودکار برد به محض اتصال

منبع تغذیه غیرفعال شود و نیازمند فشردن کلید جهت روشن شدن باشد.

+۵V
۶ Latch Set Button پین ۵ و ۶  را به هم متصل کنید تا حالت روشن شدن خودکار برد به محض اتصال

منبع تغذیه غیرفعال شود و نیازمند فشردن کلید جهت روشن شدن باشد.

+۵V
۷ Ground
۸ Reset Button یک کلید normally open به پین های ۷ و ۸ متصل می شود. فشردن این کلید باعث

ریست سیستم می شود.

+۱٫۸V
۹ Ground
۱۰ Recovery Mode Button یک کلید normally open به پایه های ۹ و ۱۰ متصل کنید. در زمانی که برد در حال

روشن شدن است کلید را به حالت فشرده نگه دارید تا آن را در مد

USB Force Recovery قرار دهد.

+۱٫۸V
۱۱ Ground
۱۲ Power Button یک کلید normally open به پایه های ۱۱ و ۱۲ متصل کنید. فشردن این کلید به شرط

اینکه روشن شدن خودکار (توسط اتصال پایه های ۵ و ۶ به یکدیگر) غیر فعال شده باشد

باعث روشن شدن سیستم می شود.

+۵V

 


پین هدر ۸ تایی جتسون نانو


مجددا به بخش نام گذاری فنی درگاه های روی برد مراجعه کنید. سمت چپ تصویر گزینه J11 را مشاهده کنید. تعدد ۸ پایه در این بخش برد قرار دارند. این پین هدر ۸ تایی (۲X4) به عنوان جایگزین پین های اصلی پین هدر ۱۲ تایی (J12) عمل می کند و باید روی برد در قسمت J11 لحیم شود. در تصویر زیر تمامی این پایه ها معرفی شده اند. در جدولی که پس از تصویر قرار دارد، نام تمامی پایه‌ها و کاربری آن‌ها اعلام شده است.

پین هدر 8 تایی (J11) برد جتسون نانو - دیجی اسپارک

 

پین نام توضیحات ولتاژ
۱ Power Button یک کلید normally open به پایه های ۱ و ۲ متصل کنید. فشردن این کلید به شرط

اینکه روشن شدن خودکار (توسط اتصال پایه های ۷ و ۸ به یکدیگر) غیر فعال شده باشد

باعث روشن شدن سیستم می شود.

+۵V
۲ Ground
۳ Force Recovery Button یک کلید normally open به پایه های ۳ و ۴ متصل کنید. در زمانی که برد در حال

روشن شدن است کلید را به حالت فشرده نگه دارید تا آن را در مد

USB Force Recovery قرار دهد.

+۱٫۸V
۴ Ground
۵ Reset Button یک کلید normally open به پین های ۵ و ۶ متصل می شود. فشردن این کلید باعث

ریست سیستم می شود.

+۱٫۸V
۶ Ground
۷ Latch Set Button پین ۷ و ۸  را به هم متصل کنید تا حالت روشن شدن خودکار برد به محض اتصال

منبع تغذیه غیرفعال شود و نیازمند فشردن کلید جهت روشن شدن باشد.

+۵V
۸ Latch Set پین ۷ و ۸  را به هم متصل کنید تا حالت روشن شدن خودکار برد به محض اتصال

منبع تغذیه غیرفعال شود و نیازمند فشردن کلید جهت روشن شدن باشد.

+۵V

 


لوازم مورد نیاز


بردهای مبتنی بر هوش مصنوعی Jetson nano

کابل USB Type-C

مموری Micro SD

 


جمع بندی


تا اینجا با برخی از ورودی و خروجی‌های روی بردی جتسون نانو آشنا شدیم. ظاهر برد و بخش‌های مختلف آن را معرفی کردیم. برد jetson nano کاربردهای وسیعی در مباحث پردازش دارد. برای اجرای پروژه‌های نرم افزاری و سخت افزاری و یا ترکیب هر دو لازم است که تمامی درگاه‌های روی برد را به خوبی بشناسیم و روش استفاده از آن‌ها را بیاموزیم. البته این را هم بدانید که لازم نیست تک تک این المان ها را به خاطر بسپاریم. فقط کافیست از حضور آن‌ها اطلاع داشته باشیم. به هنگام اجرای پروژه ها هم کافیست جداول این آموزش را مرجع قرار داده و از آن‌ها در مواقع مناسب استفاده کنیم. در قسمت بعدی از مجموعه آموزش برد جتسون نانو، الباقی ورود خروجی‌های روی برد را توضیح خواهیم داد.

 

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

 

درباره نویسنده

فرهود جعفری

When did Noah build the ark? Before the rain, before the RAIN...

تبادل نظر و رفع عیب با ثبت دیدگاه

۴ دیدگاه

  • سلام و خسته نباشید. من می خوام با امبدد برد تو زمینه دیپ لرنینگ و RL با پایتون فعالیت کنم . به نظر شما جتسون نانو ۲ گیگ بهتر هستش برای این کار یا رزبری پای سری۴ ۸گیگ

    • عرض سلام و ادب
      یک مقایسه اینجا انجام می دیم:
      Jetson Nano CPU: Quad-core ARM A57 1.43 GHz
      Raspberry Pi CPU: Cortex ARM A72 1.5GHz
      Jetson Nano RAM: 2Gb
      Raspberry Pi RAM: 8Gb
      با توجه به اینکه معمولاً پایتون منابع بیشتری نسبت به سی پلاس پلاس و سی مصرف میکنه از سیستم امبدد، میزان منابع مورد نیاز رو حتماً باید در نظر بگیرید و البته حجم پردازش و مصرف حافظه پروژه.
      متأسفانه جز با آزمایش و خطا روش موثر دیگری نیست که بشه برد مناسب رو انتخاب کرد، ولی اگر مطمئن هستید که پروژه شما سبک هستش و منابع زیادی نیاز نداره قطعاً جتسون نانو بهتر و ارزانتره.