مقدمه
همانطورکه میدونیم آردوینو چیزی نیست جز یک میکروکنترلر معمولی که دوستان مهربونی(شرکت آردوینو) اومدند برای اون یک ادیتور سطح بالا و یهسری سختافزار مناسب طراحی کردند که شما با کمترین دانشالکترونیکی درباره میکرو و خیلیاز موضوعات دیگه میتونید از این بستر بهسرعت استفادهکنید و ازش لذت ببرید. این ساختار صحبتشده اینقدر زیبا طراحیشدهاست که خیلیاز مهندسین نرمافزار هم به اون سرک کشیده و پروژههای زیادی را باهاش انجام دادند و به واسطه همین استفادهکنندگان زیاد هم میشه گفت منابع و کتابخانههای متعددی برای این بردها نوشتهشده، که انجامدادن پروژهها را میتونه برای شما سهلکنه! خب فرضکنید الان شما یک برد آردوینو دارید و پروژهای را انجامدادید باهاش ولی تمایل دارید برای تولید تعداد و اینکه هزینههای تولید را کم کنید و دلایل متعدد دیگهای از این برد آردوینو و ساختارش استفادهکنید. در اینحالت شما نیازبه ساختار آردوینو دارید نه خود برد آردوینو! راهکار چیه؟ راهکار کلی اینه که میکروکنترلر استفادهشده در پروژه را برروی برد خودتون مونتاژ کرده و کدهای اولیه آردوینو را توسط پروگرمر برروی اون بریزید به این کدهای اولیه اصطلاحا برنامه بوت لودر آردوینو گفته میشه! بارها شده که از یک برد آردینو برای پروژههای متفاوت استفادهکردهاید و توانستهاید که پروژههای متفاوت را انجام دهید. اما به این موضوع فکرکردهاید که اگر برای یک کارصنعتی و یا یک محیطی که آزمایشگاهی نباشد چگونه باید از آردینو استفادهکرد؟ و سولاتی از قبیل موارد زیر برایما پیش خواهد آمد.
- برای انجام یک پروژه صنعتی باید چیکار کنم؟
- چگونه برای آیسی موردنظر باید برنامهنویسی کنم؟
- چگونه کد را آپلود کنم؟
- آیا این کار امکانپذیر است یا خیر؟
- آیا باید طراحی برد انجامداد؟ از چه قطعاتی باید استفادهکرد؟ چگونه باید قطعات را شناخت؟ و…
مطمئنا در سایتهای مختلف درمورد پروگرامکردن آردوینو سوالات متفاوتی پرسیدهشده اما تقریبا میتوان گفت که هیچ وبسایتی این توضیح را بهصورت OnBoard ندادهاست و توضیحات اصطلاحا آزمایشگاهی(بردبردی) بوده که در این مقاله سعیداریم یک برد آردوینو البته از نوع SMD آنرا طراحی و بدون اینکه آیسی را جدا کنیم برد را پروگرام کنیم و که این کار را در چندگام توضیح خواهیمداد. در ادامه مقاله به تمامی سوالات خود خواهید رسید.
گام اول: بوت لودر(BootLoader) در میکروکنترلر چیست؟
بوت لودر روشی برای پروگرامکردن تراشههای میکروکنترلر است که توسط خود ميکروکنترلر اقدام به برنامهریزی خودش میکند. این روش از پروگرامکردن تراشه مخصوص آن دسته از میکروکنترلرهایی است که قابلیت نوشتن در حافظه برنامه خود را دارند. در بوت لودر، ابتدا یک برنامه با حجم پائین در میکروکنترلر پروگرام میشود. وظیفه این برنامه برقراری ارتباط با کامپیوتر و اجرای دستورات دریافتی از آن(خواندن/نوشتن/پاک کردن و…) میباشد. پساز اینکه برنامه بوت لودر را برروی میکروکنترلر پروگرام کردید، پساز هربار ریستشدن میکروکنترلر و یا قطع و وصل تغذیه، ابتدا به برنامه بوت لودر میرود. تا اگر ارتباط با کامپیوتر برقرار بود، به اجرای دستوراتدریافتی پرداختهشود و اگر ارتباط برقرار نبود، به برنامه اصلی میکروکنترلر میرود. ازنظر تقسیمبندی و ساختار بوتلودر شامل سه قسمت مهم میباشد.
- پشتیبانی میکروکنترلر شما و قابلیت بوت لودر در میکرو شما، برای نمونه میکروهای۸۰۵۱ از این قابلیت پشتیبانی نمیکردند(یعنی این قسمت یک قابلیت سختافزاری در میکرو شما میباشد)
- نرمافزاری که برروی بوت لودر میکرو شما نوشتهمیشه(تقریبا مشابه برنامهای است که در برنامهنویسی اون میکرو استفاده میکنید)
- نرمافزاری که قرار است اطلاعات برنامه را برروی میکرو شما ارسال نماید(نرمافزار کامپیوتری یا میکروکنترلری مشابه)
درمورد بوت لودر قبلا مقالهای نوشتهایم، برای اطلاعات بیشتر در این مورد پیشنهاد میکنیم اینجا کلیک کنید.
گام دوم: پیادهسازی بوت لودر روی آردوینو
در این قسمت اتصالات برد آردوینو را مورد بررسی قرار میدهیم. که دقیقا طبق چه پروتکلی کار میکند.
همانطورکه از شکلبالا مشخصشده، برای ریختن بوتلودر باید پایههای زیر را به برد آردوینو متصلکنیم.
- PB2
- PB3
- PB4
- PB5
طبق پایهایی که گفتهشد، مشخصاست که از پروتکل SPI برای اینکار انجام استفاده میشود. پروتکل SPI چیست؟ یکیاز انواع پروتکلهایی است که تابهحال شنیدهاید و برای ارتباط با بعضیاز دیوایسها از این پروتکل استفاده میشود در این نوع ارتباطات، دستگاهها بهصورت Master/Slave باهم ارتباط برقرار میکنند که در آن دستگاه Master فریمهای داده را به راه میاندازد. همچنین میتواند با چندین Slave ارتباط برقرار کند. گاهی برای جداسازی SPI از گذرگاههای سریال ۳سیمه، ۲سیمه و ۱سیمه، به آن گذرگاه سریال ۴سیمه نیز میگویند.
SPI، چهار سیگنال منطقی دارد:
- SCLK: کلاک(خروجی ازطرف Master)
- MOSI: خروجی Master، ورودی Slave (خروجی ازطرف Master)
- MISO: ورودی Master، خروجی Slave(خروجی از طرف Slave)
- SS: انتخاب Slave(فعال پایین(Active Low)، خروجی ازطرف Slave)
نکته: از این به بعد هر میکروکنترلری که پایههای معرفیشده را داشت میتوان گفت که از پروتکل SPI استفاده میکند.
پساز اینکه روی آیسی بوتلودر ریختهشد نوبتبه آپلود کد موردنظر میرسد.
طبق شکلبالا پایههای RX و TX و Reset و GND و VCC را به برد خود متصل میکنیم و درنهایت گزینه آپلود کد را میزنیم درصورتیکه عملیات بوتلودر بهدرستی انجامشدهباشد در آپلود کد هیچمشکلی پیشنخواهد آمد.
گام سوم: تنظیمات بوتلودر ازطریق نرمافزار آردینو
پساز اتصال سختافزار بهصورتیکه گفتهشد، وارد نرمافزار Arduino Ide میشویم و طبق مراحلزیر عمل میکنیم. ابتدا پورت COM را انتخاب میکنیم و مطمئن میشویم که دیوایس توسط PC شناختهشدهاست. سپس در قسمت نواربالا محیط Arduino وارد Tools=> Programmer=> Arduino as ISP را انتخاب میکنیم و سپس گزینه Burn Bootloader را میزنیم. اگر در اخر در قسمت گزارشات DONE را مشاهدهکردیم یعنی اینکه عملیات بوت ایسی بهدرستی انجامشدهاست. پساز ریختن بوتلودر روی ایسی، نوبت به آپلودکردن کد روی ایسی میرسد که برای اینکار باید مراحلزیر را انجامدهیم.
- در قسمت Tools => Board نوع بردی را که استفاده میکنیم انتخابکنیم(درواقع نوع آیسی که مونتاژ کردیم روی برد خودمون)
- تنظیم Processor که در این بخش نوع ایسی استفادهشده را انتخاب میکنیم.
- تنظیم پورت COM
- و درنهایت گزینه آپلود را میزنیم که در قسمت گزارشات باید Done Uploading را مشاهدهکنید. درصورت مشاهده، شما موفق شدهاید.
گام چهارم: طراحی و ساخت برد آردینو
خب در این بخش که میتوان گفت مهمترین بخش این مقاله محسوب میشود میخواهیم یک برد آموزشی(SMD) طراحیکنیم (البته اگر بازخورد مطلب خوب بود و دوستان علاقهمند بودند بردهای کاربردی دیگری در زمینههای صنعتی و IOT و… را طراحی خواهیمکرد.) درواقع سه مرحله قبل، پیشنیاز این قسمت بود، تا بتوانیم برد را بهدرستی طراحی و پیادهسازی کنیم و درحین طراحی اشتباهی رخ ندهد. پیشنیاز این قسمت نرمافزار آلتیوم دیزاینر است که ما با فرض تسلط خواننده در این قسمت پیش میرویم. بدون فوت وقت ابتدا نرمافزار آلتیوم دیزاینر را باز میکنیم و شماتیک مدار را طراحی میکنیم که بهشکلزیر میباشد.
نکته: دقتکنید که پایههای پروگرامکردن برنامه کاملا در شماتیک مشخصشدهاست و برای پروژههای آردینو خود میتوانید از این شماتیک برای پروگرامکردن ONBOARD برد خود استفادهکنید. التبه بهخاطر داشتهباشید پساز ریختن بوت لودر برای آپلودکردن کد کافیاست توسط اتصال به یک مبدل usb to ttl کد موردنظر را آپلود کنید.
منبع:سیسوگ