جلسه پانزدهم : رسم نمودار ( پلات ) با استفاده از آردوینو

سلام
تو این جلسه قصد دارم بهتون یاد بدم چجوری با استفاده از آردوینو نمودار رسم کنید. چیزی که شاید خیلی از جاها به دردتون بخوره . ورژنای قدیمی نرم افزار آردوینو این امکان رو نداشت که بتونیم باهاش پلات کنیم (نمودار رسم کنیم ) ولی خب تو ورژنای جدید (از 1.6.6 به بالا) شکر خدا عقلشون کار کرده و این آیتم رو گذاشتن. یعنی ما تنها با استفاده از نرم افزار آردوینو و بدون نیاز به نصب هیچ نرم افزاری می تونیم نمودار تغییرات رو ببینیم.

یه توضیح کلی: اول بزارید ببینیم این امکانی که داریم ازش حرف می زنیم کجای نرم افزاره . از منوی Tools وارد Serial plotter میشیم:
2016-01-24_13-07-57
همونطور که می بیند اسم این آیتم سریال پلاتر هست و ما هم از این به بعد به این آیتم پلاتر میگیم. یه نمای کلی هم بخواید ازشکل رسم نمودارش ببینید این شکلیه:
2016-01-24_13-12-32

همونطور که از اسم این آیتم معلومه سریال پلاتر هست یعنی مبنای کاری اون ارتباط سریال میشه. در نتیجه اون متغیری که نمودارش رو میخوایم رسم کنیم باید از طریق ارتباط سریال به کامپیوتر بفرستیم تا نرم افزار بتونه رسمش کنه. محور عمودی دیاگرام ما همون داده ای هست که برای پلات کردن فرستادیم. محور افقی برعکس اون چیزی که تصور می کنید زمان نیست. بلکه یه واحد خاصه . توی این محور 1 واحد یعنی یک داده سریال دریافت شده. یعنی به ازای هر داده سریالی که دریافت میشه یک واحد روی محور افقی میریم جلو. حالا تو ادامه بحث دقیق تر درکش می کنید.

ما هم نمودار دیجیتال رو رسم می کنیم هم نمودار آنالوگ رو.
اول سوئیچ مدار و کد جلسه سیزدهم رو آماده کنید. مدار آخر رو ببندید که با دیبانس نوشتیم. همچین کدی داشتیم اگه یادتون باشه (البته من برای این که کد کوتاه بشه خط های کامنت ها رو پاک کردم)
2016-01-24_13-33-50

ما تو این کد برای این که ارتباط سریال داشته باشیم لازمه یه تغییراتی رو توی کد نویسیمون اعمال کنیم.
2016-01-24_13-39-31
چون لازم داشتیم ارتباط سریال استفاده کنیم خب تو تابع setup کانفیگش کردیم. اگه یادتون باشه گفتیم اساس کار سریال پلاتر ارتباط سریال هست که خدارو شکر تو آردوینو ایجاد ارتباط سریال بین آردوینو و کامپیوتر فقط با یک خط کد انجام میشه یعنی دستور Serial.print. هر آرگومانی که توی این دستور نوشته بشه عینا به صورت سریال (از طریق همون کابل USB که بین آردوینو و کامپیوتر هست ) به کامپیوتر شما ارسال میشه. بنابراین توی این کد هر جا منطق پین دیجیتال شماره 2 صفره ما هم 0 رو سریال پرینت می کنیم هر جا منطق پین یکه ما هم 1 رو سریال پرینت می کنیم.

خب کد رو آپلود کنید و از همون مسیری که گفتم سریال پلاتر رو باز کنید.
با همچین صفحه ای مواجه میشید که به محض فشار دادن کلید به تغییر تو نمودار به وجود میاد.


دقت کنید در فیلم جاهایی که یهو یه تغییر دامنه داریم لحظاتی هست که کلید رو فشار دادیم.

این مدل دیجیتالش حالا مدل آنالوگ.
جلسه چهاردهم رو یادتونه ؟ همون مدار و همون کد رو عینا بیارید.
اگه یادتون باشه تو اون جلسه داده های پتانسیومتر رو روی کنسول سریال می دیدیم پس هیچ احتیاجی به تغییر کد نخواهیم داشت. همون کد رو آپلود کنید و سریال پلاتر رو باز کنید.

همونطور که می بینید دقیقا داره متناسب با تغییر ولوم پتانسیومتر (که دست من بود و شما نمی دیدید) نمودار تغییر می کنه.

اما این سریال پلاتر عزیز ما یه مشکل داره و اونم اینه که همزمان که سریال پلاتر بازه کنسول سریال قبلی رو نمیشه باز کرد . در عین واحد فقط یکیش می تونه کار کنه که امیدواریم یه راه حلی واسه این مشکل بعدا پیدا کنن.

پایان جلسه

جلسه دوازدهم: آموزش اضافه کردن کتابخانه

به نام خدا

در این جلسه اضافه کردن کتابخونه به آردوینو رو آموزش میدم.
اول داستان: اصن کتابخونه چیه؟ یه بنده خدایی رو تصور کنید که واسه پروژش 700 خط کد نوشته. نحوه کد نویسیش هم طوری بوده که توی این 700 خط کدش 20 تا تابع (یا به قول برنامه نویسا “متد”) تعریف کرده. حالا این آدم می تونه کدش رو همینطوری ول کنه و بره (700 خط) یا این که می تونه تمام تابع هایی رو که نوشته یه جا جمع کنه و به مجوعشون یه اسم بده. تو این مثال ما یعنی بیاد 20 تا تابعی رو که نوشته توی یه مجموعه به نام مثلا mysensors قرار بده.
حالا این مجموعه ای که داریم ازش حرف می زنیم و اسمش رو گذاشتیم mysensors همون کتابخونس! دقیقا همونطوری که یه کتابخونه از کلی کتاب تشکیل میشه یه کتابخونه آردوینو هم از خطوط کد نویسی تشکیل میشه.
بنابراین تا این جا 20 تا تابعمون رو گذاشتیم توی کتابخونه mysensors . وقتی می خوایم تو اسکچ (همون نرم افزار آردوینو) از تابع ها یی که الان تو کتابخونه گذاشتیم استفاده کنیم، فقط و فقط کافیه اون کتابخونه رو به کتابخونه های آردوینو اضافه کنیم(بحث اصلی آموزش این جلسه)، بعد اسم کتابخونه روتو هدر برنامه بنویسیم (موضوع آموزش جلسه بعد) و از تمام 20 تا تابعمون استفاده کنیم. یه عده ممکنه هنوز متوجه نشده باشن.
فرض کنید یه تابع نوشتیم مثل زیر:
2015-12-17_12-19-27

این تابع اسمش showSms هست و 6 خط شده. ما این تابع رو توی کتابخونه mysenors قرار می دیم(کاری نداشته باشید چجوری چون به من و شما ربطی نداره البته فعلا!)
بعد از این که کتابخونه رو درست کردیم و به نرم افزار آردوینو اضافه کردیم هر جا با این تابع کار داشتیم به جای این که کل تابع رو با این شکل استفاده کنیم فقط ()showSms رو صدا می زنیم و بس . بنابراین تعداد خط های کد نویسی توی اسکچ خیلی خیلی خیلی کمتر میشه.

و اما آموزش اصلی: اضافه کردن کتابخونه
اول ماجرا باید بگم بهتون پیشنهاد میکنم آخرین ورژن نرم افزار رو از اینجا دانلود کنید.
سه روش برای اضافه کردن کتابخونه به نرم افزار آردوینو وجود داره که دو روش اول لازم دارن ورژن اسکچ شما بالا باشه.

روش اول: Library Manager
اصل و اساس این روش اینه که کتابخونه مورد نظرمون رو از اینترنت به صورت مستقیم دانلود کنیم.
مثلا یه کتابخونه وجود داره به نام Bounce2. مطابق عکس زیر وارد Library Manager بشید:
2015-12-17_12-38-05

 

در قسمت مورد نظر تو عکس زیر کلمه Bounce2 رو تایپ کنید، کتابخانه پیدا شده رو انتخاب کنید و کلید install رو بزنید:
2015-12-17_12-40-25

بعد از تموم شدن دانلود مطابق عکس زیر می تونید چک کنید که کتابخونه به درستی اضافه شده یا نه!
2015-12-17_12-44-40

روش دوم:اضافه کردن فایل zip
همونطور که از اسم این روش پیداست برای اضافه کردن کتابخونه به فایل زیپ اون نیاز داریم. مثلا این فایل زیپ رو دانلود کنید.(همون کتابخونه قبلی هست)
خب حالا مطابق عکس زیر به add .zip library برید.
2015-12-17_12-55-23
در صفحه باز شده هر جا فایل زیپ دانلود شدتون رو گذاشتید برید و فایل زیپ رو انتخاب کنید:
2015-12-19_14-11-42
روش تست برای این که ببینید کتابخونه اضافه شد یا نه دقیقا مثل قبله.

روش آخر:کپی کردن در دایرکتوری کتابخانه ها
این روش یه روش کلیه و اصلا مهم نیست ورژن نرم افزار آردوینویی که استفاده می کنید جدیده یا قدیمی.
اول فایل زیپی رو که قبلا دانلود کردید اکسترکت کنید. بعد اونو کات کنید .
2015-12-19_14-21-30
برید اونجایی که نرم افزار آردوینو رو نصب کردید. وارد فولدر Arduino بشید بعد از اون وارد فولدر libraries بشید و فولدری که کات کرده بودید رو paste کنید همونجا.
2015-12-19_14-23-35
2015-12-19_14-24-28
کار اینجا تمام نیست. الان اسم فولدر ما Bounce2-master هست دیگه درسته؟ این اسم باید تغییر کنه حالا چجوری؟
اگه نرم افزارتون بازه ببندیدش و دوباره باز کنید(این کار حتما لازمه چون نرم افزار باید یه دور ریست بشه تا کتابخونه بهش اضافه بشه. روش های قبلی به این کار احتیاجی نداشتن)
خب حالا مطابق عکس زیر یه مثال از این کتابخونه رو بیارید:
2015-12-19_14-33-292015-12-19_14-34-20
همونطوری که توعکس نوشتم اسم کتابخونه رو یعنی Bounce2 (بدون h.) بردارید و به جای اسم فولدر کتابخونه یعنیpaste , Bounce2-master کنید. بنابراین در پایان کار باید اسم کتابخونه و اسم فولدر کتابخونه دقیقا یکی باشه. برای تست موفقیت در تغییر اسم بعد از این که این کار رو انجام دادید کد رو یک بار کامپایل کنید اگر ارور داد یعنی یه جای این روند رو اشتباه کردید.

و این هم اتمام جلسه اگر سوالی داشتید در فروم حی و حاضرم تشریف بیارید.

جلسه پنجم: ساختار کدنویسی در اسکچ

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

خب میریم وسط داستان. هر برنامه ای که برای آردوینو میخوایم بنویسیم دو قسمت مجزا داره. یکی تابع setup یکی تابع loop. دقت کنید تمام برنامه ها باید حتما شامل این دو تا تابع باشن. طرح خالی برنامه به این شکله:Untitled

حالا این که این دو تا تابع چی هستن و چیکار میکنن؟
اول تابع setup: به زبون نیمه علمی بخوام بگم کامپایلر آردوینو این تابع رو فقط و فقط 1 بار اجرا می کنه یعنی تمام خط های برنامه که توی این تابع نوشته میشن تنها 1 بار فراخوان میشن. خب این قسمت به چه دردی میخوره اصن؟ فرض کنید یه پروژه داشته باشیم که بخواد میزان الودگی هوای محیط یه کارخونه رو روی یه LCD نشون بده. همچنین تاکید کرده باشن که اول برنامه لوگوی اون کارخونه نمایش داده بشه. خب شما کافیه که دستور چاپ لوگوی اون کارخونه رو توی تابع setup قرار بدید، با این کار لوگو یک بار و تنها یک بار اونم اول برنامه نشون داده میشه.

setup یه کاربرد دیگه هم داره که اصطلاحا بهش میگن کانفیگ(config) کردن. کانفیگ کردن اینجا یعنی تنظیمات مربوط به قطعه هاتون رو توی همین تابع انجام بدید. مثلا فرض کنید دارید با ارتباط سریال با یه بلوتوث ارتباط برقرار میکنید. طبق خواص ارتباط سریال لازمه که نرخ تبادل اطلاعات (Baude Rate) رو تعیین کنید. برای این کار کافیه توی تابع setup این نرخ تبادل رو یه بار معین کنید.

میریم سراغ LOOP . این تابع تنها یه مفهوم داره: اجرا شدن تا ابد. روند اجرای دستورات در loop به این صورت هست که کامپایلر شروع میکنه به اجرای خط به خط برنامه ها. از خط اول شروع میکنه تا برسه به خط آخری که در تابع loop نوشته شده. وقتی رسید به خط اخر دوباره برمیگرده از خط اول و اجرا میکنه(دقیقا نقش همون (1)while توی کدنویسی avr در سایر برنامه ها).
برای درک بهتر فرض کنید یه ماهواره قراره اطلاعاتی که دریافت کرده رو به زمین مخابره کنه، تو ایستگاه زمینی برای دریافت اطلاعات از آردوینو استفاده شده باشه.برای دریافت اطلاعات در ایستگاه لازمه یه سری کد نویسی هایی در آردوینو انجام بشه. فرض کنید اشتباها کد دریافت داده تو setup گذاشته بشه. تو این شرایط ماهواره دائم داده میفرسته ولی ایستگاه زمینی ما (آردوینو) فقط یک بار اون داده رو گرفته بعدش دیگه هیچ کاری نمیکنه در حالی که ماهواره داره اطلاعات مخابره میکنه و تمام اون اطلاعات هم دارن از دست میرن. درستش اینه که کدهای مربوط به دریافت اطلاعات بیاد توی
loop قرار بگیره تا ارتباط همزمان ماهواره و ایستگاه برقرار باشه.

خب تا اینجا ساختار کلی کدنویسی آردوینو مطرح شد. از این جا به تمرکز می کینم روی کدهای برنامه چشمک زن.

دستور pinMode :

Untitled

یادتون هست تو جلسه های قبلی در مورد پین های دیجیتال و آنالوگ حرف زدیم. گفتیم 14 تا پین دیجیتال داریم که هم میتونن ورودی باشن هم خروجی. از اون طرف 6 تا پین آنالوگ داشتیم که فقط و فقط ورودی بودن. برای این که به آردوینو بفهمونیم قراره از این پین ها چجوری استفاده کنیم میریم سراغ دستور pinMode . این دستور دو تا آرگومان(ورودی) داره.

توی آرگومان اول بهش میگیم که داریم از کدوم پین استفاده می کنیم. اگه پین مورد استفاده دیجیتال بوده باشه عدد 0 تا 13 به عنوان آرگومان نوشته میشه. اگه از پین آنالوگ استفاده کرده باشیم A0 تا A5 نوشته میشه.
ورودی دوم تابع pinMode مربوط میشه به این که ما از پین (که در آرگومان اول معرفیش کردیم) چجوری داریم استفاده می کنیم. کلا 3 حالت وجود داره: INPUT , OUTPUT و INPUT_PULLUP . در صورتی که از پین دیجیتال استفاده کنیم یکی از سه حالت بالا میتونه اتفاق بیفته، ولی اگه پین استفاده شده آنالوگ باشه فقط و فقط INPUT مجاز خواهد بود.

نمیدونم حواستون بود یا نه دستور pinMode توی تابع setup نوشته شده. دستور pinMode از اون دستورایی هست که برای کانفیگ کردن استفاده میشه. در حقیقت ما با این دستور یک پین از آدوینو رو کانفیگ می کنیم.

دستور digitalWrite :
1
برای این که به پین های دیجیتال (دقت کنید پین های دیجیتال) مقدار داده بشه از دستور digitalWrite استفاده می کنیم. این دستور دو تا آرگومان داره. آرگومان اول شماره پین دیجیتال رو میگیره که چون بحث روی دیجیتاله میشه 0 تا 13. آرگومان دوم مقدار میگیره یعنی LOW و HIGH. اگه قراره روی پین مقدار 1 بیفته از HIGH و اگه قراره 0 باشه از LOW استفاده می کنیم.

دستور delay :
1

این دستور یه آرگومان عددی داره به این صورت که هر عددی که توش بنویسید بر حسب میلی ثانیه محاسبه میشه و آردوینو همون اندازه صبر می کنه. مثلا ما این جا نوشتیم (delay(1000 این یعنی به مدت 1000 میلی ثانیه (همون یک ثانیه) آردوینو صبر میکنه بعد خط بعدی برنامه رو اجرا میکنه.

امیدوارم دقت کرده باشید که دو تا تابع digitalWrite و delay توی loop نوشته شدن. یعنی اجرای این دستورها تا ابد ادامه خواهد داشت.

خب تا این قسمت از جلسه فقط تیکه تیکه اومدیم کد ها رو گفتیم الان میخوایم بگیم کامپایلر چجوری این دستورها رو کنار هم میخونه و اجرا میکنه. اگه با این روند جلو بریم همیشه میتونیم خودمون کدهامون رو دیباگ و اشکال زدایی کنیم.

شروع می کنیم.
کامپایلر اول میره سراغ تابع setup. توی تابع setup اومدیم با دستور (pinMode(13, OUTPUT به آردوینو فهموندیم که میخوایم از پین شماره 13 (همون پینی که LED داخلی بهش وصله) به صورت خروجی استفاده کنیم. در حقیقت با این کار پین 13 رو به عنوان خروجی کانفیگ کردیم.
قدم بعد کامپایلر وارد تابع loop میشه. خط اول از دستور ( digitalWrite(13, HIGH استفاده کرده. طبق آرگومان هایی که بهش داده شده، میاد روی پین شماره 13 سطح منطقی HIGH رو قرار میده و با این کار LED داخلی روشن میشه.
خط بعد از دستور delay با آرگومان 1000 استفاده شده. با این کار آردوینو به مدت 1 ثانیه روی همین خط برنامه متوقف میشه و این در حالیه که led داخلی اون قبلا روشن شده.
بعد از گذشت یک ثانیه خط بعدی با دستور (digitalWrite(13, LOW اجرا میشه. با این دستور led داخلی آردوینو خاموش میشه.
خط آخر برنامه که دستور delay هست، باز هم برنامه رو به مدت 1 ثانیه متوقف میکنه با این تفاوت که الان led داخلی آردوینو خاموشه.

خب خط های برنامه تموم شد آیا روند اجرای برنامه متوقف میشه؟
کسانی که بحث رو دنبال کرده باشن میتونن جواب این سوال رو بدن. خیر روند اجرایی برنامه متوقف نمیشه چرا که تمام این دستور ها توی تابع loop نوشته شده. بنابراین دوباره از خط اول تابع loop که همون( digitalWrite(13, HIGH هست برنامه شروع میکنه به انجام شدن.

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

این جلسه هم تموم شد موفق باشید.

جلسه چهارم: نرم افزار Arduino

به نام خدا
میریم سراغ جلسه چهارم: آموزش نرم افزار آردوینو.
دوستان اول جلسه اعلام میدارم که اگر در تشخیص عکس ها مشکل داشتید روی اون ها کلیک کنید لطفا.
تا این جای کار داشتیم میگفتیم میکروکنترلر چیه؟ بعد رفتیم سراغ AVR و آردوینو. جلسه پیش هم کلا تو داستان معرفی برد آردوینو بودیم. تا الان هر چیزی که گفتیم تو زمینه سخت افزار بود این جلسه کلا در مورد نرم افزار و نحوه کد نویسی صحبت می کنیم.
قدم اول اینه که نرم افزار رو نصب کنیم پس برید به این لینک و ورژن آخر رو نصب کنید(ماشاءالله این جماعت روز به روز ورژن میدن بیرون بنابراین نمیشه بگی کدوم ورژن).

شما با هر سیستم عاملی که کار کنید میتونید فایل نصبی مورد نظرتون رو پیدا کنید. حالا یه سری از دوستان ویندوزی، ادمین نیستن یعنی نمیتونن فایل EXE نصب کنن، به شما دوستان غیر ادمین هم فکر شده و میتونید فایل ZIP دانلود کنید و توی یکی از درایوهای مورد نظرتون کپی کنید.
تا این جای جلسه فرض بر اینه که شما تونستید نرم افزار رو نصب کنید.

imgres

خب نرم افزار رو که باز می کنید با محیطی شبیه شکل زیر مواجه میشید:
1

به جای این که بیایم تک تک قسمت های نرم افزار رو معرفی کنیم و بعدا هم یادمون بره کدوم قسمت کجا استفاده میشد منوی بالای نرم افزار رو بیخیال می شیم فعلا میریم سراغ کلیات نرم افزار و 5 تا کلید اصلی اون. اسم این نرم افزار اسکچ (Sketch) هست (در آینده از این اسم استفاده خواهیم کرد).

خب به ترتیب از سمت چپ شروع میکنیم:
Untitledاین کلید کامپایله. یعنی شما برنامه رو نوشتید و قصد دارید عیب یابی کنید(کامپایل کنید) اینو میزنید، خطاهای برنامه رو براتون معین می کنه.

Untitledاین کلید مربوط به آپلود کردنه یعنی شما کد رو نوشتید و آماده آپلود هستید، این کلید رو بزنید و از انجام پروژتون لذت ببرید. البته این کلید قبل از آپلود کردن یه بار کامپایل میکنه و اگه خطایی در کدنویسی پیدا نکرد بعد آپلود میکنه.

Untitledبرای باز کردن فایل جدید اسکچ باید از این کلید استفاده کنید.

Untitledاین کلید برنامه های از پیش نوشته شده رو باز میکنه (open کردن).

Untitledوقتی کد می نویسید باید هر ثانیه به این فکر کنید که ممکنه یه بلای ناگهانی نازل بشه و اسکچ شما بسته بشه. این امر مساوی هست با این که بهتون بگن مثلا 100 خط کد شما پریده و این دقیقا مساوی هست با ایست قلبی. برای پیشگیری از این موضوع با زدن این کلید کدهاتون رو ذخیره(Save) کنید.

الان میریم سراغ آپلود کردن اولین کد توی آردوینو: پروژه LED چشمک زن.
قدم به قدم باهم بریم جلو.
1. کابل USB رو به آردوینو و پورت USB کامپیوتر وصل کنید.
connected-arduino-uno
2. تو این مرحله باید به آردوینو پورت COM اختصاص داده بشه. معمولا اینطوریه که به محض کانکت کردن کابل USB خود سیستم عامل شروع می کنه به نصب درایور و بعد از اتمام نصبش یه پورت COM مثلا COM4 بهش اختصاص میده( اگه دوستان در اختصاص پورت COM مشکل داشته باشن در آینده یه جلسه کوتاه به این قضیه اختصاص می دیم.)

3. مرحله بعد که مرحله نیمه نهاییه اینه که بریم توی مثال های(Examples) نرم افزار آردوینو و برنامه چشمک زن رو بیاریم. نرم افزار رو باز کنید و برید توی File
1
از اونجا گزینه Examples بعد Basics و در آخر Blink رو انتخاب کنید.
2

بعد از انتخاب این برنامه صفحه اسکچ زیر براتون باز میشه(در مورد خطوط کد نویسی در آینده صحبت می کنیم):
11

4.و اما مرحله فینال آپلود کردن کد.
اول لازمه که تنظیمات برد رو انجام بدید. این تنطیمات دوتا مرحله داره. تنظیم برد مورد استفاده و پورت com. برای انتخاب برد آردوینویی که استفاده می کنید برید به منوی Tools و از گزینه Board آردوینویی رو که دارید باهاش کار میکنید انتخاب کنید مثلا arduino UNO.
56565

بعد بیاید توی همون منوی Tools و از گزینه Port اون پورت کامی که در مرحله 2 بهتون اختصاص داده شده بود رو انتخاب کنید.
777777777777777777

برای پایان این پروسه کد رو کامپایل کنید اگر خطای کد نویسی نداشتیدآپلود کنید.
سشسشس

حالا از کجا بفهمیم کد توی برد آپلود شده؟
در صورتی که کد به درستی کامپایل بشه قسمت پایین اسکچ پیغام “Done Uploding” نمایش داده میشه:

ww

حالا به بردتون نگاه کنید. یه LED چشمک زن با فاصله زمانی 1 ثانیه داره چشمک میزنه.

روندی که بالا گفتیم پروسه آپلود کردن کد توی برد آردوینو هست. شما هر کد دیگه ای هم که داشته باشید می تونید با این روند توی برد آردوینو خودتون آپلود کنید.

این که هر خط برنامه دقیقه داره چیکار میکنه و ساختار کد نویسی در اسکچ چجوریه، جلسه بعد در موردش مفصل صحبت می کنیم این جلسه صرفا روند رو یاد گرفتید.

پایان جلسه

جلسه دوم : چرا آردوینو ؟

به نام خدا
وارد جلسه دوم می شیم.
اول باید بدونیم آردوینو چیه؟
به زبان ساده، آردوینو بردیه که از پردازنده و یک سری قطعات الکترونیکی دیگه مثل خازن و مقاومت و رگولاتور و کریستال و … تشکیل شده . آردوینو انواع مختلفی داره که بسته به نوعش، پردازنده ای که روش استفاده شده متفاوته. مثلا روی آردوینو UNO میکروکنترلر مورد استفاده، ATMEGA32 هست. قطعات الکترونیکی که به صورت پیش فرض روی برد آردوینو قرار گرفته، برای راه اندازی ساده تر میکروکنترلر AVR هست که در ادامه در مورد آنها بیشتر توضیح داده میشه. همین قطعات الکترونیکیه که با قرار گرفتن در کنار AVR بردی متفاوت و پرکاربرد را بوجود آورده. ناگفته نمونه بعضی از بردهای آردوینو میکروکنترلر ARM استفاده میکنن.

حالا چرا از خود AVR استفاده نکنیم و بیایم سراغ آردوینو ?
کسانی که با AVR کار کرده باشن خوب میدونن، حتی اگه بخوای یک پروژه LED چشمک زن ساده هم راه اندازی کنی علاوه برخود AVR به یک سری سخت افزار جانبی مثل رگولاتور و کریستال و سیم بندی واسه تغذیه و زمین کردن(مهم ترین پایه ها) کنترلر AVR نیاز داری. حالا این وسط اگه یه موقع میکرو را بر عکس تو مدار جا بزنی یا اشتباه به یه پایه دیگه اون ولتاژ بدی عملا میکرو می سوزه و تا بخواد دستت بیاد چجوری اشتباه نکنی، عملا مقدار هنگفتی پول خرج کردی و دل زده شدی و الفرار.
این اول داستان نیست. پروگرام کردن AVR هم یه سری مشکلات داره .در بهترین حالت که پروگرامر از نوع USB باشه، باید AVR را از مدار خارج کنی، وصلش کنی روی پروگرامر، کد رو آپلود کنی، دوباره از برد پروگرامر جداش کنی و بزاریش تو مدار ( اگه اشتباه نزاری). اگه از کد نویسی مطمئن باشی و نخواد به خاطر یه اشتباه کوچک کد را عوض کنی 4 مرحله وجود داره تا آپلود کنی.
اینم یک نمونه از پروگرامر که اگه قصد دارید از AVR به تنهایی استفاده کنید باید همه جا دنبالتون باشه .
avr programmer-1
تا این قسمت از جلسه توضیح راه اندازی پروژه LED چشمک زن با AVR بود. از این جای داستان به بعد پروژه LED چشمک زن را با آردوینو پیاده سازی میکنیم .(الان صرفا یک شمای کلی از نحوه کار با آردوینو بیان میشه. جزئیات بحث آردوینو، مطمئنا در جلسات بعدی مطرح خواهد شد.)
خب شروع میکنیم .
قطعات مورد نیاز: برد آردوینو + کابل USB .
سخت افزار همین جا تمام میشه .شما به هیچ چیز دیگری (حتی LED) احتیاج ندارید. رگولاتور و کریستال و همه سخت افزارهای دیگه ای که برای راه اندازی پروژه LED چشمک زن لازمه روی این برد به صورت پیش فرض قرار گرفته. برای آپلود کردن کد کافیه کابل USB رو به آردوینو وصل کنید، در نرم افزار آردوینو با اشاره یک کلید آپلود کنید. یعنی بعد از آماده شدن کد فقط با 2 حرکت می تونید آپلود کنید.
اگر فرض کنیم کسی در کد نویسی وارد نباشه، مطمئنا چندین بار لازمه کد برنامه را تغییر بده. حالا اگه با AVR کار کنه به ازای هر تغییری که در کد بوجود بیاره و بخواد آپلود کنه باید 4 مرحله را طی کنه اما، اگه بخواد با آردوینو پروژه انجام بده هیچ نیازی نداره میکرو از مدار جدا بشه، همونطوری که تمام اجزای مدار سر جاشه کابل USB وصل میشه و برنامه آپلود میشه.
خیلی قابل درکه که پروگرام کردن و ساخت مدار پروژه چشمک زن توسط آردوینو نسبت به AVR کار بسیار ساده تری است.
DEV01158-01-L1401607442538ad512d0411 حالا اگه قصد داشته باشیم در حوزه کد نویسی وارد بشیم و تفاوت ها را در این حوزه هم بیان کنیم، یه بار دیگه برمی گردیم به پروژه LED چشمک زن. اگر بخواهیم با نرم افزار های مخصوص AVR کد نویسی کنیم، اول برنامه(هدر برنامه) باید تعدادی تابع را include کنیم تا بتونیم از توابع مورد نیاز استفاده کنیم. بعد برای این که پین میکرو را 0 و 1 کنیم (تا LED روشن و خاموش بشه) اول باید به ریجسترها مقدار بدیم تا اون پین خروجی بشه، بعد پایه را 0 و 1 کنیم. ریجسترهایی که استفاده میشه معمولا اسم هایی دارن که به خاطر سپردنشون برای بعضی افراد کار مشکلیه .
حالا اگه بخواهیم همین کد رو توی آردوینو بنویسیم نه نیازه تابعی را include کنیم نه به ریجستری مقدار بدیم .با یک خط کد نویسی پین به عنوان خروجی در نظر گرفته میشه. دستوری که با اون پین را معرفی می کنیم، دستور pinMode هست که به خاطر سپردنش کار ساده ایه. در نرم افزار آردوینو کدنویسی به زبان ++c است.
برای مقایسه، دو تا کد میزاریم اولی کدنویسی AVR است:

define F_CPU 4000000UL#
 <include <avr/io.h#
 <include <avr/delay.h#
 "include “myTimer.h#
 (int main (void
 }
 ;DDRC = 0xFF
 } (while(1
 ;(PORTC |=(1<<0
 ;(delay_ms(250
 ;(PORTC &= ~(1 << 0
 ;(delay_ms(250
 ;{
 {

دومی کد نویسی آردوینو است:

}()void setup
 ;(pinMode(13, OUTPUT
 {
 }()void loop
 ;(digitalWrite(13, HIGH
 ;(delay(250
 ;(digitalWrite(13, LOW
 ;(delay(250
 {

 

پایان این جلسه را اعلام میکنیم.
در صورت داشتن هر گونه سوالی به لینک فروم در آفتاب رایانه مراجعه کنید.

جلسه اول : آشنایی با میکروکنترلر

میکروکنترلر چیست؟
قطعه ای که این روزها دارد جای خود را در خیلی از وسایل الکتریکی باز میکند .از تلفن گرفته تا موبایل از ماوس لیزری که الان دستتان روی آن است و دارین باهاش کامپیوتر رو کنترل میکنید تا هر وسیله ای که بتوان پیچیدگی رو در اون دید میتونید یک میکروکنترلر رو ببینید .
کلمه میکروکنترلراز دو کلمه میکرو و کنترلر تشکیل شده است.
میکرو : میدونین که این یک واحد یونانی است و برابر با 10 به توان منفی 6 متر است. یعنی یک ملیونیوم متر….
کنترلر : یعنی کنترل کننده به تعبیری یعنی “مغز ” البته بدون تفکر فقط دستوراتی که به اون داده میشه به نحو احسن انجام میده.
کلمه میکرو به دو منظور استفاده شده منظور اول و مهم ،سرعت عمل میکروکنترلر است که میتواند تا یک ملیونیوم ثانیه باشد یعنی میتواند در یک ثاینه یک میلیون عملیات رو انجام بده به همین خاطر واژه میکرو رو به اون اختصاص دادن . معنی دوم آن شاید کوچیکی این قطعه باشد که تا یک ملیونیوم متر کوچیک شده شاید باور کردنی نباشه ولی در یک تراشه ممکنه بیش از یک میلیون تراتزیستور به کار رفته باشه. این کلمه وقتی اهمیتش کامل میشه که با واژه کنترلر عجین بشه تا معنیش کامل بشود .

نحوه انجام دادن کار میکروکنترلر:
تا حالا همه شما با ماشین حساب کار کردین تا حالا به نحوه کار کردنش فکر کردین شما اطلاعاتتون را که همون عملیات ریاضی هست به وسیله صفحه کلید به اون میدید بعد ماشین حساب این اطلاعات رو بر مبنای دستوراتی که قبلا به اون داده شده پردازش میکند و جواب را روی lcd نمایش میدهد. در واقع یک میکروکنترلر برنامه ریزی شده به عنوان مغز ماشین حساب این اطلاعات رو از صفحه کلید میگیره روشون پردازش انجام میده و بعد بر روی lcd نمایش میده.
کار میکروکنترلر دقیقا مشابه این است میکرو کنترلر بر مبنای یک سری ورودی که به اون داده میشه مثلا این ورودی از یک سنسور دما باشه که درجه حرارت رو میگه یا از هر چیز دیگه مثل صفحه کلید ، بر مبنای این ورودی ها و برنامه ای که قبلا ما به اون دادیم خروجیشو تنظیم میکنه که ممکنه خروجیش یک موتور باشه یا یک lcd یا هر چیز دیگری که با الکتریسیته کار بکند.

ساختمان داخلی میکروکنترلر:
کامپیوتری که الان بر روی اون دارین کار انجام میدین دارای یک پردازنده مرکزیه به نام cpu که از کنار هم قرار گرفتن چندین ملیون ترانزیستور تشکیل شده و بر روی اطلاعات پردازش انجام میده . میکرو کنترلر هم عینا دارای یک پردازنده مرکزی به نام cpu است که دقیقا کار cpu کامپیوتر رو انجام میده با این تفاوت که قدرت و سرعت پردازشش از cpu کمتره که به اون میکروپرسسور میگن.
میکروکنترلر علاوه بر cpu دارای حافظه است که ما برنامه ای که بهش میدیم در اون قرار میگیره .در کنار حافظه در میکروکنترلرهای امروزی تایمرها برای تنظیم زمان کانتر ها برای شمردن کانال های آنالوگ به دیجیتال پورت های برای گرفتن و دادن اطلاعات و امکاناتی تشکیل شده و همه اینها در یک چیپ قرار گرفته که تکنولوژی جدید اونو تو یک تراشه به اندازه یک سکه قرار داده.

تمام میکروکنترلرها جزء این 4 قسمت هستنند:
8051(1
Pic(2
Avr(3
Arm(4
خوشبختانه همه میکروکنترلر هایی که جزء هر کدام از 4 نوع بالا باشند از یک برنامه پیروی میکنند. بدین معنا که اگر شما کار با یکی از مدل های آن میکرو را یاد گرفته باشید مثل اینکه کار با تمام میکروکنترلرهای آن نوع را یاد گرفته اید.مثلا شما اگر با یکی از مدل های میکروکنترلر avr مثلا atmega8 را یاد گرفته باشید دیگر با صد ها مدل دیگر میکروکنترلر avr مشکلی ندارید وتقریبا بدون هیچ مشکلی میتوانید با دیگر مدل های این میکرو کار کنید.
اما یه مشکل که در میکروکنترلر ها وجود دارد این است که این4 نوع از لحاظ برنامه نویسی به هیچ وجه با هم دیگر سازگاری ندارند . به طور مثال اگر شما میکروکنترلر های avr و 8051 را کامل یاد گرفته باشید حتی ساده ترین برنامه رو روی یک میکروکنترلر pic نمیتوانید اجرا کنید. واین یکی از بزرگترین عیب و مشکل برای یاد گیری میکرو است .بنابراین از همون اول باید یک انتخاب درست داشته باشید و میکروکنترلر مناسب را برگزینید تا با یادگیری آن میکروکنترلر بتوانید بعدا به سادگی پروژه های خود را اجرا کنید .

8051 :
اولین میکروکنترلری بود که به دست بشر ساخته شد . ابتدا این میکروکنترلر توسط شرکت بزرگ intel ساخته شد .اما بعدا intel این امکان را به دیگر شرکت ها داد که این میکروکنترلر را تولید کنند و شرکت هایی مانند ATMEL , PHILIPS , SIEMENS , DALLAS و… به تولید این میکروکنترلر پرداختنند. یکی از شرکت هایی که به صورت گسترده به تولید این تراشه پرداخت ATMEL بود. اما اگربخواهیم به صورت کلی سیر پیشرفت این نوع میکروکنترلر رو در نظر بگیریم اولین میکروکنترلر هایی که ساخته شد با جدیدترین میکروکنترلرهای 8051 که الان تولید میشود با توجه به این پیشرفت شگفت در تمام زمینه ها که صنایع دیگر در دنیا دارند پیشرفت زیادی ندارد به طور مثال AT89S5X که میکروکنترلر 8051 جدید ساخت ATMEL است نسبت به مدل های اولیه 8051 پیشرفت آنچنانی ندارد . امکانات این میکرو نسبت به AVR و PIC قابل مقایسه نیست . به صورتی که که همین مدل جدید 8051 تقریبا حافظه ای برابر یک صدم (0.01 ) میکروکنترلر های AVR را دارد و سرعتش 4 برابر کمتر از میکروکنترلر های PIC و 12 بار کمتر از میکروکنترلر های AVR است . از لحاظ امکانات دیگر هم چنین ضعفی احساس میشود. اما برای کارهای ساده تر که پیچیدگی زیادی در آن نباشد به خاطر قیمت بسیار پایینی که این میکروکنترلر دارد بسیار مناسب است . قیمت همین مدل جدید AT89S5X حول و حوش 1000 تومان است که قیمت بسیار مناسبی است.
این میکرو کنترلر از زبان اسمبلی و C پشتیبانی میکند که زبان برنامه نویسی اصلی آن اسمبلی است که واقعا نوشتن با این زبان برنامه نویسی نسبت به زبان های برنامه نویسی دیگر هم مشکل تر و هم طولانی تر است. در کل این میکروکنترلر امروزه دیگر توانای رقابت با AVR و PIC رو ندارد و امروزه رقابت اصلی بین این دو میکروکنترلر است.

PIC :
واقعا میکروکنترلر خیلی قوی است که بر اساس بعضی آمار ها بیشترین کاربر را به خود اختصاص داده است البته متذکر شوم که در ایران این آمار به نفع AVR است. این میکروکنترلر ساخت شرکت میکرو چیپ است که PIC رو در مدل های خیلی زیادی با امکانات مختلف برای کارهای مختلف میسازد .چون بحث اصلی ما روی AVR هست از توضیح بیشتر این میکروکنترلر میگذریم.

AVR :
به میکروکنترلر AVR میرسیم .اول از همه سرعت این میکروکنترلر بسیار بالاست و به قولی دستوراتی که بهش داده میشه در یک سیکل کلاک انجام میده. AVR از زبان های برنامه نویسی سطح بالا یا به اصطلاح (HIGH LEVEL LANGUAGE) HLL پشتیبانی میکند که باعث تولید کدهای بیشتری میشود که در کل برنامه نوشته شده نسبت به برنامه هایی که برای 8051 و PIC نوشته میشود کوتاهتر است. امکانات جانبی این میکروکنترلر بسیار مناسب است و شما را از خرید بعضی لوازم جانبی مانند چیپ های آنالوگ به دیجیتال (ADC) , مقایسه گر آنالوگ و… راحت میکند .در ضمن AVR از بسیاری از استاندارد های ارتباطی مانند SPI,UART,12C,JTAG پشتیبانی میکند که به راحتی میتوان این میکروکنترلر را با میکروکنترلر دیگر یا و سایل دیگر وصل کرد و با وسایل دیگر به راحتی ارتباط برقرار کند. قیمت این میکروکنترلر هم به نسبت امکانات فراوانی که داره بسیار پایین است به طوری که یک میکروکنترلر AVR تقریبا پیشرفته رو با قیمت حول و حوش 3 تا 4 هزار تومان خرید .
AVRها به پنج گروه تقسیم شده اند:
tinyAVR (1
megaAVR (2
AVR (3 XMEGA
AVR32 UC3 (4
AVR32 AP7 (5

ARM :
ARM یک میکرو کنترلر قدرتمند با کاربردهای متنوع است. ARM ها بیشتر در جاهایی که ظاهر زیبای کار مورد توجه است استفاده می شوند چرا که این میکروکنترلرها می توانند سیستم عامل های لینوکس و ویندوز رو راه اندازی کنند.
پروگرام میکروکنترلر :
شاید تا حالا به نظرتون رسیده باشه که این میکروکنترلر رو چگونه میشه برنامه ریزی کرد تا کار مورد نظرمان را انجام بده در صورتی که یک میکروکنترلر برنامه ریزی نشده هیچ کاری رو نمیتونه انجام بده و هیچ کاربردی نداره در واقع برنامه هر میکرو روح وجانی است که در اون دمیده میشه و اون رو زنده میکنه.
برای برنامه ریزی میکروکنترلر نیاز به دستگاه یا بردی هست به نام پروگرامر که یه پل ارتباطیه بین کامپیوتر و میکروکنترلر . پروگرامر را هم میشه از بازار تهیه کرد و هم میشه اون رو ساخت.
البته پروگرامرهای مختلفی در بازار هستنند که متانسب با کاربردشان قیمت های مختلفی دارند بعضی ها فقط چند مدل رو پروگرام میکنند بعضی از پروگرامر ها همه فن حریفند و تمام میکروکنترلر های 8051AVR ,ARM, PIC , رو برنامه ریزی میکنند به طبع قیمت زیادتری دارند.

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