0% found this document useful (0 votes)
90 views

Arduino

arduino

Uploaded by

pedram
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
90 views

Arduino

arduino

Uploaded by

pedram
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

‫آموزش نحوه ساخت برد آردوينوی دلخواه‬

‫سالم بر آردوينو کاران جوان‬

‫امروز ميخوام براتون در مورد نحوه ساخت يک برد آردوينو با ھر ميکروکنترلر ‪ AVR‬که دم دست‬
‫داريد صحبت کنم‪.‬‬

‫دوستان عزيز‪ ،‬با توجه به گرانی ھای اخير بردھای آردوينو‪ ،‬ديگه استفاده از اونا برامون سخت شده‪ .‬لذا با‬
‫توجه به شعار ھميشگی استاد عزيزم مھندس محمود بخت آور که من از بچگی با کتابھای ايشان‬
‫الکترونيک رو ياد گرفته ام‪ ،‬ايشان ھميشه در کتابھای خود مينوشتند که “احتياج‪ ،‬مادر اختراع است‪ ”.‬لذا‬
‫ما ھم از اين شعار پيروی ميکنيم و برد آردوينوی خودمان را می سازيم‪.‬‬

‫خيلی از دوستان قديمی که قبالً با ميکروکنترلر ھای ‪ AVR‬کار ميکردند‪ ،‬اکثراً در منزل چندين‬
‫ميکروکنترلر بدون استفاده دارند که سالھاست در گوشه کمد خاک ميخورند‪ .‬حاال ديگه وقتشه که يک‬
‫استفاده ای از اونا ببريم‪ .‬من که خودم حدود ‪ 10‬تا ‪ ATMEGA32‬و ‪ 15‬تا ‪ ATMEGA8‬بدون استفاده‬
‫دارم‪ ،‬که از تقريبا ً از سال ‪ 1380‬توی کشوی قطعات بی استفاده مانده اند‪ .‬پس بياييد باھم برد آردوينوی‬
‫دلخواھمون رو بسازيم‪ .‬و فعالً برد آردوينو نخريم تا شايد کمی ارزانتر شوند‪) .‬عرضه زياد ‪ +‬تقاضای کم‬
‫= ارزانی(‪.‬‬

‫آردوينو بھتره يا ‪AVR‬؟‬

‫حتما ً شما ھم بارھا اين سوال احمقانه رو شنيده ايد که ميگن آردوينو بھتره يا ‪AVR‬؟ خب مگه آردوينو‬
‫ميکروکنترلر ھست که با يک ميکروکنترلر مقايسه اش ميکنيد؟‬

‫دوستان ھمونطوريکه قبالً ھم توی کانال گفته ام‪ ،‬نرم افزار ‪ IDE‬آروينو‪ ،‬قدرتمند ترين و پر کاربرد ترين‬
‫نرم افزاری است که تا کنون برای کد نويسی ميکروکنترلر ھا ساخته شده و رو دست نداره‪ .‬راحت ترين‬
‫زبان برای يادگيری و کار کردن با ميکروکنترلرھا‪ ،‬با دستورات مفھومی که خود دستورات به ما ميگن‬
‫که چه کاری ميخواھند انجام دھند‪ .‬مثالً ;)‪ pinMode (5, OUTPUT‬خب اين دستور ميگه که ميخواھم‬
‫‪ MODE‬يا حالت پين شماره ‪ 5‬خروجی باشه‪ .‬حاال مقايسه اش کنيد با ‪ DDRB = 00000000‬به نظر‬
‫شما کدوم قابل فھم تره؟؟؟‬

‫و اگه منظور از سوال باال مقايسه ميکروکنترلر ‪ AVR‬با برھايی است که برای تست سريع کدھای‬
‫آردوينو ساخته شده اند و به بردھای آردوينو معروف ھستند‪ ،‬می باشد‪ ،‬بايد بگم که باز ھم سوال بی‬
‫خردانه ای است‪ .‬چون برد ھای آردوينو دارای يک ميکروکنترلر است که در بعضی از برد ھا مثل‬
‫آردوينو ‪ UNO‬يا ‪ NANO‬يا ‪ MEGA2560‬ميکروکنترلر ‪ AVR‬است‪ .‬و در بعضی از بردھای‬
‫آردوينو مانند آردوينو ‪ DUE‬از ميکروکنترلر ‪ ARM‬استفاده شده و يا بعضی از برد ھای آردوينو‪ ،‬با‬
‫استفاده از ميکروکنترلر ھای ‪ PIC‬و يا ‪ STM32‬و غيره ساخته شده اند‪ .‬به عالوه منبع تغيه و پروگرامر‬
‫سرخود و مبدل ‪ USB‬به سريال و غيره که کار رو برای کاربر‪ ،‬بسيار راحت کرده اند‪ .‬من خودم سالھا با‬
‫ميکروکنترلر ھای ‪ AVR‬کار کرده بودم ولی ھيچ وقت حوصله ساخت يک مبدل ‪ USB‬به سريال رو‬
‫نداشتم تا تست کنم ببينم پورت سريال چطوری کار ميکنه‪ .‬ولی االن ھر چيزی رو که ميخوام تست کنم‪،‬‬
‫بالفاصله اطالعاتش رو ميفرستم به پورت سريال تا مطمئن بشم درست کار ميکنه‪ .‬از طرفی اين بردھا‬
‫نياز به لحيم کاری يا برد بورد‪ ،‬ندارند‪ .‬و با چند تا سيم جامپر برد بوردی ميشه ھر سنسوری رو بھش‬
‫وصل کرد‪ .‬و يا بردھايی بنام شيلد برايشان ساخته شده که در يک ثانيه بھشون متصل ميشه و بھشون‬
‫امکانات اضافه ميکنه‪) .‬مثالً شيلد شبکه(‪.‬‬

‫حاال شما تجسم کنيد که بدون منبع تغذيه و پروگرامر و مبدل ‪ USB‬به سريال و غيره با خود‬
‫ميکروکنترلر ‪ AVR‬خالی چه کاری ميشه انجام داد؟؟؟‬

‫پس نتيجه ميگيريم که برای کار با ميکروکنترلر ھای ‪ AVR‬ھم بايد برد آردوينو رو شبيه سازی کرد‪ .‬تا‬
‫کار کنه‪ .‬يعنی ھمون کاری که ما امروز ميخواھيم انجام دھيم‪.‬‬
‫از طرفی خود نرم افزار آردوينو دارای کتابخانه ھای بسيار قدرتمندی ھست که به کاربر اجازه ميده در‬
‫کمترين زمان ممکن‪ ،‬بھترين نتيجه رو بگيره و دستگاه ھای الزمه اش رو بسازه‪ .‬و ديگه کاربر با اين که‬
‫االن به کدوم پين سنسور‪ ،‬پالس بدم و چند ميکروثانيه مکث کنم و جھت پالس رو برعکس کنم و دوباره‬
‫چند ميکروثانيه صبر کنم و بعدش کد ھگز فالن رو از باس آدرس براش بفرستم و بالفاصله برم از باس‬
‫داده اطالعاتش رو بخونم و ‪ ...‬درگير نيست‪.‬‬

‫بعنوان مثال برای خواندن ميزان دما و رطوبت از سنسور ‪ DHT22‬فقط کافيه کتابخانه ‪ DHT22‬رو به‬
‫برنامه اش اضافه کنه >‪ #include <DHT22.h‬بعد به ميکرو بگه که اين سنسور رو ميخوام به کدوم‬
‫پايه ات وصل کنم و استارت کار سنسور رو بزنه‪ dht.begin(); .‬حاال ميتونه دما و رطوبت رو ازش‬
‫بخونه‪ dht.readTemprature(); :‬و ;)(‪ dht.readHumidity‬و تموم شد و رفت‪ .‬من ميخوام يک‬
‫دماسنج بسازم و استفاده کنم و به من ھيچ ربطی نداره که به اين سنسور چطوری بايد پالس اعمال بشه و‬
‫نمودارھای زمانی و غيره اش رو ياد بگيرم‪ .‬خود کتابخانه اين کارھا رو برام انجام ميده‪ .‬و اين بزرگترين‬
‫مزيت آردوينو ھست‪ .‬که باعث ايجاد انگيزه در عالقه مندان به الکترونيک در طراحی دستگاه ھای جديد و‬
‫ثبت اختراعات جديد ميشه‪.‬‬

‫و بد نيست به اين مطلب ھم اشاره کرد که با نرم افزار ‪ IDE‬آردوينو‪ ،‬ميشه برای بردھای آردوينو‪،‬‬
‫ميکروکنترلر ھای ‪ ،AVR‬ميکروکنترلر ھای ‪ ،ARM‬ميکروکنترلر ھای ‪ ،STM‬ميکروکنترلرھای ‪PIC‬‬
‫و ھمچنين ماژول ھای وای فای و غيره کدنويسی کرد‪ .‬که ھيچکدام از محيط ھای کدنويسی ديگر‪ ،‬اين‬
‫امکانات رو ندارند‪.‬‬

‫يا به قول بعضی از دوستان‪ ،‬بردھای آردوينو که خيلی گرونتر از ميکروکنترلر ھا ھستند‪ ،‬بخاطر اينه که‬
‫يک سری قطعات يکبار مصرف اضافی دارند‪ .‬مثالً بعد از پروگرام کردن برد‪ ،‬ديگه چه نيازی ھست که‬
‫پروگرامر روش باشه؟ و ميشه حذفش کرد‪ .‬اين سوال کمی نياز به تعمق داره‪ .‬چون اگه فردا روزی‬
‫خواستيد برنامه نوشته شده داخل ميکروکنترلرتون رو آپديت کنيد و به اصطالح ورژن بزنيد‪ ،‬بايد چند‬
‫ساعت دنبال پروگرامرتون بگرديد تا اگه پيداش کرديد‪ ،‬برنامه رو آپديت کنيد‪ .‬ولی ميشه حذفش کرد و مثل‬
‫برد آردوينويی که من ساخته ام و اون باال تصويرش رو ديديد‪ ،‬از مبدل ‪ USB‬به سريال استفاده ميکنه‪.‬‬

‫ايرادات بردھای آردوينو‪:‬‬


‫‪ -1‬اندازه ھای آنھا ثابت است و جعبه دستگاه‪ ،‬بايد برحسب اندازه آردونو‪ ،‬خريداری شود‪) .‬در اين‬
‫آموزش ياد ميگيريم که چگونه برد آردوينوی مورد نظر خودمون رو بسازيم‪ .‬پس ابعاد و شکل‬
‫‪ PCB‬اون رو ميتونيم بر حسب اندازه جعبه ھای موجود‪ ،‬بسازيم(‪.‬‬
‫‪ -2‬بخاطر اينکه نرم افزار آردوينو برای دستوراتی مانند‪ millis(), micros(), delay(); :‬از تايمر‬
‫شماره صفر ميکروکنترلر استفاده ميکند‪ ،‬ديگه نميتونيم از اين تايمر استفاده کنيم‪) .‬ولی چند تا‬
‫تايمر ديگه ھم داريم که به ندرت از ھمه شون استفاده ميکنيم‪ .‬و در ضمن اين دستورات ‪millis(),‬‬
‫;)(‪ micros(), delay‬بسيار کاربردی تر از تايمر صفر ھستند(‪.‬‬
‫‪ -3‬وقتی ميخواھيم از باتری بعنوان منبع تغذيه استفاده کنيم‪ ،‬برای صرفه جويی در مصرف باتری‪،‬‬
‫در مواقع بيکاری ميکروکنترلر‪ ،‬آن را به حالت خواب عميق يا ;)(‪ deepSleep‬ميبريم‪ .‬که در اين‬
‫حالت مصرف برد بايد حدود ‪ 20uA‬شود‪ .‬ولی مشاھده ميکنيم که مصرف حدود ‪ 40mA‬يا حتی‬
‫بيشتر از آن است‪ .‬و علت اين امر‪ ،‬اين است که آی سی رگوالتور تعبيه شده در روی برد‬
‫آردوينو‪ ،‬حدود ‪ 15mA‬جريان مصرف ميکند و ھمچنين مبدل ‪ USB‬به سريال ھم بسته به اينکه‬
‫‪ CH341‬باشد يا ‪ CP21XX‬برای خودش مقداری جريان مصرف ميکند‪) .‬ھمانطور که در‬
‫تصوير باال مالحظه ميفرماييد‪ ،‬من از ھيچکدام از اين قطعات در برد آزمايشی خودم استفاده‬
‫نکرده ام؛ تا اين مشکل پيش نيايد(‪.‬‬
‫‪ -4‬مقداری از حافظه ‪ Flash‬ميکروکنترلر‪ ،‬جھت نگھداری بوت لودر آردوينو مصرف می شود‪.‬‬
‫)اوالً بوت لودر حجم بسيار ناچيزی از فضای حافظه را اشغال ميکند‪ .‬و دوما ً ما ميتوانيم بوت‬
‫لودر آردوينو رو داخل ميکروکنترلر پروگرام کنيم يا نکنيم‪ .‬و اين اختياری است‪ .‬که در ھمين‬
‫آموزش ھر دو روش را توضيح خواھيم داد(‪.‬‬

‫خب ديگه از انجمن حمايت از آردوينو ھای گمنام بياييم بيرون و بريم سراغ ساخت برد آردوينو و ببينيم‬
‫چطور ميتونيم برد آردوينوی دلخواه خودمون رو بسازيم‪ .‬ھمچنين در اين آموزش‪ ،‬ميخواھم براتون در‬
‫مورد روش ھای پروگرام کردن بوت لودر و اگر فرصت شد‪ ،‬در مورد ‪ OTA‬توضيح بدم‪ OTA .‬نوعی‬
‫بوت لودر ھست که باعث ميشه ما برد آردوينو رو بدون وصل کردن کابل و از طريق وای فای‪ ،‬داخل برد‬
‫آردوينو‪ ،‬پروگرام کنيم‪.‬‬

‫وسايل الزم برای ساخت ارزان ترين برد آردوينو‪:‬‬


‫‪ -1‬کريستال ‪ 16MHz‬يک عدد‪.‬‬
‫‪ -2‬خازن عدسی ‪ 22pF‬دو عدد‪.‬‬
‫‪ -3‬خازن عدسی يا سراميکی ‪ 100nF‬دو عدد‪.‬‬
‫‪ -4‬خازن عدسی يا سراميکی ‪ 10nF‬يک عدد‪.‬‬
‫‪ -5‬خازن الکتروليتی ‪ 16v 10uF‬يک عدد‪.‬‬
‫‪ -6‬مقاومت ‪ 10KΩ‬يک عدد‪.‬‬
‫‪ -7‬مقاومت ‪ 1KΩ‬يک عدد‪.‬‬
‫‪ -8‬کليد فشاری يک عدد‪.‬‬
‫‪ LED -9‬کوچک يک عدد‪.‬‬
‫بوبين يا سيم پيچ ‪ 100uH‬يک عدد‪) .‬ميتوانيد چند دور سيم را بصورت فنر درآورده و‬ ‫‪-10‬‬
‫استفاده کنيد‪ .‬چون بود و نبودش زياد مھم نيست(‪.‬‬
‫چند تا پين ھدر مادگی‪.‬‬ ‫‪-11‬‬
‫يک تيکه فيبر پيش سوراخ دار به ابعاد مورد نياز شما‪ ،‬بصورتيکه قطعات باال روش جا‬ ‫‪-12‬‬
‫بشن‪.‬‬

‫ھمونطوريکه در تصوير زير مالحظه ميکنيد‪ ،‬من برای راحتی کار با اين برد آزمايشی‪ ،‬برای پينھای‬
‫آردوينو از ھر دو نوع پين ھدرھای نری و مادگی استفاده کرده ام و برای ارتباطات ‪I2C, RS232, SPI‬‬
‫ھم از پين ھدرھای مادگی رايت يا ھمون خم شده استفاده کرده ام‪ .‬و يک سری پين ھدر نر و ماده ھم برای‬
‫‪ +5V‬و ‪ GND‬روی برد لحيم کرده ام‪ .‬و ھمچنين برای ميکروکنترلر و راحتی تعويض اون‪ ،‬يک سوکت‬
‫زيف گذاشته ام‪ .‬که شما ميتونيد بجای سوکت زيف ھم از پين ھدر مادگی استفاده کنيد‪ .‬من چون اين سوکت‬
‫رو داشتم‪ ،‬گذاشتم‪) .‬دارندگی و برازندگی ☺(‬
‫خب حاال من ميتونم با استفاده از اين برد آزمايشی که ساخته ام‪ ،‬برنامه آردوينو رو توی تمامی‬
‫ميکروکنترلر ھای ‪ 40‬پين آپلود کنم و براحتی تست کنم‪ .‬و در صورت جواب گرفتن از برنامه‪ ،‬بيام و‬
‫ميکروکنترلر رو ازش جدا کرده و روی ‪ PCB‬مدار اصلی که ميخواھم درست کنم‪ ،‬قرار دھم‪ .‬و به قول‬
‫اون دوستان که ميگن ‪ AVR‬از آردوينو بھتره ☺ بيام و از خود ‪ AVR‬استفاده کنم‪ .‬تا ھم اقتصادی تر‬
‫باشه و ھم جمع و جور تر و ھم اينکه چون بوت لودر آردوينو روش ھست‪ ،‬کافيه در ‪ PCB‬اصلی مدارم‪،‬‬
‫موقع طراحی‪ ،‬فقط يک پين ھدر مادگی ‪ 4‬پين اضافه کنم و پين ھای ‪RX, TX, GND, +5V‬‬
‫ميکروکنترلرم رو به اون پين ھدر متصل کنم تا ھر موقع نياز به تغيير برنامه بود‪ ،‬بيام مبدل ‪ USB‬به‬
‫سريالم رو داخل پين ھدر فوق قرار بدم و با يک کابل ‪ USB‬رابط به کامپيوتر متصل کنم و مثل يک برد‬
‫آردوينو معمولی‪ ،‬پروگرامش کنم‪.‬‬

‫لوازم اضافی برای شروع بکار ساخت آردوينو‪:‬‬


‫‪ -1‬يک عدد پروگرامر ‪ : STK500‬برای ھر خانواده ای الزمه ☺ البته در پايان ھمين آموزش‪ ،‬نحوه‬
‫ساخت پروگرامر با برد آردوينو رو ھم توضيح ميدم‪.‬‬
‫‪ -2‬ھويه و سيم لحيم‪.‬‬

‫من از پروگرامر ‪ AVR USB PROGRAMMER‬شرکت دلتا تراشه مدل ‪ DAP 300‬استفاده ميکنم‪.‬‬
‫به ھر حال فرقی ھم نميکنه که شما از چه پروگرامری استفاده کنيد‪ .‬مھم اينه که درايور اون پروگرامر‬
‫حتما بايد روی کامپيوترتون نصب شده باشه‪.‬‬
‫گام اول‪ :‬نصب برد ھای آردوينو‬
‫قبل از ھر کاری‪ ،‬ھر ميکرکنترلری که ميخواھيد پروگرام کنيد رو بايد به آردوينو معرفی کنيد‪.‬‬

‫آردوينو فقط به بردھايی که در منوی ‪ Tools >> Board‬معرفی شده اند‪ ،‬پاسخ ميده‪ .‬بنابراين‪ .‬مثال اگر‬
‫شما ميخواھيد ميکرکنترلر ‪ ATMEGA8‬رو با آردوينو پروگرام کنيد‪ ،‬حتما ً بايد نام ميکرکنترلر‬
‫‪ ATMEGA8‬در منوی ‪ Tools >> Board‬وجود داشته باشه‪.‬‬

‫برای نصب بردھای آردوينو مربوط به ميکروکنترلر ھای مختلف‪ ،‬مراحل زير را انجام دھيد‪:‬‬

‫‪ -1‬به منوی ‪ File >> Preferences‬برويد‪.‬‬


‫‪ -2‬مانند تصوير زير روی عالمت مربع کنار کادر مشخص شده در تصوير کليک کنيد تا پنجره وارد‬
‫کردن ‪ URL‬برای دانلود برد ھای مختلف به شما نمايش داده شود‪.‬‬
‫‪ -3‬در کادر باز شده ھر اطالعاتی ھست را پاک کنيد و آدرس ھای زير را داخل آن کپی کرده و روی‬
‫‪ OK‬کليک نماييد‪:‬‬
‫‪http://downloads.arduino.cc/packages/package_index.json‬‬

‫‪http://arduino.esp8266.com/stable/package_esp8266com_index.json‬‬

‫‪http://www.maxim-ic.com/datasheet/index.mvp/id/4627‬‬

‫‪https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json‬‬

‫‪https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json‬‬

‫‪https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json‬‬

‫‪https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json‬‬
‫با اين کار به آردوينو گفتيم که برد ھای مورد نظر ما را از کدام سايتھا ميتواند دانلود کند‪ .‬حاال بايد به‬
‫منوی ‪ Tools >> Board >> Boards Manager‬برويم و بردھايمان را دانلود نماييم‪.‬‬
‫‪ -4‬به منوی ‪ Tools >> Board >> Boards Manager‬برويد و منتظر بمانيد تا چک کردن‬
‫بردھای نصب شده برای آپديت شدن تمام شود‪ .‬بعد در کادر بااليی عبارت ‪avr arduino‬‬
‫‪ boards‬را تايپ کرده و روی گزينه آپديت کليک نماييد تا برد ھای آردوينو نصب شده آپديت‬
‫شوند‪.‬‬
‫اگر کليد آپديت را نمی بينيد روی گزينه پيدا شده يکبار کليک کنيد تا دکمه ‪ Update‬ظاھر شود‪.‬‬

‫‪ -5‬سپس به ھمين صورت در کادر بااليی بايد يکی از عبارات زير را برای پيدا کردن و نصب برد‬
‫ھای مورد نظر تايپ کنيد و سپس دکمه ‪ Install‬را بزنيد‪ .‬و پس از اتمام نصب برد ھا يکبار ‪IDE‬‬
‫آردوينو را ببنديد و دوباره باز کنيد‪ .‬مالحظه خواھيد کرد که تمامی برد ھای مورد نظر شما به‬
‫منوی ‪ Tools >> Board‬اضافه شده اند‪:‬‬
‫ برای نصب برد ھای‬: ATTINY -1

ATtiny25, ATtiny45, ATtiny85, ATtiny24, ATtiny44, ATtiny84

‫ برای نصب برد ھای‬: MiniCore -2

ATMEGA8, ATMEGA48, ATMEGA88, ATMEGA168, ATMEGA328

‫ برای نصب برد ھای‬: MightyCore -3

ATMEGA8535, ATMEGA16, ATMEGA32, ATMEGA164, ATMEGA324,


ATMEGA644, ATMEGA1284

‫ برای نصب برد ھای‬: MegaCore -4


‫‪ATMEGA64, ATMEGA128, ATMEGA640, ATMEGA1280, ATMEGA1281,‬‬
‫‪ATMEGA2560, ATMEGA2561‬‬

‫‪ : ESP8266 -5‬برای نصب برد ھای ‪ ESP8266‬و خانواده آن‬

‫‪ -6‬برای نصب برد ھای ‪ ATXMEGA‬پوشه ‪ xmega-arduino-master‬رو از سايت‬


‫‪ GITHUB‬دانلود کرده و با نرم افزار ‪ WinRAR‬اکسترکت کنيد به محل نصب آردوينو‬
‫رفته و داخل پوشه ‪ hardware‬بريزيد‪.‬‬

‫البته الزم به ذکر است که ھنگام دانلود برد ھای آردوينو به ھيچ عنوان نبايد فيلتر شکن روی سيستم شما‬
‫فعال باشد‪ .‬وگرنه بردھاتون رو پيدا نميکنه‪☺ .‬‬
‫گام دوم‪ :‬نصب بوت لودر آردوينو‬
‫حاال ميرسيم به نصب بوت لودر آردوينو روی ميکروکنترلر ھای ‪ .AVR‬ابتدا بايد ببينيم که بوت لودر‬
‫چيه و به چه دردی ميخوره؟‬

‫دوستان گلم احتماالً تا کنون ھمه تون روی کامپيوتر‪ ،‬ويندوز نصب کرده ايد‪ .‬وقتی ميخواھيد ويندوز نصب‬
‫کنيد به تنظيمات سيستم وارد می شويد و حالت بوت شدن رو انتخاب ميکنيد‪ .‬و به سيستم ميگوييد که ابتدا‬
‫توسط ‪ CD_ROM‬باال بياد و اگه ‪ CD_ROM‬داخلش نرم افزار ‪ Bootable‬پيدا نشد‪ ،‬با ھارد ديسک‬
‫باال بياد و ويندوزی که روی اون ھست و برنامه ھای مربوط به اون رو اجرا کنه‪...‬‬

‫توی ميکروکنترلر ھم يک ھمچين وضعيتی حاکم ھست‪ .‬ولی وقتی ما به يک پين خاصی ولتاژ بيش از‬
‫تغذيه اعمال ميکنيم‪ ،‬مياد و از طريق پوت ‪ SPI‬پروگرام ميشه و در واقع از طريق پورت ‪ SPI‬بوت ميشه‬
‫و ما ميتونيم برنامه مون رو داخلش پروگرام کنيم‪ .‬که به اين روش ميگن روش پروگرام کردن ‪ ISP‬که‬
‫مخفف ‪ In System Programming‬است‪.‬‬

‫حاال آردوينو اومده و ميگه من نميخوام از طريق ‪ SPI‬ميکروکنترلر رو پروگرام کنم‪ .‬من ميخوام‬
‫ميکروکنترلر رو از طريق پورت سريال پروگرام کنم تا کاربر‪ ،‬ديگه نيازی به خريد پروگرامر نداشته‬
‫باشه و با يک مبدل ‪ USB‬به سريال ساده بتونه برنامه اش رو بريزه داخل ميکروکنترلر و استفاده کنه‪.‬‬

‫بنابراين بوت لودر آردوينو در ھر لحظه داره پورت سريال رو چک ميکنه و اطالعاتی که از پورت‬
‫سريال رد و بدل ميشن رو نگاه ميکنه ببينه آيا ھدر فايل مربوط به پروگرام شدن داخل اون رشته دريافتی‬
‫ھست يا نه؟ اگر بود‪ ،‬ميره به حالت پروگرام شدن و اطالعات رسيده از پورت سريال رو مياره ميريزه‬
‫داخل حافظه ‪ Flash‬و بعدش ميکروکنترلر ريست ميشه و با برنامه جديد کار ميکنه‪ .‬در غير اينصورت‬
‫)يعنی اگه ھدر فايل مربوط به پروگرام شدن داخل اون رشته دريافتی نبود(‪ ،‬برنامه داخل حافظه ‪Flash‬‬
‫اجرا ميشه‪ .‬و اطالعات دريافتی از پورت سريال رو توی برنامه استفاده ميکنه‪.‬‬

‫خب اين روش روش بسيار خوب و ارزان قيمتی است ولی يک ايرادی داره و اون ھم اينه که وقتی ما به‬
‫پورت سريال ميکروکنترلر‪ ،‬يک وسيله سريال متصل ميکنيم تا باھاش کار کنيم و ھمزمان پورت سريال‬
‫رو بوسيله مبدل ‪ USB‬به سريال به کامپيوتر متصل ميکنيم‪ ،‬ديگه نميتونيم از اون وسيله استفاده کنيم‪ .‬و‬
‫ھمچنين نميتونيم برنامه رو داخل ميکروکنترلر آپلود کنيم‪ .‬چرا؟؟؟‬

‫چون پورت سريال در ھر لحظه فقط ميتونه به يک وسيله متصل بشه و در اين حالتی که ما ايجاد کرده ايم‬
‫دوتا وسيله بھش متصل ھست‪ .‬يکی اون دستگاه يا ماژول سريال مون و ديگری کامپيوتر‪.‬‬

‫چون اکثر کاربران عادت کرده اند که تغذيه آردوينو رو از مبدل ‪ USB‬به سريال بگيرند‪ ،‬مثالً وقتی دارن‬
‫ماژول بلوتوث رو چک ميکنند که به پايه ھای ‪ RX, TX‬ميکرو متصل ھست‪ ،‬و تغذيه آردوينو رو ھم از‬
‫کامپيوتر گرفته اند تا اطالعات دريافتی رو ھم توی کامپيوتر ببينند‪ .‬ديگه فکر نميکنند که اينکار باعث شده‬
‫پورت سريال از کار بيافته و ميان توی تاالر گفتمان آردوينو کاران جوان سوال ميکنند که چرا دستگاه‬
‫ماژول بلوتوث من کار نميکنه؟؟؟‬

‫برای حل اين مشکل چند راه وجود داره‪:‬‬

‫‪ -1‬اگر ميکروکنترلرتون چندين پورت سريال داره‪ ،‬ماژولتون رو به يک پورت ديگه بغير از‬
‫‪ Serial0‬متصل کنيد‪.‬‬
‫‪ -2‬اگه ميکروکنترلرتون فقط يک پورت سريال داره‪ ،‬از کتابخانه ‪ SoftwareSerial‬استفاده کنيد و‬
‫يک پورت سريال مجازی روی پينھای ديگر ميکرو ايجاد کنيد و ماژولتون رو بھش متصل کنيد‪.‬‬
‫)توی کانال آردوينو کاران جوان آموزش کامل ‪ SoftwareSerial‬رو بصورت فيلم قرارداده ام‪(.‬‬
‫‪ -3‬اگه پين اضافی نداريد که ‪ SoftwareSerial‬درست کنيد‪ ،‬فقط کافيه که موقع پروگرام کردن‬
‫ميکروکنترلر‪ ،‬ماژول رو ازش جدا کنيد‪ .‬و بعد از پروگرام کردن ھم از باتری يا شارژر موبايل‬
‫استفاده کنيد تا ماژولتون کار کنه و نبايد به کامپيوتر متصل باشه‪.‬‬

‫خب مثل اينکه از بحث اصلی دور شديم‪ .‬برگرديم بريم سراغ نصب بوت لودر آردوينو‪:‬‬

‫پس تا اينجا متوجه شديم که بوت لودر چيه و چه کاربردی داره‪ .‬بنابراين شما بايد تابحال متوجه شده باشيد‬
‫که در صورت عدم وجود بوت لودر آردوينو روی ميکروکنترلر ھم ميتوان با ‪ IDE‬آردوينو برای‬
‫ميکروکنترلر مورد نظر برنامه نوشت‪ .‬ولی نميشه با مبدل ‪ USB‬به سريال پروگرامش کرد‪.‬‬

‫اگه بخواھيم با مبدل ‪ USB‬به سريال پروگرامش کنيم‪ ،‬بايد بوت لودر آردوينو رو روش نصب بکنيم‪ .‬خب‬
‫حاال چطوری اين کار رو انجام بديم؟؟؟‬

‫جواب اينه‪ .....‬براحتی!!! ☺‬

‫حاال که ما ھمه چيز رو راجع به بوت لودر ميدونيم‪ ،‬ميدونيم که ميکروکنترلری که خريده ايم دارای بوت‬
‫لودر آردوينو نيست‪ .‬بنابراين يک پروگرامر ‪ STK500‬از يک نفر قرض ميگيريم و ميکروکنترلرمون‬
‫رو داخلش قرار ميديم و درايورش رو ھم روی کامپيوتر نصب ميکنيم‪ .‬البته اگر پروگرامر ديگه ای ھم‬
‫باشه که اسمش توی ليست پروگرامر ھای موجود در منوی ‪ Tools>>Programmer‬باشه ھيچ اشکالی‬
‫نداره‪ .‬فقط يادتون باشه که حتما ً درايورش رو نصب کرده باشد‪ .‬بعدش ميريم به ھمون منوی‬
‫‪ Tools>>Programmer‬و اسم پروگرامرمون رو انتخاب ميکنيم‪ .‬در مرحله بعدی بايد از منوی‬
‫‪ Tools>>Board‬ميکروکنترلر مورد نظرمون رو انتخاب کنيم‪ .‬و حاال بازدن گزينه ‪Burn‬‬
‫‪ Bootloader‬از منوی ‪ Tools‬می بينيد که بوت لودر آردوينو روی ميکروکنترلر روی پروگرامر آپلود‬
‫شد‪.‬‬
‫روش دوم اينه که کسی بھتون پروگرامر ‪ STK500‬قرض نميده‪☺☺☺ ...‬‬

‫ولی نگران نباشيد‪ .‬اگه شما يک برد آردوينو ‪ UNO‬يا ھر آردوينوی ديگه ای داشته باشيد‪ ،‬مشکل حل‬
‫ميشه‪  ...‬چطوری؟؟؟‬

‫جواب اينه‪ ...‬براحتی!!!‬

‫آردوينو ‪ UNO‬رو به کامپيوتر متصل کنيد‪.‬‬ ‫‪-1‬‬


‫از منوی ‪ Tools>>Board‬آردوينو ‪ UNO‬رو انتخاب کنيد‪.‬‬ ‫‪-2‬‬
‫از منوی ‪ Tools>>Programmer‬گزينه ‪ Arduino as ISP‬رو انتخاب کنيد‪.‬‬ ‫‪-3‬‬
‫از منوی ‪ File>>Examples>>11.ArduinoISP>>ArduinoISP‬رو باز کنيد‪.‬‬ ‫‪-4‬‬
‫برنامه باز شده رو داخل آردوينو آپلود کنيد‪.‬‬ ‫‪-5‬‬

‫تبريک ميگم شما يک پروگرامر ‪ ISP‬ساختيد‪ .‬حاال با ھمين پروگرامر ميتونيم شروع کنيم به آپلود برنامه‬
‫داخل ميکرو کنترلر‪ .‬فقط از اين به بعد به اين برد آردوينو ‪ UNO‬ميگيم ‪ Programmer‬که اشتباھی پيش‬
‫نيايد‪.‬‬

‫اگر بخواھيد ميتوانيد چند تا ‪ LED‬ھم بصورت زير به پروگرامر اضافه کنيد تا حالتھای مختلف پروگرام‬
‫شدن را ببينيد‪:‬‬

‫در صورتيکه پروگرامر شما ھنگام آپلود برنامه خطا ميدھد‪ ،‬يک عدد خازن الکتروليتی ‪16V_100uF‬‬
‫بين پين ‪ GND‬و ‪ RST‬يا ھمان ‪ RESET‬پروگرامر لحيم کنيد‪ .‬مخصوصا ً در آردوينو ‪.Nano‬‬

‫حاال مدار شکل زير را ببنديد‪ :‬توجه داشته باشيد که در مدارات زير برد آردوينويی که داخلش برنامه‬
‫‪ ArduinoISP‬رو ريخته ايم بنام ‪ Programmer‬و آردوينو ديگر که از روش ميکروکنترلرش رو‬
‫درآورده ايم و ميکروکنترلر خريداری شده رو قرار داده ايم‪ ،‬بنام ‪ Target‬نامگذاری شده اند‪ .‬بله درسته ما‬
‫بايد ميکروکنترلر خريداری شده رو با ميکروکنترلر يک آردوينو جايگزين کنيم تا بتونيم پروگرامش کنيم‪.‬‬
‫در غير اين صورت ميتوانيم ميکروکنترلر خريداری شده رو روی برد بورد بگذاريم و يک کريستال‬
‫‪ 16MHz‬و دوتا خازن ‪ 22pF‬به پين ھای کريستالش بزنيم و تغذيه اش رو ھم متصل کنيم‪ .‬و بعد پينھای‬
‫معادل نقشه زير رو بھش بزنيم و بعد کار رو ادامه بديم‪.‬‬

‫آردوينو ‪ UNO‬بعنوان پروگرامر آردوينو ‪UNO‬‬

‫شما ميتونيد ھر آردوينويی که داريد برنامه ‪ ArduinoISP‬رو داخلش بريزيد و به عنوان پروگرامر ‪ISP‬‬
‫استفاده نماييد‪ .‬به شکل ھای زير توجه کنيد‪:‬‬
‫آردوينو ‪ UNO‬بعنوان پروگرامر آردوينو ‪NANO‬‬

‫آردوينو ‪ MEGA‬بعنوان پروگرامر آردوينو ‪UNO‬‬


‫آردوينو ‪ MKR1000‬بعنوان پروگرامر آردوينو ‪UNO‬‬

‫حاال ديگه فرقی نميکنه که برای ‪ Target‬از آردوينو استفاده کنيد يا برد بورد‪ .‬مھم اينه که پين ھای ‪SPI‬‬
‫قسمت تارگت يا ھدف بصورت شکل ھای باال به پروگرامر متصل بشن‪ .‬من شماره پين ھای چند تا از‬
‫بردھای آردوينو رو براتون در جدول زير نشان داده ام بقيه اش رو خودتون از اينترنت ميتونيد پيدا کنيد‪.‬‬

‫اگر ھم پيدا کردن پين ھای ‪ SPI‬براتون سخته ميتونيد از شکل زير استفاده کنيد‪ .‬ترتيب پين ھای سوکت‬
‫‪ ICSP‬که روی تمامی برد ھای آردوينو وجود دارد بصورت شکل زير است‪ .‬که دقيقا ً به ھمان پين ھای‬
‫‪ SPI‬روی برد متصل است‪:‬‬
‫خب می بينيد که ھيچ بھونه ای نداريد برای اينکه نتونيد پروگرامر ‪ ISP‬بسازيد‪.‬‬

‫تنھا کاری که بعد از ساختن اين برد ھا بايد انجام دھيد اين است که پروگرامر ساخته شده رو به کامپيوتر‬
‫متصل کنيد و به منوی ‪ Tools>>Board‬برويد و برد آردوينوی ‪ Target‬رو انتخاب کنيد‪) .‬يعنی ھمون‬
‫ميکروکنترلری که ميخواھيد بوت لودر داخلش بريزيد(‪.‬‬

‫پورت ‪ com‬مناسب رو از منوی ‪ Tools>>Port‬انتخاب کنيد و ‪ Tools>>Programmer‬رو روی‬


‫‪ Arduino as ISP‬قرار بدين و سپس روی گزينه ‪ Tools>>Burn Bootloader‬کليک کنيد‪ .‬بوت لودر‬
‫ميکروکنترلر انتخاب شده روی ميکروکنترلر مورد نظر آپلود ميشه‪.‬‬

‫خيلی ھم عالی‪ ...‬تا اينجا ما تونستيم يک برد آردوينو بسازيم و بوت لودر ھم روش داشته باشيم‪ .‬حاال فقط‬
‫کافيه که ميکروکنترلر ساخته شده رو روی برد بورد کار بگذاريم و کريستال و خازن ھای عدسی رو‬
‫بھش متصل کنيم و تغذيه ھم بھش بديم‪ .‬و با يک مبدل ‪ USB‬به سريال راحت پروگرامش کنيم‪ .‬يادتون نره‬
‫که پروگرامر رو بعد از آپلود بوت لودر حتما ً روی ‪ Arduino as ISP‬قرار بدين‪ .‬و ‪ Board‬و ‪Port‬‬
‫مناسب رو ھم انتخاب کنيد‪ .‬برنامه تون رو توی محيط ‪ IDE‬آردوينو بنويسيد و بعد روی دکمه آپلود کليک‬
‫کنيد‪ .‬با کمال تعجب خواھيد ديد که برنامه روی ميکروکنترلر شما آپلود نميشه‪   .‬چرا؟؟؟‬
‫برای اينکه برد ھای آردوينو دارای يک مداری ھستند که به محظ شروع آپلود‪ ،‬يکبار مدار رو ريست‬
‫ميکند‪ .‬بنابراين اگر ميخواھيد برنامه تان آپلود شود به محظ اينکه برنامه کامپايل شد و نوشت ‪Uploading‬‬
‫بايد بالفاصله دکمه ريست رو روی برد ساخته شده خودتون بصورت لحظه ای فشار بدين‪☺☺☺ .‬‬

‫حاال بياييد ببينيم اگه نخواھيم بوت لودر آردوينو رو روی ميکروکنترلر بريزيم چيکار کنيم؟‬

‫سوال‪ :‬آيا بدون بوت لودر ھم ميشه برنامه رو روی ميکروکنترلر مورد نظرمون آپلود کرد؟؟؟‬

‫جواب‪ :‬بله‬

‫سوال‪ :‬چطوری؟‬

‫جواب‪ :‬براحتی‪☺ .‬‬

‫مثالً ما يک ميکروکنترلر ‪ ATMEGA32‬داريم‪ .‬و بردھای آن را نيز مثل توضيحات اول ھمين آموزش‬
‫روی نرم افزار ‪ IDE‬آردوينو نصب کرده ايم‪ .‬و يک پروگرامر ‪ STK500‬ھم داريم‪ .‬که درايور آن را ھم‬
‫روی کامپيوتر نصب کرده ايم‪.‬‬

‫تنھا کاری که بايد انجام دھيم اين است که يک سرچ توی اينترنت قسمت ‪ IMAGE‬بزنيم و دنبال‬
‫‪ ATMEGA32 ARDUINO PINOUT‬بگرديم‪ .‬خيلی سريع شماره پينھای آردوينو معادل‬
‫‪ ATMEGA32‬رو پيدا ميکنيم‪.‬‬
‫حاال ميکروکنترلر ‪ ATMEGA32‬رو داخل پروگرامر ‪ STK500‬قرار داده و‬

‫از منوی ‪ Tools>>Port‬پورت ‪ com‬مناسب رو انتخاب کنيد‪.‬‬ ‫‪-1‬‬


‫از منوی ‪ Tools >>Board‬برد ‪ ATMEGA32‬رو انتخاب کنيد‪.‬‬ ‫‪-2‬‬
‫از منوی ‪ Tools >>Programmer‬پروگرامر ‪ Atmel STK500 development board‬رو‬ ‫‪-3‬‬
‫انتخاب کنيد‪.‬‬
‫پس از اينکه برنامه تان را با توجه به پين ھای ميکرو در حالت آردوينو که از اينترنت دريافت‬ ‫‪-4‬‬
‫کرده ايد نوشتيد‪ ،‬از منوی ‪ sketch>>Upload Using Programmer‬رو بزنيد تا برنامه با‬
‫استفاده از پروگرامر ‪ STK500‬وارد ميکروکنترلر بشه‪.‬‬

‫برنامه رو با ھر پروگرامری که داريد ميتونيد به ھمين روش داخل ميکروکنترلر بريزيد‪ .‬فقط بايد اسم‬
‫پروگرامرتون رو از منوی ‪ Tools>>Programmer‬انتخاب کنيد‪.‬‬

‫روش دوم استفاده از پروگرامر ‪ ISP‬ساخت خودتان است‪:‬‬

‫‪ -1‬پين ھای ‪ SPI‬ميکروکنترلر ‪ ATMEGA32‬رو مانند توضيحات باال به پروگرامر ‪ ISP‬ساخت‬


‫خودمون متصل ميکنيم‪.‬‬

‫از منوی ‪ Tools>>Programmer‬گزينه ‪ Arduino as ISP‬رو انتخاب ميکنيم‪.‬‬ ‫‪-2‬‬


‫از منوی ‪ Tools>>Board‬برد ‪ ATMEGA32‬را انتخاب کنيد‪.‬‬ ‫‪-3‬‬
‫از منوی ‪ sketch>>Upload Using Programmer‬رو بزنيد‪.‬‬ ‫‪-4‬‬
‫☺☺☺‬ ‫‪-5‬‬
‫روش ديگه اينه که‪:‬‬

‫برنامه رو مينويسم و‬

‫‪ -1‬از منوی ‪ Tools>>Board‬برد ‪ Atmea32‬رو انتخاب ميکنيم‪.‬‬


‫‪ -2‬از منوی ‪ File>>Preferences‬رو انتخاب ميکنيم و گزينه ‪Show verboes output during‬‬
‫‪ Compilation‬را مانند تصوير زير تيک ميزنيم‪:‬‬

‫‪ -3‬حاال به منوی ‪ sketch‬رفته و گزينه ‪ Export Compiled Binery‬رو بزنيد‪.‬‬


‫‪ -4‬در منوی ‪ sketch‬روی گزينه ‪ Show sketch Folder‬کليک کنيد تا محل اجرای برنامه شما باز‬
‫شود‪ .‬خواھيد ديد که دو تا فايل ھگز در محل اجرای برنامه تون اضافه شده‪ .‬يکی فايل ھگز برنامه‬
‫بدون بوت لودر آردوينو است‪ .‬و ديگری فايل ھگز برنامه بھمراه بوت لودر آردوينو‪.‬‬
‫‪ -5‬شما ھرکدوم از اين فايلھا رو ميتونيد با ھر پروگرامری که داريد مستقيما ً داخل‬
‫ميکروکنترلرخودتون بريزيد و بعدش استفاده کنيد‪.‬‬
‫اگه فايل ھگزی که دارای بوت لودر آردوينو ھست رو آپلود کنيد‪ ،‬باز ھم ميتونيد بدون پروگرامر و با‬
‫استفاده از مبدل ‪ USB‬به سريال اون رو پروگرام کنيد‪ .‬چون تبديل به آردوينو شده است‪☺ .‬‬

‫خب دوستان گلم‪ ،‬و آردوينو کاران عزيز من ديگه خسته شدم و فکر کنم تا ھمينجا کفايت بکنه‪ .‬در برنامه‬
‫‪ Over The Air‬توضيح بدم‪ .‬بوت‬ ‫آموزشی بعدی ميخوام براتون در مورد بوت لودر ‪ OTA‬يا ھمون ‪ir‬‬
‫لودر ‪ OTA‬ھم يک برنامه ساده است که داخل ماژول ‪ ESP_01‬ريخته ميشه و ماژول ‪ ESP_01‬ھم به‬
‫پورت سريال آردوينو وصل ميشه‪ .‬و بعد ما ميتونيم با استفاده از اينترنت‪ ،‬برنامه مون رو به ماژول‬
‫‪ ESP_01‬بفرستيم تا برد آردوينو مون پروگرام بشه‪ ☺ .‬اينطوری ديگه نميخواد مثالً بردی رو که داخل‬
‫لوستر کار گذاشته ايم با داخل داشپورت ماشين جاسازی کرده ايم يا بردی که دور از دسترس ھست و مثالً‬
‫توی يک شعبه از بانک کار گذاشته ايم رو بياريم و به کامپيوتر متصل کرده و پروگرام کنيم و ورژن جديد‬
‫برنامه مون رو داخلش آپلود کنيم‪ .‬فقط کافيه که با اينترنت به اون ماژول ‪ ESP_01‬متصل شده و برنامه‬
‫مون رو بھش بديم تا آپلود بشه داخل آردوينو و تغييرات الزم اعمال بشه‪☺☺☺ .‬‬

‫بعنوان حسن ختام اين آموزش ھم ميخواھم ‪ PINOUT‬چند تا از ميکروکنترلر ھای ‪ AVR‬رو معادل‬
‫آردوينوشون رو قرار بدم‪:‬‬
‫برای ساخت برد آزمايشی آردوينو ميتوانيد از آموزش ساخت ‪ PCB‬برای ‪ ATMEGA32‬آموزش داده‬
‫شده در کانال آردوينو کاران جوان و يا آموزش ساخت آردوينو روی برد بورد در ھمين کانال نيز استفاده‬
‫نماييد‪.‬‬

‫نقشه کامل پروگرامر ‪ ISP‬بوسيله آردوينو ‪Nano‬‬


‫آردوينو کاران جوان ھميشه بھترين ھا رو برای شما آرزو ميکند‪.‬‬

‫پس با ما در کانال تلگرام آردوينو کاران جوان ھمراه باشيد و کانال رو به دوستانتون معرفی کنيد‪.‬‬

‫رضا اژدرکش‬

You might also like