آردوینو UNO فریمورکی برای یادگیری الکترونیک، فهم و ساخت دستگاههای الکترونیکی است. آردوینو UNO قادر به نظارت بر محیط، تحریک بوردهای پیام LED، تولید الگوی صدا و نور، دریافت و نمایش تصاویر دیجیتالی، ارتباط با سایر دستگاههای الکترونیکی از طریق بلوتوث یا به صورت بیسیم، ارتباط اینترنتی از طریق وای فای، و ثبت دیتای مربوط به مسیر، سرعت و ارتفاع سفر با GPS است.
آردوینو UNO R3 (شکل 1) حاوی یک میکروکنترلر ATmega328P است که حافظه و دستورالعملهای برنامه نویسی شده را برای ذخیرهسازی دیتا، اجرا میکند. منبع توان آردوینو یک ورودی DC یا اتصال USB است که برای آپلود دستورالعملها و ارتباط با کامپیوتر یا لپ تاپ استفاده میشود. تراشه ATmega 16U2، USB (گذرگاه سریال مشترک) را برای ارتباط سریال مدیریت میکند.
Pin منبع تغذیه امکان اتصال تا 5V (5 ولت) یا 3. 3V و اتصال به زمین (GND) به سایر دستگاهها را فراهم میکند. Pinهای 0 و 1 برای انتقال و دریافت دیتای سریال از سایر دستگاهها هستند. Pinهای 2 تا 13 ورودی و خروجی دیجیتال هستند، که ورودی یا خروجی 5V برابر با یک دیجیتال یا 0V برابر با صفر دیجیتال است.
Pinهای خروجی برای شبیهسازی ولتاژهای بین 0V و 5V زمانی که یک Pin در حالت 5V است را تغییر میدهند. Pinهای آنالوگ، A0 تا A5، ولتاژهای بین 0V و 5V را اندازه گیری کرده و سیگنالهای آنالوگ را به مقادیر دیجیتال (ADC) تبدیل مینماید. Pinهای A4 و A5 نیز میتوانند با سایر دستگاهها ارتباط برقرار کنند، درست مثل کاری کهPinهای 10 تا 13 انجام میدهند.
البته این ارتباط با استفاده از سیستمهای ارتباطی متفاوتی، به ترتیب I2C و SPI، در مقایسه با اتصال USB انجام میشود. سه LED (دیود ساطع کننده نور) توان (ON)، ساطع کننده (TX) و دریافت کننده (RX) را با چهارمین LEC متصل به پین 13 نشان میدهد. از دکمه ریست برای راه اندازه مجدد میکروکنترلر استفاده میشود.
کارکرد آردوینو UNO منجر به توسعه دامنهی وسیعی از پروژهها میشود که در کتاب حاضر توضیح داده میشوند. شاید برخی از اصطلاحات (از جمله ADC, I2C, SPI) در ابتدا برایتان خیلی قابل درک نباشد، اما در فصول مرتبط به توضیح آنها خواهیم پرداخت.
بِرد بورد (Bread Board)
بِرد بورد شامل ستونهایی با خانههای متصل بهم است و برای قرارگیری قطعات الکترونیکی به منظور ایجاد یک مدار و اتصال به آردوینو بکاربرده میشود (شکل 1).
دو ردیف در امتداد طول بِرد بورد (چپ به راست) برای اتصال به خطوط پاور (قرمز) یا اتصال به زمین (آبی) در مدار مورد استفاده قرار میگیرد. سوراخهای هر ستون کوتاه (سبز) بِرد بورد به یکدیگر متصل شدهاند، اما خود ستونها بهم متصل نیستند، بنابراین دو قطعه هر کدام با یک پایه در ستون سبز به یکدیگر وصل شده اند.
منطقه میانی بِرد بورد، تخته را به دو بخش غیرمتصل تقسیم میکند. بِرد بوردها اندازههای مختلفی دارند.
اصطلاح بِرد بورد از سرویس رادیو آماتوری گرفته شده که نقاط ثابت را به بِرد بورد چوبی متصل کرده و سپس قطعات الکترونیکی را به نقاط ثابت وصل میکند.
به عنوان مثال، شکل 1. 3 یک مدار با LED، مقاومت 100Ω و باتری 3V نشان میدهد. پایانه قرمز یا مثبت باتری 3V به پایه بلند LED متصل شده، زیرا پایههای مرتبط به این دو قطعه در یک ستون کوتاه هستند.
علاوه بر این، پایه کوتاه LED پایه “بالای” مقاومت 100Ω متصل شده، البته پایه “پایین” مقاومت، به سبب قرارگیری در نیمه دیگر برد به پایه بالایی متصل نیست. برای تکمیل مدار، یک سیم سیاه پایانه منفی یا سیاه باتری 3V را به پایه “پایین” مقاومت متصل میکند.
نرم افزار IDE آردوینو
نرم افزار IDE (محیط توسعه تعاملی) آردوینو از سایت www.arduino.cc/en/Main/Software، قابل دانلود بوده و به صورت فایل arduino-version number-windows. exe در دسکتاپ ذخیره میشود. برای نصب فایل exe. باید دوبار روی آن کلیک کرد.
فایلهای برنامه IDE آردوینو در مسیر C: ➤ Program Files (x86) ➤ Arduino ذخیره میشوند که شامل اسکچهای نمونه موجود در مسیر C: ➤ Program Files (x86) ➤ Arduino ➤ examples است. یک فایل متنی (تکست) همراه با هر اسکچ نمونه است که هدف اسکچ، چیدمان بِرد بورد قطعات و نمودار مدار را نشان میدهد.
IDE آردوینو برای نوشتن، گردآوری و آپلود فایلها در میکروکنترلر، استفاده میشود. فایلی که کد آردوینو داشته باشد را اسکچ مینامند. در Arduino IDE، کلیک بروی یکی از پنج نماد IDE باعث دسترسی سریع جهت گردآوری یک اسکچ، گردآوری و آپلود یک اسکچ، باز کردن یک اسکچ خالی، بازکردن یک اسکچ موجود از فهرست تمام اسکچها، و ذخیره اسکچ جاری میشود.
گزینه “باز کردن اسکچ موجود” ، فهرست کامل اسکچها را اسکرول نمی کند، بلکه این کار با استفاده از انجام میگیرد. برخی از گزینههای مفید در منوی کشویی در جدول 1 ارائه شده اند
توضیح | گزینه ها |
فهرست اسکچ هایی که اخیراً به آن دسترسی صورت گرفته است | File ➤ Open Recent |
اسکچهای داخلی IDE آردوینو | File ➤ Examples |
پیدا کردن و جایگزینی متن در اسکچ | Edit ➤ Find |
کتابخانههای آردوینو و موارد مرتبط | Sketch ➤ Include Library |
نمایش دیتای سریالی به مانیتور سریالی | Tools ➤ Serial Monitor |
نمایش گرافیکی دیتای سریالی | Tools ➤ Serial Plotter |
توصیف میکروکنترلر برای مثال arduino/Genuino uno | Tools ➤ Board |
جزئیات پورت سریالی به عنوان مثال CoM3 arduino/Genuino uno | Tools ➤ Port |
جدول 1. گزینههای منوی کشویی در IDE آردوینو
اسکچ IDE آردوینو
یک اسکچ IDE آردوینو شامل سه بخش میباشد: تعریف متغیر، توابع ()void setup و void loop. بخش اول شامل تعریف Pinهای آردوینو متصل به سنسورها، LED ها، یا دستگاهها بوده و مقادیر متغیرها را بیان میکند. به عنوان مثال دستور int LEDpin = 9 متغیری به نام LEDpin را با مقدار عدد صحیح 9 تعریف میکند.
کارکرد ()void setup تعاریف بخش اول اسکچ را پیاده سازی و تنها یکبار اجرا میکند. به عنوان مثال دستور pinMode(LEDpin, OUTPUT) پین 9 آردوینو را به عنوان Pin خروجی تعریف میکند و آن را Pin ورودی طبق پیشفرض در نظر نمی گیرد، زیرا LEDpin مقدار 9 را دارد.
کارکرد ()void loop به صورت پیوسته دستورات اسکچ را اجرا و پیاده سازی میکند. به عنوان مثال، یک اسکچ ممکن است LED را در زمانهای مشخص خاموش و روشن کند.
اعلام متغیرها در بخش اول اسکچ باعث میشود تا متغیر در آغاز اسکچ راحت تر آپدیت شود، و نیازی به چک کردن در طول اسکچ و آپدیت متغیرها در سراسر اسکچ نباشد.
کامنتها با // نوشته میشوند، به عنوان مثال // Set LED to Pin 9 و توسط میکروکنترلر پیاده سازی نمی شوند. به جزء دو استثناء، تمام خطوط دستورات با یک نقطه ویرگول به پایان میرسد.
اجرای اسکچ چشمک زن (Blink)
برای اسکچ چشمک زن، مراحل زیر را انجام دهید.
- آردوینو را با یک کابل USB به سریال به کامپیوتر یا لپ تاپ متصل کنید.
- در IDE آردوینو، File ➤ Examples ➤ 01. Basics ➤ Blink را انتخاب نمایید.
- بروی دکمه گردآوری (کامپایل) و آپلود کلیک کنید.
LED روی برد آردوینو هر ثانیه یکبار روشن وخاموش خواهد شد. به آردوینو خوش آمدید!
پیام خطای Problem uploading to board نشان میدهد که پورت سریال نیاز به آپدیت دارد. Tools ➤ Port را انتخاب و سپس پورت مناسب (به عنوان مثال COM3 یا COM4) را برای آردوینو انتخاب نمایید. به مرحله سوم بروید.
پیام خطای An error occurred while uploading the sketch نشان میدهد که توضیح میکروکنترلر نیاز به آپدیت دارد. گزینه Tools ➤ Board و بورد مرتبط (به عنوان مثال Genuino Uno) را انتخاب کنید. به مرحله سوم بروید.
توضیح الکتریسیته
درک الکتریسیته قبل از ادامه کار لازم میباشد. تمام مواد از اتم ساخته شده که خود از پروتون، نوترون و الکترون تشکیل میشوند. الکترونها بار منفی داشته و میتوانند از اتمی به اتم دیگر انتقال پیدا کنند. الکتریسیته جابجایی الکترونها بین اتم هاست، یا جریان بار الکتریکی.
مالش پارچه روی بادکنک باد شده نمونهی ساده ای از بار الکتریکی است. الکترونها از پارچه جدا شده و وارد بادکنک میشوند، و بادکنک دارای بار منفی میشود. حال اگر بادکنک نزدیک به یک شی قرار گیرد، بادکنک به آن شی میچسبد. بار منفی بادکنک، الکترونهای با بار منفی شی را دفع کرده، و بار مثبت مضاعفی را به بادکنک انتقال میدهند. چونکه بارهای منفی و مثبت یکدیگر را جذب میکنند، بادکنک به آن شی جذب خواهد شد.
تاثیر حرکت بار الکتریکی از شی به شی دیگر سال هاست که شناخته شده است. بیش از 2500 سال پیش، یونانیها میدانستند که کهربای ساییده شده که رزین درخت فسیل شده است، میتواند اشیاء سبک مثل مو را جذب کند. واژه الکتریکی از واژه ی یونانی elektron به معنای کهربا گرفته شده است.
باتری در حال تخلیه منبع الکترون است و الکترونها از پایانه منفی (آند) به پایانه مثبت (کاتد) منتقل میشوند. آند و کاتد از لغات یونانی anodos و kathodos گرفته شده اند و به همین علت K اختصار کاتد است. گرچه الکترونها از آند به کاتد جریان مییابند، اما جریان متعارف از کاتد به آند، یا از مثبت به منفی، حرکت میکنند.
در توصیف الکتریسیته از اصطلاحات بار، ولتاژ، جریان و مقاومت استفاده میشود. مقایسه آب جاری از مخزن به سمت لولهها مصداق خوبی برای به تصویر کشیدن برخی از اصطلاحات الکتریکی است (جدول 2).
مقایسه آب | پارامتر الکتریکی |
مقدار آب موجود در مخزن | بار الکتریکی (کولومبوس، C) |
فشار آب مخزن و انتهای لوله مخزن | ولتاژ (ولت، V) |
نسبت جریان آب | جریان (آمپر یا amps ، A) |
معکوس عرض لوله (مقاومت زیاد لوله باریک) | مقاومت (اهم،Ω ) |
جدول 2. پارامتر الکتریکی و مقایسه آب
رابطه بین ولتاژ (V)، جریان (I) و مقاومت (R) به صورت قانون اهم V = I × R ، تعریف میشود.
بار بر حسب آمپر-ساعت (Ah) اندازه گیری میشود که به بار انتقال یافته توسط جریان یک آمپر برای یک ساعت اطلاق میشود. مدت زمانی که باتری میتواند جریان مورد نظر را تامین کند، بستگی به اندازه جریان دارد، مثل باتری AA هیدرید فلز نیکل (NiMH) با بار 2400 mAh. به عنوان مثال، با نسبت تخلیه 2400، 4800 یا 7200 mAh، باطری 60، 30 یا 20 دقیقه دوام خواهد داشت.
توان الکتریکی که بر حسب وات (W) اندازه گیری میشود، به نسبتی گفته میشود که انرژی بر حسب زمان واحد انتقال یافته و برابر با ضریب ولتاژ و جریان است.
بررسی دستورات LED چشمک زن (Blink)
اسکچ Blink را میتوان تغییر داد تا LED چشمک زن جداگانه ای را بغیر از LED بروی آردوینو ساخت. آردوینو خروجی 5 ولتی تنظیم شده را از پین 5 ولتی تامین میکند، اما مقاومت لازم است تا مطمئن شویم که جریان بالاتر از حداکثر جریان مجاز 20 mA LED نخواهد رفت. بدون مقاومت، جریان بالا منجر به آسیب به LED خواهد شد.
با استفاده از قانون اهم که طبق آن ولتاژ برابر با ضریب جریان و مقاومت است (یا V = I × R)، مقدار مقاومت (R) را میتوان با توجه به ولتاژ (V) و جریان (I) مشخص، تعیین نمود. افت ولتاژ پیشرو در سراسر LED 2 ولت است، که حداقل ولتاژ مورد نیاز برای روشن شدن LED میباشد. با خروجی 5 ولت از آردوینو، در سراسر مقاومت، 3V=5V-2V وجود خواهد داشت (شکل 4).
اگر جریان مقاومت و LED حداکثرmA20 باشند، آنگاه بر اساس قانون اهم، مقدار مقاومت (R=V/I)=3/0. 02=150Ω برابر است با ولتاژ مقاومت تقسیم بر جریان موجود در مقاومت. مقاومت حداقل 150 اهمی میتواند از LED در برابر جریان مازاد محافظت کند و استفاده از مقاومت 220 اهمی بسیار رایج است.
مقاومتها به صورت رنگی کدگذاری میشوند تا مقاومت به درستی شناسایی شود، اما بررسی مقاومت با مولتی متر خیلی راحت است. هر یک از مقاومتها به نحوی در جریان متصل هستند.
توان موجود در مقاومت باید بررسی شود تا بزرگتر از حداکثر مقدار مجاز برای مقاومت نباشد. در مثالی، درجه بندی حداکثر توان مقاومت 250 mW است. با 3 ولت در مقاومت و حداکثر جریان 20 mA، آنگاه توان = V × I = 60mW خواهد بود که کمتر از مقدار حداکثری میباشد.
LED یک دیود است که به جریان اجازه میدهد تنها در یک جهت حرکت کند. پایه بلند LED آند و سمت مسطح LED در سمت کاتد است.
LEDها حاوی مواد نیمه هادی هستند که طول موج نور ساطع شده را تعیین میکنند: قرمز، سبز، آبی یا زرد. افت ولتاژ پیشروی LEDهای قرمز، زرد و سبز کمتر از LEDهای آبی و سفید هستند: به ترتیب 2. 0 ولت و 2. 9 ولت.
اگر LED و مقاومت به صورت سمت چپ شکل 1. 4 بهم متصل باشند، آنگاه LED روشن خواهد ماند. اگر LED بهPin آردوینو متصل شود، آنگاه تغییر وضعیتPin از 5V (HIGH) به 0V (LOW) باعث خاموش و روشن شدن LED میگردد.
مدار اصلاح شده در سمت راست شکل 1. 4 دارای LED با آند متصل به پین 11 آردوینو است. روشن و خاموش کردن LED یک عملیات دیجیتالی یا دودویی (0 یا 1) است که نیاز به دستور digitalWrite برای پین 11 دارد تا بتواند باعث فعالسازی یا غیرفعالسازی منبع توان LED شود. در شکل 4 اتصالات این دو مثال با توجه به جدول 3 ارائه شده است.
قطعه | سمت چپ 1. 4 | سمت راست شکل 1. 4 | ||
| اتصال به | و به | اتصال به | و به |
پایه بلند LED | آدروینو 5 ولتی |
| پین 11 آدروینو |
|
پایه کوتاه LED | مقاومت 220 اهمی | GND آردوینو | مقاومت 220 اهمی | GND آردوینو |
جدول 3. اتصالات برای LED
LED به پین 11 آردوینو متصل شده است. در تابع ()void setup ، پین آردوینو بر اساس متغیر LEDpin تعریف شده که از آن به عنوانPin خروجی (OUTPUT) یاد میشود، بجای اینکه از پین INPUT برای ورودی استفاده شود، مثل اندازهگیری یک ولتاژ. در تابع void loop()، وضعیت پین 11 آردوینو به ترتیب از HIGH به LOW و LOW به HIGH در فواصل یک ثانیه ای تغییر میکند، که متناظر با تغییر ولتاژ خروجی درPin از 5 ولت به 0 ولت، یا بالعکس میباشد، بنابراین LED خاموش و روشن میشود.
کد 1. اسکچ چشمک LED
int LEDpin = 11; // define LEDpin with integer value 11
void setup() // setup function runs once
{
pinMode(LEDpin, OUTPUT); // define LEDpin as output
}
void loop() // loop function runs continuously
{
digitalWrite(LEDpin, HIGH); // set pin state HIGH to turn LED on
delay(1000); // wait for a second = 1000ms
digitalWrite(LEDpin, LOW); // set pin state LOW to turn LED off
delay(1000);
}
دستورات در کارتوابع () void setup و ()void loop در آکولاد آماده اند که شروع و پایان تابع را نشان میدهند و هدف دستورات تفسیر ساده تر اسکچ است.
اسکچها باید شامل هر دو تابع ()void setup و ()void loop باشند، حتی اگر تابع فاقد دستور شود.
کامنتها برای تفسیر اسکچ خیلی مفید هستند. کامنت متنی است که پس از کاراکتر // قرار میگیرد. چند خط کامنت را میتوان به صورت /* و */ قرار داد، به عنوان مثال:
/* این اولین خط کامنت است، این دومین خط کامنت است، این آخرین خط کامنت است /*
حالت شماتیک سیمهای قرمز و سیاه برای VCC (ولتاژ مثبت) و GND (اتصال به زمین) دارد و سیمهای زرد، آبی یا سبز، قطعات الکترونیکی را به Pinهای آردوینو متصل میکنند. به طور کلی، از سبز برای سیگنال ورودی و از زرد برای سیگنال خروجی آردوینو استفاده میشود.
مدولاسیون پهنای پالس
پینهای آردوینو با علامت از مدولاسیون عرض پالس (PWM) پشتیبانی نموده، سیگنال ثابت HIGH را با موج مربع جایگزین نموده که بین HIGH و LOW تغییر میکند و عرض پالس قابل تنظیم است(شکل 5). تاثیر PWM بر LED تغییر پیوسته روشنایی LED است، گرچه LED مکرراً در حال خاموش و روشن شدن است.
از PWM برای کنترل سرعت موتورها و تولید صدا استفاده میشود. فرکانس PWM بروی Pinهای 5 و 6 آردوینو، 976 سیکل در هر ثانیه (هرتز یا Hz) است، بنابراین فاصله بین پالسها که با خط چین سبز در شکل 5 نشان داده شده، 1. 024 ms است. اکثر افراد قادر به شناسایی سوسو زدن تصاویر بالای 400 هرتز نیستند، بنابراین LED که در 976 هرتز خاموش و روشن میشود، همیشه روشن بنظر میرسد.
موج مربعی توسط دستور ( مقدار ، پین) analogWrite با دیوتی سایکل (255/مقدار) تولید میشود، بنابراین دیوتی سایکل 0% و 100% متناظر با مقدار 0 یا 255 میباشند.
به عنوان مثال، در شکل 5، با یک منبع 5 ولت، PWM با دیوتی سایکلهای 0، 25، 50، 75 و 100 درصد میتوان به ترتیب ولتاژهای 0، 1.25، 2.5، 3.75 و 5 را ایجاد کرد. PWM مکانیزمی برای تامین سیگنالهای آنالوگ از سیگنال دیجیتال 0 یا 5 ولت است، و در بسیاری از پروژههای این کتاب استفاده میشود.
اسکچ از PWM برای تغییر روشنایی LED با نسبت تغییری که توسط متغیرهای زمان و افزایشی کنترل میشود، تغییر میکند.
کد 2. روشنایی LED و PWM
int LEDpin = 11; // define LED pin
int bright = 0; // initial value for LED brightness
int increm = 5; // incremental change in PWM frequency
int time = 25; // define time period between changes
void setup() // setup function runs once
{
pinMode(LEDpin, OUTPUT); // LED pin as output
}
Figure 1-5. Pulse width modulation
Chapter 1 Introduction
14
void loop() // loop function runs continuously
{
analogWrite(LEDpin, bright); // set LED brightness with PWM
delay(time); // wait for the time period
bright = bright + increm; // increment LED brightness
if(bright <=0 || bright >= 255) increm = - increm;
} // reverse increment when brightness = 0 or 255
نمادهای // اشاره به OR دارد، بنابراین دستور if(bright <= 0 || bright >= 255) ncrem = -increm برابر است با “اگر متغیر bright کمتر یا معادل صفر، یا بزرگتر یا معادل 255 باشد، آنگاه علامت متغیرincrem تغییر میکند”. دستور OR روشنایی افزایشی را به روشنایی کاهشی تغییر میدهد و بالعکس.
باز و ذخیره کردن اسکچ ها
برای باز کردن اسکچ ذخیره شده در IDE آردوینو، گزینه File ➤ Open را انتخاب کنید. نام فولدر حاوی اسکچ را انتخاب، گزینه Open را کلیک، اسکچ را انتخاب و بار دیگر Open را بزنید. به شکل دیگر میتوانید گزینه File ➤ Open Recent را انتخاب نمایید. فهرست اسکچ هایی که اخیراً باز شده برای شما به نمایش گذاشته میشود، سپس میتوانید بروی اسکچ مورد نظر خود کلیک کنید.
مکان پیشفرض ذخیره سازی اسکچها با انتخاب File ➤ Preferences در IDE آردوینو تعیین میشود. برای ذخیره اسکچ، File ➤ Save As را انتخاب کنید که فولدر پیشفرض اسکچها را باز نموده، و سپس نام فایل اسکچ را انتخاب و گزینه ذخیره (Save) را کلیک کنید.
از اسپیس (فاصله) نمی توان در نام فایل استفاده کرد، بنابراین از خط تیره استفاده کنید، مثل file_name. پس از ذخیره اسکچ، فولدر به صورت خودکار تولید شده و اسکچ در آن قرار میگیرد.
پس از اصلاح اسکچ در IDE آردوینو، نماد § پس از نام اسکچ قرار میگیرد که نشان میدهد تغییرات از زمان آخرین ذخیره سازی اسکچ، اعمال شده است. برای ذخیره اسکچ فعلی، File ➤ Save را انتخاب کنید. اگر تغییرات در اسکچ اعمال شود، آنگاه پس از ذخیره اسکچ، نماد § از بین میرود.
خلاصه
محیط برنامه نویسی آردوینو UNO R3 و آردوینو IDE در این فصل توضیح داده شد. معرفی برنامه نویسی آردوینو به کنترل خاموش و روشن شدن LED مربوط میشود. اسکچ چشمک زن برای تغییر روشنایی LED با استفاده از مدولاسیون عرض پالس، تغییر نمود. خلاصه الکتریسیته شامل قانون اهم به شما کمک میکند تا متوجه شویم که چگونه یک LED کار میکند و اینکه LED برای کاهش جریان به یک مقاومت نیاز دارد.
لیست قطعات
- آردوینو UNO و بِرد بورد
- LED
- مقاومت: 220Ω