پلتفرم آردوینو قسمت دوم:روح آردوینو و تسخیر خانوادهء AVR | چگونه آردوینو مخصوص خودمان را بسازیم.

پلتفرم آردوینو قسمت دومروح آردوینو و تسخیر خانوادهء AVR چگونه آردوینو مخصوص خودمان را بسازیم - 1K JPEG (1)
182 بازدید
۱۴۰۴-۱۲-۲۵
10 دقیقه
  • نویسنده: gasemi.m100
  • درباره نویسنده: دوستدار الکترونیک و ساختنی‌های کوچک اما کاربردی

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

همان‌طور که می‌دانید، مهم‌ترین نقطه قوت آردوینو “متن‌باز” (Open Source) بودن آن است. این ویژگی باعث شکل‌گیری جامعه‌ای عظیم شده که هر عضوی می‌تواند به رشد آن کمک کند. یکی از این افراد ، توسعه‌دهنده‌ای با نام مستعار MCUdude (یا هانس) است.
او با توسعه‌ی پروژه‌هایی نظیر MightyCore و MegaCore و بازنویسی فایل‌های هسته‌ی آردوینو، این امکان را فراهم کرد که ما بتوانیم کدهای آردوینو را مستقیماً و بدون هیچ واسطه‌ای روی برخی میکروکنترلرهای محبوب AVR آپلود کنیم و بتوانیم خانواده AVR را در تسخیر آردوینو در آوریم.

البته همان طور که در جدول زیر می‌بینید پروژه آقای هانس در سری ATtiny فقط یک میکروکنترلر را شامل می‌شود. بنابراین سعی داریم پروژه دیگری را هم معرفی کنیم.امروزه برای سری‌های ATtiny، پروژه  Spence Konde (DrAzzy) به نام ATTinyCore نسبتا کاملتر هست. این پروژه تقریباً تمام میکروکنترلرهای سری تاینی را با امکاناتی باورنکردنی (مثل SoftwareSerial روی هر پین) پشتیبانی می‌کند.
شاید برایتان سوال شود که این پکیج‌ها دقیقا چطور میکرو جدید را معرفی می‌کند. در واقع هر فایل هسته (پکیج) شامل تعاریفی از پین‌ها ، ریجستر‌های ،فیوزبیتها ، تنظیمات و … ، تعدادی میکروکنترلر هستند که از طریق آدرسی با پسوند json به Arduino IDE معرفی و سپس دانلود و نصب می‌شود.

هر کدام از این پروژه‌ها برای خانواده خاصی از میکروکنترلرها طراحی شده‌اند. برای اینکه بدانید هر پروژه از چه چیپ‌هایی پشتیبانی می‌کند و یا پکیج مناسب شما کدام است، جدول زیر را بررسی کنید. همچنین لینک گیت‌هاب، آدرس JSON (برای معرفی به Arduino IDE) و مستندات نصب دستی، برای دسترسی راحت‌تر شما در جدول قرار گرفته است.

نام و لینک پروژه میکروکنترلر‌های پشتیبانی شده آدرس JSON  دانلود مستندات
MiniCore ATmega8, ATmega48, ATmega88, ATmega168, ATmega328 and ATmega328PB https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json دانلود پکیج
دانلود Pinout
MightyCore ATmega1284, ATmega644, ATmega324, ATmega324PB, ATmega164, ATmega32, ATmega16 and ATmega8535 https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json دانلود پکیج
دانلود Pinout
MegaCore

ATmega6490, ATmega6450, ATmega3290, ATmega3250, ATmega2561, Tmega2560, ATmega1281, ATmega1280, ATmega649, ATmega645, ATmega640, ATmega329, ATmega325, ATmega169, ATmega165, ATmega128, ATmega64, AT90CAN128, AT90CAN64, AT90CAN32

(All variants – A, L, P, PA, PV, V)

https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json دانلود پکیج
دانلود Pinout
MegaCoreX ATmega4809, ATmega4808, ATmega3209, ATmega3208, ATmega1609, ATmega1608, ATmega809 and ATmega808 https://mcudude.github.io/MegaCoreX/package_MCUdude_MegaCoreX_index.json دانلود پکیج
دانلود Pinout
MicroCore ATtiny13 https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json دانلود پکیج
دانلود Pinout
ATTinyCore ATtiny 1634, 2313/4313, 24/44/84, 441/841, 25/45/85, 261/461/861, 87/167, 48/88, 43, 26 and 828. http://drazzy.com/package_drazzy.com_index.json دانلود پکیج
دانلود Pinout

مرحله اول: آماده‌سازی نرم‌افزار (نصب پکیج‌ها)

برای شروع کار، ما باید این پکیج‌ها(پروژه‌ها) را به Arduino IDE معرفی کنیم. پیشنهاد می‌کنم از آخرین ورژن IDE استفاده کنید در اینجا از ورژن 2.3 استفاده شده. دو روش برای این کار وجود دارد: روش انلاین(پیشنهادی) و روش دستی (برای سیستم‌های آفلاین).

روش ۱: نصب از طریق Board Manager (آنلاین)

۱. نرم‌افزار Arduino IDE را باز کنید.

۲. از منوی File گزینه Preferences را انتخاب کنید.

۳. لینک‌های JSON مربوط به پروژه‌های مدنظر (از جدول بالا) را در قسمت Additional boards manager URLs کپی کنید.
(نکته: اگر چند لینک دارید، آن‌ها را با کاما (,) از هم جدا کنید یا روی آیکون پنجره‌مانند کنار کادر کلیک کنید و هر لینک را در یک خط جداگانه وارد نمایید.)

نمایی از پنجره Preferences و محل وارد کردن لینک‌ها

[عکس ۱: نمایی از پنجره Preferences و محل وارد کردن لینک‌ها]

۴. حالا به مسیر Tools > Board > Boards Manager بروید.

۵. صبر کنید تا لیست آپدیت شود، سپس نام پکیج (مثلاً MightyCore) را جستجو و دکمه Install را بزنید.

محیط Board Manager و نصب MightyCore

عکس ۲: محیط Board Manager و نصب MightyCore

روش ۲: نصب دستی (Manual Installation)

اگر به اینترنت دسترسی ندارید یا می‌خواهید فایل‌ها را روی سیستمی دیگر منتقل کنید، می‌توانید از روش دستی استفاده کنید:

۱. ابتدا فایل فشرده (ZIP) پروژه را از گیت‌هابِ MCUdude (یا از جدول بالا قسمت دانلود مستندات) دانلود کنید. 

۲. به پوشه Documents/Arduino در کامپیوتر خود بروید.

۳. اگر پوشه‌ای به نام hardware وجود ندارد، آن را بسازید.

۴. فایل دانلود شده را درون پوشه hardware اکسترکت کنید. ساختار پوشه‌ها باید به صورت زیر باشد:

Documents/Arduino/hardware/MightyCore/avr/...

۵. آردوینو را ریستارت کنید. اکنون میکروکنترلر ها در قسمت Tools > Board در لیست اضافه شده‌اند.

پروژه‌های اضافه شده به دو روش بالا

عکس 3: پروژه‌های اضافه شده به دو روش بالا

مرحله دوم: ساخت سخت‌افزار (آردوینوی دست‌ساز)

حالا که نرم‌افزار آماده است، نوبت به سخت‌افزار می‌رسد. بیایید فرض کنیم می‌خواهیم یک ATmega32 یا ATmega16 را تبدیل به آردوینو کنیم. حال نیاز به یک مدار “حداقل سیستم” (Minimum System) داریم که شامل کریستال و مدار ریست می‌شود. البته با این روش میتوانیم از اسیلاتور داخلی میکرو استفاده کنیم و نیازی به کریستال نداشته باشم.
من برای اینکه مجبور نباشم برد طراحی کنم یا مدار را روی برد‌بورد ببندم، از یک شیلد پروتوتایپ آردوینو (Prototype Shield) استفاده کردم که فضای سوراخ‌دار برای لحیم‌کاری و قیمت مناسبی دارند. شما می‌توانید روی برد‌بورد یا بوردی که خودتان طراحی کردید یا حتی برد از قبل آماده ای که تغییر کاربری دادید (درست مثل کاری در قسمت قبل انجام شد) استفاده کنید.

شاید برای شما مفید باشد:
= عملگر انتساب (تک مساوی) در آردوینو

قطعات لازم برای تبدیل ATmega32 به آردوینو:

  1. کریستال ۱۶ مگاهرتز: (اختیاری).
  2. دو عدد خازن ۲۲ پیکوفاراد: (در صورت استفاده از کریستال).
  3. مقاومت ۱۰ کیلو اهم: (برای Pull-up کردن پایه ریست).
  4. میکروکنترلر ATmega32 or 16.
  5. LDE با مقاومت سری 470 اهم (نشانگر)

نقشه اتصال:

من روی شیلد پروتوتایپ، یک زیف‌سوکت (ZIF Socket) یا سوکت چهل پین لحیم کردم تا بتوانم میکروکنترلر را راحت تعویض کنم. و برای اتصال پایه‌های میکرو به پین هدر از سیم لاکی استفاده کردم.

اتصالات لازم به شرح زیر است:

  • پایه VCC و GND میکروکنترلر را به ۵ ولت و زمین وصل کنید.
  • کریستال را بین پایه‌های XTAL1 و XTAL2 (پین ۱۲ و ۱۳ در مگا ۳۲) قرار دهید و هر پایه را با خازن ۲۲ پیکو به زمین وصل کنید.
  • پایه Reset (پین ۹) را با یک مقاومت ۱۰ کیلو اهم به ۵ ولت (VCC) متصل کنید.

 [گالری عکس : تصویری از آردوینو شاخته شده با شیلد پروتوتایپ و مگا 16]

مرحله سوم: پیکربندی و تزریق بوت‌لودر

حالا همه چیز آماده است. برای آپلود کد روی این میکروکنترلر خام، برای اولین بار ما نیاز به یک پروگرامر داریم من از USBasp استفاده می‌کنم. اگر پروگرامر ندارید نگران نباشید، برد آردوینو UNO (و بردهای مشابه) شما می‌تواند نقش پروگرامر را بازی کند.

پیکربندی تنظیمات در نوار Tools

عکس 4: پیکربندی تنظیمات در نوار Tools

۱. اگر میخواهید از یک برد آردوینو به عنوان پروگرامر استفاده کنید روی برد آردوینوی خود کدِ نمونه ArduinoISP را آپلود کنید (از منوی File > Examples > 11.ArduinoISP).

۲. اتصالات SPI را بین پروگرامر(آردوینو) و میکروکنترلر جدید همتا به همتا برقرار کنید (پایه‌های MISO, MOSI, SCK, Reset). برای پیدا کردن پایه‌ها ، میتوانید میکرو خود را گوگل کنید یا در جدول ابتدای صفحه روی “دانلود Pinout” کلیک و عکسهای مربوط به میکروکنترلر خود را مشاهده کنید.

۳. در منوی Tools تنظیماتی که مدنظر دارید انجام دهید:
ابتدا در قسمت Board میکروکنترلر خود را انتخاب کنید.

بعد از انتخاب میکروکنترلر وقتی به منوی Tools می‌روید، با گزینه‌های جدید روبرو می‌شوید که برای آردوینوی پیش‌فرض وجود ندارند همان تنظیماتی که از یک AVR انتظار می‌رود. بیایید برخی از این تنظیمات را کالبدشکافی کنیم:

BOD(Brown-out Detection) : سطح ولتاژ ریست اضطراری. اگر ولتاژ تغذیه از این حد پایین‌تر بیاید، میکروکنترلر ریست می‌شود تا داده‌ها خراب نشوند.

Bootloader: فعال یا غیرفعال سازی تزریق بوت‌لودر یا انتخاب پورت سریال در صورت وجود چند پورت برای پروگرام از طریق رابط سریال (UART).

Clock: این مهم‌ترین گزینه است. شما می‌توانید فرکانس کاری میکروکنترلر یا منبع آن (داخلی، خارجی) را تعیین کنید.
(نکته 1:در صورت عدم استفاده از کریستال به صورت فیزیکی و انتخاب کریستال خارجی در تنظیمات ممکن است میکروکنترلر تا زمان اتصال کریستال قابل پروگرام مجدد نباشد و عملکردی نداشته باشد.
نکته 2:در صورت استفاده از کریستال متفاوت با تنظیمات، تایمر‌ها و پورت‌ها ارتباطی و … عملکرد درستی ندارند)

LTO یا در واقع Link Time Optimization : فعال یا غیرفعال سازی بهینه‌سازی کد (در آردوینو معمولی همیشه فعال است).

Pinuot: فقط در بعضی از پکیج‌ها وجود دارد .این کلمه معادل فارسی ندارد اما شاید بتوان به آن پایه‌بندی! گفت. که به معنی نحوه پیکربندی پایه‌هاست در واقع نحوه نام‌گذاری پایه‌ها در محیط آردوینو است.(برای مشاهده این پیکربندیها به گیت‌هاب پروژه مراجعه کنید یا از قسمت “دانلود مستندات” جدول ابتدایی آن را دانلود کنید)
standardچیدمان بر اساس پایه‌های فیزیکی خودِ آی‌سی
Bobuino: چیدمانی که با آردوینو سازگار هست  (برای استفاده راحت‌تر از شیلدها).

در تصاویر زیر نمونه ای از راهنمای pinout برای پکیج MightyCore مشاهده کنید

   
[گالری عکس : تصویری راهنمای Pinout مگا ۳۲]

  1. در قسمت Programmer پروگرامر خود را انتخاب کنید (Arduino as ISP یا USBasp یا هر پروگرامر پشتیبانی شده‌ی دیگری که دارید).
  2. گزینه Burn Bootloader را بزنید. ( در صورتی که گزینه‌ی Bootloader که چند سطر قبل توضیح داده شد فعال شده باشد فیوزبیت‌ها و بوت‌لودر را پروگرام می‌کند در غیر این صورت فقط فیوزبیت‌ها را تنظیم می‌کند).

✅ نکته آموزشی


اگر اصطلاحات «بوت‌لودر» و «فیوزبیت» برایتان ناآشناست باید بدانید که:

  • فیوزبیت (Fuse Bits): فیوزبیت‌ها “تنظیمات بنیادی سخت‌افزار” هستند که رفتار کلی چیپ‌های AVR را تعیین می‌کنند و برخلاف کد برنامه، با قطع برق پاک نمی‌شوند. برای مثال این بیت‌ها مشخص می‌کنند که میکروکنترلر با چه سرعتی کار کند (منبع کلاک)، در چه ولتاژی خاموش شود (BOD) و …

  • بوت‌لودر (Bootloader): یک برنامه کوچک است که در بخش خاصی از حافظه می‌نشیند و همیشه در هنگام بوت(راه‌اندازی) قبل از برنامه اصلی اجرا می‌شود. وظیفه آن این است که چند لحظه منتظر بماند و پورت‌های ارتباطی میکروکنترلر را بررسی کند؛ اگر درخواست آپلود کد جدیدی بیاید، آن را دریافت و روی حافظه می‌نویسد. که میکروکنترلر را از پروگرامر اختصاصی بی‌نیاز می‌کند.
شاید برای شما مفید باشد:
رابط سریالی ATA یا SATA چیست؟

مرحله چهارم: آپلود اولین کد 

تبریک می‌گویم! شما رسماً آردوینوی اختصاصی خودتان را ساختید. حالا می‌توانید اولین کد خودتان را پروگرام کنید.
اما چگونه!؟ دو راه پیش روی شما قرار دارد. آپلود به وسیله‌ی پروگرامر یا آپلود به وسیله بوت‌لودر و رابط سریال(UART).

روش ۱: استفاده از پروگرامر (Upload Using Programmer)

این روش زمانی مناسب است که می‌خواهید از تمام فضای حافظه استفاده کنید یا زمانی که نیاز ندارید هر بار برنامه جدیدی روی میکروکنترلر پروگرام کنید.

پروگرامر AVR با رابط USBasp برای برنامه‌ریزی درون‌مداری ISP

پروگرامر AVR با رابط USBasp برای برنامه‌ریزی درون‌مداری ISP

  1. پروگرامر (USBasp یا آردوینو) را همانطور که متصل بود، نگه دارید.
  2. در منوی Tools میکرو و تنظیمات مدنظر را انتخاب کنید.
  3. در منوی Sketch، گزینه Upload Using Programmer را بزنید (یا کلیدهای Ctrl+Shift+U).
آپلود به وسیله‌ی پروگرامر

عکس 5: آپلود به وسیله‌ی پروگرامر

روش 2: استفاده از رابط سریال

این روش دقیقاً مشابه کاری است که با برد آردوینو UNO انجام می‌دهید. برای این کار نیاز به یک مبدل USB به سریال دارید. در بازار ایران تعداد زیادی ماژول (مثل ماژول‌های CH340 یا FTDI) در ابعاد مختلف وجود دارد می‌توانید کوچک ترین برد موجود را تهیه و روی برد لحیم کنید. حتی میتوانید از ای‌سی‌های USB به سریال هم استفاده کنید(من در برد پروتوتایپ از ای‌سی CH340G استفاده کردم و سوکت usb را در پشت برد نصب کردم) . فقط مطمئن شوید در ماژول یا ای‌سی ای که انتخاب می‌کنید پایه ای به نام DTR وجود داشته باشد. این پایه در زمان آپلودِ کد، میکروکنترلر را ریست می‌کند تا بوت‌لودر زمان بوت ، پروگرام را بر عهده گیرد.

  1. اتصالات را به این صورت برقرار کنید:
  • RX مبدل -> TX میکروکنترلر 
  • TX مبدل -> RX میکروکنترلر
  • VCC/GND -> تغذیه
  • DTR مبدل -> پایه Reset میکروکنترلر .
  1. پورت سریال (COM) مبدل را در نرم‌افزار انتخاب کنید.(مطمئن شوید که درایور مبدل USB به سریال به درستی نصب شده باشد)
  2. دکمه دایره‌ای شکل Upload (فلش سمت راست) را بزنید.
انواع رابط سریال

عکس 6: انواع رابط سریال

می‌بینید که با این پروژه های متن‌باز توانستیم که تعداد قابل توجه‌ای از خانواده AVR را به تسخیر آردوینو در آوریم

نتیجه

عکس 7: نتیجه

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

اطلاعات
182
0
0
اشتراک و حمایت
profile نویسنده: gasemi.m100 متخصص الکترونیک

دوستدار الکترونیک و ساختنی‌های کوچک اما کاربردی


مقالات بیشتر

slide

پالت | بازار خرید و فروش قطعات الکترونیک

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

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. جستجو در آیسی
family

سیسوگ‌شاپ | فروشگاه محصولات Quectel

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

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

سیکار | اولین مرجع متن باز ECU در ایران

بررسی و ارائه اطلاعات مربوط به ECU (واحد کنترل الکترونیکی) و نرم‌افزارهای متن باز مرتبط با آن برو به سیکار
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله

خانواده سیسوگ

سیسوگ‌شاپ

فروشگاه محصولات Quectel

پالت
سیسوگ فروم

محلی برای پاسخ پرسش‌های شما

سیسوگ جابز
سیسوگ
سیسوگ فروم
سی‌کار

اولین مرجع متن باز ECU در ایران

سیسوگ مگ
آی‌سی

موتور جستجوی قطعات الکترونیکی

سیسوگ آکادمی
پالت

بازار خرید و فروش قطعات الکترونیک

دیدگاه ها

become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer
نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله