آشنایی با برد 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 منتشر میشود:
- در Arduino IDE به File ← Preferences بروید.
- در فیلد Additional boards manager URLs این نشانی رسمی را اضافه کنید:
https://espressif.github.io/arduino-esp32/package_esp32_index.json - به Tools ← Board ← Boards Manager بروید، عبارت esp32 را جستوجو کنید و بستهٔ esp32 by Espressif Systems را نصب کنید. دانلود ممکن است چند دقیقه طول بکشد؛ پس از پایان، پیام Installed نمایش داده میشود.
- در Tools ← Board، بخش esp32 را باز کنید و بسته به برد خود گزینهای مثل ESP32 Dev Module را انتخاب کنید.
- برد را با کابل USB به رایانه وصل کنید و در Tools ← Port پورت مربوط را ببینید.
اگر پورتی در لیست نبود، تقریباً همیشه درایور چیپ USB-سریال برد است: بیشتر بردها CP2102 (درایور CP210x از سایت Silicon Labs) یا CH340 دارند. نصب درایور مربوط، پورت را ظاهر میکند.
اسکچ اول: چشمکزن
اکثر بردهای DevKit یک LED داخلی روی GPIO 2 دارند؛ این اسکچ همان منطق درس blink را روی ESP32 اجرا میکند:
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 هرگز نداشت: در چند خط، فهرست شبکههای اطراف را میخوانید — بدون ماژول جانبی و بدون سیمکشی:
#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);
}توضیح نکتههای تازه:
#include <WiFi.h>— کتابخانهٔ وایفای همراه هستهٔ Espressif نصب میشود؛ نام آن با ESP8266 فرق دارد.WiFi.mode(WIFI_STA);— برد را در حالت ایستگاه (Client) میگذارد تا فقط اسکن کند.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 داخلی را به مدت ۳۰۰ میلیثانیه روشن کند تا اسکن را با چشم هم ببینید.
نمایش راهحل
پس از چاپ شمارش، یک چشمک کوتاه و پیام پایانی کافی است:
#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 برای پروژههای متصل؛ در ماژولهای بیسیم بعدی، همین برد را کنار ماژولهای بلوتوث و شبکه بهکار میگیرید.