همانطور که میدونیم آردوینو چیزی نیست جز یک میکروکنترلر معمولی که دوستان مهربونی (شرکت آردوینو) اومدند برای اون یک ادیتور سطح بالا و یه سری سختافزار مناسب طراحی کردند که شما با کمترین دانش الکترونیکی درباره میکرو و خیلی از موضوعات دیگه میتونید از این بستر به سرعت استفاده کنید و ازش لذت ببرید.
این ساختار صحبت شده اینقدر زیبا طراحی شده است که خیلی از مهندسین نرم افزار هم به اون سرک کشیده و پروژه های زیادی را باهاش انجام دادند و به واسطه همین استفادهکنندگان زیاد هم میشه گفت منابع و کتابخانههای متعددی برای این بردها نوشته شده، که انجام دادن پروژهها را میتونه برای شما سهل کنه!
خب فرض کنید الان شما یک برد آردوینو دارید و پروژه ای را انجام دادید باهاش ولی تمایل دارید برای تولید تعداد و اینکه هزینههای تولید را کم کنید و دلایل متعدد دیگهای از این برد آردوینو و ساختارش استفاده کنید.
در این حالت شما نیاز به ساختار آردوینو دارید نه خود برد آردوینو! راهکار چیه؟
راهکار کلی اینه که میکروکنترلر استفاده شده در پروژه را بر روی برد خودتون مونتاژ کرده و کدهای اولیه آردوینو را توسط پروگرمر بر روی اون بریزید به این کدهای اولیه اصطلاحا برنامه بوت لودر آردوینو گفته میشه!
بارها شده که از یک برد آردینو برای پروژههای متفاوت استفاده کردهاید و توانستهاید که پروژههای متفاوت را انجام دهید. اما به این موضوع فکر کردهاید که اگر برای یک کار صنعتی و یا یک محیطی که آزمایشگاهی نباشد چگونه باید از آردینو استفاده کرد؟ و سولاتی از قبیل موارد زیر برای ما پیش خواهد آمد.
- برای انجام یک پروژه صنعتی باید چیکار کنم؟
- چگونه برای آیسی موردنظر باید برنامهنویسی کنم؟
- چگونه کد را آپلود کنم؟
- آیا این کار امکان پذیر است یا خیر؟
- آیا باید طراحی برد انجام داد؟ از چه قطعاتی باید استفاده کرد؟ چگونه باید قطعات را شناخت؟ و …
شاید برای شما مفید باشد: پروژه های آردوینو
مطمئنا در سایتهای مختلف در مورد پروگرام کردن آردوینو سوالات متفاوتی پرسیده شده اما تقریبا میتوان گفت که هیچ وبسایتی این توضیح را به صورت 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)
پس از اینکه روی آیسی بوتلودر ریخته شد نوبت به آپلود کد مورد نظر میرسد.
طبق شکل بالا پایه های 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 و … را طراحی خواهیم کرد.)
در واقع سه مرحله قبل، پیش نیاز این قسمت بود، تا بتوانیم برد را به درستی طراحی و پیادهسازی کنیم و در حین طراحی اشتباهی رخ ندهد.
پیشنیاز این قسمت نرمافزار آلتیوم دیزاینر است که ما با فرض تسلط خواننده در این قسمت پیش میرویم.
بدون فوت وقت ابتدا نرم افزار آلتیوم دیزاینر را باز میکنیم و شماتیک مدار را طراحی میکنیم که به شکل زیر میباشد.
بروز رسانی 1400/05/30
یکی از مخاطبان سیسوگ، لطف کردند و انتقاداتی نسبت به این پست داشتند. از آنجایی که به نکته های بسیار خوب و به جایی اشاره کردند و ما با نویسنده این مطلب در ارتباط نیستیم، نظر ایشان را نیز در انتهای این آموزش اضافه کردیم:
سلام وقت به خیر.
یه سری ابهامات و ایراداتی در متن وجود داره، که اگه بیان میشد اعتبار متن خیلی بیشتر میشد:
دلیل استفاده ما از رگولاتور lm2596 که نسبت به رگلاتورهای معروف دیگه هم راندمان بالاتری داره و هم دقت بیشتر و نکته مهم اینه که می تونیم جریان کشی بالاتری رو در پایههای خروجی خصوصاً برای سروو موتورها و ماژول سیم 800 داشته باشیم.
نکته دوم: ملاحظات طراحی که بسیار مهم هستن مث قرارگیری کریستال به میکرو و… بیان نشده که توصیه میکنم در قالب یک پست این موارد رو که 5 مورده ذکر بشه.
نکته سوم مدار یا شماتیک میکرو دارای 3 ایراد اساسیه:
به جای فیوز بین VCC و AVCC باید سلف باشه!
مورد دوم بین GND و VCC باید خازن قرار میگرفته که نگرفته!
مورد سوم ما خروجی از رگولاتور در برد نداریم، یعنی عملاً ما قرار نیست منبع تغذیه قطعات اتصالی مون رو از برد تأمین کنیم، که این ایراد بسیار بزرگیه و فکر میکنم فراموش کردید.
و در نهایت بهتر بود کانکتورهایی جهت خروجی SPI و I2C و سریال برای اتصال در نظر گرفته میشد.
با آرزوی موفقیت شما!
محمدتقی جعفری
سلام وقت بخیر
یه سری ابهامات و ایراداتی در متن وجود داره که اگه بیان میشد اعتبار متن خیلی بیشتر میشد:
دلیل استفاده ما از رگولاتور lm2596 که نسبت به رگلاتورهای معروف دیگه هم راندمان بالاتری داره و هم دقت بیشتر و نکته مهم اینه که می تونیم جریان کشی بالاتری رو در پایه های خروجی خصوصا برای سروموتورها و ماژول سیم800 داشته باشیم
نکته دوم ملاحظات طراحی که بسیار مهم هستن مث قرارگیری کریستال به میکرو و… بیان نشده که توصیه می کنم در قالب یک پست این موارد رو که 5 مورده ذکر بشه
نکته سوم مدار یا شماتیک میکرو دارای 3 ایراد اساسیه
به جای فیوز بین vccوavccباید سلف باشه
مورد دوم بین gndوvccباید خازن قرار میگرفته که نگرفته
مورد سوم ما خروجی از رگولاتور در برد نداریم،ینی عملا ما قراره نیست منبع تغذیه قطعات اتصالی مون رو از بورد تامین کنیم که این ایراد بسیار بزرگیه فکر می کنم فراموش کردید
و در نهایت بهتر بود کانکتورهایی جهت خروجی spiوi2c و سریال برای اتصال در نظر گرفته میشد
با آرزوی موفقیت شما
محمدتقی جعفری
درود بر شما!
از راهنماییها و انتقادات بسیار خوبتون تشکر میکنیم. به علت اینکه با نویسنده اصلی این پست در ارتباط نیستیم، نظر شما را در انتهای همین پست اضافه کردیم تا خوانندگان از راهنماییهای شما بهره مند شوند.
با تشکر فراوان.
سلام من یک usbasp و اردوینو مگا 2560 دارم که بوت لودر 16u2اردینو مگا خراب شده و به عنوان کیبورد شناسایی می شود
چطور میتونم درستش کنم که به عنوان اردوینو مگا 2560 شناخته بشه؟
#
سلام من یک usbasp و اردوینو مگا 2560 دارم که بوت لودر 16u2اردینو مگا خراب شده و به عنوان کیبورد شناسایی می شود
چطور میتونم درستش کنم که به عنوان اردوینو مگا 2560 شناخته بشه؟
سلام و وقت بخیر
من همین مدار رو درست کردم، اما الان یه مشکل دارم اونم اینه که میکروکنترلر داغ می کنه، در صورتی که ورودی یا خروجی خاصی بهش وصل نیست.
بسیار عالی بود
آموزش هاتون رو ادامه بدید ??
سلام دوست عزیز
حتما ان شالله با حمایت های شما مخاطبین عزیز، این اموزش ها بیشتر و با کیفت تر هم خواهد شد.
بنظر من بهترین راه برای پروگرام یه میکروکنترلر با کامپایلر آردوینو خرید یه پروگرامره چون با پروگرامر میشه بدون استفاده از بوت لودر برنامه رو ریخت رو میکرو به این شیوه میشه حافظه میکرو رو ذخیره کرد برا کار های دیگه. برای استخراج فایل هگز هم میشه از کلید های ترکیبی ctrl+alt+s استفاده کرد. با این دستور کد هگز با بوت لودر و بدون بوت لودر کنار اسکچتون ذخیره میشه و میتونید استفاده کنید ازش.
برا پروگرامر هم هاتل بهترین گزینس (البته به نظر من).
سلام
در اینصورت تنظیمات فیوز بیت آن چطوری هست؟ اگه نیاز به تنظیم خاصی می خاد لطفا بگید؟
سلام دوست عزیز فکر میکنم فیوز بیت ها به شکل زیر مقدار دهی میشن
uno.bootloader.low_fuses=0xff
uno.bootloader.high_fuses=0xde
uno.bootloader.extended_fuses=0x05
سلام
من این فیوزها رو میخوام تنظیم کنم ولی پروگرامر من TNM5000 هست و این نوع نشون نمیده لطفا راهنمایی کنید
من با این پروگرامر کار نکردم – ولی احتمالا توی یوزر منوال خود پروگرامر باید نحوه استفاده از اون باشه.
تنکس چوخ زیاد!!!
مقالات در سطوح مختلف نوشته میشه و این تنوع میتونه جذاب باشه.
ممنون از سایت خوبتون
خواهش میکنم دوست عزیز
امیدواریم که بتونیم همچنان با قدرت در زمینه های متنوع عمل کنیم البته با حمایت شما مخاطبین عزیز که واقعا باعث دلگرمی تیم سیسوگ هستید.
موفق باشید.