معرفی آردوینو Arduino UNO
آردوینو یک بسته سخت افزاری/نرم افزاری متن باز است که برای ساخت پروژههای الکترونیکی استفاده میشود. این بسته شامل یک برد کامپیوتری با پردازنده ATmega328P و یک محیط برنامهنویسی مبتنی بر زبان سی و سی پلاس پلاس میشود. برد آردوینو معمولاً به عنوان یک برد توسعهیافته برای ساخت پروژههای الکترونیکی با استفاده از میکروکنترلرهای AVR و ARM استفاده میشود.برد آردوینو با پردازنده ATmega328P که یک پردازنده 8 بیتی است، به سرعتی بیشتر از بسیاری از میکروکنترلرهای دیگر کار میکند.برد آردوینو میتواند با استفاده از افزونههایی مانند شیلد Ethernet به اینترنت متصل شود و از طریق اینترنت با سایر دستگاهها ارتباط برقرار کند. برد آردوینو دارای ورودیها و خروجیهای مختلفی است که میتواند با دستگاههای مانند سنسورها، رلهها و سرووموتورها ارتباط برقرار کند. محیط برنامهنویسی آردوینو برای برنامهنویسی با زبان سی و سی پلاس پلاس طراحی شده است. این محیط بسیار ساده و کاربرپسند است و به کاربران کمک میکند تا پروژههای خود را با سرعت بیشتری توسعه دهند.
ویژگی های برد آردوینو UNO
- پردازنده: ATmega328P
- ولتاژ کاری: 5 ولت
- ولتاژ ورودی: 7 تا 12 ولت
- ولتاژ ورودی حداکثر: 20 ولت (با استفاده از جک تغذیه خارجی)
- جریان خروجی دیجیتال: 20 میلی آمپر برای هر پین
- جریان خروجی آنالوگ: 50 میلی آمپر برای هر پین
- پینهای دیجیتال: 14 (از جمله 6 پین با قابلیت PWM)
- پینهای آنالوگ: 6
- حافظه فلش: 32 کیلوبایت (از جمله 0.5 کیلوبایت برای بوتلودر)
- SRAM: 2 کیلوبایت
- EEPROM: 1 کیلوبایت
- سرعت بالای انتقال سریال: 9600 تا 115200 بیت بر ثانیه
- ابعاد: 68.6 × 53.4 میلیمتر
- وزن: 25 گرم
بررسی پایه های برد آردوینو UNO
برد آردوینو Uno دارای پایههایی است که به عنوان ورودی یا خروجی برای ارتباط با دستگاههای خارجی یا اتصال سنسورها و ماژولهای الکترونیکی به برد استفاده میشوند. پایههای آنالوگ برای اتصال سنسورهای آنالوگ به برد استفاده میشوند و برای اینکه میتواند مقادیر آنالوگ را اندازه گیری کند، به تبدیل آنالوگ به دیجیتال (ADC) مجهز است. پایههای آنالوگ برد Uno از A0 تا A5 شمارهگذاری شدهاند.پایههای دیجیتال برای ارتباط با دستگاههای دیجیتال و کنترل خروجیهای دیجیتالی استفاده میشوند. همچنین برای استفاده از PWM برای کنترل سرعت موتورها و روشنایی LED ها نیز مورد استفاده قرار میگیرند. پایههای دیجیتال برد Uno از D0 تا D13 شمارهگذاری شدهاند.پایههای تغذیه برای اتصال منبع تغذیه به برد و تامین برق لازم برای برد و قطعات وابسته به آن مورد استفاده قرار میگیرند. پایه تغذیه برد Uno از VIN و GND شمارهگذاری شدهاند.پایههای ارتباطی برای ارتباط با دستگاههایی مانند سریال (Serial)، SPI و I2C استفاده میشوند. پایههای ارتباطی برد Uno شامل RX و TX برای ارتباط سریال و پایههای SDA و SCL برای ارتباط با شبکههای I2C و پایههای MOSI، MISO و SCK برای ارتباط با دستگاههایی مانند SPI کار میکنند.
به همراه آردوینو جه اقلامی باید خریداری شود؟
کیت آردوینوباکس با هدف یادگیری آردوینو Arduino و اجرای پروژه های کاربردی برای یادگیری برنامه نویسی و فانکشن های آردوینو طراحی شده است. یادگیری آردوینو وابسته به دانش برنامه نویسی سی پلاس پلاس است. اما آموزش پروژه محور در یادگیری آردوینو تاثیر به سزایی دارد. در این کیت از برد آردوینو ARDUINO UNO R3 به همراه شیلد پروتوتایپ برای آردوینو قرار گرفته شده است. مزیت استفاده از شیلد پروتوتایپ در 5 عدد پایه VCC , GND است که تا 5 سنسور را میتوانید به شیلد برای اتصال تغذیه متصل کنید.
- برد آردوینو ARDUINO UNO R3
- شیلد پروتوتایپ آردوینو
در این کیت از 15 سنسور با ماهیت و کاربری متفاوت استفاده شده است تا تجربه ی استفاده از انواع پروتکل های کاربردی در برنامه نویسی آردوینو را آغاز و تمرین کنید. سنسورهای قرار گرفته شده در کیت به صورت زیر است.
- سنسور دما رطوبت DHT11
- سنسور مادون قرمز IR FC-51
- سنسور تاچ TOUCH
- سنسور آلتراسونیک
- سنسور میکروفن
- سنسور فتوسل
- سرو موتور SG90
برای نمایش داده های دریافتی از هر سنسور یک نمایشگر OLED با درایور SSD1306 در کیت قرار گرفته شده است. ابعاد نمایشگر 0.96 اینچ است و کتابخانه روش نصب تا اجرا از آردوینو پشتیبانی میکند.
- نمایشگر OLED SSD1306
تجهیزات جانبی کیت آردوینوباکس شامل یک عدد کابل نری به مادگی 10 سانتی متری، یک عدد مینی بردبورد و کابل تایپ B مخصوص آردوینو و جعبه مخصوص برای نگهداری قطعات است. در صورت نیاز همراه با کیت پک 3 عددی کابل فلت 20 سانتی متری تهیه کنید.
- مینی برد بورد رنگی
- پک 3 عددی کابل فلت 20 سانتی متری
- کابل USB TO TYPE B
- جعبه مخصوص نگهداری قطعات
یک فایل پی دی اف PDF برای آموزش راه اندازی قطعات همراه با کیت ارائه داده شده است. با انتخاب گزینه همراه با فایل پی دی اف آموزش های لازم برای شروع کار و روش استفاده از سنسورها در اختیار کاربران قرار گرفته میشود.
راه اندازی سنسور DHT11 با آردوینو
در این کد، ابتدا کتابخانه DHT را اضافه میکنیم که امکان ارتباط با سنسور DHT11 را فراهم میکند. سپس پین دیجیتالی به کدام سنسور DHT11 متصل است را تعریف میکنیم و یک شی DHT برای برقراری ارتباط با سنسور ایجاد میکنیم.در تابع setup()، ارتباط سریال با سرعت baud 9600 را برای اهداف اشکال زدایی اولیه ایجاد میکنیم.در تابع loop()، تابع read11() شی DHT را صدا میزنیم تا دادهها از سنسور خوانده شوند. سپس مقادیر رطوبت و دما را با استفاده از توابع Serial.print() و Serial.println() در مانیتور سریال چاپ میکنیم.در نهایت، با استفاده از تابع delay()، به اندازه 2 ثانیه منتظر میمانیم تا دادههای جدیدی از سنسور خوانده شوند.
#include <dht.h>
#define DHTPIN 2 // Define the digital pin to which the DHT11 is connected
dht DHT; // Create a DHT object to communicate with the sensor
void setup() {
Serial.begin(9600); // Initialize serial communication for debugging
}
void loop() {
int chk = DHT.read11(DHTPIN); // Read data from the DHT11 sensor
Serial.print("Humidity: "); // Print the humidity value
Serial.print(DHT.humidity);
Serial.print("%");
Serial.print(" | Temperature: "); // Print the temperature value
Serial.print(DHT.temperature);
Serial.println("°C");
delay(2000); // Wait for 2 seconds before taking the next reading
}
راه اندازی سنسور فاصله سنج SRF04 با آردوینو
در این کد، ابتدا پایه های دیجیتالی که پین تریگر و اکو سنسور SRF04 به آنها وصل شدهاند را تعریف میکنیم. تابع setup()، ابتدا ارتباط سریال با سرعت بودریت 9600 برای اهداف اشکالزدایی را مقداردهی اولیه میکنیم. سپس پین تریگر را به عنوان یک خروجی و پین اکو را به عنوان یک ورودی تعریف میکنیم.در تابع loop()، ابتدا دو متغیر برای ذخیره مقدار زمان و فاصله تعریف میکنیم. سپس با تنظیم پین تریگر به مدت 10 میکروثانیه به حالت بالا و سپس دوباره به حالت پایین، سیگنال تریگر را به سنسور SRF04 ارسال میکنیم. سپس از تابع pulseIn() برای خواندن طول پالس اکو استفاده میکنیم که زمانی که سیگنال اولتراسونیک از سنسور به شیء و برگشت به سنسور سفر میکند را برای ما محاسبه میکند. این زمان را میتوانیم برای محاسبه فاصله تا شیء به سانتیمتر استفاده کنیم.در نهایت، با استفاده از توابع Serial.print() و Serial.println()، مقدار فاصله را به مانیتور سریال چاپ میکنیم. ما یک تابع delay() را هم اضافه میکنیم تا 1 ثانیه قبل از گرفتن خواندنی بعدی از سنسور منتظر بمانیم.
#define trigPin 9 // Define the digital pin for the trigger pin of the SRF04 sensor
#define echoPin 10 // Define the digital pin for the echo pin of the SRF04 sensor
void setup() {
Serial.begin(9600); // Initialize serial communication for debugging
pinMode(trigPin, OUTPUT); // Set the trigger pin as an output
pinMode(echoPin, INPUT); // Set the echo pin as an input
}
void loop() {
long duration, distance; // Define variables to store the duration and distance values
digitalWrite(trigPin, LOW); // Set the trigger pin to low for 2 microseconds
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Set the trigger pin to high for 10 microseconds
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // Set the trigger pin to low again
duration = pulseIn(echoPin, HIGH); // Read the duration of the echo pulse
distance = duration / 58.2; // Calculate the distance in centimeters
Serial.print("Distance: "); // Print the distance value to the serial monitor
Serial.print(distance);
Serial.println(" cm");
delay(1000); // Wait for 1 second before taking the next reading
}
راه اندازی سنسور تاچ با آردوینو
در این کد، ابتدا پین دیجیتالی مورد نیاز برای اتصال سنسور لمسی تعریف شده و یک متغیر جهت ذخیره وضعیت سنسور تعریف میشود.در تابع loop()، با استفاده از تابع digitalRead() وضعیت سنسور تاچ را خوانده و پس از تاچ سنسور (یعنی وضعیت آن برابر با HIGH باشد) با استفاده از تابع Serial.println() یک پیام را به سریال مانیتور چاپ میکنیم. سپس با اضافه کردن تابع delay() به مدت 100 میلی ثانیه، منتظر میمانیم تا مجدد وضعیت سنسور تاچ را بخوانیم.
const int touchPin = 2; // Define touch sensor pin
int touchState = 0; // Initialize touch state variable
void setup() {
Serial.begin(9600); // Initialize serial communication
pinMode(touchPin, INPUT); // Set touch pin as input
}
void loop() {
touchState = digitalRead(touchPin); // Read the touch sensor state
if (touchState == HIGH) { // If touch sensor is pressed
Serial.println("Touch sensor is pressed!"); // Print message to serial monitor
}
delay(100); // Wait for 100 milliseconds before checking again
}
راه اندازی نمایشگر OLED با آردوینو
در این کد کتابخانه های Adafruit_GFX.h و Adafruit_SSD1306.h فراخوانی میکنیم. ما پین OLED_RESET را به پین 4 تعریف می کنیم و همچنین عرض و ارتفاع صفحه نمایش را تعریف می کنیم.در تابع setup()، ما با استفاده از تابع begin() صفحه نمایش را مقداردهی اولیه می کنیم و با استفاده از تابع clearDisplay() بافر نمایش را پاک می کنیم. سپس اندازه و رنگ متن را با استفاده از توابع setTextSize() و setTextColor() تنظیم می کنیم. ما موقعیت نشانگر را با استفاده از تابع setCursor() تعیین می کنیم و "سلام" و "دنیا!" را در خطوط جداگانه با استفاده از تابع println() چاپ می کنیم.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
// Initialize the OLED display
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
// Clear the display buffer
display.clearDisplay();
// Set the text size and color
display.setTextSize(1);
display.setTextColor(WHITE);
// Display a welcome message
display.setCursor(0, 0);
display.println("Hello,");
display.setCursor(0, 10);
display.println("world!");
display.display();
}
void loop() {
// Do nothing in the loop
}
راه اندازی سرو موتور SG90 با آردوینو
جهت راه اندازی سرو موتور در ابتدا کتابخانه را فراخوانی میکنیم. سپس برنامه ای مینویسیم که سرو در حرکت اول از زاویه 0 تا زاویه 180 درجه شافت آن تغییر کند و سپس از زاویه 180 به زاویه 0 بازگردد. این حرکت با تاخیر 15 میلی ثانیه مدام تکرار میشود.
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
}
راه اندازی سنسور مادون قرمز FC51 با آردوینو
در این کد، پینهای دیجیتالی که خروجی سنسور FC-51 و LED به آنها متصل شدهاند، تعریف میشوند. ما ارتباط سریال را در سرعت بودریت ۹۶۰۰ برقرار میکنیم.در تابع حلقه، از تابع digitalRead() برای خواندن وضعیت سنسور FC-51 استفاده میکنیم. اگر سنسور فعال شود (یعنی وضعیت آن برابر با HIGH باشد)، LED را روشن میکنیم و پیامی را به مانیتور سریال چاپ میکنیم. اگر سنسور فعال نشود، LED را خاموش میکنیم. همچنین، ۱۰۰ میلی ثانیه تاخیر اضافه میکنیم تا شناساییهای چندگانه را جلوگیری کنیم.
int ledPin = 13; // LED connected to digital pin 13
int sensorPin = 2; // FC-51 sensor output connected to digital pin 2
int sensorState; // variable to store the sensor state
void setup() {
pinMode(ledPin, OUTPUT); // set the LED pin as an output
pinMode(sensorPin, INPUT); // set the sensor pin as an input
Serial.begin(9600); // initialize serial communication
}
void loop() {
sensorState = digitalRead(sensorPin); // read the sensor state
if (sensorState == HIGH) { // if the sensor is triggered
digitalWrite(ledPin, HIGH); // turn on the LED
Serial.println("Motion detected!"); // print a message to the serial monitor
} else { // if the sensor is not triggered
digitalWrite(ledPin, LOW); // turn off the LED
}
delay(100); // delay to avoid multiple detections
}
راه اندازی سنسور میکروفن با آردوینو
در این کد، ابتدا پین ورودی آنالوگی را که سنسور میکروفون به آن متصل شده است تعریف می کنیم. همچنین مقدار آستانه برای تشخیص، که می تواند با توجه به حساسیت میکروفون تنظیم شود، تعیین می کنیم.در تابع setup()، برای اهداف اشکال زدایی، ارتباط سریال با سرعت بودری 9600 را مقدار دهی اولیه می کنیم.در تابع loop()، مقدار آنالوگی از میکروفون با استفاده از تابع analogRead() خوانده می شود. اگر مقدار بالاتر از آستانه باشد، با استفاده از تابع Serial.println() پیامی را به مانیتور سریال چاپ می کنیم. ما تابع delay() را اضافه می کنیم تا نصف ثانیه قبل از تشخیص صدا دیگر منتظر بمانیم. این تاخیر می تواند برای تغییر نرخ تشخیص تنظیم شود.
const int MIC_PIN = A0; // define the analog input pin for microphone
int threshold = 550; // set the threshold value for detection
void setup() {
Serial.begin(9600); // initialize serial communication at 9600 bits per second
}
void loop() {
int micValue = analogRead(MIC_PIN); // read the analog value from the microphone
if (micValue > threshold) { // if the value is above the threshold
Serial.println("Sound detected!"); // print a message to the serial monitor
delay(500); // wait for half a second before detecting again
}
}
راه اندازی سنسور فتوسل با آردوینو
در این کد، ابتدا پین ورودی آنالوگی که حسگر میکروفون به آن متصل شده است را تعریف میکنیم. همچنین، یک مقدار آستانه برای تشخیص تندی صدا تعیین میکنیم که میتواند با توجه به حساسیت میکروفون تنظیم شود.در تابع setup()، ارتباط سریال با سرعت baud rate 9600 برای اهداف اشکال زدایی را شروع میکنیم.در تابع loop()، با استفاده از تابع analogRead() مقدار آنالوگ از میکروفون را میخوانیم. اگر مقدار بالاتر از آستانه باشد، با استفاده از تابع Serial.println() پیامی را در مانیتور سریال چاپ میکنیم. ما تابع delay() را برای صبر نیم ثانیه قبل از شناسایی مجدد صدا اضافه میکنیم. این تاخیر میتواند برای تغییر نرخ تشخیص استفاده شود.
const int MIC_PIN = A0; // define the analog input pin for microphone
int threshold = 550; // set the threshold value for detection
void setup() {
Serial.begin(9600); // initialize serial communication at 9600 bits per second
}
void loop() {
int micValue = analogRead(MIC_PIN); // read the analog value from the microphone
if (micValue > threshold) { // if the value is above the threshold
Serial.println("Sound detected!"); // print a message to the serial monitor
delay(500); // wait for half a second before detecting again
}
}
راه اندازی ال ای دی و میکروسوییچ با آردوینو
در این کد، ابتدا پینهایی که سوییچ و LED به آنها متصل هستند را تعریف میکنیم و وضعیت سوییچ را خاموش مقداردهی اولیه میکنیم. در تابع setup()، پین سوییچ را با مقاومت داخلی pull-up به عنوان ورودی تنظیم میکنیم، پین LED را به عنوان خروجی تعریف کرده و ارتباط سریال را مقداردهی اولیه میکنیم.در تابع loop()، با استفاده از تابع digitalRead() وضعیت سوییچ را خوانده و اگر سوییچ فشرده شده باشد (یعنی وضعیت آن HIGH باشد) با استفاده از تابع digitalWrite() LED را روشن میکنیم و با استفاده از تابع Serial.println() یک پیام به مانیتور سریال چاپ میکنیم. در صورتی که سوییچ فشرده نباشد، با استفاده از تابع digitalWrite() LED را خاموش میکنیم.
const int SWITCH_PIN = 2; // connect switch to pin 2
const int LED_PIN = 3; // connect LED to pin 3
bool switchState = false; // initialize switch state as off
void setup() {
pinMode(SWITCH_PIN, INPUT_PULLUP); // set switch pin as input with internal pullup resistor
pinMode(LED_PIN, OUTPUT); // set LED pin as output
Serial.begin(9600); // initialize serial communication
}
void loop() {
switchState = digitalRead(SWITCH_PIN); // read the state of the switch
if (switchState == HIGH) { // if the switch is pressed
digitalWrite(LED_PIN, HIGH); // turn on the LED
Serial.println("Switch is pressed!"); // print a message to the serial monitor
} else { // if the switch is not pressed
digitalWrite(LED_PIN, LOW); // turn off the LED
}
}
آیا آردوینو فقط مصرف آموزشی دارد یا در صنعت هم قابل استفاده است؟
این سوال چالشی ترین سوال تا به امروز است. کسانی که از ابتدا در مسیر تولید و طراحی بردهای الکترونیکی بوده اند با ساختار چنین بردهایی با ابهامات زیادی رو به رو هستند و چالش های زیادی را در این مسیر مشاهده میکنند. اما نباید هدف اصلی طراحی این بردها را فراموش کرد. در سال 2022 هستیم و تا همین امروز کمپانی آردوینو جدیدترین بردش را در PLC معرفی کرده است. برد جدید با نام OPTA اولین micro PLC با ظرفیت Industrial IoT است که ورود به دنیای صنعتی را به صورت رسمی آغاز کرده است. این برد از LD , FBD در رده فوق صنعتی بهره برده است. دیگر بردهای خانواده آردوینو با نام NANO 33 با هدف اجرای پروژه های اینترنت اشیا IoT طراحی شده است و با تمامی پلتفرم های IoT سازگاری دارد و اکثرا در ساخت بردها از سنسورهای داخلی قدرتمندی استفاده شده است.
از کجا آردوینو را یاد بگیرم؟
برای یادگیری آردوینو بایستی علاقه به الکترونیک و برنامه نویسی را داشته باشید تا بتوانید در اجرای پروژه ها قدم بردارید. قطعا در ابتدای مسیر تمامی مباحث برای شما جدید خواهد بود. هدف فقط نمایش داده نیست! طی کردن مسیر ایده تا اجرا جذابیت عمیقی دارد. نمایش خطا در کدنویسی شاید ناخوشایند باشد اما در پس هر خطا یک درس جدید نهفته است. شاید اتصالات ماژول ها و سنسورها پیچیده و ترسناک ( ترس خراب شدن ) باشد اما با یادگیری هر اتصال یک درس الکترونیکی یاد میگیریم پس نباید این فرصت یادگیری را از خود دریغ کنیم. این حرکت یک اقدام دو طرفه است و باید با هم در یک راستا حرکت کنیم.ما در خط پایان ایستاده ایم و در این «مسیر کدنویسی تا الکترونیک» در کنار شما مثل یک مربی هستیم . تلاش میکنیم تا تجربه ی متفاوتی را برای یادگیری کسب کنید. به همین دلیل تیم دیجی اسپارک با تجربه ای پس از سال ها برگزاری دوره های آردوینو به صورت حضوری در دانشگاه ها و آموزشگاه های خصوصی تا آموزش به صورت برخط ( آنلاین ) از سراسر ایران آموزش های متعددی را به زبان فارسی برای شما تولید کرده است تا بتوانید هر زمان در هر موقعیتی برای یادگیری اقدام کنید. تمامی آموزش ها در لینک زیر قرار گرفته شده است و به صورت رایگان به آن ها دسترسی دارید.
مشخصات
- کاربری
- مناسب برای استفاده شخصی
- سطح تجربه مورد نیاز
- مبتدی
- نوع ال ای دی
- ال ای دی 5 میلی متری
- ولتاژ مورد نياز
- 5 ولت USB
- طول کابل
- 10 سانتی متری
- تعداد پایه ها
- دارای 14 پایه دیجیتال و 6 پایه آنالوگ
- میکروفن
- دارد
- سنسور
- IR, LDR, Ultrasonic, Microphone, Touch
- ارتباط UART
- دارد
- پردازنده
- ARM
- معماری پردازنده
- Atmega328P
- موتور
- دارای سرو موتور
- وضعیت لوازم جانبی
- کابل و مینی برد بورد
- نوع LCD
- OLED SSD1306
- سنسور IR
- دارد
- بیزر Buzzer
- دارد
- آموزش راه اندازی
- دارای آموزش راه اندازی (خودآموز)
- فرمت آموزش
- آموزش متنی PDF
- نوع کیت
- بر پایه برد Arduino
- نسخه آردوینو
- آردوینو Uno
- نوع نمایشگر
- نمایشگر OLED
نظر دهید