دارا بودن قطعات مورد نیاز اولیه در برد آردوینو
خوب اولین سوالی که پیش میاد میگیم خوب چه کاریه به جای برد آردوینو از خود AVR استفاده میکنیم چه فرقی داره ؟؟ خوب فرق داره کسانی که با AVR کار کرده باشن خوب می دونند حتی اگر بخوان یک پروژه ساده مثل LED چشمک زن رو راه اندازی کرده باشن علاوه بر خود AVR با یک سری سخت افزار جانبی مثل رگولاتور و کریستال و سیم بندی برای تغذیه میکروکنترلر AVR، پروگرامر ( برای ریختن برنامه تو avr ) نیاز دارند خوب حالا اگه توی این گیر و دار بیایم تغذیه رو به میکرو برعکس بدی که هیچی میکرو میره روی هوا !!! focus تا بخوایم یاد بگیریم هم کلی پول باید خرج کنیم و تا ریسک دل زدگی از یادگیری رو به جان بخریم . تازه این پایان ماجرا نیست dash پروگرام کردن AVR هم یک سری مشکلات دارد در بهترین حالت که پروگرامر از نوع USB باشد باید AVR را از مدار خارج کرده و روی پروگرامر وصل کرد ( البته میتونید به روش SPI میکرو رو پروگرام کنید که اینطوری دیگه نیاز نیست همش میکرو رو از برد جدا کنید ) در ادامه کد را آپلود کرد و سپس میکرو را از پروگرامر جدا کرده و به برد وصل می کنیم ( نهایت دقت رو باید داشته باشیم که میکرو رو اشتباه یا برعکس وصل نکنیم به مدار چون اون وقت ممکنه برای میکرو مشکل ایجاد بشه و یا حتی دیگه نتونید ازش استفاده کنید ) تازه اگر در کد نویسی اشتباه کوچکی رخ نداده باشد که در این صورت باز هم 4 مرحله وجود داره تا آپلود انجام شود؛ خوب تا این مرحله راه اندازی LED با AVR بود.خوب الان نوبتی هم که باشه نوبت برد آردوینو هست که خودنمایی کنه، خوب حالا قطعات مورد نیاز چی هست؟ برد آردوینو + کابل USB همین ( یعنی مگه داریم مگه میشه ؟؟ بله میشه ) اکثر برد های آردوینو یک LED به صورت پیش فرض نصب شده است ( به پایه 13 برد آردوینو )؛ در روی برد آردوینو رگولاتور، کریستال و همه سخت افزارهای جانبی روی برد به صورت پیش فرض نصب شده است پس به هیچ سخت افزاری نیاز نیست؛ برای راه اندازی پروژه LED با آردوینو کافیست با USB آردوینو را به کامپیوتر وصل کنید در نرم افزار آردوینو با اشاره یک کلید کد را روی برد آپلود کنید؛ یعنی بعد از آماده شدن کد فقط با 2 حرکت می توانید کد را روی آردوینو آپلود کنید.اگر فرض کنیم کسی در کد نویسی وارد نباشد باید چندبار کد برنامه را تغییر دهد حالا اگر با AVR کار کند به ازای هر تغییری که در کد بوجود می آورد و بخواهد آپلود را انجام دهد 4 مرحله را باید طی کند، ولی اگر بخواهد همین مراحل را با آردوینو طی کند اصلاً نیازی به جدا کردن کابل USB نیست و همانطور که کابل USB به آردوینو متصل است می توانید برنامه ریزی را روی برد انجام دهید؛ پس الان فرق آردوینو با خود AVR مشخص شد که چه فرق اساسی دارد.
کدنویسی راحت تر آردوینو
حالا آردوینو با خود AVR همین یک فرق رو داشت یعنی فرقی دیگری ندارد ؟
خوب یک فرق اساسی دیگری هم دارد و آن هم در حوزه کد نویسی و برنامه نویسی است همانطور که می دانیم زبان کدویژن زبان C هست و مثلاً برای برنامه ریزی برای LED اول کتابخونه ها رو فراخوانی میکنیم بعد میریم سراغ رجیسترها و پورت و از این دست کارها ولی زبان برنامه نویسی برای آردوینو زبان ++C است که خب از C بهتر و ساده تر هستش ( البته کامپایلرهای دیگه ای هم AVR داره، مثلا اتمل استدیو که زبانش ++C هستش یا بسکام که زبونش بیسیک هستش و … ) و در این برنامه نیاز به هیچ گونه هدری و رجیستری برای راه اندازی فایل لازم نداریم؛ برای مقایسه دو تا کد میگذاریم اولی کد نویسی برای AVR هست :
C:
#include <mega16.h>
#include <delay.h>
void main(void)
{
PORTC=0x00;
DDRC=0x01;
while(1)
{
PORTC.0=1;
delay_ms(300);
PORTC.0=0;
delay_ms(300)
}
}
کدی که برای LED نوشته شده با کدویژن می باشد تازه خیلی از کدها را پاک کردم تا حجمش در اینجا کمتر شود و گرنه 130 خط برنامه برای راه اندازی یک LED لازمه؛ حالا الان می پرسن چرا 130 خط ؟؟ به خاطر اینکه تمامی رجیسترها وضعیت خودشون رو بدونند ( ولی خب چون در این پروژه بکار ما نمیان، پاکشون کردیم )؛ خوب این یکی کد نویسی با آردوینو است :
C:
void setup()
{
pinMode(13,OUTPUT);
}
void loop()
{
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);
}
به نظر بنده برنامه نویسی با آردوینو بسیار راحت تر از برنامه نویسی با کدویژن ( یا هر کامپایلر دیگه AVR ) است؛ حالا بازم قضاوت با خودتون.
خوب حالا یک توضیحاتی کوچک راجع به برنامه نویسی آردوینو : تابع setup برای confing کردن یا همون تنظیمات مربوط به قطعات رو انجام می دید مثل همون تابع main توی کدویژن و تابع loop یک مفهوم داره اجرا تا ابد مثل همون while توی کدویژن.
نکته : تابع (delay(300 برحسب میلی ثانیه است ولی برای دسترسی به زمان هایه میکروثانیه کافیست عدد مورد نظر را تقسیم بر 1000 کنید مثلا برای 25us کافیست 0.025=25/1000 و عدد 0.025 رو درون تابع (delay(0.025 بنویسید.
مقایسه قیمت آردوینو و avr
خب معلومه که قیمت بردهای آردوینو بیشتره – الان قیمت یه آردوینو uno چیزی حدود 25 هزار تومنه که هسته مرکزیش ATmega328P هستش ولی خب همین میکرو قیمتش زیر 5 تومن هستش که خب خازن و کریستال و رگولاتور و … رو اضافه کنی بهش میشه 10 هزار تومن و یک پروگرامر هم که بخوای بخری 35 هزار تومن هست که کلاً میشه 45 هزار تومن ولی آردوینو کلاً با پروگرامر و میکروی داخلی و المان های جانبی 25 هزار هست یعنی آردوینو حدوداً نصف قیمت avr با المان جانبی و پروگرامر هست ( البته پروگرامر رو یکبار می خرید برای همیشه )؛ در کل آردوینو از نظر قیمت به صرفه نیست اصلا، مخصوصا اگه تو خراب کاری استاد باشید ^_^
ساخت یه پروژه در عمل
ساختن یک پروژه در عمل با آردوینو بسیار بهتر از خود avr است، زیرا در آردوینو ما تمرکز اصلی روی برنامه نویسی است و کمتر درگیر مسائل سخت افزاری می باشیم ولی اگر بخواهیم یک پروژه را با avr پیاده سازی کنیم علاوه بر مسائل نرم افزاری باید به مسائل سخت افزاری هم توجه کنیم و مثلاً برای راه اندازی avr باید اتصال سیم بندی ها را مراقب باشیم که اشتباه وصل نکنیم یا رگولاتور ولتاژ مناسب انتخاب کنیم ولی در آردوینو کلاً شما یک آداپتور یا یک usb به برد آردوینو وصل کنی کارت راه می افته و درگیر سیم بندی و کارهای سخت افزاری مورد نیاز میکرو نیستید.
سخت افزار آردوینو
سوکت آداپتور : هر وسیله برقی برای روشن شدن به ولتاژ یا برق احتیاج داره که آردوینو هم از این قاعده مستثنی نیست . برای روشن کردن آردوینو چند راه وجود دارد اولین راه همان کابل USB هست . علاوه بر پورت USB برای روشن کردن آردوینو یک سوکت مخصوص آداپتور هم وجود دارد که میتوان این سوکت را به آداپتور وصل کرد البته نه هر جور آداپتوری چون آداپتورها جریان ها و ولتاژهای متفاوتی دارند معمولاً به برد آردوینو آداپتورهای 5 ولت تا 9 ولت وصل می کنند . و توصیه می کنیم که از آداپتورهای 12 ولتی خودداری نمایید چون در طولانی مدت مجبورید برد را دور بندازید ( رگولاتورهای ولتاژ برد آردوینو در اثر ولتاژ 12 ولتی به شدت داغ میشوند و در طولانی مدت میسوزند . ) اگر بخواهید دما و رطوبت یک بیابان و یا صحرا یا کوهستان را اندازه گیری کنید و به یک ایستگاهی که در فاصله چند صد متری یا یک کیلومتری شما وجود دارد بفرستید ، چکار باید کنید؟ در بیابان یا کوهستان که دسترسی به برق هم نداریم مگر اینکه لپ تاپ ببریم خوب از صبح تا شب که با یک لپ تاپ نمی توانیم وسط بیابون یا کوهستان وایسیم خوب پس چکار کنیم یعنی پروژه کنسل؟ اینجاست که طراحی برد آردوینو به دادمون رسید
یک پایه در اینجا وجود دارد به اسم Vin که یک پایه ورودی است که میتوان یک باطری به آن متصل کرد در واقع سر مثبت باطری را به پایه Vin و سر منفی باطری را به GND متصل می کنیم؛