پیشرفته⏱ 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 تعداد دفعات محدودی (اما زیاد، در حد صدها هزار بار) قابل نوشتن است؛ برای داده‌هایی که هر چند میلی‌ثانیه تغییر می‌کنند (مثل خواندن سنسور)، نوشتن مداوم روی فلش را انجام ندهید.

شبیه‌سازی زندهٔ فایل‌سیستم و JSON — دقیقاً همین کد (نوشتن/خواندن log.txt و config.json) باز کردن در Wokwi ↗
در حال بارگذاری شبیه‌ساز… (ممکن است چند ثانیه طول بکشد)

این یک شبیه‌سازی واقعی و قابل اجراست؛ روی دکمه پخش (▶) در Wokwi بزنید تا کد روی برد مجازی ESP32 اجرا شود. اگر جعبهٔ بالا بیش از حد سیاه/خالی ماند، صفحه را رفرش کنید یا از دکمهٔ «باز کردن در Wokwi» بالا استفاده کنید.

🛠️ کارگاه عملی

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

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