آردوینو در سال 2005 شروع به کار کرد و طراحی اولیهاش در موسسه طراحیتعاملی یورئا در ایتالیا در سال 2003 با نام اولیه Wiring شروع شد.
ایده اولیه آن، ساخت وسیلهای ساده و کمهزینه برای انجام پروژههای دیجیتال دانشجویان بود که هرناندو باراگان، یکی از دانشجویان انستیتو ایورئا، تصمیم گرفت پایاننامهٔ کارشناسیارشد خود را در این زمینه اجرا نماید. ماسیمو بانزی و کیسی ریس نیز استادان راهنما باراگان در این پایان نامه بودند.
نتیجه پایان نامه باراگان بسیار موفقیتآمیز بود و منجر به ایجاد سختافزار و نرمافزاری شد که Wiring نام گرفت.
پس از اتمام پایاننامه، بانزی درصدد کاهش هزینههای سختافزار Wiring برآمد و در سال 2005 با همکاری دیوید کوآرتلس و دیوید ملیس (که بهترتیب کارمند و دانشجوی انستیتو ایورئا بودند)، به توسعه پروژه Wiring پرداخت و نام آن را به آردوینو تغییر داد. این نام جدید برگرفته از نام کافهای به نام آردوین در شهر ایورئا بود که اکثر جلسات گروه در آنجا تشکیل میشد. واژه آردوین، نام یکی از شاهزادگان قدیم ایتالیا است که زمانی حکمران شهر ایورئا بود و در قرن یازدهم میلادی به پادشاهی ایتالیا رسید.

آردوینو میتواند جهت طراحی و ساخت سریع و آسان وسایل تعاملی مورد استفاده قرار گیرد. به عنوان مثال فرض کنید شما دوست دارید وسیلهای داشته باشید که با استفاده از گوشی موبایلتان در صورت نیاز به گلدانتان آب دهید یا دوست دارید زمانی که نور خورشید نمایان میشود پردهها کنار روند و نور وارد خانه شود و شبها که نور خورشید محو میشود، پرده ها به صورت خودکار به حالت اولیه بازگردند. اینها وسایل تعاملی هستند که آردوینو به ساخت سریع و بی دردسر آنها کمک میکند. برد آردوینو میتواند مقادیر ورودی را از تعداد زیادی سنسور و کلید و… بخواند و بر اساس برنامه ای که درون آن بارگذاری شدهاست تصمیم بگیرد و خروجی خاصی که میتواند کنترل تعدادی لامپ، موتور و … باشد را برای شما انجام دهد.
بخش نرمافزاری آردوینو
اولین نکته قابل توجه آردوینو، Arduino IDE (Integrated Development Environment) یا همان نرم افزار برنامه نویسی بردهای آردوینو است که یک نرم افزار open source است.امکاناتی مانند ترمینال سریال در داخل نرمافزار آردوینو قرارداده شده تا بتوانید به وسیله ارتباط سریال و USB برنامههایی را که برای میکرو کنترلر مینویسید عیبیابی نمایید. میتوان مقادیر ADC (دادههای Analog که برد از سنسورهایی مانند نور،دما و… دریافت میکند) و وضعیت پایهها یا هر اطلاعات دیگری را به ترمینال سریال آردوینو فرستاد و از طریق کامپیوتر اطلاعات را از میکرو کنترلر دریافت کرد.


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

برای مثال با استفاده از Framework میتوان این کد را که نسبتا فهم سختی دارد و از امکانات پایه زبان استفاده میکند تا یک LED را روشن و خاموش کند و به طور کلی به یک چراغ چشمک زن تبدیل کند را
#include <avr/io.h>
#include <util/elay.h>
int main() {
DDRB |= _BV(DD5); //Set LED as an output
while(1) {
PORTB |= _BV(PRTB5); // Turn the LED on
_delay_ms(500); // Wait for a second
PORTB & = -_BV(PORTB5); // Turn the LED off
_delay_ms(500); // Wait for a second
}
return(0);
}
به شکل زیر نوشت که خواناتر و قابل فهمتر است:
void setup() {
pinMode(LED_BUILTIN, OUTPUT); //Set LED as an output
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); //Turn the LED on
delay(1000); //Wait for a second
digitalWrite(LED_BUILTIN, LOW); //Turn the LED off
delay(1000); //Wait for a second
}
نکته مهم اینجاست که این مثال فقط و فقط برای یک چراغ چشمک زن ساده نوشته شده و مطمئنا در مقیاس با کد قبلی متوجه این شدید که آردوینو در پرژههای بزرگ چه کمک بزرگی به ما میکند.
بخش سختافزاری آردوینو
مدلهای مختلفی از بردهای سختافزاری آردوینو وجود دارد.مزیت اصلی این بردها این است که شامل قطعات پایهای و مورد نیاز اکثر پروژهها میباشند و به ما کمک میکنند که راحتتر از قبل ، بدون نیاز به طراحی و چاپ بردهای جداگانه و با هزینهی نه چندان متفاوت ، پروژه هارا بر مبنای بردهای آردوینو درست کنیم. Arduino UNO یکی از پرکاربردترین و متداولترین مدلهای سختافزار آردوینو است.

برد Arduino UNO:
همانطور که در قبل اشاره کردیم، برد Arduino UNO پرکاربردترین مدل از بردهای آردوینو میباشد. برد Arduino UNO مبتنی بر یک میکروکنترلر ATmega328P طراحی شده و این بدین معناست که این میکروکنترلر در این برد به عنوان پردازشگر استفاده میشود. این برد شامل 14 پین ورودی و خروجی دیجیتال (که 6 تای آن میتواند به عنوان خروجی PWM استفاده گردد) و 6 ورودی آنالوگ است.
یک تشدیدگر سرامیکی 16مگاهرتز (Ceramic Resonator)، یک پورت USB، یک Power jack (ورودی منبع تغذیه)، یک ICSP header و یک دکمه Reset میباشد. استفاده از این برد بسیار آسان است، تنها لازم است با یک کابل USB، به سـادگی برد را به کامپیوترتان متصـل کنید و یـا آن را با یـک آداپـتور AC-To-DC و یا باتری راه اندازی نمایید. آداپتور (که سوکت آن از نوع center-positive با قطر 2/1 میلی متری میباشد) می تواند به Power jack موجود بر روی برد متصل گردد و سیمهای باتری میتوانند مستقیما وارد پین های GND و Vin شوند.
پین های مربوط به Power (منبع تغذیه) به شرح زیر است:
VIN: این پین، پین ورودی ولتاژ آردوینو است که در مواقع استفاده از منبع تغذیه خارجی (به جای منبع تغذیه تنظیم شده یا اتصال USB 5 ولتی) از آن استفاده می شود و چنانچه برد از طریق Power jack به منبع تغذیه وصل شده باشد، میتوانید از طریق این پین (به عنوان خروجی) به ولتاژ منبع تغذیه دسترسی داشته باشید.
5V: یک ولتاژ تنظیم شده 5 ولتی را از طریق رگولاتور موجود در برد، فراهم میگردد.
3.3V : یک ولتاژ 3/3 ولتی، به وسیلهی رگولاتور موجود در برد، فراهم میگردد که حداکثر جریان آن 50 میلی آمپر میباشد.
IOREF:این پین میزان ولتاژ مرجعی را که میکروکنترلر با آن کار می کند، مشخص می نماید. یک شیلد که به درستی تنظیم شده باشد، می تواند مقدار ولتاژ را از پین IOREF خوانده و منبع تغذیه مناسب خود را انتخاب نماید و یا اینکه مبدل های ولتاژ را برای کار کردن با ولتاژهای 5 ولت یا 3/3 ولت، برروی خروجی ها فعال نماید.
حافظه:
ATmega328P دارای 32KB حافظه است (0.5KB از آن برای BootLoader استفاده میشود). همچنین دارای 2KB حافظه SRAM و 1KB حافظه EEPROM میباشد.
پینهای ورود و خروجی:
هریک از 14 پین دیجیتال Uno میتواند با استفاده از توابعی خاص در Arduino IDE به عنوان ورودی یا خروجی استفاده شود. ولتاC پین ها 5 ولت بوده و ظرفیت جریان هر پین حداکثر 40mA می باشد. همچنین هر یک از این پینها دارای یک مقاومت داخلی (20Kohm-50Kohm) جهت Pull-Up می باشد (که به صورت پیش فرض غیرفعال است). به علاوه بعضی از پین ها دارای عملکردهای منحصر به فردی می باشند که شرح آن در ذیل است:
Serial – 0(RX)-1(TX) : پین RX برای دریافت و TX جهت انتقال اطلاعات به صورت سریال و با پروتکل TTL استفاده می شود. این پین ها به پین های مرتبط USB-to-TTL ATmega8U2 متصل هستند.
11, 10, 9, 6, 5, 3-PWM : امکان دسترسی به یک خروجی PWM را با استفاده از توابعی مشخص فراهم میکنند.
SPI – 10(SS)، 11(MOSI)، 12(MISO) ، 13(SCK) : با استفاده از توابع کتابخانه ای در محیط Arduino IDE این پین ها میتوانند یک ارتباط SPI ایجاد نمایند.
LED – 13: یک LED آماده، به پین دیجیتال 13 متصل شده است. هنگامی که پین در حالت HIGH قرار دارد، LED روشن و زمانی که پین در حالت LOW قرار دارد، خاموش میشود.
A0,A1,A2,A3,A4,A5:ورودی Analog که از A0 تا A5 نامگذاری شده اند.

یکی دیگر از بردهایی که آردوینو به تازگی به بازار عرضه کرده است برد Arduino UNO R4 میباشد:
این برد مشابه با برد Arduino UNO میباشد اما این دو در بخش سختافزاری کاملا با یکدیگر متفاوت هستند. این برد در دو مدل Arduino UNO R4 Minima و Arduino UNU R4 WiFi عرضه شده که Arduino Uno R4 Minima درواقع نسل بعدی Arduino Uno محسوب میشود. مدل Arduino Uno R4 WiFi علاوه بر میکروکنترلر اصلی دارای یک ماژول وایفای و بلوتوث ESP32 است.
این مدل از بردهای آردوینو، اولین مدلی است که دارای پردازشگر 32 بیتی است. پردازنده به کار رفته در این برد از نوع Arm Cortex-M4 با فرکانس 48 مگاهرتز است که Renesas RA4M1 SoC نام دارد. بهعلاوه، این برد دارای ROM نوع SRAM با حافظه 32KB و فلش با حافظه 256KB است که این مقادیر نسبت به برد UNO R3 به ترتیب 2 کیلوبایت و 256 کیلوبایت افزایش داشتهاند.
از پیشرفتهای دیگر این برد، میتوان به کانکتور Type-c USB برای انتقال دیتا و تامین برق اشاره کرد. همچنین، این برد میتواند به Power jack (ورودی برق DC) اجازه دهد تا منابع تغذیه 24 ولتی را مدیریت کند. علاوه بر این موارد، برد UNO R4 دارای یک مبدل آنالوگ به دیجیتال 12 بیتی (ADC)، یک CAN BUS برای پروژههایی که نیاز به چندین افزونه شیلد دارند، میباشد.
ویژگی جالب مدل وایفای نمایشگر LED ماتریسی با ابعاد 12×8 است که در بالای دستگاه درست زیر SoC، بهعنوان یک صفحهنمایش داخلی قرار دارد. بهطورکلی این قابلیت برای کسی که از شیلد بالای برد استفاده میکند، فایده چندانی ندارد، اما برای پروژههای مستقل و کاربرانی که تازه شروع به کار میکنند مفید است چرا که نیاز به خرید ماژولهای اضافه را کمتر میکند.
