آردوینومتوسط۹ دقیقه مطالعهArduino IDE 2.x / ESP32 Arduino Core

آشنایی با برد ESP32

ESP32 چیست و چه فرقی با Uno دارد؛ نصب هستهٔ رسمی Espressif در Arduino IDE، نخستین اسکچ چشمک‌زن، اسکن شبکه‌های وای‌فای و ریسک منطق 3.3 ولتی.

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

  • جایگاه ESP32 و تفاوت‌های آن با Uno را در جدول مقایسه توضیح دهید
  • هستهٔ رسمی Espressif را در Arduino IDE نصب و یک برد توسعه را انتخاب کنید
  • خطر ولتاژ 5 ولت روی GPIOهای 3.3 ولتی را در مدارهای خود رعایت کنید
نویسنده: تیم داکنامه · بازبینی: ۲۰۲۶-۱۰-۳۱
فهرست مطالب

همهٔ این مدت با Uno کار کرده‌اید: بردی قوی برای یادگیری، اما بدون وای‌فای و بلوتوث و با پردازندهٔ ۱۶ مگاهرتزی. برد ESP32 — ساختهٔ شرکت Espressif Systems و نه یک محصول رسمی آردوینو — گام بعدی همین مسیر است: میکروکنترلری دومنظوره و دوهسته‌ای با وای‌فای و بلوتوث داخلی که به‌طرز شگفت‌آوری ارزان است. خبر خوب این است که می‌توانید آن را با همان Arduino IDE و با همان زبان C++ برنامه‌ریزی کنید؛ خبر مهم این است که ESP32 چند تفاوت جدی دارد — به‌ویژه ولتاژ منطقی 3.3 ولت — که اگر نشناسید، برد را می‌سوزانید. این درس، دروازهٔ ماژول بی‌سیم شما به دنیای پروژه‌های متصل است.

ESP32 چیست و چه فرقی با Uno دارد؟

ESP32 خانواده‌ای از میکروکنترلرهای شرکت Espressif Systems است — همان سازندهٔ محبوب ESP8266. این میکروکنترلر وای‌فای و بلوتوث را روی خود چیپ دارد و برای پروژه‌های «اینترنت اشیا» (IoT) طراحی شده. برد توسعهٔ آن — معمولاً DevKit با چیپ ESP32-WROOM — را در Arduino IDE برنامه‌ریزی می‌کنید، اما این تجربهٔ رسمی آردوینو نیست؛ سازندهٔ برد Espressif است و آردوینو فقط محیط برنامه‌نویسی مشترک را فراهم می‌کند.

ویژگی Arduino Uno R3 برد توسعهٔ ESP32
پردازنده ATmega328P، ۸ تا ۱۶ مگاهرتز تک‌هسته Xtensa 240 مگاهرتز، دوهسته‌ای
حافظهٔ SRAM ۲ کیلوبایت حدود ۵۲۰ کیلوبایت
حافظهٔ Flash ۳۲ کیلوبایت معمولاً ۴ مگابایت روی برد
وای‌فای و بلوتوث ندارد وای‌فای + بلوتوث داخلی
ولتاژ منطقی ۵ ولت 3.3 ولت
تعداد GPIO ۲۰ حدود ۲۵ تا ۳۰ (بسته به برد)
ADC ۱۰ بیت ۱۲ بیت
قیمت تقریبی متوسط ارزان‌تر از Uno

جدول را که ببینید، دلیل محبوبیت روشن است: چند ده برابر سرعت و حافظه، بی‌سیم داخلی و قیمت پایین‌تر. پس چرا هنوز Uno آموزش می‌دهیم؟ چون Uno ساده‌تر است، برق و منطق 5 ولتی‌اش بخشنده‌تر است و هزاران منبع آموزشی ماژول‌محور برای آن نوشته شده — و همین دوره بر پایهٔ آن است.

نصب هستهٔ رسمی Espressif

Uno از نصب آغازین Arduino IDE شناخته شده است، اما ESP32 نیاز به نصب «هسته» (Core) جداگانه دارد — همان بستهٔ کامپایلر و کتابخانه‌های خانوادهٔ ESP32، که توسط خود Espressif منتشر می‌شود:

  1. در Arduino IDE به File ← Preferences بروید.
  2. در فیلد Additional boards manager URLs این نشانی رسمی را اضافه کنید: https://espressif.github.io/arduino-esp32/package_esp32_index.json
  3. به Tools ← Board ← Boards Manager بروید، عبارت esp32 را جست‌وجو کنید و بستهٔ esp32 by Espressif Systems را نصب کنید. دانلود ممکن است چند دقیقه طول بکشد؛ پس از پایان، پیام Installed نمایش داده می‌شود.
  4. در Tools ← Board، بخش esp32 را باز کنید و بسته به برد خود گزینه‌ای مثل ESP32 Dev Module را انتخاب کنید.
  5. برد را با کابل USB به رایانه وصل کنید و در Tools ← Port پورت مربوط را ببینید.

اگر پورتی در لیست نبود، تقریباً همیشه درایور چیپ USB-سریال برد است: بیشتر بردها CP2102 (درایور CP210x از سایت Silicon Labs) یا CH340 دارند. نصب درایور مربوط، پورت را ظاهر می‌کند.

اسکچ اول: چشمک‌زن

اکثر بردهای DevKit یک LED داخلی روی GPIO 2 دارند؛ این اسکچ همان منطق درس blink را روی ESP32 اجرا می‌کند:

esp32-blink.ino
const int ledPin = 2;  // Onboard LED on most ESP32 DevKits

void setup() {
  pinMode(ledPin, OUTPUT);
  Serial.begin(115200);
  Serial.println("ESP32 running");
}

void loop() {
  digitalWrite(ledPin, HIGH);
  delay(500);
  digitalWrite(ledPin, LOW);
  delay(500);
}

دو نکتهٔ تازه: نرخ سریال پیش‌فرض ESP32 در نمونه‌های رسمی 115200 است (نه 9600) — سریال مانیتور را همان‌جا تنظیم کنید. و اگر آپلود با خطای Connecting.... متوقف شد، دکمهٔ BOOT روی برد را هنگام شروع آپلود نگه دارید؛ برخی بردها به این کمک نیاز دارند.

اسکن شبکه‌های وای‌فای

حالا قابلیتی که Uno هرگز نداشت: در چند خط، فهرست شبکه‌های اطراف را می‌خوانید — بدون ماژول جانبی و بدون سیم‌کشی:

wifi-scan.ino
#include <WiFi.h>

void setup() {
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);       // Station mode: scan as a client
  WiFi.disconnect();
  delay(100);
}

void loop() {
  Serial.println("Scanning...");
  int count = WiFi.scanNetworks();
  Serial.print("Networks found: ");
  Serial.println(count);
  delay(5000);
}

توضیح نکته‌های تازه:

  1. #include <WiFi.h> — کتابخانهٔ وای‌فای همراه هستهٔ Espressif نصب می‌شود؛ نام آن با ESP8266 فرق دارد.
  2. WiFi.mode(WIFI_STA); — برد را در حالت ایستگاه (Client) می‌گذارد تا فقط اسکن کند.
  3. WiFi.scanNetworks(); — شبکه‌های اطراف را جست‌وجو و شمارش‌شان را برمی‌گرداند؛ همین عدد را چاپ می‌کنیم و پس از هر اسکن ۵ ثانیه صبر می‌کنیم.

خروجی سریال مانیتور چنین است (عدد به تعداد شبکه‌های اطراف شما بستگی دارد؛ قالب خط قطعی است):

خروجی کد

Scanning... Networks found: 7 Networks found: 7

کی ESP32 و کی Uno؟

  • ESP32: هر پروژه‌ای که به وای‌فای، بلوتوث، حافظهٔ بیشتر یا پردازش سنگین‌تر نیاز دارد: نمایش دادهٔ سنسور در گوشی، سرور کوچک وب، درگاه خانه.
  • Uno: یادگیری مبانی، مدارهای 5 ولتی ساده، پروژه‌هایی که فقط خواندن سنسور و کنترل خروجی‌اند و کتابخانه‌های موجود روی AVR محدود نمی‌شوند.

در این دوره Uno مبناست چون ریسک سیم‌کشی و مفاهیم را ساده نگه می‌دارد؛ ESP32 را به‌عنوان برد دوم و برای پروژه‌های متصل به‌کار می‌گیرید.

اشتباهات رایج و عیب‌یابی

نشانه علت رایج راه‌حل
بستهٔ esp32 در Boards Manager پیدا نمی‌شود URL اضافه‌نشده یا اشتباه در Preferences نشانی را عیناً کپی کنید و IDE را ریست کنید
دانلود هسته طولانی است یا خطا می‌دهد شبکهٔ محدود یا اینترنت پره‌جم دوباره تلاش کنید؛ نصب از طریق مدیر بسته فقط بار اول سنگین است
Port خالی است نبود درایور CP210x یا CH340 چیپ USB برد را شناسایی و درایور رسمی سازنده را نصب کنید
آپلود در Connecting.... گیر می‌کند برد وارد حالت بوت‌لودر نشده دکمهٔ BOOT را هنگام شروع آپلود نگه دارید
پیام Brownout detector triggered تغذیهٔ USB کافی نیست کابل و پورت USB دیگری امتحان کنید؛ تغذیهٔ پایدار بدهید
حروف آشفته در سریال مانیتور نرخ مانیتور 9600 است مانیتور را روی 115200 بگذارید

تمرین‌ها

تمرین

تمرین ۱ — اسکن با گزارش تفکیکی

اسکچ wifi-scan را طوری تغییر دهید که پس از هر اسکن، به‌جای فقط شمارش، پیام Scan done را هم چاپ کند و LED داخلی را به مدت ۳۰۰ میلی‌ثانیه روشن کند تا اسکن را با چشم هم ببینید.

نمایش راه‌حل

پس از چاپ شمارش، یک چشمک کوتاه و پیام پایانی کافی است:

wifi-scan-led.ino
#include <WiFi.h>

const int ledPin = 2;

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
}

void loop() {
  Serial.println("Scanning...");
  int count = WiFi.scanNetworks();
  Serial.print("Networks found: ");
  Serial.println(count);
  digitalWrite(ledPin, HIGH);
  delay(300);
  digitalWrite(ledPin, LOW);
  Serial.println("Scan done");
  delay(5000);
}

خروجی سریال مانیتور (عدد به محیط شما بستگی دارد):

خروجی کد

Scanning... Networks found: 7 Scan done

::: :::

خلاصه

  • ESP32 میکروکنترلر شرکت Espressif است، نه محصول رسمی آردوینو؛ با Arduino IDE و هستهٔ رسمی Espressif برنامه‌ریزی می‌شود.
  • نسبت به Uno پردازندهٔ 240 مگاهرتزی دوهسته‌ای، حافظهٔ بسیار بیشتر و وای‌فای و بلوتوث داخلی دارد و منطقش 3.3 ولت است.
  • 5 ولت روی GPIOهای ESP32 آسیب می‌زند؛ سیگنال‌های 5 ولتی همیشه باید با مقسوم ولتاژ پایین بیایند و تغذیهٔ برد از داکیومنت سازنده چک شود.
  • نصب هسته با افزودن URL رسمی https://espressif.github.io/arduino-esp32/package_esp32_index.json و نصب بستهٔ esp32 by Espressif Systems انجام می‌شود.
  • نرخ سریال رایج ESP32 به‌جای 9600 برابر 115200 است و درایور CP210x یا CH340 شرط دیده‌شدن پورت است.

حالا هر دو دنیا را می‌شناسید: Uno برای پایه‌ها و ESP32 برای پروژه‌های متصل؛ در ماژول‌های بی‌سیم بعدی، همین برد را کنار ماژول‌های بلوتوث و شبکه به‌کار می‌گیرید.

منابع و ارجاع‌ها

درس‌های مرتبط