آموزش پاکسازی حافظه فلش برد ESP32 (بازگشت به کارخانه)

بازگردانی به تنظیمات کارخانه (factory reset) یکی از راهکارهای نهایی برای حل بسیاری از مشکلات ESP32 است. چه بخواهید تغییرات اعمال شده در فِرمور یا تنظیمات را حذف کنید، چه دستگاه به طور مکرر کرش میکند و قادر به آپلود کد جدید نیستید، یا تنها میخواهید دادههای غیرضروری را پاک کنید، پاک کردن کامل فلش سادهترین و موثرترین روش است.
esptool چیست؟
esptool یک ابزار چندمنظوره مبتنی بر Python برای کار با چیپهای Espressif مانند ESP32 و ESP8266 است که برای توسعهدهندگان و رفع اشکال با این چیپها ضروری محسوب میشود.
این ابزار معمولاً از طریق خط فرمان (ترمینال) اجرا میشود: ESP32 را با کابل USB به کامپیوتر متصل میکنید و با ارسال فرمانهای esptool با دستگاه ارتباط برقرار میکنید. چون esptool با Python نوشته شده، روی ویندوز، macOS و لینوکس قابل استفاده است.
قابلیتهای اصلی esptool شامل موارد زیر است:
- فلش کردن فِرمور: آپلود کدهای کامپایلشده روی حافظه فلش ESP32.
- پاک کردن فلش: حذف کامل محتوای فلش و بازگردانی به حالت کارخانه (موضوع اصلی این راهنما).
- خواندن فلش: خواندن محتوای حافظه فلش برای دیباگ یا پشتیبانگیری.
- ارتباط با بوتلودر: تعامل با بوتلودر ESP32 که در زمان راهاندازی اجرا میشود و امکان آپلود کد یا عملیات دیگر را فراهم میکند.
قابلیتهای تکمیلی عبارتند از:
- پایش خروجی سریال: مشاهده پیامهای دیباگ یا دادههای برنامه در حال اجرا.
- پیکربندی چیپ: خواندن و تغییر تنظیمات مختلف چیپ.
- ویژگیهای امنیتی: کار با کلیدهای secure boot و دیگر عملیات امنیتی.
مرحله 1: نصب Python
چون esptool بر پایه Python است، ابتدا باید Python را نصب کنید. نسخه 3.7 یا جدیدتر مورد نیاز است. در ویندوز میتوانید از نصبکننده MSI موجود در وبسایت رسمی Python استفاده کنید.

نصاب را اجرا کنید و در طول مراحل نصب گزینه Add python.exe to Path را فعال نمایید تا اجرای esptool از طریق خط فرمان ساده شود.

مرحله 2: نصب esptool
پس از نصب Python، آخرین نسخه پایدار esptool را با pip نصب کنید. در یک پنجره ترمینال دستور زیر را اجرا کنید:
pip install esptool
در بعضی تنظیمات Python ممکن است این دستور کار نکند؛ در این صورت از یکی از دستورهای جایگزین زیر استفاده کنید:
pip3 install esptool python -m pip install esptool pip2 install esptool
esptool به بسته setuptools نیز وابسته است که ممکن است روی همه سیستمها نصب نباشد. در صورت نیاز setuptools را با این دستور نصب کنید:
pip install setuptools

بعد از نصب، esptool در فولدر اجراییهای Python قرار میگیرد. میتوانید با اجرای دستور زیر نصب شدن آن را تست کنید و نسخه و راهنمای اولیه را مشاهده نمایید:
python -m esptool

در صورت نصب صحیح، پیام حاوی نسخه و اطلاعات کلی استفاده از esptool نمایش داده خواهد شد.
مرحله 3: اتصال ESP32
برد ESP32 را با کابل USB به کامپیوتر متصل کنید.

مرحله 4: شناسایی پورت سریال (COM)
برای شناسایی پورت سریال متصل به ESP32 بسته به سیستم عامل عمل کنید:
ویندوز: Device Manager را باز کنید و بخش Ports (COM & LPT) را گسترش دهید. به دنبال دستگاهی مانند “Silicon Labs CP210x USB to UART Bridge” یا نام مشابه بگردید. شماره پورت متناظر (مثلاً COM3) را یادداشت کنید؛ این همان COMx است که در دستورات بعدی باید جایگزین شود.

macOS / لینوکس: در ترمینال این دستور را اجرا کنید تا دستگاههای سریال متصل نمایش داده شوند:
ls /dev/tty.*
ESP32 معمولاً به صورت /dev/tty.SLAB_USBtoUART یا نام مشابه ظاهر میشود.
مرحله 5: پاک کردن حافظه فلش
یک پنجره ترمینال باز کنید و دکمه BOOT روی برد ESP32 را نگه دارید. در حالی که دکمه BOOT فشرده است، دستور زیر را وارد کنید و به جای COMx پورت شناساییشده را قرار دهید:
python -m esptool --port COMx erase_flash
در صورت تمایل میتوانید نوع چیپ را هم مشخص کنید و از این دستور آلترناتیو استفاده نمایید:
python -m esptool --chip esp32 erase_flash
پس از اینکه دستور را در ترمینال وارد کردید، Enter را فشار دهید. وقتی فرایند Erasing در ترمینال شروع شد، میتوانید دکمه BOOT را رها کنید. پس از چند ثانیه، حافظه فلش ESP32 به طور کامل پاک خواهد شد.

نکته: اگر بعد از پیام “Connecting…” در خروجی ترمینال رشتهای از نقطهها (…) نمایش داده شد و فرایند ادامه نیافت، یعنی برد وارد حالت flashing نشده است. در این حالت فرایند را تکرار کنید و مطمئن شوید که هنگام اجرای دستور، دکمه BOOT را نگه داشتهاید تا برد وارد حالت flashing شود و فرایند پاکسازی کامل شود.
مرحله 6: بررسی و عیبیابی
بعد از پاک شدن فلش، برای اطمینان از عملکرد صحیح ESP32 میتوانید یک اسکِچ ساده مانند Blink را مجدداً آپلود کنید.

در صورت بروز مشکل، نکات عیبیابی زیر را بررسی کنید:
- مشکلات درایور: مطمئن شوید درایورهای USB-to-Serial مخصوص ESP32 روی سیستم نصب و به درستی کار میکنند.
- انتخاب پورت صحیح: دوباره بررسی کنید که پورت COM درست انتخاب شده باشد.
- تلاش مجدد برای پاک کردن: اگر اولین تلاش موفق نبود، دستور erase_flash را دوباره اجرا کنید.
- خطای سطح دسترسی: پنجره دستور (Command Prompt یا ترمینال) را با دسترسی Administrator اجرا کنید یا در لینوکس از sudo استفاده کنید تا مشکلات مربوط به دسترسی حل شود.
سوالات متداول
esptool چیست و روی کدام سیستم عاملها کار میکند؟
esptool یک ابزار خط فرمانی نوشتهشده با Python برای کار با چیپهای Espressif مثل ESP32 و ESP8266 است. از آن برای فلش کردن فِرمور، پاک کردن و خواندن فلش، تعامل با بوتلودر و انجام تنظیمات چیپ استفاده میشود و روی ویندوز، macOS و لینوکس قابل اجرا است چون مبتنی بر Python است.
برای پاک کردن کامل حافظه فلش ESP32 چه مراحلی لازم است؟
مراحل شامل نصب Python (نسخه 3.7 یا جدیدتر) و فعال کردن گزینه Add python.exe to Path در نصبکننده، نصب esptool با pip، اتصال برد ESP32 به کامپیوتر با کابل USB، شناسایی پورت سریال مرتبط (مثلاً COM3 یا /dev/tty.SLAB_USBtoUART)، سپس اجرای دستور
python -m esptool --port COMx erase_flash
یا دستور جایگزین
python -m esptool --chip esp32 erase_flash
در حالی که دکمه BOOT برد فشرده شده است. وقتی فرایند Erasing شروع شد، دکمه BOOT را رها کنید.
اگر فرایند پاک کردن متوقف یا به حالت نقطهگذاری ادامه داد چه کار کنم؟
اگر بعد از پیام “Connecting…” فقط جریان مداوم نقطهها نمایش داده شد، به این معنی است که برد وارد حالت flashing نشده است. در این صورت فرایند را دوباره انجام دهید و هنگام اجرای دستور حتما دکمه BOOT را نگه دارید تا ESP32 وارد حالت flashing شود و پاک کردن کامل انجام شود. همچنین در صورت مشکلات میتوانید درایورها، انتخاب پورت و سطح دسترسی ترمینال (Administrator یا sudo) را بررسی کنید.











