پیشرفته⏱ 17 دقیقه مطالعه

ESP32 یک فایل‌سیستم داخلی کوچک (معمولاً LittleFS یا FAT) روی حافظهٔ فلش خود دارد که مستقیماً از میکروپایتون قابل خواندن و نوشتن است. این ویژگی برای ذخیرهٔ تنظیمات، لاگ سنسورها یا کش کردن داده در نبود اینترنت بسیار مفید است.

خواندن و نوشتن فایل متنی ساده

PYTHON
# نوشتن در فایل
with open("log.txt", "a") as f:
    f.write("رویداد جدید ثبت شد\n")

# خواندن کل فایل
with open("log.txt", "r") as f:
    print(f.read())
💡 نکته

استفاده از with open(…) as f تضمین می‌کند فایل حتی در صورت بروز خطا به‌درستی بسته شود.

ذخیرهٔ داده‌های ساختاریافته با JSON

برای ذخیرهٔ تنظیمات پیچیده‌تر (مثل نام Wi-Fi، آستانهٔ هشدار دما و …)، فرمت JSON بسیار مناسب است؛ ماژول ujson این کار را ساده می‌کند.

PYTHON
import ujson

config = {
    "wifi_ssid": "MyHomeWiFi",
    "temp_threshold": 30,
    "device_name": "esp32-academy-01"
}

# ذخیره
with open("config.json", "w") as f:
    ujson.dump(config, f)

# بازخوانی بعد از ریست شدن برد
with open("config.json", "r") as f:
    loaded = ujson.load(f)
    print("نام دستگاه:", loaded["device_name"])
⚠️ هشدار

حافظهٔ فلش ESP32 تعداد دفعات محدودی (اما زیاد، در حد صدها هزار بار) قابل نوشتن است؛ برای داده‌هایی که هر چند میلی‌ثانیه تغییر می‌کنند (مثل خواندن سنسور)، نوشتن مداوم روی فلش را انجام ندهید.

🧩

کار با فایل‌سیستم نیازی به قطعهٔ سخت‌افزاری خاصی ندارد؛ کافی است این کد را در یک پروژهٔ خالی میکروپایتون اجرا کنید — حافظهٔ فلش مجازی به‌طور خودکار توسط Wokwi شبیه‌سازی می‌شود.

ساخت پروژهٔ خالی میکروپایتون در Wokwi ↗
🛠️ کارگاه عملی

کارگاه عملی: یک فایل config.json بسازید که تنظیمات آستانهٔ دما را نگه دارد؛ برنامه هنگام روشن‌شدن این فایل را بخواند و اگر وجود نداشت، یک نسخهٔ پیش‌فرض بسازد.

❓ برای ذخیرهٔ یک دیکشنری پایتون به‌صورت ساختاریافته در یک فایل، از کدام ماژول استفاده می‌کنیم؟
طراحی و توسعه: امین شیخ نجدیglcd.ir | نسخهٔ افزونه: 1.11.0