آموزش آردوینو از صفر: از نصب نرم‌افزار تا اولین ربات، به زبان ساده - مجله آموزش برنامه‌نویسی داناورس
آموزش برنامه‌نویسی بازبینی علمی: حسین عزیزی ۱۱ دقیقه مطالعه

آموزش آردوینو از صفر: از نصب نرم‌افزار تا اولین ربات، به زبان ساده

آردوینو کوتاه‌ترین راه از «کد نوشتن» به «ساختن چیزی که در دنیای واقعی حرکت می‌کند» است. با چند خط کد، یک چراغ روشن و خاموش می‌شود، یک موتور می‌چرخد یا یک سنسور فاصله‌ی دستتان را اندازه می‌گیرد. برای همین آردوینو نقطه‌ی شروع رباتیک، اینترنت اشیا و بیشتر پروژه‌های الکترونیک آماتوری است.

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

آردوینو چیست؟

آردوینو (Arduino) یک برد الکترونیکی کوچک است که یک میکروکنترلر روی آن قرار دارد؛ یعنی یک کامپیوتر خیلی ساده که فقط یک برنامه را اجرا می‌کند. برنامه را روی کامپیوتر خودتان می‌نویسید، با کابل USB روی برد می‌فرستید و از آن به بعد برد بدون کامپیوتر هم همان برنامه را اجرا می‌کند.

روی برد تعدادی پین هست. به این پین‌ها قطعه وصل می‌کنید: LED، دکمه، سنسور، موتور یا نمایشگر. برنامه‌ی شما از سنسورها می‌خواند و به خروجی‌ها فرمان می‌دهد. وقتی می‌گوییم «آردوینو»، معمولاً سه چیز را با هم منظور داریم:

  • برد: سخت‌افزار، مثل آردوینو اونو یا نانو.
  • نرم‌افزار (Arduino IDE): برنامه‌ای که کد را در آن می‌نویسید و روی برد می‌فرستید. رایگان است.
  • زبان برنامه‌نویسی: نسخه‌ی ساده‌شده‌ای از ++C با تعداد زیادی دستور آماده برای کار با پین‌ها.

کدام برد را بخرم؟ اونو، نانو یا مگا

برای شروع، تقریباً همیشه آردوینو اونو (Uno) بهترین انتخاب است. بیشتر آموزش‌ها، کتاب‌ها و کیت‌ها بر اساس اونو نوشته شده‌اند و پین‌هایش درشت و کار با آن راحت است.

بردمناسب براینکته
اونو (Uno)شروع یادگیری و بیشتر پروژه‌های آموزشیبیشترین آموزش و کیت برای این برد است
نانو (Nano)پروژه‌هایی که جا کم دارند، مثل ربات کوچکهمان توانایی اونو در اندازه‌ی کوچک‌تر؛ روی بردبورد می‌نشیند
مگا (Mega)پروژه‌های بزرگ با قطعه‌ی زیادپین بیشتر دارد؛ برای شروع لازم نیست

در بازار ایران بیشتر بردها نسخه‌ی سازگار (کلون) هستند، نه نسخه‌ی اصلی ساخت شرکت آردوینو. کلون‌ها برای یادگیری کاملاً کار می‌کنند؛ فقط بعضی‌شان به جای تراشه‌ی USB اصلی، تراشه‌ی CH340 دارند و روی ویندوز ممکن است درایور جداگانه بخواهند. در بخش نصب به این موضوع می‌رسیم.

وسایل لازم برای شروع

اگر می‌خواهید «کیت آموزش آردوینو» بخرید، مطمئن شوید این قطعه‌ها داخلش هست. با همین‌ها همه‌ی پروژه‌های این مقاله انجام می‌شود:

  • برد آردوینو اونو و کابل USB آن
  • بردبورد (صفحه‌ی سوراخ‌دار برای وصل کردن قطعه‌ها بدون لحیم) و تعدادی سیم جامپر
  • چند LED و مقاومت ۲۲۰ اهمی (هر LED باید با مقاومت وصل شود)
  • دکمه‌ی فشاری (Push Button)
  • پتانسیومتر (ولوم چرخشی)
  • سنسور فاصله‌ی اولتراسونیک HC-SR04
  • سروو موتور کوچک SG90

کیت‌های بزرگ‌تر معمولاً نمایشگر LCD، سنسور دما و رطوبت، بازر و موتور DC هم دارند که برای مرحله‌ی بعد به درد می‌خورند.

نصب نرم‌افزار آردوینو

  1. نرم‌افزار Arduino IDE 2 را از سایت رسمی arduino.cc بخش Software دانلود کنید. برای ویندوز، مک و لینوکس نسخه دارد.
  2. نصب کنید و برنامه را باز کنید. اگر ویندوز درباره‌ی نصب درایور سوال کرد، اجازه بدهید.
  3. برد را با کابل USB به کامپیوتر وصل کنید.
  4. از منوی بالای برنامه، در کادر انتخاب برد، Arduino Uno و پورتی را که برد به آن وصل است انتخاب کنید (در ویندوز چیزی مثل COM3).

اگر پورت دیده نمی‌شود: اول کابل را عوض کنید؛ بعضی کابل‌های USB فقط شارژ می‌کنند و داده رد نمی‌کنند. اگر برد کلون است و روی خودش تراشه‌ی CH340 دیده می‌شود، درایور CH340 را نصب کنید و برنامه را دوباره باز کنید.

نصب کتابخانه: بعضی قطعه‌ها، مثل نمایشگرها و بعضی سنسورها، کتابخانه‌ی آماده دارند. در Arduino IDE 2 از نوار کناری، آیکون کتاب‌ها (Library Manager) را باز کنید، اسم کتابخانه را جستجو و Install را بزنید. کتابخانه‌ی سروو که در این مقاله استفاده می‌کنیم از قبل همراه نرم‌افزار نصب است.

با گوشی چطور؟ برنامه‌هایی برای اندروید هست که با کابل OTG کد را روی برد می‌فرستند، ولی تجربه‌ی کار با آن‌ها برای مبتدی‌ها سخت است. اگر کامپیوتر دارید، از همان Arduino IDE شروع کنید. نسخه‌ی تحت وب آردوینو (Arduino Cloud Editor) هم هست که در مرورگر کار می‌کند.

بدون برد هم می‌شود شروع کرد: شبیه‌ساز

اگر هنوز برد نخریده‌اید، می‌توانید مدار را در شبیه‌ساز بسازید و کد را همان‌جا اجرا کنید. دو گزینه‌ی رایگان و تحت وب: Tinkercad Circuits که برای مبتدی‌ها خیلی ساده است و Wokwi که بردها و قطعه‌های بیشتری دارد. خیلی‌ها برای شبیه‌سازی آردوینو سراغ پروتئوس (Proteus) می‌روند؛ پروتئوس نرم‌افزار حرفه‌ای‌تری است ولی نصب و راه‌اندازی آردوینو در آن برای شروع دردسر بیشتری دارد. برای یادگیری، شبیه‌ساز تحت وب کافی است.

شبیه‌ساز جای کار با قطعه‌ی واقعی را نمی‌گیرد؛ سیم شل، باتری ضعیف و سنسوری که گاهی عدد عجیب می‌دهد را فقط در دنیای واقعی یاد می‌گیرید. ولی برای اینکه بفهمید آردوینو برایتان جذاب است یا نه، بهترین شروع رایگان است.

زبان برنامه‌نویسی آردوینو چیست؟

کد آردوینو به زبان ++C نوشته می‌شود، ولی لازم نیست اول ++C را کامل یاد بگیرید. هر برنامه‌ی آردوینو دو بخش اصلی دارد:

  • setup() یک بار، هنگام روشن شدن برد اجرا می‌شود. تنظیمات اولیه اینجا می‌آید؛ مثلاً اینکه کدام پین ورودی است و کدام خروجی.
  • loop() بعد از آن، بی‌وقفه و پشت سر هم تکرار می‌شود. کار اصلی برنامه اینجاست.

با پایتون یا اسکرچ چطور؟ برد اونو مستقیم پایتون اجرا نمی‌کند. می‌شود روی برد یک برنامه‌ی واسط (StandardFirmata) گذاشت و از روی کامپیوتر با کتابخانه‌ی pyFirmata در پایتون به آن فرمان داد؛ برای کسی که پایتون بلد است جالب است، ولی برد بدون کامپیوتر کار نمی‌کند. برای بچه‌ها و نوجوان‌ها، برنامه‌ی mBlock اجازه می‌دهد آردوینو را با بلوک‌هایی شبیه اسکرچ برنامه‌ریزی کنند. اگر هدفتان یادگیری جدی آردوینو است، ++C ساده‌ی خود آردوینو را انتخاب کنید؛ همه‌ی منابع و مثال‌ها به همین زبان است.

اولین برنامه: چشمک زدن LED

روی برد اونو یک LED کوچک هست که به پین ۱۳ وصل است، پس برای اولین برنامه هیچ قطعه‌ای لازم نیست. این کد را در Arduino IDE بنویسید و دکمه‌ی Upload (فلش رو به راست) را بزنید:

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // on
  delay(1000);                      // wait one second
  digitalWrite(LED_BUILTIN, LOW);   // off
  delay(1000);
}

اگر LED روی برد هر ثانیه روشن و خاموش شد، همه چیز درست نصب شده است. حالا عدد ۱۰۰۰ را به ۲۰۰ تغییر دهید و دوباره آپلود کنید؛ چشمک‌ها تند می‌شوند. همین تغییرهای کوچک بهترین راه یادگیری است.

پروژه‌ی ۱: روشن کردن LED با دکمه

اتصال: یک پایه‌ی دکمه به پین ۲ و پایه‌ی مقابلش به GND. یک LED با مقاومت ۲۲۰ اهم به پین ۱۳ (پایه‌ی بلند LED سمت پین، پایه‌ی کوتاه سمت GND).

const int buttonPin = 2;
const int ledPin = 13;

void setup() {
  pinMode(buttonPin, INPUT_PULLUP);  // use the internal pull-up resistor
  pinMode(ledPin, OUTPUT);
}

void loop() {
  // with INPUT_PULLUP, a pressed button reads LOW
  if (digitalRead(buttonPin) == LOW) {
    digitalWrite(ledPin, HIGH);
  } else {
    digitalWrite(ledPin, LOW);
  }
}

چیزی که یاد گرفتید: خواندن ورودی دیجیتال با digitalRead و تصمیم‌گیری با if. حالت INPUT_PULLUP باعث می‌شود به مقاومت اضافه برای دکمه نیاز نداشته باشید.

پروژه‌ی ۲: کم و زیاد کردن نور با پتانسیومتر (PWM)

اتصال: پایه‌ی وسط پتانسیومتر به A0 و دو پایه‌ی کناری به 5V و GND. LED با مقاومت به پین ۹.

const int potPin = A0;
const int ledPin = 9;  // pins marked with ~ support PWM

void setup() {
  pinMode(ledPin, OUTPUT);
}

void loop() {
  int value = analogRead(potPin);                // 0 to 1023
  int brightness = map(value, 0, 1023, 0, 255);  // scale to 0..255
  analogWrite(ledPin, brightness);
}

PWM چیست؟ آردوینو نمی‌تواند واقعاً ولتاژ را کم و زیاد کند؛ در عوض پین را خیلی سریع روشن و خاموش می‌کند. هرچه سهم «روشن» بیشتر باشد، LED پرنورتر دیده می‌شود. به این روش PWM می‌گویند و با analogWrite فقط روی پین‌های علامت‌دار با ~ کار می‌کند. سرعت موتورهای DC هم با همین روش کنترل می‌شود.

پروژه‌ی ۳: فاصله‌سنج با سنسور اولتراسونیک

اتصال سنسور HC-SR04: پایه‌ی VCC به 5V، GND به GND، Trig به پین ۹ و Echo به پین ۱۰.

const int trigPin = 9;
const int echoPin = 10;

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // send a short ultrasonic pulse
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // measure the echo time and convert it to centimeters
  long duration = pulseIn(echoPin, HIGH);
  float distance = duration * 0.0343 / 2;

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");
  delay(300);
}

بعد از آپلود، از منوی Tools گزینه‌ی Serial Monitor را باز کنید و سرعت را روی 9600 بگذارید. دستتان را جلوی سنسور جلو و عقب ببرید و عددها را ببینید. Serial Monitor مهم‌ترین ابزار عیب‌یابی شماست: هر وقت نمی‌دانید برنامه چه می‌کند، مقدارها را با Serial.print چاپ کنید.

پروژه‌ی ۴: چرخاندن سروو موتور

اتصال سروو SG90: سیم قهوه‌ای به GND، قرمز به 5V و نارنجی (سیگنال) به پین ۹.

#include <Servo.h>

Servo myServo;

void setup() {
  myServo.attach(9);
}

void loop() {
  for (int angle = 0; angle <= 180; angle++) {
    myServo.write(angle);
    delay(15);
  }
  for (int angle = 180; angle >= 0; angle--) {
    myServo.write(angle);
    delay(15);
  }
}

خط اول کتابخانه‌ی سروو را اضافه می‌کند. حلقه‌ی for زاویه را قدم‌به‌قدم از ۰ تا ۱۸۰ درجه می‌برد و برمی‌گرداند. سروو برای بازوی ربات، درِ خودکار و فرمان ماشین‌های کوچک استفاده می‌شود.

پروژه‌ی ۵: رادار ساده با سروو و سنسور فاصله

حالا دو پروژه‌ی قبل را با هم ترکیب می‌کنیم: سنسور فاصله را با چسب روی سروو ببندید تا با چرخیدن سروو، اطراف را «اسکن» کند. این بار Trig به پین ۱۰ و Echo به پین ۱۱ می‌رود و سروو روی پین ۹ می‌ماند.

#include <Servo.h>

const int trigPin = 10;
const int echoPin = 11;
Servo radarServo;

float readDistance() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // returns 0 if no echo arrives within 30 ms (nothing in range)
  long duration = pulseIn(echoPin, HIGH, 30000);
  return duration * 0.0343 / 2;
}

void scanTo(int from, int to, int step) {
  for (int angle = from; angle != to; angle += step) {
    radarServo.write(angle);
    delay(40);
    Serial.print(angle);
    Serial.print(",");
    Serial.println(readDistance());
  }
}

void setup() {
  Serial.begin(9600);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  radarServo.attach(9);
}

void loop() {
  scanTo(15, 165, 3);
  scanTo(165, 15, -3);
}

در Serial Monitor برای هر زاویه، فاصله‌ی نزدیک‌ترین جسم را می‌بینید. اگر از Serial Plotter (کنار Serial Monitor) استفاده کنید، همین عددها به نمودار تبدیل می‌شوند. قدم بعدی کسانی که این پروژه را دوست دارند، کشیدن صفحه‌ی رادار روی کامپیوتر با برنامه‌ای مثل Processing یا پایتون است.

اشتباه‌های رایج مبتدی‌ها

  • LED بدون مقاومت: LED و گاهی پین برد می‌سوزد. همیشه یک مقاومت ۲۲۰ اهمی سر راه LED بگذارید.
  • GND مشترک نیست: وقتی قطعه‌ای را با منبع تغذیه‌ی جدا روشن می‌کنید، GND آن باید به GND آردوینو هم وصل باشد؛ وگرنه رفتار عجیب می‌بینید.
  • موتور مستقیم روی پین: موتورهای DC و چند سروو با هم جریان زیادی می‌کشند. موتور DC را با درایور (مثل L298N) وصل کنید، نه مستقیم به پین.
  • اشتباه در انتخاب برد یا پورت: اگر آپلود خطا داد، اول بررسی کنید برد و پورت درست انتخاب شده باشند.
  • کپی کد بدون فهمیدن: کد آماده‌ی پروژه‌ها زیاد است، ولی تا وقتی خط‌به‌خط نفهمید، با کوچک‌ترین تغییر در مدار گیر می‌کنید.

بعد از این پنج پروژه چه یاد بگیرم؟

  1. نمایشگر LCD و کتابخانه‌ها: نشان دادن عدد سنسور روی صفحه، بدون نیاز به کامپیوتر.
  2. کار با زمان بدون delay: با millis() چند کار را هم‌زمان انجام دهید؛ مثلاً هم LED چشمک بزند و هم دکمه خوانده شود.
  3. وقفه و تایمر: واکنش فوری به یک اتفاق، مثل شمردن دور چرخ. این‌ها مباحث سطح متوسط‌اند و بعد از تسلط بر پایه‌ها معنی پیدا می‌کنند.
  4. ساخت ربات: ترکیب موتور، درایور و سنسور؛ مثلاً ربات مسیریاب یا ربات فرار از مانع.
  5. اینترنت اشیا: برد ESP32 با همان محیط آردوینو برنامه‌ریزی می‌شود و وای‌فای دارد؛ قدم بعدی برای خانه‌ی هوشمند.

آردوینو برای کودکان و نوجوانان

کار با آردوینو و ++C معمولاً از حدود ۱۲ سالگی، وقتی نوجوان کمی تجربه‌ی برنامه‌نویسی دارد، راحت‌تر است. برای بچه‌های کوچک‌تر بهتر است از کیت‌های آموزشی بلوکی شروع کنند. اگر برای فرزندتان دنبال شروع هستید، مقاله‌ی رباتیک کودکان چیست و آیا برای فرزند من مناسب است؟ و راهنمای خرید کیت رباتیک کودکان را ببینید.

خودآموز یا کلاس؟

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

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

سوالات رایج

آردوینو را می‌شود بدون دانش الکترونیک یاد گرفت؟

بله. همان‌قدر الکترونیک که لازم دارید، مثل مقاومت، ولتاژ و GND، در خود پروژه‌های اولیه یاد گرفته می‌شود. لازم نیست قبلش درس الکترونیک بخوانید.

چقدر طول می‌کشد تا بتوانم یک ربات بسازم؟

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

آردوینو اونو بخرم یا نانو؟

برای یادگیری، اونو. وقتی پروژه‌ی مشخصی داشتید که جا کم داشت، نانو بخرید؛ کد هر دو یکی است.

برای شروع حتماً باید برد بخرم؟

نه. با شبیه‌سازهای رایگان Tinkercad Circuits یا Wokwi می‌توانید چند هفته‌ی اول را بدون خرید قطعه پیش بروید و بعد تصمیم بگیرید.

رباتیک و آردوینو بزرگسالان
پیشنهاد ویژه یادگیری

رباتیک و آردوینو بزرگسالان

طراحی، ساخت و برنامه‌نویسی سیستم‌های تعبیه‌شده.

مشاهده دوره و ثبت‌نام

مقالات مرتبط

برچسب‌ها: #آموزش برنامه‌نویسی #داناورس

بحث و تبادل نظر 0 دیدگاه

💭

هنوز دیدگاهی ثبت نشده است. شما اولین نفر باشید!

مشاوره و پشتیبانی در واتس‌اپ