آموزش آردوینو

معرفی کامل پین اوت و امکانات برد آردوینو UNO R4 WiFi

Arduino UNO R4 WiFi یک جهش مهم برای جامعه سازندگان است که اتصال بی سیم را به فرم فاکتور کلاسیک UNO اضافه می کند. مانند مدل R4 Minima، این برد نشان دهنده گذار از معماری 8 بیت AVR (مثل ATmega328P در UNO R3) به یک اکوسیستم 32 بیت مبتنی بر Arm Cortex-M است.

UNO R4 WiFi از یک میکروکنترلر Renesas RA4M1 به همراه یک کوپروسسور ESP32-S3 استفاده می کند. ترکیب این دو باعث افزایش محسوس سرعت، حافظه و قابلیت ها شده و همزمان Wi Fi و Bluetooth Low Energy را به برد می افزاید.

علاوه بر امکانات بی سیم، R4 WiFi قابلیت های توسعه یافته پلتفرم R4 را حفظ کرده است؛ از جمله پشتیبانی از CAN، OPAMP داخلی، DAC و HID از طریق USB. برد همچنین امکانات خاصی مثل ماتریس LED 12×8 و کانکتور Qwiic را اضافه کرده است.

دوره آموزش آردوینو دوره آموزش ESP32 دوره آموزش اینترنت اشیا حرفه ای دوره آموزش AVR

این افزایش قابلیت ها با تغییرات مهمی در معماری تغذیه، دامنه سیگنال ها (تعامل بین سمت 5V میکروکنترلر RA4M1 و سمت 3.3V ماژول ESP32-S3) و محدودیت های جریان GPIO همراه است. اگر از UNO R3 مهاجرت می کنید، باید به دقت به پین اوت و محدودیت های جدید توجه کنید تا از آسیب یا رفتار غیرمنتظره جلوگیری شود.

پین اوت Arduino UNO R4 WiFi

UNO R4 WiFi در مجموع 35 پین دارد. نقشه کلی پین های برد به صورت زیر است:

نقشه پین های Arduino UNO R4 WiFi

در ادامه هر گروه پین و وظایف آن را بررسی می کنیم، ابتدا به پین های دیجیتال می پردازیم.

Digital I/O پین ها

برد شامل 14 پین دیجیتال است که با D0 تا D13 نام گذاری شده اند.

نمای نزدیک پین های دیجیتال D0 تا D13

این پین ها را می توان به عنوان ورودی یا خروجی پیکربندی کرد. در حالت ورودی، برد می تواند وضعیت یک کلید یا سیگنال دیجیتال را بخواند و در حالت خروجی می توان با آن LED یا درایور را کنترل کرد.

برای تنظیم حالت پین از تابع pinMode(pin, INPUT) یا pinMode(pin, OUTPUT) استفاده می شود. خواندن وضعیت با digitalRead(pin) و نوشتن سطح با digitalWrite(pin, HIGH) یا digitalWrite(pin, LOW) انجام می شود.

محدودیت های الکتریکی مهم:

  • سطح منطقی: 5V.
  • حداکثر جریان مجاز برای هر پین دیجیتال: 8 mA.
  • مجموع جریان قابل استفاده برای همه پین های دیجیتال: حداکثر 60 mA.

این محدودیت بسیار کمتر از AVRهای قدیمی مانند ATmega328P است که هر پین آنها معمولاً بین 20 تا 40 mA را تحمل می کرد. بنابراین در مهاجرت از UNO R3 باید از راننده های مناسب یا مقاومت محدودکننده جریان برای بارهای پرمصرف استفاده کنید. عبور جریان بیش از 8 mA ممکن است باعث افت ولتاژ یا آسیب دائمی به درایورهای خروجی میکروکنترلر شود.

مقاومت های پول آپ داخلی

هر پین دیجیتال در UNO R4 WiFi دارای یک مقاومت پول آپ داخلی است که در حالت ورودی و زمانی که پین باز است، باعث می شود پین به سطح HIGH کشیده شود و از شناوری جلوگیری کند. برای فعال کردن آن از pinMode(pin, INPUT_PULLUP) استفاده کنید. مقدار تقریبی این مقاومت معمولاً حدود 20 kΩ است، اما مقدار دقیق ثابت نیست.

Interrupt پین ها

پین های وقفه به شما اجازه می دهند که در واکنش به یک تغییر سطح یا لبه، فوراً یک تابع ویژه (ISR) اجرا شود بدون اینکه در حلقه اصلی برنامه دائما وضعیت پین را بررسی کنید.

UNO R4 WiFi دو وقفه خارجی اصلی دارد که روی پین های D2 و D3 قرار دارند.

پین های وقفه خارجی D2 و D3 برد

برد از چهار حالت تریگر برای وقفه پشتیبانی می کند که در جدول زیر آمده است:

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید
حالت شرط تریگر موارد استفاده متداول
RISING انتقال از LOW به HIGH تشخیص فشار کلید با پول داون
FALLING انتقال از HIGH به LOW تشخیص فشار کلید با پول آپ
CHANGE هر تغییر سطح (هر دو جهت) خواندن انکودر، شمارش پالس
LOW حالت سطح پایین ثابت رویدادهای سطح تحریک شده

برای راه اندازی وقفه از تابع attachInterrupt(interrupt, ISR, mode) استفاده می شود. عدد interrupt در Arduino کلاسیک به این صورت نگاشت می شود: interrupt 0 معادل پین دیجیتال 2 و interrupt 1 معادل پین دیجیتال 3 است.

نکته مهم: میکروکنترلر اصلی RA4M1 یک کنترلر وقفه مدرن به نام NVIC دارد که امکان پیکربندی وقفه روی تقریباً همه پین های دیجیتال و آنالوگ را فراهم می کند. با این حال کتابخانه های Arduino برای سادگی و سازگاری، معمولا بر رفتار آشنای پین های D2 و D3 تمرکز دارند.

PWM پین ها

پین های PWM سیگنال های دیجیتال با مدولاسیون عرض پالس تولید می کنند تا خروجی شبیه سازی شده آنالوگ داشته باشید. مفهوم کلیدی دوره کاری (duty cycle) است: درصد زمان HIGH در هر سیکل. تغییر دوره کاری میانگین ولتاژ را تغییر می دهد و برای کم و زیاد کردن نور LED، کنترل سرعت موتور و تولید تون صوتی ساده استفاده می شود.

پین های PWM رسمی روی برد: D3, D5, D6, D9, D10, D11. این پین ها با علامت تیلدا (~) روی برد مشخص شده اند.

پین های PWM با علامت تیلدا روی برد

توجه:

پین های D0, D1, D2, D4, D7, D8, D12, D13 و همچنین SDA و SCL از لحاظ سخت افزاری امکان تولید PWM دارند اما استفاده از آنها ممکن است با سایر عملکردهای برد تداخل کند و به همین دلیل به صورت رسمی پین PWM توصیه نمی شوند.

برای تولید PWM پین را به عنوان خروجی تعریف کرده و از analogWrite(pin, value) استفاده کنید. مقدار پیش فرض رزولوشن PWM برابر 8 بیت است، یعنی مقدار از 0 تا 255. برای سازگاری با کدهای قدیمی این حالت پیش فرض حفظ شده است.

UNO R4 WiFi امکان افزایش رزولوشن PWM تا 12 بیت را نیز فراهم می کند. با استفاده از analogWriteResolution() می توانید رزولوشن را تا 12 بیت افزایش دهید که دامنه مقادیر را تا 0 تا 4095 گسترش می دهد.

analogWriteResolution(12);  //Sets the PWM resolution to 12 bits
analogWriteResolution(8);   //Sets the PWM resolution to 8 bits (default)

ADC پین ها

پین های ورودی آنالوگ برای خواندن سیگنال های پیوسته ای که از سنسورها می آیند به کار می روند. برای تبدیل ولتاژ آنالوگ به مقدار عددی از مبدل آنالوگ به دیجیتال (ADC) داخلی استفاده می شود.

UNO R4 WiFi دارای شش پین آنالوگ A0 تا A5 است.

پین های آنالوگ A0 تا A5 روی برد

خواندن مقدار آنالوگ با analogRead(pin) انجام می شود که یک عدد صحیح باز می گرداند. رزولوشن پیش فرض ADC برای سازگاری با بردهای قدیمی برابر 10 بیت است، یعنی مقادیر از 0 تا 1023 و گام ولتاژ حدود 4.9 mV برای بازه 0 تا 5V.

UNO R4 WiFi امکان افزایش رزولوشن ADC تا 12 بیت یا حتی 14 بیت را فراهم می کند. در رزولوشن 14 بیت و بازه 5V، اندازه هر گام تقریبا 0.3 mV می شود. برای تغییر رزولوشن از analogReadResolution() در تابع setup استفاده کنید.

analogReadResolution(10); //(default)
analogReadResolution(12);
analogReadResolution(14);

نکته: پین های A0 تا A5 در صورت نیاز می توانند به عنوان پین دیجیتال نیز استفاده شوند.

تغییر ولتاژ مرجع آنالوگ

به صورت پیش فرض مرجع اندازه گیری ADC برابر 0 تا 5V (منبع 5V برد) است. برای دقت بالاتر هنگام اندازه گیری سیگنال های کم دامنه می توانید مرجع را تغییر دهید. برای این کار از پین AREF و تابع analogReference(type) استفاده کنید.

analogReference(AR_DEFAULT);   //Uses the default analog reference of 5V.
analogReference(AR_INTERNAL);  //Uses an internal reference voltage of 1.5V.
analogReference(AR_EXTERNAL);  //Uses an external reference voltage applied to the AREF pin.

پین DAC

UNO R4 WiFi دارای مبدل دیجیتال به آنالوگ است. برخلاف ADC که ولتاژ را به عدد تبدیل می کند، DAC عدد را به یک ولتاژ آنالوگ نرم تبدیل می کند. این قابلیت برای تولید موج های پیوسته، کنترل VCO در سینتی سایزرها یا ایجاد ولتاژ مرجع متغیر بسیار مفید است.

خروجی DAC روی پین A0 قرار دارد.

پین DAC روی A0 برای خروجی آنالوگ

برای استفاده از DAC همان تابع analogWrite(pin, value) به کار می رود.

analogWrite(pin, value);

رزولوشن پیش فرض DAC برابر 8 بیت است (0 تا 255). مقدار 0 تقریبا 0V و مقدار 255 تقریبا 5V تولید می کند و مقدار حدود 127 تقریبا 2.5V خواهد بود.

در کاربردهایی مثل صدا ممکن است رزولوشن 8 بیت کافی نباشد؛ UNO R4 WiFi امکان افزایش رزولوشن DAC تا 12 بیت را فراهم کرده است (مقادیر 0 تا 4095).

analogWriteResolution(12);

توجه کنید در صورتی که از A0 به عنوان خروجی DAC استفاده می کنید، دیگر همزمان نمی توانید آن را به عنوان ورودی آنالوگ برای خواندن سنسورها به کار ببرید.

OPAMP پین ها

یکی از قابلیت های قدرتمند R4 WiFi وجود آپ امپ داخلی است. میکروکنترلر Renesas RA4M1 چهار آپ امپ داخلی دارد ولی برد تنها یکی از آنها را به هدر آنالوگ بیرون کشیده است: A1 به عنوان ورودی مثبت (Non Inverting)، A2 به عنوان ورودی منفی (Inverting) و A3 به عنوان خروجی.

پین های OPAMP متصل به هدر آنالوگ

برای استفاده از آپ امپ باید کتابخانه OPAMP.h را در اسکچ اضافه و با OPAMP.begin(speed) آن را مقداردهی کنید. پارامتر speed می تواند OPAMP_SPEED_LOWSPEED برای مصرف کم یا OPAMP_SPEED_HIGHSPEED برای عملکرد سریع تر انتخاب شود.

#include <OPAMP.h>

void setup () {
  OPAMP.begin(OPAMP_SPEED_HIGHSPEED);
}

void loop() {
}

موارد کاربرد

مثال هایی که می توانید با آپ امپ داخلی پیاده کنید:

  • Voltage Follower یا بافر: اتصال A2 به A3 به صورت فیزیکی باعث می شود ولتاژ ورودی روی A1 در خروجی A3 بازتولید شود ولی با توان رانندگی بیشتر.
  • تقویت کننده ولتاژ: با قرار دادن مقاومت های 10k بین A2 و زمین و بین A3 و A2 می توانید تقویت دوبرابر برای سیگنال ورودی ایجاد کنید. مراقب باشید خروجی نباید بیش از تقریبا 4.7V شود زیرا کات یا بریده شدن سیگنال رخ می دهد و در موارد شدید ممکن است به برد آسیب برسد.
  • مقایسه گر (Comparator) و دیگر مدارهای آنالوگ مانند انتگرال گیر و مشتق گیر.

پین های لمسی خازنی (Capacitive Touch)

UNO R4 WiFi دارای 11 GPIO با قابلیت لمس خازنی است: D0, D1, D2, D3, D8, D9, D11, D13, A1, A2 و LOVE_BUTTON (پد قلبی شکل پشت برد).

پد لمسی قلب و پین های لمسی روی برد

این پین ها با اندازه گیری تغییرات خازن می توانند نزدیک شدن یک جسم هادی مانند انگشت را تشخیص دهند. می توانید مواد هادی مثل فویل آلومینیوم یا پارچه هادی را به پنل ها متصل کنید تا صفحه لمسی بسازید.

برای استفاده باید کتابخانه Arduino_CapacitiveTouch را نصب کنید. سپس یک شی از کلاس CapacitiveTouch بسازید و پین مورد نظر را مشخص کنید، در setup تابع begin() را صدا بزنید و با read() مقدار خام یا با isTouched() وضعیت لمس را بگیرید. حساسیت را با setThreshold(int threshold) می توان تنظیم کرد.

#include "Arduino_CapacitiveTouch.h"

CapacitiveTouch touchButton = CapacitiveTouch(D0);

void setup() {
  touchButton.begin();
  touchButton.setThreshold(2000);
}

void loop() {
  int sensorValue = touchButton.read();
  bool isTouched = touchButton.isTouched();
}

I2C پین ها و دو باس مجزا

یکی از بهبودهای مهم طراحی در UNO R4 WiFi وجود دو باس مجزای I2C است. این تصمیم برای حل مشکل سازگاری 5V و 3.3V اتخاذ شده تا احتمال آسیب به دستگاه های حساس کاهش یابد و امکان استفاده همزمان از هر دو نوع دستگاه فراهم شود.

باس قدیمی 5V

باس اول، باس 5V سنتی است. پین های SDA و SCL این باس به ترتیب روی A4 و A5 قرار دارند و همچنین در نزدیکی پین AREF قابل دسترسی اند. این باس برای سازگاری با شیلدها و ماژول های قدیمی 5V نگه داشته شده است.

آدرس 5V I2C روی پین های A4 و A5

به طور پیش فرض pull up روی خطوط I2C نصب نشده است، ولی روی برد پدهای لحیم وجود دارد که در صورت نیاز می توانید مقاومت های پول آپ را اضافه کنید.

پدهای لحیم برای افزودن مقاومت های پول آپ

نمونه استفاده با کتابخانه Wire:

#include <Wire.h>

void setup() {
  Wire.begin();

  Wire.beginTransmission(1);  //begin transmit to device 1
  Wire.write(byte(0x00));     //send instruction byte
  Wire.write(val);            //send a value
  Wire.endTransmission();     //stop transmit
}

void loop() {
}

باس Qwiic / STEMMA QT برای 3.3V

باس دوم روی کانکتور Qwiic/STEMMA QT قرار دارد و برای سنسورهای مدرن 3.3V طراحی شده است. این باس جدا از باس 5V است و از قرار گرفتن دستگاه های 3.3V در معرض سیگنال های 5V محافظت می کند، پس دیگر نیاز به مبدل سطح سیگنال برای استفاده همزمان از دستگاه های 3.3V و 5V نیست.

کانکتور Qwiic/STEMMA QT برای I2C 3.3V

برای استفاده از این باس باید از شی ثانویه Wire1 به جای Wire استفاده کنید. بقیه فرآیند مشابه است.

#include <Wire.h>

void setup() {
  Wire1.begin();  //join the second I2C bus

  Wire1.beginTransmission(1);  //begin transmit to device 1
  Wire1.write(byte(0x00));     //send instruction byte
  Wire1.write(val);            //send a value
  Wire1.endTransmission();     //stop transmit
}

void loop() {
}

SPI پین ها

UNO R4 WiFi همچنین از رابط SPI پشتیبانی می کند. SPI برای انتقال سریال سریعتر از I2C مناسب است و از خطوط جداگانه برای ارسال، دریافت و کلاک استفاده می کند.

پین های SPI COPI CIPO SCK و CS روی برد

توجه: برد از نامگذاری مدرن Controller/Peripheral برای SPI استفاده می کند به جای اصطلاحات قدیمی Master/Slave؛ عملکرد یکسان است.

پین های مرتبط: پین 11 با نام COPI (Controller Out, Peripheral In) معادل MOSI قدیمی، پین 12 با نام CIPO معادل MISO، پین 13 SCK و معمولاً پین 10 به عنوان CS (Chip Select) استفاده می شود. هدر ICSP نیز سیگنال های SPI را ارائه می کند و می توانید از آن یا پین های دیجیتال استاندارد برای SPI استفاده کنید.

#include <SPI.h>

const int CS = 10;

void setup() {
  pinMode(CS, OUTPUT);     // Set CS pin as output
  SPI.begin();             // Initialize SPI bus
  digitalWrite(CS, LOW);   // Pull CS low to start communication with the device
  SPI.transfer(0x00);      // Send a single byte (0x00) over SPI
  digitalWrite(CS, HIGH);  // Pull CS high to end communication
}

void loop() {
}

UART پین ها

UNO R4 WiFi نسبت به نسل قبل بهبود مهمی در زمینه UART دارد: دو UART سخت افزاری مجزا در برد وجود دارد.

  1. یکی از پورت ها از طریق USB-C در دسترس است (در کد با Serial کار می کند).
  2. دیگری از طریق پین های RX/TX دیجیتال ارائه می شود (در کد با Serial1 کار می کند).
پین های UART RX و TX و پورت USB-C

در UNO R3 پورت USB و پین های 0/1 به یک رابط سریال متصل بودند که امکان استفاده همزمان از مانیتور سریال و یک ماژول خارجی را دشوار می کرد. در R4 WiFi این دو رابط از هم جدا شده اند و می توانید همزمان دیباگ با کامپیوتر و ارتباط با دستگاه خارجی را انجام دهید.

برای پورت RX/TX باید در setup سرعت انتقال را با Serial1.begin(baud) تنظیم کنید. نمونه:

Serial1.begin(9600);

خواندن داده به صورت نمونه:

while (Serial1.available()) {
  delay(2);
  char c = Serial1.read();
  incoming += c;
}

و برای ارسال:

Serial1.write("Hello world!");

اگر نیاز به پورت سریال بیشتر دارید می توانید از کتابخانه SoftwareSerial استفاده کنید اما این پورت های نرم افزاری کندتر و پردازش گر محورتر هستند.

پین های CAN

UNO R4 WiFi از پروتکل CAN پشتیبانی می کند که پروتکلی مقاوم و رایج در خودرو و سیستم های صنعتی است و امکان ارتباط همتا به همتا روی یک باس مشترک را فراهم می کند.

برد شامل یک کنترلر CAN است که از استانداردهای CAN 2.0A و CAN 2.0B پشتیبانی می کند. سیگنال های CAN روی پین D4 برای TX و پین D5 برای RX در دسترس هستند.

پین های CAN TX و CAN RX روی برد

نکته مهم: برد تنها کنترلر CAN را دارد و ترانسیور سخت افزاری CAN را در خود ندارد. یعنی تبدیل سطح منطقی 5V به سیگنال تفاضلی CAN-H و CAN-L را باید با یک ترانسیور خارجی مانند MCP2551 یا TJA1050 انجام دهید.

برای استفاده از CAN کتابخانه Arduino_CAN را در اسکچ اضافه کنید و با CAN.begin(CanBitRate) نرخ بیت مناسب شبکه را انتخاب کنید. نرخ های رایج شامل 125 kbps، 250 kbps، 500 kbps و 1 Mbps هستند.

CAN.begin(CanBitRate::BR_125k);   //sets the bit rate to 125 kbps
CAN.begin(CanBitRate::BR_250k);   //sets the bit rate to 250 kbps
CAN.begin(CanBitRate::BR_500k);   //sets the bit rate to 500 kbps
CAN.begin(CanBitRate::BR_1000k);  //sets the bit rate to 1 Mbps

نمونه ارسال پیام CAN:

uint8_t const msg_data[] = {0xCA,0xFE,0,0,0,0,0,0};
memcpy((void *)(msg_data + 4), &msg_cnt, sizeof(msg_cnt));
CanMsg msg(CAN_ID, sizeof(msg_data), msg_data);
CAN.write(msg);

برای دریافت پیام ابتدا با CAN.available() بررسی کنید و سپس پیام را بخوانید:

if (CAN.available()) {
  CanMsg const msg = CAN.read();
  Serial.println(msg);
}

ICSP Header

هدر 6 پین ICSP در UNO R4 WiFi همان ظاهر شناخته شده را دارد اما عملکرد آن در مقایسه با UNO R3 تغییر کرده است.

هدر ICSP شش پین مشابه UNO قدیمی

در UNO R3، ICSP معمولا برای فلش کردن بووتلودر با برنامه نویس ISP و همچنین دسترسی به خطوط SPI استفاده می شد. در UNO R4 WiFi میکروکنترلرِ اصلی Renesas RA4M1 است که روش برنامه ریزی فلش مبتنی بر SPI را پشتیبانی نمی کند؛ این خانواده از میکروکنترلر دو روش برنامه ریزی اصلی دارد: SCI Boot Mode که از UART استفاده می کند و USB Boot Mode که از USB استفاده می کند. بنابراین ICSP در R4 WiFi بیشتر برای سازگاری با شیلدها و سخت افزارهایی که سیگنال های SPI را روی این کانکتور انتظار دارند حفظ شده است، نه برای پروگرام مستقیم فلش با ISP قدیمی.

ESP Header

برد یک هدر 2×3 کوچک نزدیک دکمه RESET دارد که دسترسی مستقیم و برنامه ریزی ESP32-S3 را ممکن می سازد. پین های این هدر عبارتند از:

  • GPIO42 – MTMS debugging
  • GPIO41 – MTDI debugging
  • GPIO43 (TXD0) – Serial Transmit (UART)
  • GPIO0 – Boot
  • GPIO44 (RXD0) – Serial Receive (UART)
  • GND – Ground
هدر 2x3 برای دسترسی مستقیم به ESP32-S3

هشدار مهم: همه این سیگنال ها در سطح 3.3V عمل می کنند و ESP32-S3 5V tolerant نیست. اتصال تصادفی هر یک از این پین ها به سیگنال 5V می تواند باعث خراب شدن ESP32-S3 شود.

ماتریس LED داخلی

یکی از ویژگی های متمایز UNO R4 WiFi ماتریس LED داخلی 12×8 است که شامل 96 LED قرمز کوچک در 12 ستون و 8 ردیف می شود. می توان روی آن الگوها، متن اسکرول شونده، انیمیشن یا بازی های ساده نمایش داد.

ماتریس LED داخلی 12x8 روی برد Arduino

تمام LED ها با تکنیکی به نام Charlieplexing کنترل می شوند که اجازه می دهد با تعداد پین کمتر، کنترل تعداد زیادی LED فراهم شود. روش کار با تغییر جهت جریان از طریق پین ها و زمان بندی مناسب است تا فقط LED مورد نظر روشن شود.

برای استفاده از ماتریس باید کتابخانه Arduino_LED_Matrix را اضافه کنید، یک شی ماتریس بسازید، فریم ها را به صورت آرایه های دوتایی تعریف و سپس با begin() و renderBitmap() نمایش را کنترل کنید. مثال نمایش یک قلب:

#include "Arduino_LED_Matrix.h"

ArduinoLEDMatrix matrix;

byte heart[8][12] = {
  { 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0 },
  { 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
  { 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 },
  { 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
  { 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
};

void setup() {
  Serial.begin(115200);
  matrix.begin();
}

void loop() {
  matrix.renderBitmap(heart, 8, 12);
}

پین های تغذیه

UNO R4 WiFi مجموعه ای از پین های تغذیه را ارائه می دهد که هم برد را تغذیه می کنند و هم می توانند برای تغذیه سنسورها و ماژول های خارجی استفاده شوند.

نمای پین های تغذیه VIN 5V 3.3V روی برد

برای تصویرسازی جریان تغذیه یک دیاگرام ساده درخت تغذیه وجود دارد:

بلوک دیاگرام ساده درخت تغذیه برد Arduino

VIN

پین VIN به شما اجازه می دهد برد را با منبع تغذیه خارجی مثل آداپتور یا باتری تغذیه کنید. بازه ولتاژی ورودی برای VIN معمولاً بین 6V تا 24V است. ولتاژ ورودی از یک مبدل کاهنده DC DC (ISL854102FRZ) به ولتاژ 5V تنظیم می شود که سپس RA4M1 و بخش های دیگر برد را تغذیه می کند. VIN با جک بارل نیز مشترک است، یعنی وقتی از جک بارل تغذیه می کنید همان ولتاژ در دسترس VIN نیز قرار می گیرد.

5V

پین 5V یک خروجی 5 ولت رگوله شده فراهم می کند که برای تغذیه سنسورها و ماژول های اکسترنال مناسب است. مقدار جریان قابل ارائه به این پین بستگی به روش تغذیه برد دارد:

  1. اگر برد از طریق VIN یا جک بارل تغذیه شود، مبدل کاهنده داخلی فعال است و پین 5V می تواند در حدود 1.2 آمپر به برد و لوازم متصل تامین کند.
  2. اگر برد از طریق USB-C تغذیه شود، مبدل کاهنده بای پس می شود و حداکثر جریان قابل دسترس به منبع USB بستگی دارد و می تواند تا حدود 2 آمپر باشد (بسته به منبع USB).

برای بارهای خیلی جریان کش مانند سرووها بهتر است منبع تغذیه جداگانه و مناسب در نظر بگیرید و به پین 5V برد اتکا نکنید.

نکته: وقتی برد از طریق USB تغذیه می شود ولتاژ روی پین 5V کمی کمتر است، معمولاً حدود 4.7V به دلیل افت ولتاژ روی دیود محافظ شاتکی.

3.3V

پین 3.3V یک خروجی 3.3 ولت رگوله شده ارائه می کند که از طریق یک LDO ثانویه SGM2205 از 5V به دست می آید. ریل 3.3V ماژول ESP32-S3، کانکتور Qwiic و سنسورهای 3.3V را تغذیه می کند. مراقب باشید که بیش از حد بار روی این ریل نگذارید، زیرا ESP32-S3 هنگام ارسال بسته های Wi Fi ضربه جریان می زند و اگر بار خارجی زیادی از ریل 3.3V کشیده شود امکان افت ولتاژ، brownout و ناپایداری ارتباط وجود دارد.

پین های OFF و VRTC

UNO R4 WiFi دو پین جدید ارائه می کند که در بردهای UNO قبلی وجود نداشتند: OFF و VRTC. این پین ها کنترل بیشتری روی مدیریت توان و ساعت زمان واقعی (RTC) فراهم می کنند.

پین های OFF و VRTC نزدیک جک بارل

OFF

پین OFF یک کنترل خاموش کردن فعال پایین (active low) است. اتصال OFF به زمین باعث قطع عملکرد مبدل کاهنده 5V و خاموش شدن برد می شود. این امکان برای پروژه های کم مصرف مبتنی بر باتری بسیار مفید است: یک مدار تایمر کم توان می تواند OFF را پایین بکشد تا برد برای چند ساعت خاموش بماند و سپس آن را رها کند تا برد روشن شده و عملیات لازم را انجام دهد.

توجه: پین OFF تنها زمانی کار می کند که برد از طریق VIN یا جک بارل تغذیه شود. در حالت تغذیه از USB-C ریل 5V مستقیماً از منبع USB می آید و OFF تاثیری نخواهد داشت.

VRTC

VRTC مربوط به ساعت زمان واقعی داخلی برد است. UNO R4 WiFi یک RTC داخلی دارد که زمان را دنبال می کند و برای پروژه های ثبت داده نیازی به ماژول RTC خارجی مثل DS3231 ندارید. اگر تغذیه اصلی برد قطع شود RTC به طور پیش فرض متوقف می شود. با اتصال یک منبع پشتیبان کوچک مثل باتری سکه ای CR2032 یا یک سوپرکپاسیتور به پین VRTC می توانید زمان RTC را در صورت قطع برق اصلی حفظ کنید. بازه ولتاژ قابل قبول برای VRTC بین 1.6V تا 3.6V است.

جمع بندی کوتاه

Arduino UNO R4 WiFi ترکیبی از یک میکروکنترلر 32 بیت قدرتمند و یک ماژول ESP32-S3 است که علاوه بر اتصال بی سیم، امکانات آنالوگ و دیجیتال پیشرفته ای مثل DAC، OPAMP داخلی، دو باس I2C جداگانه، CAN و ماتریس LED داخلی را فراهم می کند. با این حال احتیاط در مورد محدودیت های جریان GPIO، دامنه ولتاژهای 3.3V در سمت ESP و نحوه تامین تغذیه برد ضروری است تا از آسیب دیدن ماژول ها و عملکرد ناپایدار جلوگیری شود.

نظر خود را اعلام کنید

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید قرار بدهم. سوالات مربوط به این مطلب را در قسمت نظرات همین مطلب اعلام کنید. سعی میکنم در اسرع وقت به نظرات شما پاسخ بدهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *