برد آردوینو چیست و چه کاربردهایی دارد
مقدمه ای بر بردهای آردوینو
برد آردوینو یک برد مدار چاپی است که در ساخت آن از یک میکروکنترلر و تعدادی ورودی و خروجی استفاده شده است . در این برد قطعات الکترونیکی دیگری نیز وجود دارند که برای راه اندازی میكروکنترلر و توسعه امکانات موجود در آن تعبیه شده اند .
میکروکنترلر ها در واقع کامپیوترهای کوچکی هستند که درون یک تراشه قرار داده شده اند. میکروکنترلرها ابزاری کارآمد برای برنامه ریزی و کنترل کردن فرآیندهای موجود در محیط واقعی می باشند.بردهای میکروکنترلری زیادی وجود دارند که در آنها از یک میکروکنترلر و تعدادی کانکتورهای ورودی و خروجی استفاده شده است ، که به کاربر این امکان را می دهند تا بسادگی پایه های ورودی و خروجی میکروکنترلر را در دسترس داشته باشد . برد PIC , wiring و Basic Stamp نمونه هایی از این بردهای کنترل کننده می باشند.
در آردوینو ، برنامه توسط کاربر در نرم افزار آردوینو نوشته می شود . این برنامه در واقع به میکروکنترلر می گوید که چه کاری را باید انجام دهد . به عنوان مثال ، با نوشتن یک خط در برنامه می توانیم یک LED را روشن یا خاموش کنیم . در صورتی که یک کلید را به عنوان ورودی به برد متصل کنیم و خط دیگری نیز به برنامه اضافه کنیم ، می توانیم زمانی که کلید را فشار دهیم ، LED روشن شود . کار دیگری که می توانیم انجام دهیم این است که با تغییر برنامه ، تا زمانیکه دستمان روی کلید نگه داشته شده است LED چشمک زن شود .
مثال هایی که در بالا گفته شد ساده ترین کارهایی است که با یک برد میکروکنترلر می توان انجام داد. با داشتن این بردها می توان فرآیندهایی را تعریف و پیاده سازی نمود که اجرا و پیاده سازی آنها بدون این بردها امکان پذیر نمی باشد .
بردهای آردوینو نیز مانند یک کامپیوتر عادی می توانند توابع زیادی را اجرا نمایند . برای انجام این کار باید داده هایی به عنوان ورودی به برد داده شود و پس از انجام پردازش های لازم خروجی های مد نظر فعال یا غیرفعال شوند . این ورودی ها و خروجی ها سبب می شوند تا برد آردوینو محیط فیزیکی را حس کرده و روی آن تاثیر بگذارد.
1-1- تاریخچه برد آردوینو
آردوینو در مدرسه طراحی تعاملی Ivera[1]در ایتالیا ساخته و طراحی شده است . تمرکز اصلی در فعالیت های این موسسه این است که چگونه مردم با محصولات دیجیتال ، سیستم ها و محیط تعامل دارند و چگونه این تجهیزات بصورت متقابل انسان ها را تحت تاثیر قرار می دهد.
عبارت طراحی تعاملی [2] در اواسط سال 1980 توسط بیل ورپلانک [3] و بیل موگریج [4] ابداع شد. طرحواره شکل 1-1 كه توسط ورپلانک کشیده شده است ایده اصلی در طراحی تعاملی را نشان می دهد.طرحواره نمایش بسیار خوبی از کارکرد فرآیند تعامل را نشان می دهد. در صورتی که شما کاری انجام دهید ، تغییری را احساس خواهید کرد و پس از آن شما می توانید چیزی را راجع به دنیا متوجه شوید.
اگر چه این اصل یک اصل کلی می باشد ، هدف از طراحی تعاملی بیشتر این است که چگونه ما با استفاده از قطعات جانبی نظیر موس ، صفحه کلید و صفحه نمایش های لمسی با کامپیوترهای مرسوم و موجود تعامل برقرار می کنیم تا در یک محیط دیجیتالی که بصورت گرافیکی در صفحه نشان داده می شود ، کارهایمان را انجام دهیم .
تعریف دیگری نیز در این زمینه وجود دارد که محاسبات فیزیکی [5] نامیده می شود . هدف در این محاسبات فیزیکی توسعه محدودة برنامه های کامپیوتری ، نرم افزارها و سیستم ها می باشد.
از طریق دانش الکترونیک ، کامپیوترها می توانند حس بیشتری از محیط واقعی داشته باشند و بنابراین بتوانند تاثیر فیزیکی بیشتری نیز روی محیط واقعی داشته باشند .
هر دو زمینه گفته شده ، طراحی تعاملی و محاسبات فیزیکی ، نیاز به نمونة اولیه ای دارند که به صورت کامل بتواند فضای تعاملی را درک و آن را ایجاد نماید که این مساله به عنوان یک مانع بزرگ برای کسانی است که دانش زیادی از الکترونیک و طراحی این بردها ندارند .
در سال 2001 ، کیسی ریس [6] و بنجامین فرای [7] پروژه ای را شروع کردند که نام این پروژه پروسسینگ [8] بود. هدف از انجام این پروژه ایجاد محیطی برای کسانی بود که دانشی در برنامه نویسی نداشتند و با استفاده از این محیط می توانستند تصاویر گرافیگی را روی صفحه نمایش با ساده ترین حالت ممکن انجام دهند . در این پروژه کاربر با نوشتن برنامه خود در یک محیط متنی و در کمترین زمان ممکن می تواند ایده های خود را پیاده سازی کند . شکل زیر محیط برنامه نویسی این نرم افزار را نشان می دهد .

در سال 2003 ، هرناندو باراگان[9] با استفاده از همان اصول برنامه نویسی Processing یک برد مبتنی بر میکروکنترولر با نام wiring ساخت ، این برد به عنوان نسل اول بردهای آردوینو می باشد.

|
برد wiring اولیه |
در پروژه wiring نیز مانند پروژه Processing هدف این بود افرادی که تخصصی در زمینه بردها و طراحی آنها ندارند ، هنرمندان ، طراحان بتوانند بسادگی از این برد استفاده کنند . اما در wiring هدف بیشتر بحث الکترونیک بود تا برنامه نویسی . برد wiring نسبت به بردهای میکروکنترلری دیگر نظیر PIC و Basic stamp قیمت مناسب تری داشت ، اما برای دانشجویانی که می خواستند با این بردها کار کنند هنوز قیمت مناسب نبود.
در سال 2005 پروژه آردوینو در پاسخ به نیاز برای کاهش قیمت و ساده بودن کارکرد در بردهای تعاملی شروع شد . پروژه آردوینو از تجربیات حاصل از پروژه های wiring و Processing استفاده کرده است . به عنوان مثال در واسط کاربری نرم افزاری نرم افزار آردوینو از محیط برنامه نویسی Processing استفاده شده است . در ابتدا واسط کاربری از نرم افزارProcessing بصورت امانت گرفته شده است ، اگر چه در ظاهر هنوز شباهت های بسیاری وجود دارد ، اما سپس اصلاحاتی روی آن انجام گرفت تا برای استفاده از بردهای آردوینو بهینه گردد.
در نرم افزارآردوینو ، نامگذاری پروژه ها نیز بصورت نرم افزار Processingمی باشد و با کلمه sketch شروع می شود . همانطور که Processing یک محیط برای ایجاد و تست سریع برنامه ها را به کاربرانش می دهد ، آردوینو نیز محیطی را فراهم می سازد که کاربران این بردها بتوانند ایده های سخت افزاری خود را با حداقل زمان ممکن پیاده سازی نمایند.

|
برد آردوینو سریال |
بردهای آردوینو که در شکل بالا نشان داده شده است، نسبت به بردهای میکروکنترلری قبلی بسیار مطمئن تر و کارآمدتر می باشد . سوختن میکروکنترلرها در هنگام استفاده علی الخصوص برای دانش جویان و کسانی که کار با میکروکنترلرها را تازه شروع کرده اند بسیار رایج می باشد . به عنوان مثال در صورتی که سیم ها به اشتباه متصل شوند یا تغذیه اشتباه وصل شود میکروکنترلر سریعاً خواهد سوخت که این مساله نقطه ضعف بزرگی در استفاده از آنها می باشد. در بردهای آردوینو سعی شده است تا حد قابل توجهی این ایراد برطرف گردد.در بردهای آردوینو می توان میکروکنترلر موجود در برد را تعویض نمود . بنابراین در صورتی که میکروکنترلر روی برد آردوینو آسیب دید ، به سادگی می توان یک میکروکنترلر جدید جایگزین نمود و نیازی به تعویض کل برد نمی باشد .تفاوت عمده دیگری که بین بردهای آردوینو و سایر بردهای میکروکنترلری دیگر وجود دارد هزینه می باشد در سال 2018 قیمت یک برد Basic Stamp در حدود 4 برابر قیمت برد آردوینو و برد wiring در حدود 2 برابر قیمت برد آردوینو می باشد.
[1]-Interaction Design InstitueIvera
در این فصل معماری و ساختار سختافزاری بردهای آردوینو و قطعات موجود در این بردها مورد بررسی قرار میگیرد. برای انجام این بررسیها برد آردوینو UNO که از پرکاربردترین و رایج ترین بردهای خانواده آردوینو میباشد استفاده میشود. شکل زیر نمونه ای از این برد را نشان میدهد.

سختافزار بردهای آردوینو
شکل زیر نقشه شماتیک و سختافزاری برد Arduino و بخشهای مختلف آن را نشان میدهد. همانطور که از شکل دیده میشود سه بخش اصلی در سختافزار وجود دارد،
- میکروکنترلر (Microcontroller)
- تغذیه (Power Supply)
- پل یو اس بی (USB Bridge)

نقشهشماتیک برد Arduino UNO و بخشهای مختلف آن UNO
در ادامه هر یک از این بخشها مورد بررسی قرار خواهد گرفت.
میکروکنترلر
اولین مطلبی که باید به آن توجه داشت این است که بردهای آردوینو دارای یک میکروکنترلر هستند که نقش اجرای دستورات را بر عهده دارد. در واقع برنامه های نوشته شده توسط کاربر در محیط برنامه نویسی Arduino IDE پس از ترجمه، روی حافظه FLASH این میکروکنترلر برنامه ریزی شده و پس از آن میکروکنترلر خطوط برنامه را خوانده و اجرا مینماید.بنابراين، از این پس نباید گفته شود که آردوینو یک میکروکنترلر است. بلکه در واقع میکروکنترلر، یکی از قسمتهای تشکیل دهندة یک برد آردوینو میباشد. میکروکنترلر ATMEGA328، میکروکنترلری است که در بردهای Arduino UNO به عنوان کنترولر اصلی مورد استفاده قرار میگیرد. شکل 2-3 بلوک دیاگرام و معماری داخلی این میکروکنترلر را نشان میدهد. ATMEGA328 یک میکروکنترلر 8 بیتی CMOS با مصرف توان کم و بر مبنای معماری RISC[1] پیشرفته و از خانوادة میکروکنترلرهای AVR میباشد. با اجرای دستورالعملها در یک پالس ساعت راندمان اجرای دستورات در ATMEGA32 به 1MIPS میرسد.
هسته پردازنده در میکروکنترلرهای AVR
اصلی ترین کار پردازنده تضمین اجرای صحیح دستور العملها میباشد، بنابراین پردازنده باید بتواند دسترسی لازم به حافظه ها، انجام محاسبات، کنترل قطعات جانبی و راه اندازی وقفه ها را داشته باشد. شکل زیر بلوک دیاگرام معماری پردازنده یک میکروکنترلر AVR را نشان میدهد.

معماری داخلی میکروکنترلر 8 بیتی ATMEGA328
برای رسیدن به حداکثر کارایی و انجام عمليات موازی، AVRها از معماریهاروارد[2] استفاده میکنند. در این معماری برای داده ها و برنامه ها، حافظه ها و گذرگاه های جداگانه در نظر گرفته میشود. دستورالعملها در حافظه برنامه با یک مرحله خط لوله موازی انجام میشود. هنگامیکه یک دستور العمل در مرحله اجرا قرار دارد، دستورالعمل های بعدی در مرحله پیش برداشت از حافظه برنامه میباشد. این مفهوم، این امکان را فراهم میآورد که دستورات در هر سیکل ساعت اجرا شوند.
حافظه ها در میکروکنترلرها AVR
در معماری میکروکنترلرهای AVR دو فضای حافظه اصلی وجود دارد، فضای حافظة داده و فضای حافظه برنامه، در میکروکنترلرهای AVR، حافظه EEPROM نیز برای ذخیرة داده ها در نظر گرفته شده است.
حافظه برنامه FLASH با قابلیت برنامه ریزی مکرر و روی تراشه میکروکنترلر
ATMEGA328 دارای 32 کیلو بایت حافظه FLASH با قابلیت برنامه ریزی مکرر و روی تراشه، برای ذخیرة برنامه های کاربر میباشد. از آنجائیکه دستور العمل های میکروکنترلرهای AVR، 16 یا 32 بیتی میباشند، ساختار حافظه FLASH به صورت 16 × K16 سازماندهی میشود. برای ایجاد امنیت در نرمافزار، حافظه برنامه FLASH به دو بخش تقسیم میشود، بخش Boot Loader و Application Program.شکل زیر نقشه حافظه برنامه در میکروکنترلر ATMEGA328 را نشان میدهد.

بخش BootLoader
BootLoader، مکانیزمیرا برای خواندن و نوشتن کدهای برنامه توسط خود میکروکنترلر فراهم میآورد. این قابلیت، امکان بروز رسانی نرمافزار تحت کنترل میکروکنترلر را به کمک یک برنامه Boot Loader موجود در حافظه Flash فراهم میکند. برنامه Boot Loader میتواند با بکارگیری هر واسط ارتباطی ممکن و پروتکلهای مربوط به آن، کدهایی را از حافظه Flash بخواند و یا کدهایی را روی آن بنویسید. این برنامه میتواند کل حافظة Flash که شامل حافظه Boot Loader نیز میشود را بازنویسی کند. بنابراین Boot Loader میتواند خودش را نیز تغییر دهد و حتی در صورتی که در آینده نیازی به آن نباشد میتواند، خودش را از حافظه پاک نماید. اندازة حافظه Boot Loader با استفاده از فیوزبیتهای موجود در میکروکنترلر قابل تنظیم است.
حافظه داده SRAM
میکروکنترلر ATMEGA328 دارای 2 کیلو بایت حافظه SRAM میباشد.از حافظه SRAM برای ذخیرة متغیرهای تعریف شده توسط کاربر در برنامه، در هنگام اجرای برنامه کاربردی استفاده میشود.محتویات این حافظه برخلاف حافظه Flash که برنامة کاربر در آن قرار دارد با قطع برق پاک میشود.
حافظه EEPROM
میکروکنترلر ATMEGA328 دارای 1 کیلو بایت حافظه EEPROM میباشد. این حافظه در یک فضای داده جداگانه سازماندهی میشود که در آن میتوان بایتها را به صورت جداگانه نوشت و خواند.همانند حافظه FLASH اطلاعات موجود در این حافظه با قطعبرق پاک نمیشود.
تغذیه
ولتاژ کاری میکروکنترلر ATMEGA32 از 1/8 ولت تا 5/5 ولت میباشد. نکته ای که در این قسمت باید به آن توجه داشت، فرکانس کاری میکروکنترلر در هر ولتاژ کاری میباشد.به عنوان مثال در صورتی که بخواهیم میکروکنترلربا فرکانس کاری حداکثر خود، یعنی 20 مگاهرتز کار کند، حداقل ولتاژ 4/5 باید به عنوان تغذیه ورودی به میکروکنترلر داده شود.
پایه های ورودی، خروجی
میکروکنترلر ATMEGA328 دارای 3 پورت با نامهای PORTB، PORTC و PORTD میباشد.تمام پایه های این پورتها میتوانند به عنوان یک ورودی- خروجی دیجیتال همه منظوره، یا کاربری خاص دیگری که در برگة اطلاعاتی میکروکنترلر به آن اشاره شده است مورد استفاده قرار گیرند. به عنوان مثال پایه های 0 تا 5 از PORTC میتوانند بجای ورودی-خروجی دیجیتال، به عنوان ورودی مبدل آنالوگ به دیجیتال (ADC) تعریف شوند. پایه هایی نیز در میکروکنترلر وجود دارند که میتوانند به صورت خروجی PWM پیکربندی شوند. این پایه ها در بردهای آردوینو با علامت “~” مشخص شده اند.
ورودیهای آنالوگ
میکروکنترلر ATMEGA328 دارای مبدل آنالوگ به دیجیتال 6 کاناله ، 10 بیتی میباشد که ورودیهای آنها پایه های صفر تا 5 از PORTC میباشد. این پایه ها به هدر [3]آنالوگ روی برد آردوینو متصل شده اند.
اشتباهی که در این قسمت از برد ممکن است بوجود آید این است که هدر در نظر گرفته شده در برد با عنوان هدر آنالوگ فقط برای ورودیهای آنالوگ میباشد، در صورتی که میتوان از این پایه ها هم به عنوان ورودی آنالوگ و هم به عنوان یک ورودی، خروجی دیجیتال استفاده نمود.
واسط UART
واسط UART یک واسط سریال میباشد. میکروکنترلر ATMEGA328 دارای یک واسط UART میباشد. پایه های RX و TX واسط UART، به مدار مبدل USB به UART متصل شده اند. همچنین این پایه ها به پایه صفر و پایه یک از هدر دیجیتال نیز متصل شده اند.
واسط SPI
واسط SPI یک واسط سریال دیگر میباشد. میکروکنترلر ATMEGA328 دارای یک ماژول SPI میباشد. علاوه بر اینکه میتوان از پایه های این ماژول به عنوان واسط SPI استفاده کرد، میتوان از آن برای برنامه ریزی میکروکنترلر، توسط یک برنامه ریز مستقل نیز استفاده نمود. پایه های مربوط به این واسط در هدر دو ردیفه ای که نزدیک به میکروکنترلر است در دسترس میباشد. همچنین پایه های مربوط به این واسط در هدر دیجیتال نیز در دسترس است.
جدول 2-1. شماره پایه و نام پایه های واسط SPI در برد آردوینو UNO
| شماره پايه | نام پايه |
| 11 | MOSI |
| 12 | MISO |
| 13 | SCK |
واسط TWI
واسط I2C یا واسط TWO WIRE، واسطی است که از دو سیم تشکیل شده است، داده سریال و پالس ساعت که نام این پایه ها SCL و SDA میباشند. این پایه ها در برد Arduino UNO در 2 پایه آخر هدر دیجیتال و پایه های 4 و 5 هدر آنالوگ در دسترس میباشند.
سایر امکانات
| شکل 2-8. مدار قسمت تغذیهبرد آردوینو UNO |
همانند سایر میکروکنترلرها، علاوه بر مواردی که در بخشهای قبل به آن اشاره شد امکانات گسترده تری دیگری نظیر، تایمرها، کانترها، مقایسه کننده ها، مدهای کاهش توان و. .. در این میکروکنترلر تعبیه شده اند که در صورت نیاز میتوان با مراجعه به برگه های اطلاعاتی میکروکنترلر و مثالهای متعددی که در بخش های بعد آورده خواهد شد، از آنها استفاده نمود.
2-Reduced Instruction Set Computer
[3] Header
بردهای آردوینو از سه قسمت اصلی تشکیل شده اند
1-میکروکنترلر
2-تغذیه
3- پل USB
در این آموزش برای بررسی بیشتر هر یک از این قسمت ها ،سخت افزار داخلی برد Arduino UNO را به عنوان نمونه بررسی می کنیم.
1-سختافزار جانبی میکروکنترلر ATMEGA328 در برد Arduino UNO
در کنار میکروکنترلر ATMEGA328 ادوات جانبی دیگری نیز در نظر گرفته شده اند که نقشه شماتیک آنها در شکل زیر نشان داده شده است.

هدرهای دیجیتال IOL و IOH (دیجیتال)
پایه های که با نام دیجیتال روی برد دسته بندی شده اند.دارای دو هدر دیجیتال IOL (8 پایه) وIOH(10پایه)میباشد. هدر دیجیتال IOL دارای 8 پایه بوده و به پایه های PD0 تا PD7 از میکروکنترلر ATMEGA328 متصل میباشد.پایه های این هدر روی برد از صفر تا 7 شماره گذاری شده اند. پایه های RX و TX میکروکنترلر که به پل USB به سریال متصل شده اند در پایه های صفر و یک این هدر در دسترس میباشد.
هدر دیجیتال IOH دارای 10 پایه میباشد.این پایه ها روی برد، دارای شماره 8 تا 13 میباشند.سایر پایه های موجود در این هدر به ترتیب عبارتند از GND، AREF، SDA، SCL
هدر آنالوگ
این هدر که روی برد با نام Analog In مشخص شده است دارای 6 پایه میباشدکه به پایه های PC0 تا PC5 میکروکنترلر متصل شده است.از این پایه ها میتوان به عنوان ورودی آنالوگ استفاده نمود.
رزوناتور سرامیکی16MHZ
این رزوناتور، به عنوان منبع تولید پالس ساعت با فرکانس 16 مگا هرتز به پایه های XTAL1 و XTAL2 میکروکنترلر متصل میشود.
پایه RESET
پایه RESET با یک مقاومت 10 کیلو اهم به تغذیه مثبت متصل شده است (PULL – UP). استفاده از این مقاومت PULL – UP سبب جلوگیری از ریست شدن ناخواسته میکروکنترلر در محیطهای نویزی میشود. پایه RESET دارای مقاومت PULL-UP داخلی میباشد. اما با توجه به توصیه های شرکت سازنده در برگه های اطلاعاتی، “در صورتی که محیط مورد استفاده از میکروکنترلرهای AVR نویزی باشد، مقدار مقاومت PULL-UP داخلی موجود در پایه Reset ممکن است کافی نباشد و سبب بروز ریستهای ناخواسته در میکروکنترلر شود”.
منابع دیگر تولید ریست کلید فشاری تعبیه شده در برد، یا فرمان رسیده از طریق پل USB میباشد.همچنین در برگه های اطلاعاتی فوق توصیه میشود در صورت عدم استفاده از ولتاژ بالا در برنامه ریزی میکروکنترلر، برای محافظت در برابر تخلیه الکتریسیته ساکن یا [1]ESD از یک دیود در مسیر Reset به Vcc استفاده شود. چون امکان استفاده از برنامه ریزی با ولتاژ بالا برای میکروکنترلر در نظر گرفته شده است، بنابراین این دیود به صورت داخلی در میکروکنترلر تعبیه نشده است و در صورت نیاز میتوان آن را اضافه نمود. در برد Arduino UNO، دیود D2 که بین پایه Reset و+5V قرار گرفته است، این نقش را ایفا میکند.
خازنهای C4 و C6
خازنهای 100 نانو فارادی C4 و C6 که در پایه های AREF و AVCC در نظر گرفته شده اند برای حذف نویزهای موجود در تغذیه میباشند. امپدانس خازن با افزایش فرکانس کاهش مییابد. بنابراین وجود این خازنها سبب میشود تا در صورت اعمال نویزهای با فرکانس بالا روی این پایه ها، این نویزها از طریق این خازنها به زمین هدایت شوند.
پایه 13
پایه 13به پایه SCK از میکروکنترلر متصل شده است. این پایه از طریق یک بافر راه انداز به یک LED متصل شده است.این پایه با عنوان پایه Built in LED نیز شناخته می شود.
هدر برنامه ریزی سریال داخل تراشه [3]ICSP
با استفاده از این هدر میتوان میکروکنترلر را با یک برنامه ریز خارجی دیگر، برنامه ریزی نمود. این هدر به واسط ISP (که از پایه های SPI استفاده میکند) متصل میشود.معمولاً با توجه به وجود بخش Boot Loader در میکروکنترلرهای موجود در بردهای آردوینو و برنامه ریزی این میکروکنترلرها از طریق پل USB به UART (که در واقع یک مزیت برای این نوع از بردها محسوب میشود )، نیازی به استفاده از برنامه ریز خارجی نمیباشد.
از این هدر معمولاً در اولین بار، برای برنامه ریزی بخش Boot Loader حافظه در هنگام ساخت بردهای آردوینو استفاده میشود.
پل USB به UART
نقش پل USB به UART تبدیل سیگنالهای واسط USB به واسط UART میباشد.میکروکنترلر ATMEGA328 موجود در برد Arduino UNO فاقد واسط USB میباشد، بنابراین برای برقراری ارتباط با واسط USB از یک میکروکنترلر ATMEGA16U2 جهت برقراری این ارتباط استفاده میشود. با استفاده از برنامه خاصی که در داخل این میکروکنترلر برنامه ریزی شده است، این میکروکنترلر با میکروکنترلر اصلی (ATMEGA328) از طریق واسط UART و با USB کامپیوتر، از طریق واسط USB ارتباط برقرار میکند.اين بخش از لحاظ طراحی الکترونیکی در واقع یک بخش میکروکنترلری میباشد. میکروکنترلر ATMEGA16U2 نیز به نوبه خود دارای هدر ICSP، کریستال خارجی و خازن فیلتر ولتاژ تغذیه میباشد. شكل زیر مدار مربوط به پل USB به UARTرا نشان مي دهد.

در پایه های D+ و D- خطوط USB، دو مقاومت به صورت سری قرار گرفته اند. این مقاومتها، برای ایجاد امپدانس پایانی صحیح در سیگنالهای USB میباشند.
Z1 و Z2 مقاومتهای وابسته به ولتاژ (VDR) یا وریستور میباشند. نقش این وریستورها محافظت از خطوط USB، در برابر تغییرات و نوسانات ESD میباشد.
خازن 100 نانو فارادی C5 که با پایه RESET میکروکنترلر ATMEGA328 سری شده است، این امکان را به ATMEGA16U2 میدهد که در صورت نیاز یک پالس ریست به ATMEGA328 ارسال نماید.
تغذیه
برای اعمال تغذیه به برد Arduino UNO دو روش وجود دارد. استفاده از كابل USB و منبع تغذیه DC خارجی. حال میتوان به این سوال پاسخ داد که در صورت اتصال هر دو منبع ورودی توان، کدام یک، نقش تغذیه برد را به عهده خواهند داشت. شکل 2-10 مدار تغذیه برد آردوینو را نشان میدهد.
رگولاتور 5 ولت موجود در برد، آی سی رگولاتور NCP1117ST50T3G و پایه Vin از این رگولاتور ولتاژ، از طریق فیش DC به كاتد دیود M7 متصل شده است.( نسخه SMD دیود مشهور 1N4007) نقش این دیود، محافظت در برابر پلاریته معکوس میباشد.
خروجی 5 ولت رگولاتور به شبکه 5 ولت کل برد و ورودی رگولاتور 3/3 ولت متصل میشود (LP2985-33DBVR). برای دسترسی به ولتاژ 5 ولت میتوان از هدر تغذیه و پایه 5 ولت آن استفاده نمود.
منبع دیگر ولتاژ 5 ولت، پایه USBVCC میباشد که به پایه Drain یک ماسفت کانال P که Source آن به 5 ولت شبکه وصل شده است، متصل میباشد. پایه گیت این ماسفت، خروجی مقایسه کنندة LMV358 است. مقایسه در این تقویت کنندة عملیاتی، بین ولتاژ 3/3 ولت و Vin/2 انجام میشود.در صورتی که Vin/2 بزرگتر از 3/3 ولت باشد، خروجی مقایسه کننده به اشباع مثبت رفته و ماسفت خاموش میشود بنابراین تغذیه اصلی مدار، از فیش ورودی خواهد بود. در صورتی که فیش ولتاژ DC ورودی متصل نشود، Vin/2 کمتر از 3/3 ولت خواهد بود و خروجی مقایسه کننده به اشباع منفی رفته و ماسفت کانال Pروشن میشود.بنابراین در این حالت تغذیه مدار، از طریق USBVCC تامین خواهد شد.

| شکل : در صورتی که فیش DC ورودی قطع باشد ولتاژ vin/2 در پایهمثبت تقویت کنندهعملیاتی کمتر از 3/3 ولت شده و سوییچ (ماسفت) وصل خواهد شد . |

| شکل :در صورتیکه فیش DC ورودی متصل شدهباشد ولتاژ vin/2 در پایهمثبت تقویت کنندة عملیاتی بالاتر از 3/3 ولت شده و سوییچ (ماسفت) قطع خواهد شد. |
رگولاتورهای ولتاژ 3/3 ولت و 5 ولت موجود در برد آردوینو، از نوع رگولاتورهای LDO[1] میباشند در این رگولاتورها در صورتی که ولتاژ ورودی خیلی نزدیک به ولتاژ خروجی باشد، همچنان فرآیند تثبیت ولتاژ خروجی وجود خواهد داشت. این فرآیند به عنوان یک پیشرفت در این نوع از رگولاتورها در مقایسه با رگولاتورهای قدیمینظیر 7805 میباشد.
هنگامیکه از پورت USB به عنوان منبع توان ورودی استفاده میشود، برای محافظت از این پورت، یک فیوز PTC(Positive Temperature Coefficient) به صورت سری با پایه USBVCC قرار داده شده است. این فیوز (MF-MSMF050-2) از اضافه جریان بیش از 500 میلی آمپر جلوگیری میکند. هنگامیکه جریان کشیده شده از پایه USBVCC بیش از این مقدار شود، مقاومت PTC افزایش مییابد و اجازة عبور جریان اضافی را نمیدهد. پس از کاهش جریان تا حد مجاز، مقدار مقاومت PTC مجدداً کاهش یافته و مسير جريان مجددا برقرار مي گردد.
[1] Low-Dropout
1-In-Circuit System Programming
آردوينو بردهاي مختلفي را ميسازد كه هر يك از اين بردها داراي قابليتهاي خاصي ميباشند.تعدادي از اين بردها نيز به صورت متن باز ميباشند به اين مفهوم كه ميتوان تغييرات سختافزاري مورد نياز در اين بردها را، با توجه به نياز ايجاد نمود و بردي جديد با قابليتهاي جديد ايجاد نمود.
بردهاي آردوينو مبتني بر ميكروكنترولرهاي AVR، در 4 گروه اصلي طبقه بندي ميشوند.شکل زیر اين گروهها و بردهاي موجود در هر يك از اين گروه ها را نشان مي دهد.

بردهای سطح مقدماتی
بردهای سطح مقدماتی آردونیو، بردهایی هستند که برای شروع به کار مناسب میباشند. استفاده از این بردها بسیار ساده میباشد و با اضافه کردن سنسورها و خروجیهای متفاوت، کاربر میتواند ایده های سختافزاری و نرمافزاری خود را روی این بردهای پایه، پیاده سازی نماید. بردهای UNO، LEONARDO و ESPLORA از جمله بردهای این خانواده میباشند که کنترولر اصلی آنها میکروکنترلرهای خانواده AVR میباشند.
برد آردوينو UNO
برد Arduino UNO بر مبنای میکروکنترلر ATMEGA328P میباشد.این برد دارای 14 پایهورودی – خروجی دیجیتال (که از این 14 پایه، 6 پایه میتواند به عنوان خروجی PWM مورد استفاده قرار گیرد)، 6 پایه ورودی آنالوگ، کریستال 16 مگاهرتز، اتصال USB، فیش تغذیه، هدر ICSP و یک کلید ریست میباشد.
در این برد همه امکانات لازم برای راه اندازی و کار با میکروکنترلر گنجانده شده است. کافیست کابل USB به کامپیوتر متصل شده و یا یک منبع تغذیه خارجی DC از طریق فیش تغذیه به برد متصل شود.UNO در ایتالیایی به معنای ONE میباشد و برای نامگذاری اولین نسخه از نرمافزار Arduino IDE انتخاب شده است. برد UNO و نسخه 1.0 از نرمافزار Arduino IDE نسخه های مرجع آردونیو میباشند، که در حال حاضر نسخه های جدیدتر آن نیز بوجود آمده است. برد UNO اولین سری از بردهای USB آردونیو و مدل مرجع برای سایر بردهای آردونیو میباشد. جدول زیر مشخصات برد Arduio UNO را نشان میدهد.
|
ميكروكنترولر |
ATmega328P |
| ولتاژ كاري | 5 ولت |
| ولتاژ ورودي(حالت به ينه) | 7-12 ولت |
| ولتاژ ورودي(حداقل و حداكثر) | 6 -20 ولت |
| پايه هاي I/O ديجيتال | 14 (6 تا از پايه ها مي توانند PWM باشند) |
| پايه هاي PWM | 6 |
| پايه هاي ورودي آنالوگ | 6 |
| جريان DC در هر پايه I/O | 20 ميلي آمپر |
| جريان DC در پايه هاي 3/3 ولت | 50 ميلي آمپر |
| اندازه حافظه FLASH | 32 كيلوبايت كه 5/0 كيلوبايت آن به Bootloader اختصاص يافته است |
| اندازه حافظه SRAM | 2 كيلو بايت |
| اندازه حافظه EEPROM | 1 كيلو بايت |
| سرعت CLOCK | 16مگاهرتز |
| LED_BUILTIN | پايه 13 |
| طول | 6/68 ميلي متر |
| عرض | 4/53 ميلي متر |
| وزن | 25 گرم |
برد آردونیو LEONARDO
برد آردونیو LEONARDO، بر مبنای میکروکنترلر ATMEGA32U4 میباشد.این برد دارای 20 پایهورودی – خروجی (که از این 20 پایه 7 میتواند به عنوان خروجی PWM و 12 پایه میتواند به عنوان ورودی آنالوگ مورد استفاده قرار گیرد)، نوسان ساز کریستالی 16 مگا هرتز، اتصال میکرو USB، فیش تغذیه، هدر ICSP و یک کلید ریست میباشد. در این برد همه امکانات لازم برای راه اندازی و کار با میکروکنترلر گنجانده شده است. برای استفاده کافیست کابل USB به کامپیوتر متصل شده، يا یک منبع تغذیه DCخارجی يا یک باتری، به فیش تغذیه متصل گردد.تفاوت اصلی برد آردونیو LEONARDO نسبت به بردهای قبلی آردونیو استفاده از میکروکنترلر ATMEGA32U4 است.این میکروکنترلر دارای پورت ارتباط USB داخلی بوده، که سبب حذف پردازندة ثانویه (ATMEGA16U2 در بردهای UNO) که نقش پل ارتباط USB را داشتند، میشود.استفاده از این میکروکنترلر در برد آردونیو LEONARDO سبب میشود ، علاوه بر اینکه این برد نقش پورت COM مجازی را داشته باشد، از دید کامپیوتر به صورت موس یا صفحه کلید دیده میشود. جدول زیر مشخصات برد آردونیو LEONARDO را نشان میدهد.

مشخصات برد LEONARDO
| ميكروكنترولر | ATmega32u4 |
| ولتاژ كاري | 5 ولت |
| ولتاژ ورودي(حالت به ينه) | 7-12 ولت |
| ولتاژ ورودي(حداقل و حداكثر) | 6 -20 ولت |
| پايه هاي I/O ديجيتال | 20 (7 تا از پايه ها مي توانند PWM باشند) |
| پايه هاي PWM | 7 |
| پايه هاي ورودي آنالوگ | 12 |
| جريان DC در هر پايه I/O | 40 ميلي آمپر |
| جريان DC در پايه هاي 3/3 ولت | 50 ميلي آمپر |
| اندازه حافظه FLASH | 32 كيلوبايت كه 4 كيلوبايت آن به Bootloader اختصاص يافته است |
| اندازه حافظه SRAM | 5/2 كيلو بايت |
| اندازه حافظه EEPROM | 1 كيلو بايت |
| سرعت CLOCK | 16مگاهرتز |
| طول | 6/68 ميلي متر |
| عرض | 3/53 ميلي متر |
| وزن | 20 گرم |
برد آردونیو ESPLORA
ایدة اصلی ساخت برد آردونیو ESPLORA، از آردونیو LEONARDO گرفته شده است. تفاوت اصلی برد آردونیو ESPLORA نسبت به آردونیوهای قبلی، استفاده از تعداد زیادی سنسور میباشد كه روي اين برد نصب شده است. این برد برای افرادی طراحی شده است که قصد استفاده از بردهای آردونیو، به صورت کاربردی را دارند و علاقه چندانی برای ورود به قسمتهای سختافزاري برد مانند چگونگی نصب یک کلید به عنوان ورودی و مدار الکترونیکی مرتبط به آن را ندارند.

برد ESPLORA دارای خروجیهای صدا و نور، چندین سنسور ورودی شامل، Joystick، لغزنده [1]، سنسور دما، شتاب سنج، میکروفون و یک سنسور نور میباشد. علاوه بر موارد گفته شده، میتوان امکانات موجود در برد را با کانکتورهای ورودی و خروجی توسعه داد. همچنین در این برد یک سوکت برای نمایشگر TFTLCD در نظر گرفته شده است.
همانند برد آردونیو LEONARDO، ESPLORA نیز از یک میکروکنترلر ATMEGA32U4 به عنوان کنترولر اصلی استفاده میکند. برد دارای کریستال 16 مگاهرتز و اتصال میکرو USB است که نقش USB client را برای کامپیوتر ایفا میکند.
در این برد همه امکانات لازم برای راه اندازی و کار با میکروکنترلر در نظر گرفته شده است. برای استفاده کافیست برد از طریق یک کابل USB به کامپیوتر متصل شود.
ESPLORA دارای ارتباط USB داخلی میباشد. از دید کامپیوتری كه به این برد متصل شده است، این برد میتواند به صورت یک موس یا صفحه کلید دیده شود. همچنین این برد میتواند نقش یک پورت COM مجازی را داشته باشد.
بردهای پیشرفته آردونیو
در بردهای پیشرفته آردونیو، امکانات بیشتری برای کار با ورودی و خروجیها در نظر گرفته شده است. با استفاده از این بردها میتوان پروژه های پیشرفته تری را انجام داد. اکثر بردهای موجود در این خانواده بر مبنای هسته پردازنده ARM بوده، که دارای سرعت بالایی در اجرای دستورات میباشند. بردهای این خانواده که از میکروکنترلرهای AVR به عنوان کنترل کنندة اصلی استفاده میکنند، عبارتند از MEGA و MEGAADK
برد آردونیو MEGA2560
برد آردونیو MEGA2560 بر مبنای میکروکنترلر ATMEGA2560 میباشد.این برد دارای 54 ورودی-خروجی (که از این 54 پایه، 15 پایه میتواند به عنوان خروجی PWM مورد استفاده قرار گیرد)، 16 ورودی آنالوگ، 4 پورت سریال سختافزاری، نوسان ساز کریستالی 16 مگا هرتز، اتصال USB، فیش تغذیه، هدر ICSP و یک کلید ریست میباشد. در این برد، همه امکانات لازم برای راه اندازی و کار با میکروکنترلر گنجانده شده است. برای شروع به کار با برد، کافیست آنرا از طریق یک کابل USB به کامپیوتر یا از طریق فیش تغذیه به یک مبدل AC به DC یا باتری متصل کنیم. برد آردونیو MEGA 2560 جایگزین برد MEGA میباشد.

|
برد آردونیو MEGA2560 |
مشخصات برد MEGA2560
| ميكروكنترولر | ATMEGA2560 |
| ولتاژ كاري | 5 ولت |
| ولتاژ ورودي(حالت به ينه) | 7-12 ولت |
| ولتاژ ورودي(حداقل و حداكثر) | 6 -20 ولت |
| پايه هاي I/O ديجيتال | 54 (15 تا از پايه ها مي توانند PWM باشند) |
| پايه هاي ورودي آنالوگ | 16 |
| جريان DC در هر پايه I/O | 20ميلي آمپر |
| جريان DC در پايه هاي 3/3 ولت | 50 ميلي آمپر |
| اندازه حافظه FLASH | 256 كيلوبايت كه 8 كيلوبايت آن به Bootloader اختصاص يافته است |
| اندازه حافظه SRAM | 8 كيلو بايت |
| اندازه حافظه EEPROM | 4 كيلو بايت |
| سرعت CLOCK | 16مگاهرتز |
| طول | 101/52 ميلي متر |
| عرض | 53/3ميلي متر |
| وزن | 37 گرم |
برد آردونیو MEGA ADK
برد آردونیو MEGA ADK، بر مبنای میکروکنترلر ATMEGA2560 میباشد.این برد دارای USB HOST بر مبنای آی سی MAX3421e برای اتصال به تلفن همراه یا سیستم عامل اندروید میباشد.این برد دارای 54 پایهورودی – خروجی (که از این 54 پایه، 15 پایه میتواند به عنوان خروجی PWM مورد استفاده قرار گیرد)، 16 ورودی آنالوگ، 4 پورت سریال سختافزاری، نوسان ساز کریستالی 16 مگا هرتز، اتصال USB، فیش تغذیه، هدر ICSP و یک کلید ریست میباشد.
برد آردونیو MEGA ADK بر مبنای برد MEGA2560 میباشد.مشابه با برد MEGA2560 و UNO، این برد نیز دارای یک میکروکنترلر ATMEGA8U2 میباشدکه به عنوان یک مبدل USB به سریال عمل میکند.

جدول 3-4. مشخصات برد MEGA ADK
| ميكروكنترولر | ATMEGA2560 |
| ولتاژ كاري | 5 ولت |
| ولتاژ ورودي(حالت به ينه) | 7-12 ولت |
| ولتاژ ورودي(حداقل و حداكثر) | 6 -20 ولت |
| پايه هاي I/O ديجيتال | 54 (15 تا از پايه ها مي توانند PWM باشند) |
| پايه هاي ورودي آنالوگ | 16 |
| جريان DC در هر پايه I/O | 40ميلي آمپر |
| جريان DC در پايه هاي 3/3 ولت | 50 ميلي آمپر |
| اندازه حافظه FLASH | 256 كيلوبايت كه 8 كيلوبايت آن به Bootloader اختصاص يافته است |
| اندازه حافظه SRAM | 8 كيلو بايت |
| اندازه حافظه EEPROM | 4 كيلو بايت |
| سرعت CLOCK | 16مگاهرتز |
| آی سی USB HOST | MAX3421E |
| طول | 52/101 ميلي متر |
| عرض | 3/53 ميلي متر |
[1] Slider
بردهای اینترنت اشیا (IOT)
اینترنت اشیا به مجموعه ای از قطعات کامپیوتری، اشیا و حتی انسانهای مرتبط با یکدیگر گفته میشود که هر کدام از آنها دارای یک شناسه[2] منحصر به فرد میباشند و بدون نیاز به دخالت انسان، این اشیا قادر خواهند بود تا از طریق شبکه اینترنت به ارتباط با یکدیگر بپردازند. در چنین حوزه ای تمرکز اصلی روی چگونگی تعامل ماشینها با یکدیگر میباشد.در آیندة نه چندان دور، دنیایی که در آن زندگی میکنیم، دنیایی متصل[3] خواهد بود و دیگر نباید نگران خیلی از اشیایی باشیم که در اطراف ما وجود دارند، زیرا این اشیا به اندازه کافی هوشمند شده اند که نیاز به مراقبت ما ندارند و تمامیاین موارد بدلیل وجود اینترنت اشیا میباشد.
برای روشن شدن ماهیت شی در اینترنت اشیا، یک مثال واقعی را مطرح میکنیم. به طور کلی یک شی یا thing در مبحث اینترنت اشیا میتواند انسانی باشد که یک تراشه مانیتور کننده ضربان قلب، در بدن او جایگذاری شده است که به محض مشاهده مشکلی برای ضربان قلب این فرد، پیغامیرا برای پزشک، بیمارستان یا اطرافیان این شخص ارسال میکند. مثال دیگری از شی میتواند خودرویی باشد که با استفاده از سنسورهای خاص، به محض کم شدن باد تایرها، این موضوع را به اطلاع راننده میرساند. در واقع، هر چیز یا شی که بتوان به آن یک IP اختصاص داد را در اینترنت اشیا میتوان به عنوان یک ماهیت واقعی در نظر گرفت.
شرکت آردونیو نیز در زمینه تولید بردهای قابل استفاده در اینترنت اشیا فعالیت گسترده ای را شروع نموده است این بردها بر مبنای میکروکنترلر خانواده ARM و AVR میباشند. در ادامه، بردهای اینترنت اشیا مبتنی بر میکروکنترلر AVR مورد بررسی قرار میگیرد.
برد آردونیو YUN
برد آردونیو YUN یک برد میکروکنترلری بر مبنای ATMEGA32U4 و Atheros AR9331 میباشد.. برد دارای، اترنت و wi-Fi داخلی، پورت USB-A، شیار کارت میکرو SD، 20 پایهورودی-خروجی دیجیتال (که از این 20 پایه، 7 پایه میتواند به عنوان خروجیهای PWM و 12 پایه، به عنوان ورودی آنالوگ مورد استفاده قرار گیرد)، نوسان ساز کریستالی 16 مگا هرتز، اتصال میکرو USB، هدر ICSP وسه کلید ریست میباشد.
تقاوت عمده YUN با سایر بردهای آردونیو، در برقراری ارتباط با لینوکس به صورت روی برد [4]میباشد. بنابراین این امکان فراهم میآید که یک شبکه کامپیوتری قدرتمند و یک برد آردونیو را در این برد، به صورت همزمان استفاده نمود. علاوه بر دستورات لینوکس، کاربر میتواند برای تعامل مطمئن تر، shell یا اسکریپت پایتون خود را بنویسید. YUNمانند LEONARDO دارای میکروکنترلر ATMEGA32U4 میباشد با این تفاوت که روی این برد سیستم عامل لینوکس وجود دارد. (در این برد نیز بدلیل وجود ATMEGA32U4 نیازی به داشتن پردازندة ثانویه که نقش پل ارتباطی و تبدیل USB به سریال را ایفا کند، نمیباشد).

| ميكروكنترولر | ATmega32U4 |
| ولتاژ كاري | 5 ولت |
| ولتاژ ورودي(حالت به ينه) | 5 ولت |
| پايه هاي I/O ديجيتال | 20 (7 تا از پايه ها مي توانند PWM باشند) |
| پايه هاي ورودي آنالوگ | 12 |
| جريان DC در هر پايه I/O | 40ميلي آمپر |
| جريان DC در پايه هاي 3/3 ولت | 50 ميلي آمپر |
| اندازه حافظه FLASH | 32 كيلوبايت كه 4 كيلوبايت آن به Bootloader اختصاص يافته است |
| اندازه حافظه SRAM | 5/2 كيلو بايت |
| اندازه حافظه EEPROM | 1 كيلو بايت |
| سرعت CLOCK | 16مگاهرتز |
برد آردونیو ETHERNET
برد آردونیو ETHERNET یک برد میکروکنترلری بر مبنای میکروکنترلر ATMEGA328 میباشد. این برد دارای 14 پایه ورودی -خروجی دیجیتال، 6 ورودی آنالوگ، نوسان ساز کریستالی 16 مگاهرتز، اتصال RJ45، فیش تغذیه، هدر ICSP و یک کلید ریست میباشد.
در این برد پایه های 10 و 11 و 12 و 13 برای برقراری ارتباطی با ماژول اترنت کنار گذاشته شده اند و نباید از این پایه ها استفاده شود. بنابراین تعداد پایه های ورودی -خروجی در دسترس، به 9 پایه میرسد که از 4 تای این پایه ها میتوان به عنوان خروجیهای PWM استفاده نمود. تفاوت برد ETHERNET با سایر بردهای آردونیو، این است که این برد آی سی درایور USB به سریال را روی خود ندارد، اما دارای واسط WIZNET ETHERNET میباشد که در شیلد ETHERNET وجود دارد. کارت خوان میکرو SD روی برد که از آن میتوان برای ذخیره سازی فایلها در شبکه استفاده نمود، از طریق SD Library در دسترس میباشد. پایه 10 برای WIZNET و پایه 4 به عنوان SS برای کارت میکرو SDدر نظر گرفته شده است.
هدر برنامه ریزی سریال 6 پایه موجود در برد، با آداپتورهای USB به سریال موجود در بازار سازگار میباشد. این هدر از ریست اتوماتیک پشتیبانی میکند. بنابراین بدون نیاز به فشردن کلید ریست روی برد، میتوان برنامه ها را از محیط Arduino IDE به برد انتقال داد. هنگامیکه این هدر به آداپتور USB به سریال متصل میشود، برد آردونیو ETHERNET از طریق مبدل تغذیه میشود.

مشخصات برد ETHERNET
| ميكروكنترولر | ATmega328P |
| ولتاژ كاري | 5 ولت |
| ولتاژ ورودي(حالت به ينه) | 7-12 ولت |
| ولتاژ ورودي(حداقل و حداكثر) | 6 -20 ولت |
| ولتاژ وروديPoE(Power Over Ethernet)(حداقل و حداكثر) | 36 -57 ولت |
| پايه هاي I/O ديجيتال | 14 (4 تا از پايه ها مي توانند PWM باشند) |
| پايه هاي ورودي آنالوگ | 6 |
| جريان DC در هر پايه I/O | 40ميلي آمپر |
| جريان DC در پايه هاي 3/3 ولت | 50 ميلي آمپر |
| اندازه حافظه FLASH | 32 كيلوبايت كه 5/0 كيلوبايت آن به Bootloader اختصاص يافته است |
| اندازه حافظه SRAM | 2 كيلو بايت |
| اندازه حافظه EEPROM | 1 كيلو بايت |
| سرعت CLOCK | 16مگاهرتز |
| كنترل كننده اترنت W500 | |
| كارت Micro SD | |
| طول | 6/68 ميلي متر |
| عرض | 3/53 ميلي متر |
| وزن | 28 گرم |
بردهای پوشیدنی[1]
منسوجات هوشمند که به عنوان منسوجات پوشیدنی نیز شناخته میشوند، توجه بسیاری از علاقمندان در زمینه طراحی لباسهای هوشمند را به خود جلب کرده است. بردهای آردونیو پوشیدنی و خانوادة آردونیوهای LILYpad که در سال 2007 به بازار معرفی شدند، سبب گردیدند بسیاری از افرادی که رویای ترکیب تکنولوژی و پوشش هر روزة خود را داشتند، بتوانند به این رویا دست پیدا کنند.
بردهای آردونیو پوشیدنی، شامل یک میکروکنترلر و کانکتورهايی در اطراف آن است که با استفاده از نخهای رسانای [1]مخصوص و انعطاف پذیری که برای این منظور طراحی شده اند، میتوان آنها را به لباس دوخت.
برد آردونیو GEMMA

|
برد آردونیو GEMMA |
برد آردونیو GEMMA، بر مبنای میکروکنترلر ATtiny85 میباشد.این برد دارای 3 پایهورودی – خروجی دیجیتال (که از این 3 پایه 2، پایه میتواند به عنوان خروجی PWM و یک پایه به عنوان ورودی آنالوگ مورد استفاده قرار گیرد)، کریستال 8 مگا هرتز، اتصال میکرو USB، اتصال JST برای باتری 7/3 ولتی و یک کلید ریست میباشد. در این برد همه امکانات لازم برای کار با میکروکنترلر فراهم شده است. برای شروع به کار با برد کافیست آن را از طریق یک کابل USB به کامپیوتر متصل کرده و یا از طریق باتری تغذیه شود.
| ميكروكنترولر | ATtiny85 |
| ولتاژ كاري | 3/3 ولت |
| ولتاژ ورودي | 4- 16 ولت |
| پايه هاي I/O ديجيتال | 3 (2 تا از پايه ها مي توانند PWM باشند) |
| پايه هاي ورودي آنالوگ | 1 |
| جريان DC در هر پايه I/O | 20ميلي آمپر |
| اندازه حافظه FLASH | 8 كيلوبايت كه 75/2 كيلوبايت آن به Bootloader اختصاص يافته است |
| اندازه حافظه SRAM | 512 بايت |
| اندازه حافظه EEPROM | 512 بايت |
| سرعت CLOCK | 8 مگاهرتز |
آردونیو LILYPAD USB
آردونیو LILYPAD USB، یک برد میکروکنترلری بر مبنای میکروکنترلر ATMEGA32U4 میباشد. این برد دارای 9 پایهورودی – خروجی دیجیتال (از این 9 پایه 4 پایه میتواند به عنوان خروجی PWM و 4 پایه به عنوان ورودی آنالوگ، مورد استفاده قرار گیرد)، یک رزوناتور 8 مگا هرتزی، اتصال میکرو USB، اتصال JST برای باتری لیتیوم پلیمری 7/3 ولتی و یک کلید ریست میباشد. این برد همه امکانات لازم جهت راه اندازی میکروکنترلر را دارا میباشد. برای شروع به کار با این برد کافیست آنرا با استفاده از یک کابل USB به کامپیوتر متصل نمود یا از طریق باتری تغذیه کرد.
تفاوت برد آردونیو LILYPAD USB با سایر بردهای LILYPAD، استفاد از ارتباط USB داخلی با میکروکنترلر ATMEGA32U2 میباشد. بنابراین در این برد نیازی به استفاده از مبدل USB به سریال نمیباشد. علاوه بر اینکه این برد نقش پورت COM مجازی را دارد، از دیدگاه کامپیوتر به صورت یک موس یا صفحه کلید دیده میشود.

مشخصات برد LILYPAD USB
| ميكروكنترولر | ATmega32u4 |
| ولتاژ كاري | 3/3 ولت |
| ولتاژ ورودي | 8/3 تا 5 ولت |
| پايه هاي I/O ديجيتال | 9 (4 تا از پايه ها مي توانند PWM باشند) |
| پايه هاي ورودي آنالوگ | 4 |
| جريان DC در هر پايه I/O | 40 ميلي آمپر |
| اندازه حافظه FLASH | 32 كيلوبايت كه 4كيلوبايت آن به Bootloader اختصاص يافته است |
| اندازه حافظه SRAM | 5/2 كيلو بايت |
| اندازه حافظه EEPROM | 1 كيلو بايت |
| سرعت CLOCK | 8 مگاهرتز |
نمونه هایی از کارهای مبتنی بر بردهای آردوینو پوشیدنی را می توانید از سایت های زیر مشاهده کنید.
https://learn.sparkfun.com/tutorials/tags/wearables?page=all
https://www.hackster.io/projects/tags/wearables
https://www.adafruit.com/product/659
[1] Conducting Threads
[1] Wearable Arduino
[4] On Board
در این آموزش قصد داریم روش نصب نرم افزار Arduino IDE که برای برنامه نویسی بردهای آردوینو طراحی شده اند را به صورت مرحله به مرحله آموزش دهیم.این نرم افزار یک نرم افزار رایگان می باشد که از سایت شرکت آردوینو قابل دانلود می باشد.
آمار تعداد نصب این نرم افزار در حال حاضر (اسفند 98) حدود 40 میلیون نصب می باشد که حکایت از استقبال قابل توجه کاربران از این نرم افزار را دارد.نرم افزار محیط بسیار ساده ای دارد و سعی شده است در عین سادگی ،کارآمد بودن برنامه نویسی نیز در آن حفظ شود.
دانلود نرمافزار
نرمافزار Arduino IDE یک نرمافزار متن باز میباشد که به صورت رایگان در اختیار کاربران قرار گرفته است.نسخه های مختلفی از این نرمافزار برای کاربران سیستم عاملهای ویندوز، مکینتاش و لینوکس ایجاد شده است.برای دانلود به سایت رسمیشرکت آردوینو به نشانی
رفته و از منوی SOFTWARE گزینه DOWNLOAD را انتخاب میکنیم. (شکل زیر)

در صفحه باز شده به قسمت Download Arduino IDE رفته و در قسمت سمت راست، نرمافزار را با توجه به نوع سیستم عامل انتخاب میکنیم.(برای سهولت در کار گزینه دوم Windows ZIP file for non admin install انتخاب میکنیم)

در صفحه باز شده (شکل زیر) روی گزینه Just Download کلیک میکنیم.پس از انجام این کار دانلود فایل آغاز خواهد شد.(دقت شود که به صورت پیش فرض گزینه CONTRIBUTE & DOWNLOAD انتخاب شده است که در صورت کلیک روی آن نیاز به پرداخت پول جهت حمایت از نرمافزار میباشد )

نصب نرمافزار Arduino IDE
نسخه های مختلف نرمافزار Arduino IDE از سایت رسمیArduino قابل دریافت میباشد. باید توجه داشت نسخه ای را انتخاب کرد که با سیستم عامل نصب شده روی کامپیوتر سازگار باشد.پس از دانلود فایل، این فایل باید از حالت فشرده خارج شود. به پوشه ای که فایل دانلود شده در آن قرار دارد رفته وفایل را با یکی از نرمافزارهای Winrar یا Winzip و…از حالت فشرده خارج میکنیم.در این مثال از نرمافزار Winrar استفاده شده است.


پس از اینکه فایل از حالت فشرده خارج شد، آیکون اجرایی برنامه با نام arduino.exe داخل پوشه قابل مشاهده میباشد

در این مرحله کار به اتمام رسیده است و نرم افزار Arduino IDE روی کامپیوتر نصب شده است.حال با کلیک روی آیکون arduino.exe می توان نرم افزار را اجرا نمود و از آن استفاده کرد.در آموزش بعد درباره محیط نرم افزار Arduino IDE صحبت خواهیم کرد.
ایجاد اولین پروژه (چشمک زن)
در بیشتر آموزش های مربوط به میکروکنترلرها ،اولین پروژه ای که برای آشنایی با محیط نرم افزار و چگونگی برنامه ریزی میکروکنترلر انجام می شود، یک پروژه ساده با نام چشمک زن یا Blink می باشد.دی این آموزش نیز ما این رول را برای برد آردوینو UNO دنبال می کنیم.به این ترتیب مراحل برنامه نویسی،نصب درایور برد Arduino UNO , چگونگی برنامه ریزی برد به صورت گام به گام توضیح داده می شود.

پس از اجرای نرمافزار Arduino IDE میتوان یکی از گزینه های زیر را انتخاب نمود:
1-ایجاد یک پروژه جدید
2-باز کردن یک مثال پروژه جدید
برای ایجاد پروژه جدید از منوي File گزينه Newرا انتخاب میکنیم. (File>New)
برای باز کردن یک پروژه از مثالهاي موجود از منوي File گزينه Example را انتخاب كرده و سپس در طبقه بنديهاي موجود، مثال مورد نظر را انتخاب مي كنيم.شکل زیر مراحل انجام این کار را نشان میدهد.

اولین پروژه ای که انتخاب شده است Blink.ino نام دارد.در این پروژه LED متصل به پایه شماره 13 که با نام LED_BUILTIN نیز شناخته میشود با تاخیر 1000 میلی ثانیه روشن و خاموش میشود.
ساختار برنامه
شکل زیرساختار کلی برنامه را نشان میدهد.ساختار تمام برنامه هایی که در نرمافزار Arduino IDE نوشته میشود را میتوان به دو تابع کلی تقسیم بندی نمود.

تابع ()setup
هنگامیکه برنامه اصلی اجرا میشود، تابع ()setup فراخوانی میشود. از این تابع برای مقدار دهی اولیه به متغیرها، تعریف وضعیت پایه ها، شروع کردن کتابخانه هاو. .. استفاده میشود. این تابع تنها یک بار پس از روشن شدن یا ریست شدن برد آردونیو اجرا میشود.
تابع ()loop
پس از ایجاد تابع ()setup که وظیفه مقدار دهی اولیه و راه اندازی اولیه قسمتهای مورد نیاز کاربر را دارد، تابع ()loop شروع به کار میکند. همانطور که از اسم این تابع نیز مشخص است، کلیه دستورات موجود در این تابع بینهایت بار به صورت متوالی، از ابتدا تا انتها اجرا میشوند.
توضیحات در برنامه (Comments)
در تمام برنامه های پیشنهاد میشود برای واضح تر شدن و گویا تر شدن برنامه ، خطوطی با نام توضیحات، به برنامه اضافه شوند.این خطوط هیچ تاثیری در حجم برنامه و روال اجرایی برنامه نداشته و تنها برای گویاتر شدن برنامه میباشند. این خطوط در ویرایشگر نرمافزار Arduino IDE با رنگی متمایز نشان داده میشوند(رنگ طوسی).
بررسی عملکرد برنامه
توضیحات
در ابتدای برنامه چندین خط توضیح در مورد عملکرد برنامه، شماره پایه ای که LED به آن متصل شده است (در این مثال LED روی برد آردوینو )، تاریخ نوشته شدن برنامه ، شخص نویسنده ، تاریخ ویرایش برنامه ، شخص ویرایشگر و. .. مشخص شده است.
تابع ()setup
در این تابع یک خط برنامه نوشته شده است که اجرای این خط سبب میشود پایه شماره 13 که با نام LED_BUILTIN نیز شناخته میشود، در وضعیت خروجی تعریف شود.
;pinMode(LED_BUILTIN,OUTPUT)
تابع pinMode و نحوه عملکرد آن در آموزش های بعدی به طور کامل شرح داده خواهد شد.
تابع ()loop
در این تابع 4 خط کد برنامه نوشته شده است.
خط اول سبب روشن شدن LED خواهد شد.
;digitalWrite(LED_BUILTIN, HIGH)
خط دوم سبب میشود یک تاخیر به اندازه 1 ثانیه (1000 میلی ثانیه) در برنامه ایجاد شود.
;delay(1000)
خط سوم سبب خاموش شدن LED خواهد شد.
;digitalWrite(LED_BUILTIN, LOW)
خط چهارم سبب میشود یک تاخیر به اندازه 1 ثانیه (1000 میلی ثانیه) در برنامه ایجاد شود.
;delay(1000)
این 4 خط به صورت متوالی بینهایت بار از ابتدا تا انتها اجرا خواهد شد.
انتخاب برد آردونیو
برای جلوگیری از بروز خطا در هنگام ترجمه کردن برنامه توسط محیط Ardunio IDE، باید برد مناسب را که به کامپیوتر متصل شده است. انتخاب نمود برای انجام این کار از منوي Tools گزينه Board (Tools>Board )را انتخاب مي كنيم. در این مثال برد آردونیو UNO را انتخاب میکنیم. شکل زیر چگونگی انجام این کار را نشان میدهد.

انتخاب پورت سریال
پس از اتصال برد آردونیو به کامپیوتر از طریق گزینه Device Manager در ويندوز ، میتوان پورت سریال اختصاص داده شده به برد آردونیو را پیدا کرد. درایور مربوط به برد با توجه به نوع برد آردوینو میتواند متفاوت باشد.در بردهای اورجینال معمولا نام درایور با نام برد یکسان میباشد. به عنوان مثال در صورتی که آردوینو UNO به کامپیوتر متصل شده باشد و نرمافزار Arduino IDE روی این کامپیوتر نصب شده باشد، درایور به صورت خودکار توسط سیستم عامل شناخته شده و با نام Arduino Uno نشان داده میشود.این مطلب در شکل 4-10 نشان داده شده است.در صورتی که از بردهای آردوینو با تراشه CH340 استفاده شود، ابتدا باید درایور این بردها نصب و سپس از آنها استفاده کرد.درایور پورت سریالهای این نوع از بردها در ویندوز، با نام USB-SERIAL CH340 شناخته میشود.

بعد از مشخص شدن پورت اتصال آردوینو(در این مثال شماره پورت شناسایی شده توسط ویندوز COM9 میباشد)، در نرمافزار Arduino IDE با رفتن به منوي Tools و انتخاب گزينه Port، پورت سریال برد آردونیو را تنظیم میکنیم.این قسمت در شکل زیر نشان داده شده است.(در این شکل برد روی COM9 شناسایی شده است.)

آپلود کردن برنامه در برد
با کلیک کردن روی گزینه آپلود(دومین ایکون در نوار ابزار ) و چند ثانیه صبر کردن، LEDهای RX و TX روی برد شروع به چشمک زدن میکنند. در صورتی که عملیات آپلود کردن موفقیت آمیز باشد، پیغام “Done Uploading” در نوار وضعیت ظاهر میشود


پس از انجام مراحل فوق،میکروکنترلر موجود در برد آردوینو UNO برنامه ریزی شده و شروع به کار خواهد کرد.بنابراین LED متصل به پایه شماره 13 برد با تاخیر 1 ثانیه به صورت متوالی روشن و خاموش خواهد شد.
مراحلی که در بالا به آن اشاره شد برای تمام پروژه های مربوط به آردوینو صادق می باشد.
شبیه سازی برد های آردوینو در نرم افزار Proteus
شبيه سازي در بردهاي الكترونيكي، ابزاري قدرتمند براي بررسي عملكرد بردها در يك آزمايشگاه مجازي ميباشد.اين مورد درباره بردهاي ميكروكنترولري، بسيار مشهود تر ميباشد.برنامه اي كه توسط كاربر نوشته ميشود ممكن است ايراداتي داشته باشد كه بروز اين ايرادات در اجراي واقعي سبب آسيب به برد، يا مدارات جانبي متصل به آن میگردد. از اين رو پيشنهاد ميشود قبل از پياده سازي واقعي برد ايرادات اوليه آن در يك نرمافزار شبيه ساز برطرف و سپس نمونه اوليه برد ساخته شود.
در بحث آموزش نيز، نرمافزارهاي شبيه سازي كاربرد گسترده اي دارند.در آموزش برنامه نويسي و آشنايي با بردهاي ميكروكنترولري، هدف اصلي آموزش شيوه برنامه نويسي و آزمايش كردن مدارهاي واسط متفاوت ميباشد.بنابراين در صورتي كه اين اتفاقات روِی يك مدار واقعي رخ دهد ايراداتي مانند عدم اتصال صحيح زمين مدار، پايين بودن ولتاژ تغذيه ، قطعي يك از سيمهاو… كه براي افرادي كه كار با ميكروكنترولرها را به تازگي شروع ميكنند، بسيار رخ خواهد داد و برطرف كردن آنها ممكن است زمان زيادي را ببرد.بنابراين استفاده از نرمافزارهاي شبيه سازدر شروع کارمیتواند بخش قابل توجهي از اين ايرادات اوليه را برطرف سازد.
نرمافزارهاي زيادي در زمينه شبيه سازي مدارات ميكروكنترولري وجود دارد كه از جمله آنها ميتوان به نرمافزار Proteus اشاره كرد.اين نرمافزار قدرتمند امكان شبيه سازي مدارات آنالوگ و ديجيتال را فراهم مي سازد.همچنين كتابخانه هاي متنوعي شامل انواع خانواده هاي ميكروكنترولرها را نيز دارا مي باشد.
توليد كد HEX
براي شبيه سازي برنامه هادر نرمافزار Proteus، نياز به كد HEX به عنوان فايل ورودي براي برد آردوينو داریم.بنابراين بايد ابتدا اين فايل را ايجاد نماييم.
كد HEX در واقع فايل خروجي حاصل از ترجمه برنامه نوشته شده در محيط Arduino IDE مي باشد.پس از نوشتن برنامه و ترجمه آن، در صورتي كه ايرادي در برنامه وجود نداشته باشد، مي توان كد HEX را ايجاد نمود.شكل زیر مراحل ايجاد كد HEX را نشان مي دهد.

1-1. تنظيمات نرمافزار Arduino IDE براي توليد كد HEX
در حالت كاركرد عادي (زماني كه برد واقعي به كامپيوتر متصل است)، پس از ترجمه برنامه ، خروجي توليد شده توسط نرمافزار Arduino IDE با استفاده از پورت ارتباطي مشخص شده، روي ميكروكنترولر موجود در برد ريخته مي شود.در صورتي كه بخواهيم نرمافزار Arduino IDE خروجي كد HEX نيز توليد كند، مراحل زير را دنبال مي كنيم
1- از منوي File گزينه Preference را انتخاب مي كنيم.

2- در صفحه Preference گزينه compilation را فعال کرده وكليد OK را فشار مي دهيم.شکل 5-2موقعیت این آیتم در برگه Preference را نشان میدهد.

3- پس از نوشتن برنامه و ذخیره آن، براي ترجمه برنامه و توليد كدHEX، از منوي Sketch، گزينه Export compiled Binary را انتخاب مي كنيم.پس از پايان عمليات ترجمه برنامه، در صورت عدم وجود خطا، دو فايل در مسير جاري برنامه ايجاد خواهد شد.

فایلهای HEX ساخته شده در نرمافزار، در پوشه ای که فایل اصلی در آن قرار دارد، قابل مشاهده میباشند.

نصب کتابخانه آردوینو در نرمافزار Proteus
در نسخه های ۷ و ۸ نرمافزار، Proteus کتابخانه ی آردوینو به صورت پیش فرض در کتابخانه های نرمافزار Proteus وجود ندارد.برای شبیه سازی بردهای آردوینو در نرمافزار Proteus میتوان از کتابخانه هایی که برای این منظور طراحی شده اند، استفاده نمود.مراحل نصب کتابخانه فوق به صورت زیر میباشد.
۱-فایل Arduiono_Library_For_Proteus.rar را دانلود کرده و سپس با یکی از نرمافزارهای باز کردن فایلهای فشرده، مانند winrar باز میکنیم.

یک پوشه جدید با نام Arduino_Library_For_Proteus ایجاد میشود که دو فایل زیر در آن قرار دارد.
ArduinoUNOTEP.IDX
ArduinoUNOTEP.LIB


-فایلهای فوق را در مسیر پوشه کتابخانه نرمافزار Proteus کپی میکنیم. این مسیر در بعضی از نسخه ها به صورت زیر
C:\Program Files\Labcenter Electronics\Proteus 8 Professional\LIBRARY
و در بعضی از نسخه های در مسیر زیر قرار دارد:
C:\ProgramData\Labcenter Electronics\Proteus Professional\Data\LIBRARY
۴-در صورت باز بودن نرمافزار Proteus نرمافزار را بسته و مجددا باز میکنیم.
شکل زیر کتابخانه آردوینو ایجاد شده در نرمافزار Proteusرا نشان میدهد.

پس از رسیدن به این مرحله مطمئن هستیم کتابخانه آردوینو در نرم افزار Proteus نصب شده است و آماده استفاده می باشد.در آموزش بعدی یک مثال ساده از شبیه سازی یک LED چشمک زن در نرم افزار Proteus را انجام خواهیم داد.
شبیه سازی LED چشمک زن در نرم افزار Proteus
در این آموزش قصد داریم یک نمونه شبیه سازی در نرم افزار Proteus را با استفاده از یک مثال ساده انجام دهیم.ابتدا برنامه ای می نویسیم که LED متصل به پایه ۳ از برد آردوینو UNO را با تاخیر یک ثانیه روشن و خاموش نماید و سپس این برنامه را در محیط Proteus شبیه سازی می کنیم.
ابتدا در نرمافزار Arduino IDE برنامه را نوشته و تنظیمات لازم برای تولید کد HEX را انجام میدهیم.شکل زیر برنامه نوشته شده در محیط Arduino IDE را نشان میدهد.(جزییات بیشتر در مورد دستورها و چگونگی برنامه نویسی در آموزش های بعد به طور مفصل توضیح داده خواهد شد).

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

برای برنامه ریز کد HEX تولید شده ،کافیست روی برد آردوینو در نرم افزار proteus راست کلیک کرده و گزینه Edit Properties را انتخاب کنیم.

در صفحه ای که باز میشود ، در قسمت Program File مسیری را که فایل HEX در آن قرار دارد تعیین کرده و کلید OK را فشار میدهیم.(شکل زیر)

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

برای انجام تمام آزمایش ها در محیط شبیه سازی می توان روال فوق را انجام داد.بنابراین به طور خلاص اگر بخواهیم بگوییم:
1-برنامه در محیط برنامه نویسی انجام می شود
2-کد Hex تویلید می شود.
3-در محیط Proteus نقشه مدار را کشیده و کد HEX را روی آن دانلود می کنیم.
4-کلید Run را فشار داده و نتیجه را می بینیم.









