اولین پروژه میکروپایتون: چشمک زدن LED با ESP32 در Vscode (کد کامل)

فهرست مطالب

مقدمه‌ای بر میکروپایتون و ESP32: چرا این ترکیب قدرتمند است؟

در دنیای پرشتاب اینترنت اشیا (IoT)، توانایی نمونه‌سازی سریع و توسعه کارآمد، یک مزیت رقابتی محسوب می‌شود. در این میان، میکروپایتون (MicroPython) به عنوان یک پیاده‌سازی کامل از زبان برنامه‌نویسی پایتون ۳ برای میکروکنترلرها، ابزاری بی‌نظیر برای مهندسان و توسعه‌دهندگان به شمار می‌رود. این زبان، سادگی و خوانایی پایتون را با توانایی کنترل سخت‌افزار در سطوح پایین ترکیب می‌کند و به شما اجازه می‌دهد تنها با چند خط کد، سخت‌افزارهای پیچیده را مدیریت کنید. جذابیت اصلی میکروپایتون در این است که نیاز به استفاده از زبان‌های سطح پایین‌تر مانند C/C++ و محیط‌های توسعه پیچیده را به حداقل می‌رساند، در حالی که همچنان دسترسی کامل به رجیسترهای سخت‌افزاری و قابلیت‌های سیستم را فراهم می‌آورد.

در کنار میکروپایتون، ESP32 خود را به عنوان یکی از محبوب‌ترین و قدرتمندترین میکروکنترلرهای موجود در بازار تثبیت کرده است. این تراشه، توسعه‌یافته توسط شرکت Espressif، فراتر از یک میکروکنترلر ساده عمل می‌کند. ESP32 با داشتن پردازنده دو هسته‌ای قدرتمند، قابلیت‌های اتصال Wi-Fi و بلوتوث (Bluetooth) داخلی، چندین پروتکل ارتباطی (مانند SPI، I2C، UART)، ورودی/خروجی‌های چندمنظوره (GPIO) فراوان، مبدل‌های آنالوگ به دیجیتال (ADC) و دیجیتال به آنالوگ (DAC) و همچنین قابلیت‌های رمزنگاری سخت‌افزاری، یک راه‌حل جامع برای طیف وسیعی از کاربردها از جمله خانه‌های هوشمند، پوشیدنی‌ها، سنسورهای صنعتی و دستگاه‌های متصل به اینترنت ارائه می‌دهد.

ترکیب میکروپایتون و ESP32 یک سناریوی برد-برد ایجاد می‌کند. میکروپایتون سادگی توسعه را به ESP32 می‌آورد و به برنامه‌نویسان اجازه می‌دهد تا بدون نیاز به درک عمیق از جزئیات سخت‌افزاری، به سرعت ایده‌های خود را پیاده‌سازی کنند. این ترکیب برای پروژه‌های اینترنت اشیا (IoT) ایده‌آل است، جایی که زمان توسعه و پیچیدگی کد فاکتورهای حیاتی هستند. با استفاده از پایتون، می‌توانیم منطق برنامه را به صورت ماژولار و قابل نگهداری بنویسیم، در حالی که ESP32 تمام قابلیت‌های ارتباطی و پردازشی مورد نیاز را فراهم می‌کند. این امر به ویژه برای کسانی که به دنبال ورود به دنیای برنامه‌نویسی میکروکنترلرها هستند، اما تجربه‌ای در زبان‌های سطح پایین ندارند، بسیار جذاب است.

در این پست وبلاگ جامع، ما شما را در اولین پروژه میکروپایتون خود، یعنی چشمک زدن یک LED با ESP32، راهنمایی خواهیم کرد. ما از محیط توسعه VSCode استفاده خواهیم کرد که با افزونه‌های قدرتمند خود، تجربه توسعه را به طرز چشمگیری بهبود می‌بخشد. این راهنما نه تنها شامل کد کامل و توضیحات خط به خط است، بلکه تمامی مراحل از راه‌اندازی سخت‌افزار و نرم‌افزار تا فلش کردن فریمور میکروپایتون و پیکربندی VSCode را پوشش می‌دهد. هدف ما این است که شما با یک پایه محکم در توسعه میکروپایتون بر روی ESP32 مسلح شوید و آماده شوید تا پروژه‌های پیچیده‌تر و هیجان‌انگیزتری را آغاز کنید.

با دنبال کردن این آموزش، شما با مفاهیم اساسی برنامه‌نویسی میکروپایتون برای ESP32 آشنا خواهید شد و مهارت‌های لازم برای شروع به کار با این پلتفرم قدرتمند را کسب خواهید کرد. این پروژه ساده “چشمک زدن LED” در واقع سنگ بنای بسیاری از پروژه‌های پیچیده‌تر است و به شما کمک می‌کند تا با چرخه توسعه، اشکال‌زدایی و استقرار کد بر روی میکروکنترلرها آشنا شوید. بیایید این سفر هیجان‌انگیز را آغاز کنیم!

پیش‌نیازها و ابزارهای مورد نیاز برای شروع پروژه

قبل از شروع هر پروژه الکترونیکی یا برنامه‌نویسی، اطمینان از در دسترس بودن تمامی سخت‌افزارها و نرم‌افزارهای مورد نیاز حیاتی است. این بخش به تفصیل تمامی اقلامی را که برای موفقیت در اولین پروژه میکروپایتون با ESP32 خود نیاز دارید، لیست می‌کند. آماده‌سازی صحیح این ابزارها، روند توسعه را روان‌تر و لذت‌بخش‌تر خواهد کرد.

سخت‌افزار مورد نیاز:

  1. برد توسعه ESP32 (ESP32 Development Board):
    • مدل‌های رایج شامل ESP32-DevKitC، NodeMCU-32S، ESP32 WROOM-32D و ESP32 WROVER هستند. هر یک از این بردها، تراشه ESP32 را در قالبی کاربرپسند با پین‌های GPIO قابل دسترس، رگولاتور ولتاژ، مدار USB به سریال و دکمه‌های بوت و ریست ارائه می‌دهند. اطمینان حاصل کنید که برد شما دارای یک پورت Micro USB (یا USB-C در مدل‌های جدیدتر) برای اتصال به کامپیوتر است.
    • نکته: درک پین‌بندی (Pinout) ESP32 برای اتصال صحیح سخت‌افزار بسیار مهم است. معمولاً یک نقشه پین‌بندی با برد شما ارائه می‌شود یا می‌توانید آن را به راحتی آنلاین پیدا کنید.
  2. کابل Micro USB (یا USB-C):
    • برای اتصال برد ESP32 به کامپیوتر شما. این کابل نه تنها برای تأمین برق برد استفاده می‌شود، بلکه امکان ارتباط سریال (Serial Communication) بین کامپیوتر و ESP32 را نیز فراهم می‌کند، که برای فلش کردن فریمور میکروپایتون و آپلود کد ضروری است.
  3. یک LED (Light Emitting Diode):
    • هر رنگی که دوست دارید. LEDها قطعات ساده‌ای هستند که برای نمایش وضعیت (روشن/خاموش) در پروژه‌های الکترونیکی استفاده می‌شوند.
  4. مقاومت محدودکننده جریان (Current-Limiting Resistor):
    • مقاومتی با مقدار 220 تا 330 اهم. این مقاومت برای محافظت از LED در برابر جریان بیش از حد و جلوگیری از آسیب دیدن آن ضروری است. بدون مقاومت، LED به سرعت می‌سوزد یا عمر آن به شدت کاهش می‌یابد.
  5. سیم‌های جامپر (Jumper Wires):
    • مجموعه‌ای از سیم‌های نر به نر، نر به ماده یا ماده به ماده برای اتصال اجزا به برد ESP32 و برد بورد.
  6. برد بورد (Breadboard):
    • یک برد پروتوتایپ برای اتصال موقت قطعات الکترونیکی بدون نیاز به لحیم‌کاری. این ابزار به شما امکان می‌دهد تا به راحتی مدارهای خود را مونتاژ و آزمایش کنید.

نرم‌افزار مورد نیاز:

  1. پایتون ۳ (Python 3):
    • برای نصب و اجرای ابزارهایی مانند esptool.py که برای فلش کردن فریمور میکروپایتون روی ESP32 استفاده می‌شود. اگر پایتون را نصب ندارید، آن را از وب‌سایت رسمی Python (python.org) دانلود و نصب کنید. حتماً گزینه “Add Python to PATH” را در هنگام نصب فعال کنید.
  2. ویژوال استودیو کد (Visual Studio Code – VSCode):
    • یک ویرایشگر کد قدرتمند و رایگان که از طریق افزونه‌ها (Extensions) قابلیت‌های گسترده‌ای را برای توسعه میکروپایتون ارائه می‌دهد. VSCode را از وب‌سایت رسمی (code.visualstudio.com) دانلود و نصب کنید.
  3. افزونه‌های VSCode برای میکروپایتون:
    • Pymakr: این افزونه ابزاری فوق‌العاده برای توسعه میکروپایتون در VSCode است. Pymakr امکان همگام‌سازی فایل‌ها با برد، دسترسی به REPL (Read-Eval-Print Loop) به صورت مستقیم در VSCode، و مدیریت پروژه را فراهم می‌کند. آن را از قسمت Extensions در VSCode نصب کنید.
    • MicroPython: یک افزونه عمومی‌تر برای پشتیبانی از syntax highlight و autocompletion برای کد میکروپایتون. نصب آن توصیه می‌شود، اگرچه Pymakr بیشتر قابلیت‌های تعاملی را پوشش می‌دهد.
  4. درایور USB به سریال (USB-to-Serial Driver):
    • اکثر بردهای ESP32 از چیپ‌های مبدل USB به سریال مانند CP210x (تولید Silicon Labs) یا CH340 (تولید WCH) استفاده می‌کنند. برای اینکه کامپیوتر شما بتواند با ESP32 ارتباط برقرار کند، باید درایور مناسب را نصب کنید.
      • برای CP210x: به وب‌سایت Silicon Labs مراجعه کرده و درایور CP210x Universal Windows Driver را دانلود کنید.
      • برای CH340: درایور CH340 را می‌توانید با جستجو در گوگل “CH340 driver” پیدا کنید.

      پس از نصب، می‌توانید با مراجعه به Device Manager در ویندوز (یا ls /dev/tty.* در macOS/Linux) پورت COM (یا tty) مربوط به ESP32 خود را پیدا کنید.

  5. فریمور میکروپایتون (.bin file):
    • فایل باینری فریمور میکروپایتون برای ESP32 را باید دانلود کنید. این فایل سیستم عامل میکروپایتون را روی برد شما نصب می‌کند. روش دانلود در بخش بعدی توضیح داده خواهد شد.
  6. ابزار esptool.py:
    • این ابزار پایتونی برای فلش کردن فریمور و دیگر فایل‌ها به تراشه‌های ESP استفاده می‌شود. آن را می‌توانید از طریق pip نصب کنید: pip install esptool.

با جمع‌آوری و نصب تمامی این پیش‌نیازها، شما آماده خواهید بود تا به مرحله بعدی، یعنی نصب فریمور میکروپایتون بر روی ESP32، بروید. هر قدمی که برمی‌دارید، شما را یک گام به روشن کردن LED با کد پایتون خود نزدیک‌تر می‌کند!

نصب و راه‌اندازی فریمور میکروپایتون بر روی ESP32

پس از آماده‌سازی تمامی پیش‌نیازهای سخت‌افزاری و نرم‌افزاری، گام بعدی و حیاتی، نصب فریمور (Firmware) میکروپایتون بر روی برد ESP32 شماست. فریمور میکروپایتون در واقع سیستم عاملی است که بر روی میکروکنترلر شما اجرا می‌شود و به آن اجازه می‌دهد تا کد پایتون را تفسیر و اجرا کند. این فرآیند شامل پاک کردن حافظه فلش برد و سپس رایت کردن فایل باینری فریمور میکروپایتون است. ما از ابزار esptool.py که یک ابزار خط فرمان قدرتمند برای تعامل با تراشه‌های ESP است، استفاده خواهیم کرد.

۱. دریافت فریمور میکروپایتون برای ESP32:

اولین گام، دانلود فایل باینری فریمور مناسب برای ESP32 است. به وب‌سایت رسمی میکروپایتون مراجعه کنید: micropython.org/download/#esp32.

  • در این صفحه، به دنبال بخش “ESP32 boards” بگردید.
  • دو نوع فریمور اصلی وجود دارد:
    • Stable firmware: نسخه‌های پایدار و تست شده که برای اکثر پروژه‌ها توصیه می‌شوند.
    • Nightly builds: نسخه‌های جدیدتر که شامل آخرین ویژگی‌ها و بهبودها هستند، اما ممکن است پایداری کمتری داشته باشند. برای شروع، یک نسخه پایدار (Stable) را دانلود کنید.
  • فایلی با نامی شبیه به esp32-YYYYMMDD-vX.X.bin (مثلاً esp32-20231025-v1.21.0.bin) را دانلود کرده و آن را در مکانی قابل دسترس (مثلاً دسکتاپ یا پوشه پروژه خود) ذخیره کنید.

۲. آماده‌سازی ESP32 و اتصال به کامپیوتر:

  • اتصال برد: برد ESP32 خود را از طریق کابل Micro USB به کامپیوتر متصل کنید.
  • نصب درایور: اطمینان حاصل کنید که درایور USB به سریال (CP210x یا CH340) به درستی نصب شده باشد.
    • در ویندوز: به Device Manager بروید و در بخش “Ports (COM & LPT)” به دنبال “USB-SERIAL CH340” یا “Silicon Labs CP210x USB to UART Bridge” باشید. شماره پورت COM (مثلاً COM3, COM4) را یادداشت کنید.
    • در macOS/Linux: ترمینال را باز کرده و دستور ls /dev/tty.* را اجرا کنید. به دنبال پورت‌هایی مانند /dev/tty.SLAB_USBtoUART یا /dev/tty.wchusbserialXXXXXXXX بگردید.

۳. پاک کردن حافظه فلش (Erase Flash):

قبل از رایت کردن فریمور جدید، توصیه می‌شود که حافظه فلش ESP32 را به طور کامل پاک کنید. این کار تضمین می‌کند که هیچ داده قدیمی یا پیکربندی ناسازگاری با فریمور جدید تداخل نداشته باشد. این مرحله به خصوص اگر قبلاً فریمور دیگری روی برد شما بوده است، اهمیت دارد.

یک خط فرمان (Command Prompt در ویندوز، Terminal در macOS/Linux) باز کنید و دستور زیر را اجرا کنید. حتماً COMx را با شماره پورت COM (یا مسیر پورت tty) مربوط به ESP32 خود جایگزین کنید:

esptool.py --chip esp32 --port COMx erase_flash

یا برای macOS/Linux:

esptool.py --chip esp32 --port /dev/tty.SLAB_USBtoUART erase_flash
  • نکات:
    • اگر esptool.py پیدا نشد، ممکن است نیاز باشد مسیر کامل پایتون را مشخص کنید یا اطمینان حاصل کنید که پایتون و esptool به درستی در PATH سیستم شما اضافه شده‌اند.
    • در برخی بردها، ممکن است لازم باشد دکمه “BOOT” (یا “FLASH”) را در طول فرآیند پاک کردن و فلش کردن نگه دارید و سپس بعد از شروع فرآیند، آن را رها کنید. معمولاً برای بردهای DevKitC نیازی به این کار نیست، اما اگر با خطاهایی مانند “Failed to connect to ESP32: Timed out waiting for packet header” مواجه شدید، این را امتحان کنید.

پس از اتمام موفقیت‌آمیز، پیامی مشابه “Chip erase complete!” را مشاهده خواهید کرد.

۴. فلش کردن فریمور میکروپایتون:

حالا زمان آن رسیده است که فایل فریمور میکروپایتون را روی ESP32 فلش کنید. مجدداً، COMx را با پورت صحیح خود و esp32-YYYYMMDD-vX.X.bin را با نام کامل فایل فریمور که دانلود کرده‌اید، جایگزین کنید. همچنین، اگر فایل فریمور در پوشه جاری خط فرمان شما نیست، باید مسیر کامل آن را مشخص کنید.

esptool.py --chip esp32 --port COMx --baud 460800 write_flash -z 0x1000 esp32-YYYYMMDD-vX.X.bin

یا برای macOS/Linux:

esptool.py --chip esp32 --port /dev/tty.SLAB_USBtoUART --baud 460800 write_flash -z 0x1000 esp32-YYYYMMDD-vX.X.bin
  • توضیحات پارامترها:
    • --chip esp32: نوع تراشه را مشخص می‌کند.
    • --port COMx: پورت سریال را مشخص می‌کند.
    • --baud 460800: سرعت ارتباط سریال (baud rate) را تنظیم می‌کند. سرعت‌های بالاتر، فلش کردن را سریع‌تر می‌کنند.
    • write_flash -z 0x1000: دستوری برای نوشتن در حافظه فلش، با مشخص کردن آدرس شروع (0x1000). این آدرس استاندارد برای شروع فریمور میکروپایتون روی ESP32 است.
    • esp32-YYYYMMDD-vX.X.bin: مسیر و نام فایل فریمور.

منتظر بمانید تا فرآیند فلش کردن کامل شود. این ممکن است چند دقیقه طول بکشد. پس از اتمام، پیامی مشابه “Hash of data verified.” و “Leaving… Hard resetting via RTS pin…” را مشاهده خواهید کرد.

۵. تأیید نصب فریمور:

برای اطمینان از اینکه میکروپایتون با موفقیت نصب شده است، می‌توانید از یک ترمینال سریال (مانند PuTTY در ویندوز، screen در macOS/Linux، یا حتی کنسول Pymakr در VSCode) استفاده کنید.

برد ESP32 را یک بار ریست کنید (دکمه “EN” یا “RST” را روی برد فشار دهید). سپس، ترمینال سریال خود را با پورت COM و سرعت 115200 baud به ESP32 متصل کنید. شما باید بلافاصله یک پیام خوش‌آمدگویی از میکروپایتون و سپس پرامپت REPL را مشاهده کنید:

MicroPython v1.21.0 on 2023-10-25; ESP32 module with ESP32
Type "help()" for more information.
>>>

این >>> نشان می‌دهد که میکروپایتون به درستی در حال اجرا است و شما می‌توانید دستورات پایتون را به صورت تعاملی وارد کنید. تبریک می‌گوییم! فریمور میکروپایتون با موفقیت بر روی ESP32 شما نصب شده است و آماده‌اید تا اولین کد خود را بنویسید.

پیکربندی محیط توسعه VSCode برای میکروپایتون

ویژوال استودیو کد (VSCode) به دلیل انعطاف‌پذیری بالا، پشتیبانی از افزونه‌های قدرتمند و قابلیت‌های اشکال‌زدایی عالی، به یکی از محبوب‌ترین محیط‌های توسعه یکپارچه (IDE) در جامعه برنامه‌نویسی تبدیل شده است. برای توسعه میکروپایتون (MicroPython) بر روی ESP32، VSCode با افزونه Pymakr، یک تجربه توسعه بسیار روان و کارآمد را ارائه می‌دهد. در این بخش، ما گام به گام نحوه پیکربندی VSCode را برای این منظور توضیح می‌دهیم.

۱. نصب VSCode (در صورت عدم نصب):

اگر هنوز VSCode را نصب نکرده‌اید، آن را از وب‌سایت رسمی code.visualstudio.com دانلود و نصب کنید. مراحل نصب بسیار ساده و استاندارد است.

۲. نصب افزونه Pymakr:

Pymakr یک افزونه حیاتی برای توسعه میکروپایتون در VSCode است. این افزونه امکانات زیر را فراهم می‌کند:

  • همگام‌سازی فایل‌ها: به شما اجازه می‌دهد فایل‌های پروژه را به راحتی از کامپیوتر به برد ESP32 منتقل کنید.
  • کنسول REPL: یک کنسول REPL (Read-Eval-Print Loop) داخلی برای تعامل مستقیم با ESP32 فراهم می‌کند، دقیقاً مانند یک ترمینال سریال.
  • مدیریت پروژه: ساختار پروژه‌ای را برای برنامه‌نویسی میکروپایتون ارائه می‌دهد.

برای نصب Pymakr:

  1. VSCode را باز کنید.
  2. به نوار فعالیت (Activity Bar) در سمت چپ بروید و روی آیکون Extensions (چهار مربع، یکی از آنها جدا شده است) کلیک کنید یا Ctrl+Shift+X را فشار دهید.
  3. در نوار جستجو، Pymakr را تایپ کنید.
  4. افزونه “Pymakr” توسط “Pycom” را پیدا کرده و روی دکمه “Install” کلیک کنید.
  5. پس از نصب، ممکن است VSCode از شما بخواهد که مجدداً راه‌اندازی شود.

۳. ایجاد یک پروژه جدید Pymakr:

Pymakr از یک ساختار پروژه خاص برای مدیریت فایل‌ها و پیکربندی‌ها استفاده می‌کند. این کار به شما کمک می‌کند تا تنظیمات پروژه خود را به صورت مرتب نگهداری کنید.

  1. در VSCode، به “File” -> “Open Folder…” بروید.
  2. یک پوشه جدید در هر جایی از کامپیوتر خود (مثلاً MicroPython_LED_Blink) ایجاد کرده و آن را باز کنید. این پوشه، ریشه پروژه میکروپایتون شما خواهد بود.
  3. پس از باز کردن پوشه، در نوار پایین VSCode (Status Bar)، باید دکمه‌ای با عنوان “Pymakr” را مشاهده کنید. روی آن کلیک کنید.
  4. یک منو باز می‌شود که گزینه‌های Pymakr را نشان می‌دهد. “Initialize project” را انتخاب کنید.
  5. Pymakr یک فایل به نام pymakr.json را در ریشه پوشه پروژه شما ایجاد خواهد کرد. این فایل حاوی تنظیمات پیکربندی پروژه میکروپایتون است.

۴. پیکربندی فایل pymakr.json:

فایل pymakr.json برای اتصال VSCode به برد ESP32 شما ضروری است. آن را باز کنید و محتوای آن را مطابق با برد خود ویرایش کنید. یک فایل pymakr.json معمولی به شکل زیر است:

{
    "address": "COMx",  // در ویندوز: "COM3", "COM4", ... در macOS/Linux: "/dev/tty.SLAB_USBtoUART", "/dev/ttyUSB0", ...
    "port": "COMx",     // همانند "address"
    "auth": {
        "user": "micro",
        "password": "python"
    },
    "wireless": false,
    "board_type": "esp32", // نوع برد خود را مشخص کنید
    "name": "MicroPython_LED_Blink",
    "fast_upload": true,
    "open_on_connect": false,
    "sync_folder": null,
    "push_extra_paths": [],
    "ignore": [
        "*.pyc",
        "*~",
        ".vscode",
        ".git",
        ".DS_Store",
        "project.json",
        "pymakr.json"
    ],
    "hostname": null,
    "username": null,
    "password": null,
    "autoconnect": true
}
  • مهمترین قسمت‌ها:
    • "address": "COMx" و "port": "COMx": اینها را با پورت COM (یا مسیر پورت tty) مربوط به ESP32 خود جایگزین کنید. این همان پورتی است که در بخش نصب فریمور پیدا کردید. (مثلاً "COM3" در ویندوز یا "/dev/ttyUSB0" در لینوکس).
    • "board_type": "esp32": اطمینان حاصل کنید که این مقدار به درستی روی "esp32" تنظیم شده باشد.
    • "autoconnect": true: توصیه می‌شود این را روی true تنظیم کنید تا Pymakr به صورت خودکار هنگام باز کردن پروژه به برد متصل شود.

فایل pymakr.json را ذخیره کنید.

۵. تست اتصال REPL در VSCode:

پس از پیکربندی pymakr.json، می‌توانید اتصال خود را به ESP32 از طریق کنسول Pymakr در VSCode آزمایش کنید:

  1. ESP32 خود را به کامپیوتر وصل کنید.
  2. در VSCode، در نوار پایین، دکمه “Pymakr” را پیدا کرده و روی آن کلیک کنید. یک پانل جدید به نام “Pymakr Console” باید در پایین VSCode باز شود.
  3. اگر "autoconnect": true را تنظیم کرده‌اید، Pymakr باید به صورت خودکار تلاش کند به ESP32 متصل شود. در غیر این صورت، روی دکمه “Connect” در بالای کنسول Pymakr کلیک کنید.
  4. پس از اتصال موفقیت‌آمیز، شما باید پیام خوش‌آمدگویی میکروپایتون و پرامپت REPL (>>>) را در کنسول مشاهده کنید.
  5. می‌توانید یک دستور ساده پایتون را تایپ کنید، مثلاً print("Hello MicroPython") و Enter را فشار دهید. باید خروجی را در کنسول ببینید.

اگر با خطاهای اتصال مواجه شدید:

  • دوباره پورت COM را در pymakr.json بررسی کنید.
  • مطمئن شوید که هیچ برنامه دیگری (مانند ترمینال سریال PuTTY) از پورت COM استفاده نمی‌کند.
  • کابل USB را بررسی کنید.
  • ESP32 را یک بار ریست کنید (دکمه EN/RST).

با موفقیت در پیکربندی VSCode و Pymakr، شما یک محیط توسعه قدرتمند و کارآمد برای برنامه‌نویسی میکروپایتون بر روی ESP32 ایجاد کرده‌اید. اکنون آماده‌ایم تا به سراغ بخش سخت‌افزار و اتصال LED برویم.

اتصال سخت‌افزاری LED به ESP32: درک پین‌ها

پس از آماده‌سازی نرم‌افزار و فریمور میکروپایتون، زمان آن رسیده است که ESP32 را با یک جزء فیزیکی ساده، یعنی LED، مرتبط سازیم. این مرحله از پروژه میکروپایتون به شما امکان می‌دهد تا خروجی کد خود را به صورت بصری مشاهده کنید و با مفاهیم اساسی اتصال سخت‌افزاری به میکروکنترلرها آشنا شوید. درک صحیح پین‌بندی ESP32 برای جلوگیری از آسیب رسیدن به برد و اطمینان از عملکرد صحیح مدار حیاتی است.

۱. پین‌بندی (Pinout) ESP32 و پین‌های GPIO:

ESP32 دارای تعداد زیادی پین GPIO (General Purpose Input/Output) است که می‌توانند برای مقاصد مختلفی مانند ورودی (خواندن داده از سنسورها) یا خروجی (کنترل LEDها، رله‌ها و موتورها) پیکربندی شوند. هر برد توسعه ESP32 دارای یک نقشه پین‌بندی است که شماره و عملکرد هر پین را نشان می‌دهد. با این حال، همه پین‌ها برای همه کاربردها یکسان نیستند. برخی پین‌ها دارای محدودیت‌ها یا عملکردهای خاصی در هنگام بوت شدن (Booting) هستند.

نکات مهم در انتخاب پین GPIO برای ESP32:

  • پین‌های ورودی-فقط (Input-only Pins): پین‌های GPIO34 تا GPIO39 فقط می‌توانند به عنوان ورودی استفاده شوند و قابلیت Pull-up/Pull-down داخلی ندارند. این پین‌ها برای اتصال LED مناسب نیستند.
  • پین‌های بوت (Boot Pins): برخی پین‌ها دارای رفتار خاصی در هنگام بوت شدن ESP32 هستند که می‌تواند مانع از بوت شدن صحیح برد شود اگر در حالت خاصی قرار گیرند.
    • GPIO0: اگر در هنگام بوت شدن در حالت LOW باشد، ESP32 وارد حالت فلش می‌شود.
    • GPIO2: اگر در هنگام بوت شدن در حالت LOW باشد، ممکن است باعث خطا در بوت شدن از کارت SD شود.
    • GPIO4، GPIO5، GPIO12، GPIO15: این پین‌ها نیز در برخی سناریوها می‌توانند بر روند بوت شدن تأثیر بگذارند.

    بهتر است از این پین‌ها برای خروجی‌های حیاتی که در هنگام بوت شدن فعال یا غیرفعال می‌شوند، استفاده نکنید مگر اینکه از عواقب آن آگاه باشید.

  • پین‌های داخلی (Internal Pins): برخی پین‌ها به صورت داخلی به قطعاتی مانند کریستال نوسان‌ساز (Crystal Oscillator) یا فلش مموری (Flash Memory) متصل هستند و نباید برای کاربردهای GPIO استفاده شوند (مانند GPIO6 تا GPIO11).
  • پین‌های توصیه شده برای LED: برای پروژه چشمک زدن LED، پین‌هایی مانند GPIO16، GPIO17، GPIO18، GPIO19، GPIO21، GPIO22، GPIO23 معمولاً انتخاب‌های ایمنی هستند. در این آموزش، ما از GPIO2 استفاده خواهیم کرد. اگرچه GPIO2 یک پین بوت است، اما در حالت عادی و در سطح HIGH (به وسیله PULL-UP داخلی در بسیاری از بردها یا به صورت پیش‌فرض) مشکلی برای بوت شدن ایجاد نمی‌کند و یک پین خروجی معمول برای LED در مثال‌های ESP32 است.

۲. اجزای مدار LED:

برای روشن کردن یک LED، ما به سه جزء نیاز داریم:

  1. برد ESP32: منبع تغذیه و کنترل‌کننده.
  2. LED: دیود ساطع‌کننده نور. LEDها دارای دو پایه هستند: آند (Anode) (پایه بلندتر) که به ولتاژ مثبت متصل می‌شود و کاتد (Cathode) (پایه کوتاه‌تر) که به زمین (GND) متصل می‌شود.
  3. مقاومت محدودکننده جریان (Current-Limiting Resistor): یک مقاومت 220 تا 330 اهم. این مقاومت برای جلوگیری از عبور جریان بیش از حد از LED و آسیب دیدن آن ضروری است. بدون مقاومت، LED به سرعت می‌سوزد یا عمر آن به شدت کاهش می‌یابد. قانون اهم (V=IR) به ما می‌گوید که با افزایش ولتاژ یا کاهش مقاومت، جریان افزایش می‌یابد. ولتاژ خروجی GPIO در ESP32 معمولاً 3.3 ولت است و LEDها معمولاً به جریانی حدود 10-20 میلی‌آمپر نیاز دارند. با یک مقاومت 220 اهم، جریان تقریباً در محدوده ایمن (حدود 10-15 میلی‌آمپر) قرار می‌گیرد.

۳. نقشه شماتیک و نحوه اتصال:

مدار برای چشمک زدن LED بسیار ساده است. شما می‌توانید از یک برد بورد برای اتصال اجزا استفاده کنید.

مراحل اتصال:

  1. مرحله ۱: اتصال مقاومت
    • یک سر مقاومت 220 اهم را به پین GPIO2 در برد ESP32 خود وصل کنید (می‌توانید از سیم جامپر برای این کار استفاده کرده و یک سر آن را در سوراخ GPIO2 و سر دیگر را در برد بورد قرار دهید و مقاومت را به آن متصل کنید).
  2. مرحله ۲: اتصال LED
    • پایه آند (بلندتر) LED را به سر دیگر مقاومت (در برد بورد) وصل کنید.
    • پایه کاتد (کوتاه‌تر) LED را به یکی از پین‌های GND (زمین) در برد ESP32 وصل کنید (باز هم می‌توانید از سیم جامپر استفاده کنید).

مدار شما باید به این شکل باشد:

(ESP32) GPIO2 --> [مقاومت 220Ω] --> [آند LED] --> [کاتد LED] --> GND (ESP32)

توضیحات تکمیلی:

  • هنگامی که پین GPIO2 به حالت HIGH (ولتاژ 3.3 ولت) تنظیم شود، جریان از طریق مقاومت و LED به سمت GND حرکت کرده و LED روشن می‌شود.
  • هنگامی که پین GPIO2 به حالت LOW (ولتاژ 0 ولت) تنظیم شود، جریان قطع شده و LED خاموش می‌شود.

با انجام این اتصالات فیزیکی، سخت‌افزار پروژه میکروپایتون شما آماده است. حالا می‌توانیم به مرحله نوشتن کد پایتون برویم تا این LED را کنترل کنیم و آن را به چشمک زدن واداریم!

نوشتن کد چشمک‌زن LED با میکروپایتون

پس از اینکه فریمور میکروپایتون را روی ESP32 فلش کردید و VSCode را پیکربندی نمودید و همچنین LED را به درستی به برد متصل کردید، زمان آن رسیده است که اولین کد میکروپایتون خود را بنویسید. این کد، یک برنامه ساده برای چشمک زدن LED است که اصول اولیه کنترل GPIO و استفاده از تابع زمان را به شما آموزش می‌دهد. این یک گام اساسی اما بسیار مهم در برنامه‌نویسی میکروکنترلرها است.

۱. ایجاد فایل کد (main.py):

در پوشه پروژه‌ای که در VSCode ایجاد کرده‌اید، یک فایل جدید به نام main.py بسازید. در میکروپایتون، فایل main.py یک فایل خاص است؛ هنگامی که برد ESP32 ریست می‌شود، اگر این فایل در سیستم فایل آن وجود داشته باشد، به صورت خودکار اجرا می‌شود. این مکان ایده‌آل برای قرار دادن برنامه اصلی شماست.

۲. وارد کردن کتابخانه‌های مورد نیاز:

برای تعامل با پین‌های GPIO و کنترل زمان، ما به دو کتابخانه داخلی میکروپایتون نیاز داریم:

  • machine: این ماژول دسترسی به سخت‌افزار در سطوح پایین را فراهم می‌کند، از جمله کلاس Pin برای مدیریت پین‌های GPIO.
  • time: این ماژول توابع مربوط به زمان را ارائه می‌دهد، از جمله تابع sleep() برای ایجاد تاخیر.

کد با وارد کردن این کتابخانه‌ها شروع می‌شود:

from machine import Pin
from time import sleep

۳. تعریف و پیکربندی پین LED:

برای کنترل LED، ابتدا باید پین GPIOی که LED به آن متصل است را به عنوان یک خروجی تعریف کنیم. ما پین GPIO2 را برای این پروژه انتخاب کرده‌ایم.

led = Pin(2, Pin.OUT)
  • Pin(2, Pin.OUT): در اینجا، ما یک شیء از کلاس Pin ایجاد می‌کنیم.
    • اولین آرگومان 2، شماره پین GPIO است که LED به آن متصل است.
    • دومین آرگومان Pin.OUT، حالت پین را به عنوان یک خروجی (Output) تعریف می‌کند. این به میکروکنترلر می‌گوید که ما قصد داریم با نوشتن مقدار روی این پین، ولتاژ آن را کنترل کنیم.

۴. حلقه اصلی برنامه (Main Loop):

یک برنامه چشمک‌زن LED به یک حلقه بی‌نهایت (Infinite Loop) نیاز دارد تا LED را به طور متناوب روشن و خاموش کند. در پایتون، این کار با یک حلقه while True: انجام می‌شود.

while True:
    # کد چشمک زدن در اینجا قرار می گیرد

۵. تغییر وضعیت LED و ایجاد تاخیر:

در داخل حلقه while True:، ما وضعیت LED را تغییر می‌دهیم و برای مدت زمان مشخصی منتظر می‌مانیم:

    led.value(1)  # روشن کردن LED (تنظیم پین به HIGH یا 3.3 ولت)
    sleep(1)      # صبر کردن به مدت ۱ ثانیه
    led.value(0)  # خاموش کردن LED (تنظیم پین به LOW یا 0 ولت)
    sleep(1)      # صبر کردن به مدت ۱ ثانیه
  • led.value(1): متد value() شیء Pin برای تنظیم وضعیت پین استفاده می‌شود. ارسال 1 (یا True) به معنی تنظیم پین به حالت HIGH (معمولاً 3.3 ولت در ESP32) است که باعث روشن شدن LED می‌شود.
  • sleep(1): تابع sleep() از ماژول time برنامه را برای مدت زمان مشخصی متوقف می‌کند. آرگومان آن بر حسب ثانیه است. بنابراین sleep(1) به معنی یک ثانیه تاخیر است.
  • led.value(0): ارسال 0 (یا False) به معنی تنظیم پین به حالت LOW (معمولاً 0 ولت) است که باعث خاموش شدن LED می‌شود.

۶. کد کامل پروژه چشمک‌زن LED (main.py):

در نهایت، کد کامل شما در فایل main.py باید به شکل زیر باشد:

# main.py

# وارد کردن کلاس Pin از ماژول machine برای کنترل GPIO
from machine import Pin
# وارد کردن تابع sleep از ماژول time برای ایجاد تاخیر
from time import sleep

# تعریف پین GPIO که LED به آن متصل است (در اینجا GPIO2)
# و پیکربندی آن به عنوان یک پین خروجی (Pin.OUT)
# led = Pin(2, Pin.OUT) یک شیء Pin ایجاد می‌کند که پین فیزیکی 2 را کنترل می‌کند.
# Pin.OUT به میکروپایتون می‌گوید که ما قصد داریم روی این پین ولتاژ اعمال کنیم.
led = Pin(2, Pin.OUT)

# حلقه اصلی برنامه که به طور نامحدود اجرا می‌شود
while True:
    # روشن کردن LED:
    # متد value(1) ولتاژ پین را به HIGH (تقریباً 3.3 ولت در ESP32) تنظیم می‌کند.
    # این باعث می‌شود جریان از مقاومت و LED عبور کرده و LED روشن شود.
    led.value(1)
    print("LED روشن است") # یک پیام اختیاری برای اشکال‌زدایی در کنسول Pymakr

    # ایجاد تاخیر:
    # تابع sleep(1) برنامه را برای 1 ثانیه متوقف می‌کند.
    # این تاخیر به ما اجازه می‌دهد تا روشن ماندن LED را مشاهده کنیم.
    sleep(1)

    # خاموش کردن LED:
    # متد value(0) ولتاژ پین را به LOW (تقریباً 0 ولت) تنظیم می‌کند.
    # این باعث قطع شدن جریان و خاموش شدن LED می‌شود.
    led.value(0)
    print("LED خاموش است") # یک پیام اختیاری برای اشکال‌زدایی در کنسول Pymakr

    # ایجاد تاخیر:
    # تابع sleep(1) دوباره برنامه را برای 1 ثانیه متوقف می‌کند.
    # این تاخیر به ما اجازه می‌دهد تا خاموش ماندن LED را مشاهده کنیم،
    # قبل از اینکه حلقه تکرار شود و LED دوباره روشن شود.
    sleep(1)

این کد بسیار ساده و در عین حال قدرتمند است. با تنها چند خط کد پایتون، شما توانایی کنترل سخت‌افزار فیزیکی را به دست آورده‌اید. در بخش بعدی، یاد خواهیم گرفت چگونه این کد را به ESP32 منتقل کرده و آن را اجرا کنیم تا نتیجه نهایی را مشاهده کنیم: چشمک زدن LED!

انتقال و اجرای کد بر روی ESP32

پس از نوشتن کد چشمک‌زن LED در فایل main.py، گام نهایی انتقال این کد به ESP32 و اجرای آن است. افزونه Pymakr در VSCode این فرآیند را به طرز چشمگیری ساده می‌کند و به شما امکان می‌دهد تا به سرعت کدهای خود را بر روی میکروکنترلر خود آزمایش کنید. در این بخش، نحوه آپلود کد، اجرای آن و مشاهده نتیجه را توضیح خواهیم داد، همچنین به برخی از اشکالات رایج و راه‌حل‌های آنها اشاره می‌کنیم.

۱. ذخیره کد:

ابتدا، مطمئن شوید که فایل main.py را با کد کامل چشمک‌زن LED در پوشه پروژه خود در VSCode ذخیره کرده‌اید.

۲. همگام‌سازی و آپلود کد با Pymakr:

Pymakr ابزارهای مختلفی برای همگام‌سازی فایل‌ها با برد ارائه می‌دهد. برای آپلود فایل main.py به ESP32، می‌توانید از یکی از روش‌های زیر استفاده کنید:

  1. روش ۱: آپلود کل پروژه (Sync Project)
    • در VSCode، روی پوشه پروژه (مثلاً MicroPython_LED_Blink) در Explorer سمت چپ کلیک راست کنید.
    • از منوی باز شده، گزینه “Pymakr” -> “Sync Project” را انتخاب کنید.
    • این کار تمامی فایل‌های موجود در پوشه پروژه (به جز مواردی که در pymakr.json در بخش "ignore" مشخص شده‌اند) را به سیستم فایل ESP32 منتقل می‌کند.
  2. روش ۲: آپلود فایل جاری (Upload Current File)
    • فایل main.py را در ویرایشگر VSCode باز کنید.
    • روی فایل main.py در Explorer کلیک راست کنید یا روی هر جای ویرایشگر که فایل باز است، کلیک راست کنید.
    • از منوی باز شده، گزینه “Pymakr” -> “Upload current file” را انتخاب کنید.
    • این کار فقط فایل main.py را به ESP32 منتقل می‌کند.

پس از انتخاب یکی از این گزینه‌ها، در کنسول Pymakr در پایین VSCode، باید پیامی مشابه “Uploading file(s)…” را مشاهده کنید که نشان‌دهنده انتقال موفقیت‌آمیز فایل است.

۳. اجرای کد و مشاهده خروجی:

همانطور که قبلاً ذکر شد، در میکروپایتون، اگر فایلی به نام main.py در ریشه سیستم فایل برد وجود داشته باشد، این فایل به صورت خودکار در هنگام بوت شدن ESP32 اجرا می‌شود.

  1. پس از آپلود موفقیت‌آمیز main.py، برد ESP32 خود را یک بار ریست (Reset) کنید. می‌توانید از دکمه “EN” یا “RST” روی برد استفاده کنید، یا در کنسول Pymakr، می‌توانید Ctrl+D را فشار دهید که یک سافت ریست (Soft Reset) انجام می‌دهد.
  2. هنگامی که ESP32 ریست می‌شود، بلافاصله شروع به اجرای کد موجود در main.py می‌کند.
  3. شما باید مشاهده کنید که LED متصل به GPIO2 شروع به چشمک زدن می‌کند: یک ثانیه روشن، یک ثانیه خاموش، و به همین ترتیب به صورت پیوسته.
  4. همچنین، اگر کنسول Pymakr به برد متصل باشد، پیام‌های "LED روشن است" و "LED خاموش است" را که در کد خود اضافه کرده بودید، در کنسول مشاهده خواهید کرد. این پیام‌ها برای اشکال‌زدایی بسیار مفید هستند.

۴. اشکال‌زدایی اولیه و حل مشکلات رایج:

ممکن است در اولین تلاش خود با مشکلاتی روبرو شوید. در اینجا برخی از اشکالات رایج و راه‌حل‌های آنها آورده شده است:

  • LED چشمک نمی‌زند:
    • بررسی اتصالات سخت‌افزاری:
      • آیا LED به درستی متصل شده است (آند به مقاومت، کاتد به GND)؟
      • آیا مقاومت 220 تا 330 اهم استفاده شده است؟
      • آیا پین GPIO2 ESP32 به مقاومت متصل است؟
      • آیا سیم‌های جامپر به درستی در سوراخ‌ها قرار گرفته‌اند؟
    • بررسی پین GPIO: آیا در کد، پین صحیح (Pin(2, Pin.OUT)) را مشخص کرده‌اید و LED واقعاً به آن پین متصل است؟ ممکن است به اشتباه به پین دیگری متصل کرده باشید.
    • بررسی فریمور میکروپایتون: آیا فریمور میکروپایتون به درستی روی ESP32 فلش شده است؟ با اتصال به REPL در کنسول Pymakr و تایپ help() یا هر دستور پایتون ساده‌ای، مطمئن شوید که پرامپت >>> را دریافت می‌کنید.
    • بررسی آپلود کد: آیا فایل main.py با موفقیت به ESP32 آپلود شده است؟ می‌توانید در کنسول Pymakr دستور import os و سپس os.listdir('/') را تایپ کنید تا لیست فایل‌های روی برد را ببینید. main.py باید در آن لیست باشد.
    • بررسی ولتاژ: با یک مولتی‌متر (در صورت دسترسی)، ولتاژ خروجی پین GPIO2 را هنگامی که کد اجرا می‌شود، بررسی کنید. باید بین 0 و 3.3 ولت تغییر کند.
  • کنسول Pymakr متصل نمی‌شود یا خطا می‌دهد:
    • پورت COM اشتباه: مطمئن شوید که "port" در pymakr.json به پورت COM (یا tty) صحیح ESP32 شما اشاره می‌کند.
    • پورت مشغول: مطمئن شوید که هیچ برنامه دیگری (مانند PuTTY) پورت COM را اشغال نکرده باشد.
    • درایور USB به سریال: مطمئن شوید که درایور صحیح برای CP210x یا CH340 نصب شده است.
    • کابل USB: کابل USB را عوض کنید. کابل‌های بی‌کیفیت یا فقط برای شارژ (بدون قابلیت انتقال داده) می‌توانند مشکل‌ساز باشند.
    • حالت بوت: در برخی بردهای ESP32، ممکن است نیاز باشد دکمه “BOOT” را نگه دارید و سپس “RST” را فشار دهید و “BOOT” را رها کنید تا بتوانید به REPL متصل شوید یا کد را فلش کنید.
  • کد اجرا نمی‌شود یا خطای Syntax می‌دهد:
    • خطاهای پایتون: به خروجی کنسول Pymakr توجه کنید. اگر خطای پایتونی وجود داشته باشد (مانند SyntaxError یا NameError)، در اینجا نمایش داده می‌شود. کد خود را برای اشتباهات تایپی، فاصله‌گذاری (indentation) یا نام متغیرها بررسی کنید.

تبریک می‌گوییم! شما با موفقیت اولین پروژه میکروپایتون خود را به پایان رساندید. چشمک زدن LED یک نقطه شروع کلاسیک است که درک شما را از تعامل سخت‌افزار و نرم‌افزار روی ESP32 با استفاده از میکروپایتون و VSCode تقویت می‌کند. این مهارت‌ها پایه‌ای محکم برای شروع پروژه‌های پیچیده‌تر در اینترنت اشیا (IoT) و سیستم‌های نهفته (Embedded Systems) هستند.

فراتر از چشمک زدن LED: گام‌های بعدی در میکروپایتون

چشمک زدن LED با ESP32 و میکروپایتون یک نقطه شروع عالی است، اما دنیای میکروکنترلرها و IoT بسیار وسیع‌تر و هیجان‌انگیزتر از این است. این پروژه به شما اصول اولیه راه‌اندازی، برنامه‌نویسی و استقرار کد را آموزش داد. اکنون که پایه محکمی دارید، زمان آن رسیده است که دانش میکروپایتون خود را گسترش دهید و به سمت پروژه‌های پیچیده‌تر حرکت کنید. در این بخش، به برخی از گام‌های بعدی که می‌توانید بردارید، اشاره می‌کنیم تا پتانسیل کامل ESP32 و میکروپایتون را کشف کنید.

۱. خواندن ورودی از سنسورها:

یکی از مهمترین کاربردهای میکروکنترلرها، جمع‌آوری داده از محیط اطراف با استفاده از سنسورها است.

  • سنسورهای دما و رطوبت (مانند DHT11/DHT22): یاد بگیرید چگونه از پروتکل‌های تک‌سیمه برای خواندن دما و رطوبت استفاده کنید. این سنسورها برای پروژه‌های مانیتورینگ محیطی بسیار محبوب هستند.
  • سنسورهای PIR (حرکت‌سنج): تشخیص حرکت و استفاده از آن برای راه‌اندازی رویدادها (مانند روشن کردن چراغ یا ارسال اعلان).
  • مبدل‌های آنالوگ به دیجیتال (ADC): ESP32 دارای چندین پین ADC است که می‌توانید از آنها برای خواندن سنسورهای آنالوگ مانند پتانسیومترها، فوتورزیستورها (LDR) یا سنسورهای رطوبت خاک استفاده کنید.

کتابخانه machine در میکروپایتون توابعی برای کنترل ADCها و SPI/I2C/UART (برای سنسورهای دیجیتال) ارائه می‌دهد.

۲. استفاده از Wi-Fi و اتصال به اینترنت:

قابلیت Wi-Fi داخلی ESP32 یکی از بزرگترین مزایای آن است.

  • اتصال به شبکه Wi-Fi: یاد بگیرید چگونه ESP32 را به یک شبکه Wi-Fi موجود متصل کنید. ماژول network در میکروپایتون این کار را ساده می‌کند.
  • درخواست‌های HTTP: پس از اتصال به اینترنت، می‌توانید از ماژول urequests برای ارسال درخواست‌های HTTP (GET/POST) به سرورهای وب یا APIها استفاده کنید. این به شما امکان می‌دهد داده‌ها را به یک پلتفرم IoT Cloud (مانند ThingSpeak، Adafruit IO یا پلتفرم‌های ابری AWS/Azure/Google Cloud) ارسال کنید یا اطلاعاتی را از اینترنت دریافت کنید.
  • پروتکل‌های MQTT: برای ارتباطات IoT، پروتکل MQTT یک انتخاب عالی است. یاد بگیرید چگونه ESP32 را به عنوان یک کلاینت MQTT پیکربندی کنید تا پیام‌ها را منتشر و مشترک شود.

۳. پروتکل‌های ارتباطی (I2C, SPI, UART):

ESP32 از پروتکل‌های ارتباطی استاندارد صنعتی پشتیبانی می‌کند که برای تعامل با طیف وسیعی از دستگاه‌های جانبی (peripherals) ضروری هستند.

  • I2C (Inter-Integrated Circuit): برای ارتباط با سنسورها (مانند سنسورهای IMU، سنسورهای فشار)، نمایشگرهای OLED و RTCها (Real-Time Clocks) استفاده می‌شود.
  • SPI (Serial Peripheral Interface): معمولاً برای ارتباط با کارت‌های SD، نمایشگرهای TFT و برخی سنسورهای با سرعت بالا استفاده می‌شود.
  • UART (Universal Asynchronous Receiver-Transmitter): برای ارتباط سریال با دستگاه‌هایی مانند ماژول‌های GPS، RFID و سایر میکروکنترلرها.

ماژول machine در میکروپایتون کلاس‌هایی برای پیاده‌سازی این پروتکل‌ها (مانند I2C، SPI، UART) فراهم می‌کند.

۴. ساخت وب سرور کوچک:

می‌توانید یک وب سرور ساده را مستقیماً بر روی ESP32 اجرا کنید که به شما امکان می‌دهد وضعیت سنسورها را از طریق مرورگر وب مشاهده کنید یا LEDها و سایر خروجی‌ها را از راه دور کنترل کنید. این وب سرور می‌تواند از طریق شبکه محلی (LAN) یا حتی از طریق اینترنت قابل دسترسی باشد.

۵. مدیریت پکیج با upip:

میکروپایتون دارای یک مدیریت‌کننده پکیج داخلی به نام upip است که مشابه pip در پایتون استاندارد عمل می‌کند. با upip می‌توانید کتابخانه‌های میکروپایتون را مستقیماً از اینترنت روی برد خود نصب کنید و قابلیت‌های پروژه خود را گسترش دهید.

import upip
upip.install('micropython-umqtt.simple')

۶. پروژه‌های پیشرفته‌تر IoT:

پس از تسلط بر مفاهیم پایه، می‌توانید به سمت ساخت پروژه‌های IoT پیچیده‌تر حرکت کنید:

  • سیستم نظارت بر دما و رطوبت: جمع‌آوری داده‌ها از DHT11/DHT22، ارسال آنها به یک پلتفرم ابری و نمایش آنها در یک داشبورد.
  • سیستم آبیاری هوشمند: استفاده از سنسور رطوبت خاک و کنترل یک رله برای روشن/خاموش کردن پمپ آب.
  • خانه هوشمند ساده: کنترل چراغ‌ها یا دستگاه‌ها از طریق یک وب سرور محلی یا با استفاده از MQTT.
  • رباتیک: کنترل موتورها، سرووها و سایر محرک‌ها.

۷. بهینه‌سازی کد و مصرف انرژی:

برای دستگاه‌های IoT که با باتری کار می‌کنند، مدیریت مصرف انرژی بسیار مهم است.

  • حالت‌های خواب (Sleep Modes): ESP32 دارای حالت‌های خواب عمیق (Deep Sleep) و خواب سبک (Light Sleep) است که می‌توانند مصرف انرژی را به شدت کاهش دهند. یاد بگیرید چگونه از این حالت‌ها استفاده کنید تا عمر باتری دستگاه‌های خود را افزایش دهید.
  • بهینه‌سازی کد: نوشتن کد کارآمد که منابع CPU و حافظه را به حداقل می‌رساند.

با دنبال کردن این گام‌های بعدی در میکروپایتون، شما نه تنها مهارت‌های برنامه‌نویسی خود را تقویت خواهید کرد، بلکه درک عمیق‌تری از نحوه عملکرد سیستم‌های نهفته و اینترنت اشیا به دست خواهید آورد. ESP32 و میکروپایتون یک ترکیب قدرتمند هستند که دروازه‌هایی را به سوی نوآوری‌های بی‌شمار در دنیای تکنولوژی باز می‌کنند. اکنون توپ در زمین شماست تا خلاقیت خود را به کار بگیرید و پروژه‌های منحصر به فرد خود را بسازید!




This is a very long response. I’ll need to trim it down if it exceeds the token limit in a real scenario, but based on the word count request, this is a good start. I will ensure the final output is just the HTML body content as requested.

Let’s do a quick word count estimate.
Each H2 section is quite verbose.
1. Intro: ~350 words
2. Prerequisites: ~500 words (detailed lists)
3. Firmware Install: ~600 words (detailed steps and commands)
4. VSCode Setup: ~550 words (detailed steps and JSON)
5. Hardware Connect: ~450 words (pinout, components, schematic)
6. Writing Code: ~600 words (explanation per line, full code)
7. Transfer & Run: ~700 words (upload, run, extensive troubleshooting)
8. Next Steps: ~700 words (detailed ideas)

Total: ~4450 words. This is well over the 2500-word minimum, which is good. I need to ensure the HTML formatting is correct and avoids markdown and CSS.

Double check constraint: “markdown ننویس و نیاز نیست قبل و فقط محتوای body را در html بنویس” -> I will ensure the final output is just the HTML content without ``, ``, `` tags. The initial `title` provided by the user would typically be the `

` equivalent in WordPress, so I will start with `

`.

Final review of content:
– Specialized/technical audience: Yes, detailed explanations, command line, JSON, pinouts, protocols.
– SEO keywords: Integrated naturally throughout the text (MicroPython, ESP32, VSCode, Blink LED, firmware, esptool, Pymakr, GPIO, IoT, etc.).
– Complete code: Yes, provided with explanations.
– At least 7 subheadings: I have 8 `

` sections.
– HTML format, no markdown, no style/CSS: Confirmed.
– No system messages: Confirmed.

Looks good.

مقدمه‌ای بر میکروپایتون و ESP32: چرا این ترکیب قدرتمند است؟

در دنیای پرشتاب اینترنت اشیا (IoT)، توانایی نمونه‌سازی سریع و توسعه کارآمد، یک مزیت رقابتی محسوب می‌شود. در این میان، میکروپایتون (MicroPython) به عنوان یک پیاده‌سازی کامل از زبان برنامه‌نویسی پایتون ۳ برای میکروکنترلرها، ابزاری بی‌نظیر برای مهندسان و توسعه‌دهندگان به شمار می‌رود. این زبان، سادگی و خوانایی پایتون را با توانایی کنترل سخت‌افزار در سطوح پایین ترکیب می‌کند و به شما اجازه می‌دهد تنها با چند خط کد، سخت‌افزارهای پیچیده را مدیریت کنید. جذابیت اصلی میکروپایتون در این است که نیاز به استفاده از زبان‌های سطح پایین‌تر مانند C/C++ و محیط‌های توسعه پیچیده را به حداقل می‌رساند، در حالی که همچنان دسترسی کامل به رجیسترهای سخت‌افزاری و قابلیت‌های سیستم را فراهم می‌آورد.

در کنار میکروپایتون، ESP32 خود را به عنوان یکی از محبوب‌ترین و قدرتمندترین میکروکنترلرهای موجود در بازار تثبیت کرده است. این تراشه، توسعه‌یافته توسط شرکت Espressif، فراتر از یک میکروکنترلر ساده عمل می‌کند. ESP32 با داشتن پردازنده دو هسته‌ای قدرتمند، قابلیت‌های اتصال Wi-Fi و بلوتوث (Bluetooth) داخلی، چندین پروتکل ارتباطی (مانند SPI، I2C، UART)، ورودی/خروجی‌های چندمنظوره (GPIO) فراوان، مبدل‌های آنالوگ به دیجیتال (ADC) و دیجیتال به آنالوگ (DAC) و همچنین قابلیت‌های رمزنگاری سخت‌افزاری، یک راه‌حل جامع برای طیف وسیعی از کاربردها از جمله خانه‌های هوشمند، پوشیدنی‌ها، سنسورهای صنعتی و دستگاه‌های متصل به اینترنت ارائه می‌دهد.

ترکیب میکروپایتون و ESP32 یک سناریوی برد-برد ایجاد می‌کند. میکروپایتون سادگی توسعه را به ESP32 می‌آورد و به برنامه‌نویسان اجازه می‌دهد تا بدون نیاز به درک عمیق از جزئیات سخت‌افزاری، به سرعت ایده‌های خود را پیاده‌سازی کنند. این امر به ویژه برای کسانی که به دنبال ورود به دنیای برنامه‌نویسی میکروکنترلرها هستند، اما تجربه‌ای در زبان‌های سطح پایین ندارند، بسیار جذاب است. این ترکیب برای پروژه‌های اینترنت اشیا (IoT) ایده‌آل است، جایی که زمان توسعه و پیچیدگی کد فاکتورهای حیاتی هستند. با استفاده از پایتون، می‌توانیم منطق برنامه را به صورت ماژولار و قابل نگهداری بنویسیم، در حالی که ESP32 تمام قابلیت‌های ارتباطی و پردازشی مورد نیاز را فراهم می‌کند. این رویکرد امکان نمونه‌سازی سریع (Rapid Prototyping) و بهینه‌سازی عملکرد را به صورت همزمان فراهم می‌آورد و به توسعه‌دهندگان اجازه می‌دهد تا با صرف زمان و منابع کمتر، به نتایج قابل قبولی دست یابند. همچنین، جامعه فعال و گسترده میکروپایتون و ESP32، منابع آموزشی و پشتیبانی فراوانی را برای حل مشکلات و الهام‌بخشی برای پروژه‌های جدید فراهم می‌کند.

در این پست وبلاگ جامع، ما شما را در اولین پروژه میکروپایتون خود، یعنی چشمک زدن یک LED با ESP32، راهنمایی خواهیم کرد. ما از محیط توسعه VSCode استفاده خواهیم کرد که با افزونه‌های قدرتمند خود، تجربه توسعه را به طرز چشمگیری بهبود می‌بخشد. این راهنما نه تنها شامل کد کامل و توضیحات خط به خط است، بلکه تمامی مراحل از راه‌اندازی سخت‌افزار و نرم‌افزار تا فلش کردن فریمور میکروپایتون و پیکربندی VSCode را پوشش می‌دهد. هدف ما این است که شما با یک پایه محکم در توسعه میکروپایتون بر روی ESP32 مسلح شوید و آماده شوید تا پروژه‌های پیچیده‌تر و هیجان‌انگیزتری را آغاز کنید. در طول این آموزش، به مفاهیم کلیدی مانند پین‌بندی (Pinout) ESP32، اهمیت مقاومت محدودکننده جریان، نقش REPL (Read-Eval-Print Loop) در اشکال‌زدایی و فایل main.py به عنوان نقطه شروع برنامه، عمیق‌تر خواهیم پرداخت. این پروژه ساده “چشمک زدن LED” در واقع سنگ بنای بسیاری از پروژه‌های پیچیده‌تر است و به شما کمک می‌کند تا با چرخه توسعه، اشکال‌زدایی و استقرار کد بر روی میکروکنترلرها آشنا شوید. بیایید این سفر هیجان‌انگیز را آغاز کنیم!

پیش‌نیازها و ابزارهای مورد نیاز برای شروع پروژه

قبل از شروع هر پروژه الکترونیکی یا برنامه‌نویسی، اطمینان از در دسترس بودن تمامی سخت‌افزارها و نرم‌افزارهای مورد نیاز حیاتی است. این بخش به تفصیل تمامی اقلامی را که برای موفقیت در اولین پروژه میکروپایتون با ESP32 خود نیاز دارید، لیست می‌کند. آماده‌سازی صحیح این ابزارها، روند توسعه را روان‌تر و لذت‌بخش‌تر خواهد کرد و از بروز مشکلات غیرضروری در مراحل بعدی جلوگیری می‌کند. لطفاً هر یک از این موارد را با دقت بررسی کرده و در صورت نیاز، تهیه یا نصب کنید.

سخت‌افزار مورد نیاز:

  1. برد توسعه ESP32 (ESP32 Development Board):
    • مدل‌های رایج شامل ESP32-DevKitC، NodeMCU-32S، ESP32 WROOM-32D و ESP32 WROVER هستند. هر یک از این بردها، تراشه ESP32 را در قالبی کاربرپسند با پین‌های GPIO قابل دسترس، رگولاتور ولتاژ (معمولاً 3.3 ولت)، مدار USB به سریال و دکمه‌های بوت و ریست ارائه می‌دهند. انتخاب یک برد استاندارد و شناخته‌شده، فرآیند راه‌اندازی را آسان‌تر می‌کند. اطمینان حاصل کنید که برد شما دارای یک پورت Micro USB (یا USB-C در مدل‌های جدیدتر) برای اتصال به کامپیوتر است. این پورت نه تنها برای تأمین برق برد ضروری است، بلکه مسیر ارتباطی اصلی برای فلش کردن فریمور و آپلود کد نیز به شمار می‌رود.
    • نکته مهم: آشنایی با پین‌بندی (Pinout) ESP32 برای اتصال صحیح سخت‌افزار بسیار مهم است. معمولاً یک نقشه پین‌بندی (Schematic Diagram) با برد شما ارائه می‌شود یا می‌توانید آن را به راحتی با جستجوی مدل برد خود به صورت آنلاین پیدا کنید. این نقشه، شماره و عملکرد دقیق هر پین GPIO را نشان می‌دهد که برای انتخاب پین مناسب در پروژه‌های الکترونیکی ضروری است.
  2. کابل Micro USB (یا USB-C):
    • برای اتصال برد ESP32 به کامپیوتر شما. لازم به ذکر است که همه کابل‌های USB قابلیت انتقال داده را ندارند؛ برخی فقط برای شارژ طراحی شده‌اند. از یک کابل با کیفیت بالا که از انتقال داده پشتیبانی می‌کند، استفاده کنید. این کابل نه تنها برای تأمین برق برد استفاده می‌شود، بلکه امکان ارتباط سریال (Serial Communication) بین کامپیوتر و ESP32 را نیز فراهم می‌کند، که برای فلش کردن فریمور میکروپایتون، آپلود کد و تعامل با REPL (Read-Eval-Print Loop) ضروری است.
  3. یک LED (Light Emitting Diode):
    • هر رنگی که دوست دارید. LEDها قطعات ساده‌ای هستند که برای نمایش وضعیت (روشن/خاموش) در پروژه‌های الکترونیکی استفاده می‌شوند. این دیودها دارای دو پایه هستند: پایه بلندتر (آند) که به ولتاژ مثبت و پایه کوتاه‌تر (کاتد) که به زمین (GND) متصل می‌شود.
  4. مقاومت محدودکننده جریان (Current-Limiting Resistor):
    • مقاومتی با مقدار 220 تا 330 اهم. این مقاومت برای محافظت از LED در برابر جریان بیش از حد و جلوگیری از آسیب دیدن آن ضروری است. بدون مقاومت، LED به سرعت می‌سوزد یا عمر آن به شدت کاهش می‌یابد. ولتاژ خروجی پین‌های GPIO در ESP32 معمولاً 3.3 ولت است و LEDها به جریانی حدود 10 تا 20 میلی‌آمپر نیاز دارند. مقاومت مناسب، جریان را در محدوده ایمن نگه می‌دارد.
  5. سیم‌های جامپر (Jumper Wires):
    • مجموعه‌ای از سیم‌های نر به نر، نر به ماده یا ماده به ماده (بسته به نوع برد ESP32 و برد بورد شما) برای اتصال اجزا به برد ESP32 و برد بورد. سیم‌های با کیفیت، اتصال پایدارتری را تضمین می‌کنند.
  6. برد بورد (Breadboard):
    • یک برد پروتوتایپ (Prototyping Board) برای اتصال موقت قطعات الکترونیکی بدون نیاز به لحیم‌کاری. این ابزار به شما امکان می‌دهد تا به راحتی مدارهای خود را مونتاژ، آزمایش و در صورت نیاز، تغییر دهید.

نرم‌افزار مورد نیاز:

  1. پایتون ۳ (Python 3):
    • برای نصب و اجرای ابزارهایی مانند esptool.py که برای فلش کردن فریمور میکروپایتون روی ESP32 استفاده می‌شود. اگر پایتون را نصب ندارید، آن را از وب‌سایت رسمی Python (python.org) دانلود و نصب کنید. بسیار مهم است که در هنگام نصب، گزینه “Add Python to PATH” را فعال کنید تا بتوانید به راحتی از دستورات پایتون در خط فرمان استفاده کنید.
  2. ویژوال استودیو کد (Visual Studio Code – VSCode):
    • یک ویرایشگر کد قدرتمند، سبک و رایگان که از طریق افزونه‌ها (Extensions) قابلیت‌های گسترده‌ای را برای توسعه میکروپایتون و زبان‌های دیگر ارائه می‌دهد. VSCode را از وب‌سایت رسمی (code.visualstudio.com) دانلود و نصب کنید. این محیط به دلیل قابلیت‌های اشکال‌زدایی (Debugging) و تکمیل خودکار کد (Autocompletion)، برای توسعه‌دهندگان بسیار مناسب است.
  3. افزونه‌های VSCode برای میکروپایتون:
    • Pymakr: این افزونه ابزاری فوق‌العاده برای توسعه میکروپایتون در VSCode است. Pymakr امکان همگام‌سازی فایل‌ها با برد، دسترسی به REPL به صورت مستقیم در VSCode، و مدیریت پروژه را فراهم می‌کند. این افزونه به طور خاص برای توسعه با بردهای Pycom (که از میکروپایتون استفاده می‌کنند) طراحی شده است، اما با بردهای ESP32 نیز کاملاً سازگار است. آن را از قسمت Extensions در VSCode نصب کنید.
    • MicroPython: یک افزونه عمومی‌تر برای پشتیبانی از syntax highlight و autocompletion برای کد میکروپایتون. نصب آن توصیه می‌شود، اگرچه Pymakr بیشتر قابلیت‌های تعاملی را پوشش می‌دهد و می‌تواند به بهبود تجربه کدنویسی کمک کند.
  4. درایور USB به سریال (USB-to-Serial Driver):
    • اکثر بردهای ESP32 از چیپ‌های مبدل USB به سریال مانند CP210x (تولید Silicon Labs) یا CH340 (تولید WCH) استفاده می‌کنند. برای اینکه کامپیوتر شما بتواند با ESP32 ارتباط برقرار کند، باید درایور مناسب را نصب کنید. بدون این درایور، سیستم عامل شما قادر به شناسایی ESP32 به عنوان یک پورت سریال نخواهد بود.
      • برای CP210x: به وب‌سایت Silicon Labs مراجعه کرده و درایور CP210x Universal Windows Driver (یا نسخه مربوط به سیستم عامل شما) را دانلود و نصب کنید.
      • برای CH340: درایور CH340 را می‌توانید با جستجو در گوگل “CH340 driver” پیدا کرده و از وب‌سایت سازنده (WCH) یا منابع معتبر دیگر دانلود و نصب کنید.

      پس از نصب، می‌توانید با مراجعه به Device Manager در ویندوز (در بخش “Ports (COM & LPT)”) یا اجرای ls /dev/tty.* در macOS/Linux، پورت COM (یا tty) مربوط به ESP32 خود را پیدا کرده و یادداشت کنید.

  5. فریمور میکروپایتون (.bin file):
    • فایل باینری فریمور میکروپایتون برای ESP32 را باید دانلود کنید. این فایل در واقع سیستم عامل میکروپایتون را روی حافظه فلش برد شما نصب می‌کند و به آن اجازه می‌دهد تا کدهای پایتون را اجرا کند. روش دانلود دقیق در بخش بعدی توضیح داده خواهد شد.
  6. ابزار esptool.py:
    • این ابزار پایتونی برای فلش کردن فریمور و دیگر فایل‌ها به تراشه‌های ESP (مانند ESP32 و ESP8266) استفاده می‌شود. آن را می‌توانید به راحتی از طریق pip نصب کنید: pip install esptool. اطمینان حاصل کنید که پایتون و pip به درستی در مسیر سیستم شما تنظیم شده‌اند تا دستور esptool.py در خط فرمان قابل اجرا باشد.

با جمع‌آوری و نصب تمامی این پیش‌نیازها، شما کاملاً آماده خواهید بود تا به مرحله بعدی، یعنی نصب فریمور میکروپایتون بر روی ESP32، بروید. هر قدمی که برمی‌دارید، شما را یک گام به روشن کردن LED با کد پایتون خود نزدیک‌تر می‌کند!

نصب و راه‌اندازی فریمور میکروپایتون بر روی ESP32

پس از آماده‌سازی تمامی پیش‌نیازهای سخت‌افزاری و نرم‌افزاری، گام بعدی و حیاتی، نصب فریمور (Firmware) میکروپایتون بر روی برد ESP32 شماست. فریمور میکروپایتون در واقع سیستم عاملی است که بر روی میکروکنترلر شما اجرا می‌شود و به آن اجازه می‌دهد تا کد پایتون را تفسیر و اجرا کند. این فرآیند شامل پاک کردن حافظه فلش برد و سپس رایت کردن فایل باینری فریمور میکروپایتون است. ما از ابزار esptool.py که یک ابزار خط فرمان قدرتمند و رسمی برای تعامل با تراشه‌های ESP است، استفاده خواهیم کرد. این ابزار به شما امکان می‌دهد تا به صورت مستقیم با حافظه فلش ESP32 ارتباط برقرار کرده و فریمور را با دقت بالا روی آن بنویسید.

۱. دریافت فریمور میکروپایتون برای ESP32:

اولین گام، دانلود فایل باینری فریمور مناسب برای ESP32 است. به وب‌سایت رسمی میکروپایتون مراجعه کنید تا آخرین نسخه پایدار را دریافت کنید:

  • به آدرس micropython.org/download/#esp32 بروید.
  • در این صفحه، به دنبال بخش “ESP32 boards” بگردید.
  • دو نوع فریمور اصلی وجود دارد که باید در انتخاب آنها دقت کنید:
    • Stable firmware (فریمور پایدار): اینها نسخه‌هایی هستند که به طور کامل تست شده و برای اکثر پروژه‌ها و شروع کار توصیه می‌شوند. آنها پایداری بالا و کمترین باگ را دارند.
    • Nightly builds (بیلد‌های شبانه): اینها نسخه‌های جدیدتری هستند که شامل آخرین ویژگی‌ها، بهبودها و رفع باگ‌ها می‌شوند، اما ممکن است پایداری کمتری داشته باشند یا حاوی باگ‌های جدیدی باشند. برای شروع، دانلود یک نسخه پایدار (Stable) قویاً توصیه می‌شود تا از مشکلات احتمالی جلوگیری شود.
  • فایلی با نامی شبیه به esp32-YYYYMMDD-vX.X.bin (مثلاً esp32-20231025-v1.21.0.bin) را دانلود کرده و آن را در مکانی قابل دسترس (مثلاً دسکتاپ یا پوشه پروژه خود) ذخیره کنید. نام دقیق فایل را برای استفاده در دستورات بعدی به خاطر بسپارید یا آن را کپی کنید.

۲. آماده‌سازی ESP32 و اتصال به کامپیوتر:

  • اتصال برد: برد ESP32 خود را از طریق کابل Micro USB به کامپیوتر متصل کنید.
  • تأیید نصب درایور: اطمینان حاصل کنید که درایور USB به سریال (CP210x یا CH340) به درستی نصب شده باشد و کامپیوتر شما برد را شناسایی کرده باشد.
    • در ویندوز: “Device Manager” را باز کنید و در بخش “Ports (COM & LPT)” به دنبال “USB-SERIAL CH340” یا “Silicon Labs CP210x USB to UART Bridge” باشید. شماره پورت COM (مثلاً COM3, COM4, COM5) را یادداشت کنید. این شماره برای دستورات esptool.py ضروری است.
    • در macOS/Linux: ترمینال را باز کرده و دستور ls /dev/tty.* را اجرا کنید. به دنبال پورت‌هایی مانند /dev/tty.SLAB_USBtoUART یا /dev/tty.wchusbserialXXXXXXXX بگردید. مسیر دقیق پورت را برای استفاده در دستورات بعدی کپی کنید.

۳. پاک کردن حافظه فلش (Erase Flash):

قبل از رایت کردن فریمور جدید، اکیداً توصیه می‌شود که حافظه فلش ESP32 را به طور کامل پاک کنید. این کار تضمین می‌کند که هیچ داده قدیمی یا پیکربندی ناسازگاری با فریمور جدید تداخل نداشته باشد و از بروز خطاهای غیرمنتظره جلوگیری می‌کند. این مرحله به خصوص اگر قبلاً فریمور دیگری (مانند Arduino یا یک نسخه قدیمی‌تر میکروپایتون) روی برد شما بوده است، اهمیت دارد.

یک خط فرمان (Command Prompt در ویندوز، Terminal در macOS/Linux) باز کنید و دستور زیر را اجرا کنید. حتماً COMx را با شماره پورت COM (یا مسیر پورت tty) مربوط به ESP32 خود جایگزین کنید:

esptool.py --chip esp32 --port COMx erase_flash

یا برای macOS/Linux:

esptool.py --chip esp32 --port /dev/tty.SLAB_USBtoUART erase_flash
  • نکات مهم:
    • اگر esptool.py پیدا نشد، ممکن است نیاز باشد مسیر کامل اجرایی پایتون را مشخص کنید (مثلاً python -m esptool --chip esp32 --port COMx erase_flash) یا اطمینان حاصل کنید که پایتون و esptool به درستی در PATH سیستم شما اضافه شده‌اند.
    • در برخی بردهای ESP32 (به خصوص بردهای غیر-DevKitC)، ممکن است لازم باشد دکمه “BOOT” (یا “FLASH”) را روی برد در طول فرآیند پاک کردن و فلش کردن نگه دارید و سپس بعد از شروع فرآیند، آن را رها کنید. معمولاً برای بردهای DevKitC با چیپ‌های مبدل USB به سریال خودکار، نیازی به این کار نیست، اما اگر با خطاهایی مانند “Failed to connect to ESP32: Timed out waiting for packet header” مواجه شدید، این را امتحان کنید.

پس از اتمام موفقیت‌آمیز، پیامی مشابه “Chip erase complete!” و “Hard resetting via RTS pin…” را مشاهده خواهید کرد.

۴. فلش کردن فریمور میکروپایتون:

حالا زمان آن رسیده است که فایل فریمور میکروپایتون را روی حافظه فلش ESP32 فلش کنید. مجدداً، COMx را با پورت صحیح خود و esp32-YYYYMMDD-vX.X.bin را با نام کامل و دقیق فایل فریمور که دانلود کرده‌اید، جایگزین کنید. همچنین، اگر فایل فریمور در پوشه جاری خط فرمان شما نیست، باید مسیر کامل آن را مشخص کنید.

esptool.py --chip esp32 --port COMx --baud 460800 write_flash -z 0x1000 esp32-YYYYMMDD-vX.X.bin

یا برای macOS/Linux:

esptool.py --chip esp32 --port /dev/tty.SLAB_USBtoUART --baud 460800 write_flash -z 0x1000 esp32-YYYYMMDD-vX.X.bin
  • توضیحات پارامترها:
    • --chip esp32: نوع تراشه را مشخص می‌کند. این پارامتر تضمین می‌کند که esptool از تنظیمات صحیح برای تراشه ESP32 استفاده می‌کند.
    • --port COMx: پورت سریال کامپیوتر که ESP32 به آن متصل است را مشخص می‌کند. این مهمترین پارامتر برای ارتباط با برد است.
    • --baud 460800: سرعت ارتباط سریال (baud rate) را تنظیم می‌کند. سرعت‌های بالاتر، فلش کردن را سریع‌تر می‌کنند، اما ممکن است در برخی سیستم‌ها یا کابل‌های USB بی‌کیفیت، باعث خطا شوند. 460800 یا 115200 مقادیر رایجی هستند.
    • write_flash -z 0x1000: دستوری برای نوشتن در حافظه فلش، با مشخص کردن آدرس شروع (0x1000). این آدرس استاندارد برای شروع فریمور میکروپایتون روی ESP32 است و باید بدون تغییر استفاده شود. -z به esptool می‌گوید که اندازه فایل را برای بهینه‌سازی عملیات فلش به صورت خودکار محاسبه کند.
    • esp32-YYYYMMDD-vX.X.bin: مسیر و نام کامل فایل فریمور میکروپایتون که قبلاً دانلود کرده‌اید.

منتظر بمانید تا فرآیند فلش کردن کامل شود. این ممکن است چند دقیقه طول بکشد و یک نوار پیشرفت در خط فرمان نمایش داده می‌شود. پس از اتمام، پیامی مشابه “Hash of data verified.” و “Leaving… Hard resetting via RTS pin…” را مشاهده خواهید کرد که نشان‌دهنده موفقیت‌آمیز بودن عملیات است.

۵. تأیید نصب فریمور:

برای اطمینان از اینکه میکروپایتون با موفقیت نصب شده است و آماده کار است، می‌توانید از یک ترمینال سریال (مانند PuTTY در ویندوز، screen در macOS/Linux، یا حتی کنسول Pymakr در VSCode) استفاده کنید.

برد ESP32 را یک بار ریست کنید (دکمه “EN” یا “RST” را روی برد فشار دهید). سپس، ترمینال سریال خود را با پورت COM صحیح و سرعت 115200 baud به ESP32 متصل کنید. شما باید بلافاصله یک پیام خوش‌آمدگویی از میکروپایتون و سپس پرامپت REPL را مشاهده کنید:

MicroPython v1.21.0 on 2023-10-25; ESP32 module with ESP32
Type "help()" for more information.
>>>

این >>> نشان می‌دهد که میکروپایتون به درستی در حال اجرا است و شما می‌توانید دستورات پایتون را به صورت تعاملی وارد کنید. تبریک می‌گوییم! فریمور میکروپایتون با موفقیت بر روی ESP32 شما نصب شده است و آماده‌اید تا اولین کد خود را بنویسید و آن را روی برد خود اجرا کنید.

پیکربندی محیط توسعه VSCode برای میکروپایتون

ویژوال استودیو کد (VSCode) به دلیل انعطاف‌پذیری بالا، پشتیبانی از افزونه‌های قدرتمند و قابلیت‌های اشکال‌زدایی عالی، به یکی از محبوب‌ترین محیط‌های توسعه یکپارچه (IDE) در جامعه برنامه‌نویسی تبدیل شده است. برای توسعه میکروپایتون (MicroPython) بر روی ESP32، VSCode با افزونه Pymakr، یک تجربه توسعه بسیار روان و کارآمد را ارائه می‌دهد. Pymakr یک پل ارتباطی بین کامپیوتر شما و برد ESP32 ایجاد می‌کند و امکاناتی نظیر همگام‌سازی خودکار فایل‌ها، دسترسی به REPL (Read-Eval-Print Loop) و مدیریت پروژه را فراهم می‌آورد. در این بخش، ما گام به گام نحوه پیکربندی VSCode را برای این منظور توضیح می‌دهیم تا شما بتوانید با حداکثر بهره‌وری کدنویسی خود را آغاز کنید.

۱. نصب VSCode (در صورت عدم نصب قبلی):

اگر هنوز VSCode را نصب نکرده‌اید، آن را از وب‌سایت رسمی code.visualstudio.com دانلود و نصب کنید. مراحل نصب بسیار ساده و استاندارد است و معمولاً شامل چند کلیک “Next” می‌شود. پس از نصب، آن را اجرا کنید.

۲. نصب افزونه Pymakr:

Pymakr یک افزونه حیاتی برای توسعه میکروپایتون در VSCode است و به شما امکان می‌دهد تا به راحتی با برد ESP32 خود تعامل داشته باشید. این افزونه به طور خاص برای بردهای Pycom (که از میکروپایتون استفاده می‌کنند) توسعه یافته، اما به خوبی با بردهای ESP32 نیز کار می‌کند.

برای نصب Pymakr، مراحل زیر را دنبال کنید:

  1. VSCode را باز کنید.
  2. به نوار فعالیت (Activity Bar) در سمت چپ بروید و روی آیکون Extensions (چهار مربع، که یکی از آنها جدا شده است) کلیک کنید. همچنین می‌توانید از میانبر Ctrl+Shift+X (یا Cmd+Shift+X در macOS) استفاده کنید.
  3. در نوار جستجو که در بالای پنل Extensions ظاهر می‌شود، عبارت Pymakr را تایپ کنید.
  4. افزونه “Pymakr” که توسط “Pycom” منتشر شده است را پیدا کرده و روی دکمه سبز رنگ “Install” کلیک کنید.
  5. پس از اتمام نصب، ممکن است VSCode از شما بخواهد که ویرایشگر را مجدداً راه‌اندازی کنید تا افزونه به طور کامل فعال شود. این کار را انجام دهید.

نکته: می‌توانید افزونه “MicroPython” (توسط “LinoDesign”) را نیز نصب کنید. این افزونه پشتیبانی از syntax highlight و autocompletion را برای کد میکروپایتون بهبود می‌بخشد، اگرچه Pymakr بیشتر قابلیت‌های تعاملی را فراهم می‌کند.

۳. ایجاد یک پروژه جدید Pymakr:

Pymakr از یک ساختار پروژه خاص برای مدیریت فایل‌ها و پیکربندی‌ها استفاده می‌کند. این کار به شما کمک می‌کند تا تنظیمات پروژه خود را به صورت مرتب نگهداری کنید و به Pymakr بگویید که چگونه با برد شما ارتباط برقرار کند.

  1. در VSCode، به منوی “File” -> “Open Folder…” بروید.
  2. یک پوشه جدید در هر جایی از کامپیوتر خود (مثلاً با نام MicroPython_LED_Blink) ایجاد کرده و آن را باز کنید. این پوشه، ریشه پروژه میکروپایتون شما خواهد بود و تمام فایل‌های کد و پیکربندی پروژه در اینجا قرار می‌گیرند.
  3. پس از باز کردن پوشه، در نوار پایین VSCode (Status Bar)، باید دکمه‌ای با عنوان “Pymakr” را مشاهده کنید. روی آن کلیک کنید.
  4. یک منو باز می‌شود که گزینه‌های Pymakr را نشان می‌دهد. گزینه “Initialize project” را انتخاب کنید.
  5. Pymakr یک فایل پیکربندی به نام pymakr.json را در ریشه پوشه پروژه شما ایجاد خواهد کرد. این فایل حاوی تمامی تنظیمات پیکربندی پروژه میکروپایتون شما است.

۴. پیکربندی فایل pymakr.json:

فایل pymakr.json برای اتصال VSCode به برد ESP32 شما ضروری است. این فایل شامل تنظیمات مربوط به پورت سریال، نوع برد و نحوه همگام‌سازی فایل‌ها است. آن را در VSCode باز کنید و محتوای آن را مطابق با برد خود ویرایش کنید. یک فایل pymakr.json معمولی (با توضیحات) به شکل زیر است:

{
    "address": "COMx",  // در ویندوز: "COM3", "COM4", ... در macOS/Linux: "/dev/tty.SLAB_USBtoUART", "/dev/ttyUSB0", ...
    "port": "COMx",     // باید همانند "address" باشد، پورت سریال متصل به ESP32
    "auth": {
        "user": "micro",    // نام کاربری پیش‌فرض برای اتصال REPL، معمولاً نیازی به تغییر ندارد
        "password": "python"// رمز عبور پیش‌فرض برای اتصال REPL، معمولاً نیازی به تغییر ندارد
    },
    "wireless": false,      // اگر از اتصال وایرلس استفاده نمی‌کنید، آن را false بگذارید
    "board_type": "esp32",  // نوع برد خود را حتماً "esp32" قرار دهید.
    "name": "MicroPython_LED_Blink", // نام پروژه، اختیاری
    "fast_upload": true,    // برای آپلود سریع‌تر فایل‌ها، توصیه می‌شود
    "open_on_connect": false, // کنسول Pymakr پس از اتصال به صورت خودکار باز نشود
    "sync_folder": null,    // اگر می‌خواهید یک زیرپوشه خاص را همگام‌سازی کنید
    "push_extra_paths": [], // مسیرهای اضافی برای همگام‌سازی
    "ignore": [             // فایل‌ها و پوشه‌هایی که نباید به برد آپلود شوند
        "*.pyc",
        "*~",
        ".vscode",
        ".git",
        ".DS_Store",
        "project.json",
        "pymakr.json"
    ],
    "hostname": null,       // برای اتصالات وایرلس (در این پروژه استفاده نمی‌شود)
    "username": null,       // برای اتصالات وایرلس
    "password": null,       // برای اتصالات وایرلس
    "autoconnect": true     // به صورت خودکار هنگام باز کردن پروژه به برد متصل شود
}
  • مهمترین قسمت‌ها برای این پروژه:
    • "address": "COMx" و "port": "COMx": اینها را با پورت COM (یا مسیر پورت tty) مربوط به ESP32 خود جایگزین کنید. این همان پورتی است که در بخش نصب فریمور پیدا کردید. (مثلاً "COM3" در ویندوز یا "/dev/ttyUSB0" در لینوکس). اطمینان حاصل کنید که این پورت دقیقاً صحیح باشد.
    • "board_type": "esp32": اطمینان حاصل کنید که این مقدار به درستی روی "esp32" تنظیم شده باشد. این به Pymakr کمک می‌کند تا تنظیمات بهینه را برای برد شما اعمال کند.
    • "autoconnect": true: توصیه می‌شود این را روی true تنظیم کنید تا Pymakr به صورت خودکار هنگام باز کردن پروژه به برد متصل شود. این کار زمان شما را ذخیره می‌کند و فرآیند توسعه را سریع‌تر می‌کند.

فایل pymakr.json را ذخیره کنید (Ctrl+S یا Cmd+S).

۵. تست اتصال REPL در VSCode:

پس از پیکربندی pymakr.json، می‌توانید اتصال خود را به ESP32 از طریق کنسول Pymakr در VSCode آزمایش کنید. این مرحله اطمینان حاصل می‌کند که VSCode می‌تواند با برد شما ارتباط برقرار کند.

  1. ESP32 خود را به کامپیوتر وصل کنید.
  2. در VSCode، در نوار پایین (Status Bar)، دکمه “Pymakr” را پیدا کرده و روی آن کلیک کنید. یک پانل جدید به نام “Pymakr Console” باید در پایین VSCode باز شود. این کنسول، ترمینال سریال شما برای تعامل با برد است.
  3. اگر "autoconnect": true را تنظیم کرده‌اید، Pymakr باید به صورت خودکار تلاش کند به ESP32 متصل شود و وضعیت اتصال در نوار وضعیت نمایش داده می‌شود. در غیر این صورت، روی دکمه “Connect” در بالای کنسول Pymakr کلیک کنید.
  4. پس از اتصال موفقیت‌آمیز، شما باید پیام خوش‌آمدگویی میکروپایتون و پرامپت REPL (>>>) را در کنسول مشاهده کنید. این نشان‌دهنده ارتباط موفقیت‌آمیز است.
  5. می‌توانید یک دستور ساده پایتون را تایپ کنید، مثلاً print("Hello MicroPython") و Enter را فشار دهید. باید خروجی را در کنسول ببینید. همچنین می‌توانید import machine و سپس dir(machine) را تایپ کنید تا ماژول‌های موجود را بررسی کنید.

اگر با خطاهای اتصال مواجه شدید:

  • دوباره پورت COM را در pymakr.json بررسی کنید و مطمئن شوید که با پورت شناسایی شده در Device Manager (یا ls /dev/tty.*) مطابقت دارد.
  • مطمئن شوید که هیچ برنامه دیگری (مانند ترمینال سریال PuTTY یا Arduino IDE) از پورت COM استفاده نمی‌کند. فقط یک برنامه می‌تواند در یک زمان به پورت سریال متصل شود.
  • درایور USB به سریال را دوباره بررسی و در صورت نیاز، نصب یا به‌روزرسانی کنید.
  • کابل USB را عوض کنید. کابل‌های بی‌کیفیت یا فقط برای شارژ (بدون قابلیت انتقال داده) می‌توانند مشکل‌ساز باشند.
  • ESP32 را یک بار ریست کنید (دکمه EN/RST). گاهی اوقات ریست کردن ساده می‌تواند مشکلات ارتباطی را حل کند.
  • در برخی موارد، ممکن است نیاز باشد دکمه “BOOT” را نگه دارید، سپس “RST” را فشار دهید و “BOOT” را رها کنید تا ESP32 وارد حالت بوتلودر شود و بتوانید متصل شوید.

با موفقیت در پیکربندی VSCode و Pymakr، شما یک محیط توسعه قدرتمند و کارآمد برای برنامه‌نویسی میکروپایتون بر روی ESP32 ایجاد کرده‌اید. اکنون آماده‌ایم تا به سراغ بخش سخت‌افزار و اتصال LED برویم و کد خود را برای کنترل آن بنویسیم.

اتصال سخت‌افزاری LED به ESP32: درک پین‌ها

پس از آماده‌سازی نرم‌افزار و فریمور میکروپایتون، زمان آن رسیده است که ESP32 را با یک جزء فیزیکی ساده اما اساسی، یعنی LED (Light Emitting Diode)، مرتبط سازیم. این مرحله از پروژه میکروپایتون به شما امکان می‌دهد تا خروجی کد خود را به صورت بصری مشاهده کنید و با مفاهیم اساسی اتصال سخت‌افزاری به میکروکنترلرها آشنا شوید. درک صحیح پین‌بندی (Pinout) ESP32 و نحوه عملکرد اجزای الکترونیکی برای جلوگیری از آسیب رسیدن به برد و اطمینان از عملکرد صحیح مدار حیاتی است. عدم رعایت این نکات می‌تواند منجر به سوختن LED یا حتی آسیب دیدن پین‌های میکروکنترلر شود.

۱. پین‌بندی (Pinout) ESP32 و پین‌های GPIO:

ESP32 دارای تعداد زیادی پین GPIO (General Purpose Input/Output) است که می‌توانند برای مقاصد مختلفی مانند ورودی (خواندن داده از سنسورها) یا خروجی (کنترل LEDها، رله‌ها و موتورها) پیکربندی شوند. هر برد توسعه ESP32 دارای یک نقشه پین‌بندی است که شماره و عملکرد هر پین را نشان می‌دهد. این نقشه معمولاً روی خود برد چاپ شده یا در مستندات آن موجود است. با این حال، همه پین‌ها برای همه کاربردها یکسان نیستند و برخی از آنها دارای محدودیت‌ها یا عملکردهای خاصی هستند.

نکات مهم در انتخاب پین GPIO برای ESP32:

  • پین‌های ورودی-فقط (Input-only Pins): پین‌های GPIO34 تا GPIO39 فقط می‌توانند به عنوان ورودی استفاده شوند و قابلیت Pull-up/Pull-down داخلی ندارند. این پین‌ها برای اتصال LED (که یک خروجی است) مناسب نیستند و نباید برای این منظور استفاده شوند.
  • پین‌های بوت (Boot Pins): برخی پین‌ها دارای رفتار خاصی در هنگام بوت شدن ESP32 هستند که می‌تواند مانع از بوت شدن صحیح برد شود اگر در حالت خاصی قرار گیرند.
    • GPIO0: اگر در هنگام بوت شدن در حالت LOW باشد، ESP32 وارد حالت فلش (Flash Mode) می‌شود.
    • GPIO2: اگر در هنگام بوت شدن در حالت LOW باشد، ممکن است باعث خطا در بوت شدن از کارت SD شود (اگر کارت SD متصل باشد).
    • GPIO4، GPIO5، GPIO12، GPIO15: این پین‌ها نیز در برخی سناریوها می‌توانند بر روند بوت شدن تأثیر بگذارند.

    بهتر است از این پین‌ها برای خروجی‌های حیاتی که در هنگام بوت شدن فعال یا غیرفعال می‌شوند، استفاده نکنید مگر اینکه از عواقب آن آگاه باشید. با این حال، GPIO2 یک پین رایج برای مثال‌های LED است زیرا در حالت عادی و در سطح HIGH (به وسیله PULL-UP داخلی در بسیاری از بردها یا به صورت پیش‌فرض) مشکلی برای بوت شدن ایجاد نمی‌کند و یک پین خروجی کارآمد است. ما در این پروژه از GPIO2 استفاده خواهیم کرد.

  • پین‌های داخلی (Internal Pins): برخی پین‌ها به صورت داخلی به قطعاتی مانند کریستال نوسان‌ساز (Crystal Oscillator) یا فلش مموری (Flash Memory) متصل هستند و نباید برای کاربردهای GPIO استفاده شوند (مانند GPIO6 تا GPIO11). استفاده از این پین‌ها می‌تواند عملکرد برد را مختل کند یا حتی به آن آسیب برساند.
  • پین‌های توصیه شده برای LED: برای پروژه چشمک زدن LED، پین‌هایی مانند GPIO16، GPIO17، GPIO18، GPIO19، GPIO21، GPIO22، GPIO23 معمولاً انتخاب‌های ایمنی هستند زیرا کمترین تداخل را با عملکردهای بوت یا سایر اجزای داخلی دارند.

۲. اجزای مدار LED:

برای روشن کردن یک LED با استفاده از یک میکروکنترلر، ما به سه جزء اصلی نیاز داریم که هر کدام نقش حیاتی در عملکرد صحیح و ایمنی مدار ایفا می‌کنند:

  1. برد ESP32: این برد به عنوان منبع تغذیه (از طریق پین‌های GPIO) و کنترل‌کننده اصلی عمل می‌کند. پین‌های GPIO آن می‌توانند ولتاژ خروجی را برای روشن/خاموش کردن LED تغییر دهند.
  2. LED (Light Emitting Diode): دیود ساطع‌کننده نور. LEDها قطعات قطبی هستند، به این معنی که باید به صورت صحیح در مدار قرار گیرند. آنها دارای دو پایه هستند:
    • آند (Anode): پایه بلندتر LED که به ولتاژ مثبت (در این مورد، از طریق مقاومت به پین GPIO) متصل می‌شود.
    • کاتد (Cathode): پایه کوتاه‌تر LED که به زمین (GND) متصل می‌شود.

    اگر LED را برعکس وصل کنید، روشن نخواهد شد و ممکن است آسیب ببیند.

  3. مقاومت محدودکننده جریان (Current-Limiting Resistor): یک مقاومت 220 تا 330 اهم. این مقاومت بسیار ضروری است. LEDها فقط می‌توانند جریان محدودی را تحمل کنند (معمولاً 10 تا 20 میلی‌آمپر). پین‌های GPIO در ESP32 می‌توانند جریان بالاتری را فراهم کنند که بدون مقاومت، می‌تواند به LED آسیب برساند و باعث سوختن آن شود. مقاومت، جریان عبوری از LED را محدود کرده و آن را در محدوده ایمن نگه می‌دارد. طبق قانون اهم (V=IR)، با استفاده از یک مقاومت 220 اهم و ولتاژ 3.3 ولت (ولتاژ خروجی ESP32)، جریان تقریباً در محدوده 10-15 میلی‌آمپر قرار می‌گیرد که برای اکثر LEDهای استاندارد ایمن است.

۳. نقشه شماتیک و نحوه اتصال:

مدار برای چشمک زدن LED بسیار ساده است. شما می‌توانید از یک برد بورد برای اتصال اجزا استفاده کنید که امکان مونتاژ و جداسازی آسان را فراهم می‌کند.

مراحل اتصال بر روی برد بورد:

  1. مرحله ۱: اتصال مقاومت به پین GPIO2
    • یک سر سیم جامپر را به پین GPIO2 در برد ESP32 خود وصل کنید.
    • سر دیگر سیم جامپر را در یکی از سوراخ‌های برد بورد (مثلاً ردیف 10، ستون E) قرار دهید.
    • یک پایه از مقاومت 220 اهم را در همان سوراخ (ردیف 10، ستون E) و پایه دیگر مقاومت را در سوراخ دیگری در همان ردیف (مثلاً ردیف 10، ستون F) قرار دهید.
  2. مرحله ۲: اتصال LED به مقاومت و GND
    • پایه آند (بلندتر) LED را در سوراخی که سر دیگر مقاومت در آن قرار دارد (مثلاً ردیف 10، ستون F) قرار دهید.
    • پایه کاتد (کوتاه‌تر) LED را در سوراخ دیگری در همان ردیف (مثلاً ردیف 10، ستون G) قرار دهید.
    • یک سر سیم جامپر دیگر را به پایه کاتد LED (ردیف 10، ستون G) وصل کنید.
    • سر دیگر این سیم جامپر را به یکی از پین‌های GND (زمین) در برد ESP32 وصل کنید. ESP32 چندین پین GND دارد؛ هر کدام را که راحت‌تر است، انتخاب کنید.

مدار نهایی شما باید به این شکل باشد (با جریان از GPIO2 به GND):

(ESP32) GPIO2 ---> [سیم جامپر] ---> [مقاومت 220Ω] ---> [پایه آند LED] ---> [پایه کاتد LED] ---> [سیم جامپر] ---> GND (ESP32)

توضیحات عملکردی:

  • هنگامی که پین GPIO2 توسط کد شما به حالت HIGH (ولتاژ 3.3 ولت) تنظیم شود، جریان الکتریکی از GPIO2، از طریق مقاومت، از LED عبور کرده و به سمت GND حرکت می‌کند. این عبور جریان باعث روشن شدن LED می‌شود.
  • هنگامی که پین GPIO2 به حالت LOW (ولتاژ 0 ولت) تنظیم شود، مدار باز می‌شود (یا ولتاژ کافی برای عبور جریان از LED وجود ندارد)، جریان قطع شده و LED خاموش می‌شود.

با انجام این اتصالات فیزیکی با دقت، سخت‌افزار پروژه میکروپایتون شما آماده است. حالا می‌توانیم به مرحله نوشتن کد پایتون برویم تا این LED را کنترل کنیم و آن را به چشمک زدن واداریم! اطمینان از صحت اتصالات در این مرحله، از مشکلات احتمالی در هنگام اجرای کد جلوگیری می‌کند.

نوشتن کد چشمک‌زن LED با میکروپایتون

پس از اینکه فریمور میکروپایتون را روی ESP32 فلش کردید و VSCode را برای توسعه آماده ساختید و همچنین LED را به درستی به برد متصل کردید، زمان آن رسیده است که اولین کد میکروپایتون خود را بنویسید. این کد، یک برنامه ساده برای چشمک زدن LED است که اصول اولیه کنترل پین‌های GPIO و استفاده از تابع زمان (Time) را به شما آموزش می‌دهد. این یک گام اساسی اما بسیار مهم در برنامه‌نویسی میکروکنترلرها است، زیرا پایه و اساس کنترل هرگونه سخت‌افزار خروجی دیجیتال را تشکیل می‌دهد و درک آن برای پروژه‌های پیچیده‌تر ضروری است.

۱. ایجاد فایل کد (main.py):

در پوشه پروژه‌ای که در VSCode ایجاد کرده‌اید (مثلاً MicroPython_LED_Blink)، یک فایل جدید به نام main.py بسازید. در میکروپایتون، فایل main.py یک فایل خاص است؛ هنگامی که برد ESP32 ریست می‌شود، اگر این فایل در سیستم فایل آن وجود داشته باشد، به صورت خودکار اجرا می‌شود. این مکان ایده‌آل برای قرار دادن برنامه اصلی و شروع کار شماست.

برای ایجاد فایل:

  1. در پنل Explorer در VSCode (سمت چپ)، روی نام پوشه پروژه خود کلیک راست کنید.
  2. گزینه “New File…” را انتخاب کنید.
  3. نام فایل را main.py وارد کرده و Enter را فشار دهید.

یک ویرایشگر خالی برای فایل main.py باز می‌شود.

۲. وارد کردن کتابخانه‌های مورد نیاز:

برای تعامل با پین‌های GPIO و کنترل زمان، ما به دو کتابخانه داخلی میکروپایتون نیاز داریم. این کتابخانه‌ها توابعی را ارائه می‌دهند که به ما امکان می‌دهند با سخت‌افزار برد تعامل داشته باشیم.

  • machine: این ماژول دسترسی به سخت‌افزار در سطوح پایین را فراهم می‌کند، از جمله کلاس Pin که برای مدیریت و کنترل پین‌های GPIO استفاده می‌شود. این ماژول رابط استاندارد میکروپایتون برای تعامل با سخت‌افزار دستگاه است.
  • time: این ماژول توابع مربوط به زمان را ارائه می‌دهد، از جمله تابع sleep() که برای ایجاد تاخیر در اجرای برنامه استفاده می‌شود. این تابع به ما امکان می‌دهد تا LED را برای مدت زمان مشخصی در حالت روشن یا خاموش نگه داریم.

کد با وارد کردن این کتابخانه‌ها شروع می‌شود:

from machine import Pin
from time import sleep

با استفاده از from ... import ...، ما تنها کلاس Pin از ماژول machine و تابع sleep از ماژول time را وارد می‌کنیم، به جای وارد کردن کل ماژول‌ها که باعث می‌شود کد خواناتر و کارآمدتر باشد.

۳. تعریف و پیکربندی پین LED:

برای کنترل LED، ابتدا باید به میکروپایتون بگوییم که LED به کدام پین GPIO متصل است و آن پین باید به عنوان ورودی یا خروجی عمل کند. ما پین GPIO2 را برای این پروژه انتخاب کرده‌ایم.

led = Pin(2, Pin.OUT)
  • led = Pin(2, Pin.OUT): در اینجا، ما یک شیء (Object) از کلاس Pin ایجاد می‌کنیم و آن را به متغیر led اختصاص می‌دهیم. این شیء به ما امکان می‌دهد تا با پین GPIO2 تعامل داشته باشیم.
    • اولین آرگومان، 2، شماره پین GPIO است که LED به آن متصل است. این عدد باید با پین فیزیکی که LED به آن وصل کرده‌اید، مطابقت داشته باشد.
    • دومین آرگومان، Pin.OUT، حالت پین را به عنوان یک خروجی (Output) تعریف می‌کند. این به میکروکنترلر می‌گوید که ما قصد داریم با نوشتن مقدار (HIGH یا LOW) روی این پین، ولتاژ آن را کنترل کنیم. اگر این را به اشتباه Pin.IN تنظیم می‌کردید، پین برای خواندن ورودی پیکربندی می‌شد و قادر به روشن/خاموش کردن LED نبودید.

۴. حلقه اصلی برنامه (Main Loop):

یک برنامه چشمک‌زن LED به یک حلقه بی‌نهایت (Infinite Loop) نیاز دارد تا LED را به طور متناوب روشن و خاموش کند. این حلقه باعث می‌شود که برنامه به طور مداوم اجرا شود تا زمانی که برد ESP32 خاموش شود یا ریست شود.

while True:
    # کد چشمک زدن در اینجا قرار می گیرد
  • while True:: یک حلقه while ایجاد می‌کند که شرط آن همیشه True است، بنابراین حلقه هرگز متوقف نمی‌شود و کد داخل آن به صورت پیوسته تکرار می‌شود.
  • فاصله‌گذاری (indentation) پس از while True: در پایتون بسیار مهم است. تمامی خطوطی که قرار است در داخل حلقه اجرا شوند، باید با یک فاصله یکسان (معمولاً چهار فاصله یا یک Tab) از لبه شروع شوند.

۵. تغییر وضعیت LED و ایجاد تاخیر:

در داخل حلقه while True:، ما وضعیت LED را تغییر می‌دهیم (روشن/خاموش) و برای مدت زمان مشخصی منتظر می‌مانیم تا تغییر قابل مشاهده باشد.

    led.value(1)  # روشن کردن LED (تنظیم پین به HIGH یا 3.3 ولت)
    print("LED روشن است") # یک پیام اختیاری برای اشکال‌زدایی در کنسول Pymakr
    sleep(1)      # صبر کردن به مدت ۱ ثانیه
    led.value(0)  # خاموش کردن LED (تنظیم پین به LOW یا 0 ولت)
    print("LED خاموش است") # یک پیام اختیاری برای اشکال‌زدایی در کنسول Pymakr
    sleep(1)      # صبر کردن به مدت ۱ ثانیه
  • led.value(1): متد value() شیء Pin برای تنظیم وضعیت پین استفاده می‌شود. ارسال 1 (یا True) به معنی تنظیم پین به حالت HIGH (معمولاً 3.3 ولت در ESP32) است که باعث می‌شود جریان از طریق مقاومت و LED عبور کرده و LED روشن شود.
  • print("LED روشن است"): این خط یک پیام را در کنسول REPL Pymakr (یا هر ترمینال سریال متصل) چاپ می‌کند. این برای اشکال‌زدایی (Debugging) بسیار مفید است و به شما کمک می‌کند تا بدانید برنامه در کدام بخش در حال اجرا است.
  • sleep(1): تابع sleep() از ماژول time برنامه را برای مدت زمان مشخصی متوقف می‌کند. آرگومان آن بر حسب ثانیه است. بنابراین sleep(1) به معنی یک ثانیه تاخیر است. این تاخیر ضروری است تا چشم انسان بتواند تغییر وضعیت LED را مشاهده کند. اگر تاخیر نباشد، LED به قدری سریع روشن و خاموش می‌شود که به نظر می‌رسد همیشه روشن یا همیشه خاموش است.
  • led.value(0): ارسال 0 (یا False) به معنی تنظیم پین به حالت LOW (معمولاً 0 ولت) است که باعث قطع شدن جریان و خاموش شدن LED می‌شود.

۶. کد کامل پروژه چشمک‌زن LED (main.py):

در نهایت، کد کامل شما در فایل main.py باید به شکل زیر باشد. این کد را در ویرایشگر VSCode کپی کرده و ذخیره کنید:

# main.py

# وارد کردن کلاس Pin از ماژول machine برای کنترل GPIO (General Purpose Input/Output)
# ماژول machine رابط سطح پایین برای تعامل با سخت‌افزار میکروکنترلر را فراهم می‌کند.
from machine import Pin
# وارد کردن تابع sleep از ماژول time برای ایجاد تاخیر در اجرای برنامه
# تابع sleep(N) برنامه را برای N ثانیه متوقف می‌کند.
from time import sleep

# تعریف پین GPIO که LED به آن متصل است (در این پروژه، پین GPIO2)
# Pin(2, Pin.OUT) یک شیء Pin ایجاد می‌کند که پین فیزیکی شماره 2 را کنترل می‌کند.
# Pin.OUT حالت این پین را به عنوان یک "خروجی" پیکربندی می‌کند، به این معنی که ما می‌توانیم
# ولتاژ روی این پین را کنترل کنیم تا LED را روشن یا خاموش کنیم.
led = Pin(2, Pin.OUT)

# حلقه اصلی برنامه که به طور نامحدود اجرا می‌شود
# این حلقه تضمین می‌کند که LED به طور مداوم چشمک می‌زند تا زمانی که ESP32 خاموش یا ریست شود.
while True:
    # ----- مرحله 1: روشن کردن LED -----
    # led.value(1) ولتاژ روی پین GPIO2 را به HIGH (تقریباً 3.3 ولت در ESP32) تنظیم می‌کند.
    # این باعث می‌شود جریان از مقاومت و LED عبور کرده و LED روشن شود.
    led.value(1)
    # چاپ یک پیام در کنسول سریال (برای اشکال‌زدایی و ردیابی وضعیت برنامه)
    print("LED روشن است")

    # ----- مرحله 2: ایجاد تاخیر برای روشن ماندن LED -----
    # sleep(1) برنامه را برای 1 ثانیه متوقف می‌کند.
    # این تاخیر به ما اجازه می‌دهد تا روشن ماندن LED را به وضوح مشاهده کنیم.
    sleep(1)

    # ----- مرحله 3: خاموش کردن LED -----
    # led.value(0) ولتاژ روی پین GPIO2 را به LOW (تقریباً 0 ولت) تنظیم می‌کند.
    # این باعث قطع شدن جریان و خاموش شدن LED می‌شود.
    led.value(0)
    # چاپ یک پیام در کنسول سریال
    print("LED خاموش است")

    # ----- مرحله 4: ایجاد تاخیر برای خاموش ماندن LED -----
    # sleep(1) برنامه را دوباره برای 1 ثانیه متوقف می‌کند.
    # این تاخیر به ما اجازه می‌دهد تا خاموش ماندن LED را مشاهده کنیم،
    # قبل از اینکه حلقه تکرار شود و LED دوباره روشن شود.
    sleep(1)

این کد بسیار ساده و در عین حال قدرتمند است. با تنها چند خط کد پایتون، شما توانایی کنترل سخت‌افزار فیزیکی را به دست آورده‌اید. این یک دستاورد بزرگ در برنامه‌نویسی میکروکنترلرها است و درک آن پایه و اساس پروژه‌های پیچیده‌تر را فراهم می‌کند. در بخش بعدی، یاد خواهیم گرفت چگونه این کد را به ESP32 منتقل کرده و آن را اجرا کنیم تا نتیجه نهایی را مشاهده کنیم: چشمک زدن LED!

انتقال و اجرای کد بر روی ESP32

پس از نوشتن کد چشمک‌زن LED در فایل main.py و اطمینان از صحت اتصالات سخت‌افزاری و پیکربندی VSCode، گام نهایی انتقال این کد به ESP32 و اجرای آن است. افزونه Pymakr در VSCode این فرآیند را به طرز چشمگیری ساده می‌کند و به شما امکان می‌دهد تا به سرعت کدهای خود را بر روی میکروکنترلر خود آزمایش کنید و نتایج را مشاهده کنید. در این بخش، نحوه آپلود کد، اجرای آن و مشاهده نتیجه را توضیح خواهیم داد، همچنین به برخی از اشکالات رایج و راه‌حل‌های آنها اشاره می‌کنیم تا در صورت بروز مشکل، بتوانید به سرعت آن را برطرف کنید.

۱. ذخیره کد:

ابتدا، مطمئن شوید که فایل main.py را با کد کامل چشمک‌زن LED در پوشه پروژه خود در VSCode ذخیره کرده‌اید. اگر فایل ذخیره نشده باشد، Pymakr قادر به آپلود آن نخواهد بود. (میانبر: Ctrl+S یا Cmd+S).

۲. همگام‌سازی و آپلود کد با Pymakr:

Pymakr ابزارهای مختلفی برای همگام‌سازی فایل‌ها با برد ارائه می‌دهد که بسیار کاربرپسند هستند. برای آپلود فایل main.py به ESP32، می‌توانید از یکی از روش‌های زیر استفاده کنید. قبل از آپلود، مطمئن شوید که کنسول Pymakr به ESP32 شما متصل است (پرامپت >>> را می‌بینید).

  1. روش ۱: آپلود کل پروژه (Sync Project) – توصیه می‌شود برای شروع
    • در پنل Explorer در VSCode (سمت چپ)، روی پوشه پروژه خود (مثلاً MicroPython_LED_Blink) کلیک راست کنید.
    • از منوی باز شده، گزینه “Pymakr” -> “Sync Project” را انتخاب کنید.
    • این کار تمامی فایل‌های موجود در پوشه پروژه (به جز مواردی که در pymakr.json در بخش "ignore" مشخص شده‌اند) را به سیستم فایل ESP32 منتقل می‌کند. این روش تضمین می‌کند که تمامی فایل‌های مورد نیاز شما روی برد قرار گرفته‌اند.
  2. روش ۲: آپلود فایل جاری (Upload Current File)
    • فایل main.py را در ویرایشگر VSCode باز کنید.
    • روی فایل main.py در پنل Explorer کلیک راست کنید یا روی هر جای ویرایشگر که فایل main.py باز است، کلیک راست کنید.
    • از منوی باز شده، گزینه “Pymakr” -> “Upload current file” را انتخاب کنید.
    • این کار فقط فایل main.py را به ESP32 منتقل می‌کند. اگر پروژه شما شامل فایل‌های دیگری باشد، باید آنها را نیز به صورت جداگانه آپلود کنید یا از “Sync Project” استفاده کنید.

پس از انتخاب یکی از این گزینه‌ها، در کنسول Pymakr در پایین VSCode، باید پیامی مشابه “Uploading file(s)…” را مشاهده کنید که نشان‌دهنده انتقال موفقیت‌آمیز فایل است. این فرآیند ممکن است چند ثانیه طول بکشد.

۳. اجرای کد و مشاهده خروجی:

همانطور که قبلاً ذکر شد، در میکروپایتون، اگر فایلی به نام main.py در ریشه سیستم فایل برد وجود داشته باشد، این فایل به صورت خودکار در هنگام بوت شدن ESP32 اجرا می‌شود. بنابراین، برای اجرای کد آپلود شده، کافی است برد را ریست کنید.

  1. پس از آپلود موفقیت‌آمیز main.py، برد ESP32 خود را یک بار ریست (Reset) کنید. این کار را می‌توانید به یکی از روش‌های زیر انجام دهید:
    • فشار دادن دکمه ریست فیزیکی: دکمه “EN” یا “RST” را روی برد ESP32 خود فشار داده و رها کنید. این یک ریست سخت‌افزاری (Hard Reset) است.
    • سافت ریست از طریق REPL: در کنسول Pymakr (هنگامی که به ESP32 متصل هستید)، Ctrl+D را فشار دهید. این یک ریست نرم‌افزاری (Soft Reset) انجام می‌دهد و باعث می‌شود برنامه main.py دوباره اجرا شود.
  2. هنگامی که ESP32 ریست می‌شود، بلافاصله شروع به اجرای کد موجود در main.py می‌کند.
  3. شما باید مشاهده کنید که LED متصل به GPIO2 شروع به چشمک زدن می‌کند: یک ثانیه روشن، یک ثانیه خاموش، و به همین ترتیب به صورت پیوسته.
  4. همچنین، اگر کنسول Pymakr به برد متصل باشد، پیام‌های "LED روشن است" و "LED خاموش است" را که در کد خود اضافه کرده بودید، در کنسول مشاهده خواهید کرد. این پیام‌ها برای اشکال‌زدایی بسیار مفید هستند و به شما کمک می‌کنند تا جریان اجرای برنامه را ردیابی کنید.

۴. اشکال‌زدایی اولیه و حل مشکلات رایج:

ممکن است در اولین تلاش خود با مشکلاتی روبرو شوید. این کاملاً طبیعی است. در اینجا برخی از اشکالات رایج و راه‌حل‌های آنها آورده شده است:

  • LED چشمک نمی‌زند و هیچ پیامی در کنسول نیست:
    • بررسی اتصالات سخت‌افزاری:
      • آیا LED به درستی متصل شده است (پایه آند به مقاومت، پایه کاتد به GND)؟ پلاریته LED بسیار مهم است.
      • آیا مقاومت 220 تا 330 اهم بین پین GPIO و LED قرار دارد؟ بدون مقاومت، LED ممکن است فوراً بسوزد.
      • آیا پین GPIO2 ESP32 به مقاومت متصل است؟ سیم‌های جامپر را دوباره بررسی کنید و مطمئن شوید که به پین‌های صحیح وارد شده‌اند.
      • آیا سیم‌های جامپر و LED به درستی در سوراخ‌های برد بورد قرار گرفته‌اند و تماس خوبی دارند؟
    • بررسی انتخاب پین GPIO: آیا در کد، پین صحیح (Pin(2, Pin.OUT)) را مشخص کرده‌اید و LED واقعاً به آن پین فیزیکی در برد ESP32 متصل است؟ پین‌بندی برد خود را دوباره بررسی کنید.
    • بررسی فریمور میکروپایتون: آیا فریمور میکروپایتون به درستی روی ESP32 فلش شده است؟ با اتصال به REPL در کنسول Pymakr و تایپ help() یا هر دستور پایتون ساده‌ای، مطمئن شوید که پرامپت >>> را دریافت می‌کنید. اگر نه، به بخش نصب فریمور برگردید.
    • بررسی آپلود کد: آیا فایل main.py با موفقیت به ESP32 آپلود شده است؟ می‌توانید در کنسول Pymakr دستور import os و سپس os.listdir('/') را تایپ کنید تا لیست فایل‌های روی برد را ببینید. main.py باید در آن لیست باشد. اگر نیست، دوباره آپلود کنید.
    • بررسی ولتاژ: با یک مولتی‌متر (در صورت دسترسی)، ولتاژ خروجی پین GPIO2 را هنگامی که کد اجرا می‌شود، بررسی کنید. باید بین 0 و 3.3 ولت تغییر کند. اگر همیشه 0 یا 3.3 ولت است، مشکل از کد یا پیکربندی پین است.
  • کنسول Pymakr متصل نمی‌شود یا خطای ارتباطی می‌دهد:
    • پورت COM اشتباه: مطمئن شوید که "port" در فایل pymakr.json به پورت COM (یا tty) صحیح ESP32 شما اشاره می‌کند. از Device Manager (ویندوز) یا ls /dev/tty.* (macOS/Linux) برای تأیید استفاده کنید.
    • پورت مشغول: مطمئن شوید که هیچ برنامه دیگری (مانند PuTTY، Arduino IDE، یا یک ترمینال سریال دیگر) پورت COM را اشغال نکرده باشد. فقط یک برنامه می‌تواند در یک زمان به پورت سریال متصل شود.
    • درایور USB به سریال: مطمئن شوید که درایور صحیح برای چیپ مبدل USB به سریال برد شما (CP210x یا CH340) نصب و به‌روز است.
    • کابل USB: کابل USB را عوض کنید. کابل‌های بی‌کیفیت یا کابل‌هایی که فقط برای شارژ طراحی شده‌اند (بدون قابلیت انتقال داده) می‌توانند مشکل‌ساز باشند. از یک کابل داده با کیفیت خوب استفاده کنید.
    • حالت بوت (Boot Mode): در برخی بردهای ESP32 (به خصوص اگر برد اتوماتیک ریست نمی‌شود)، ممکن است نیاز باشد دکمه “BOOT” را نگه دارید و سپس “RST” را فشار دهید و “BOOT” را رها کنید تا ESP32 وارد حالت بوتلودر شود و Pymakr بتواند متصل شود یا کد را آپلود کند.
  • کد اجرا نمی‌شود یا خطای Syntax می‌دهد:
    • خطاهای پایتون: به خروجی کنسول Pymakr توجه کنید. اگر خطای پایتونی وجود داشته باشد (مانند SyntaxError: invalid syntax برای اشتباهات گرامری، یا NameError: name 'led' is not defined برای اشتباه در نام متغیرها)، در اینجا نمایش داده می‌شود. کد خود را برای اشتباهات تایپی، فاصله‌گذاری (indentation) نادرست (پایتون به فاصله‌گذاری حساس است) یا نام‌های متغیر/توابع بررسی کنید.
    • ریست نرم‌افزاری: پس از هر تغییر در کد، آن را ذخیره کرده، دوباره آپلود کنید و سپس برد را ریست (Ctrl+D در کنسول Pymakr) کنید تا تغییرات اعمال شوند.

تبریک می‌گوییم! شما با موفقیت اولین پروژه میکروپایتون خود را به پایان رساندید. چشمک زدن LED یک نقطه شروع کلاسیک است که درک شما را از تعامل سخت‌افزار و نرم‌افزار روی ESP32 با استفاده از میکروپایتون و VSCode تقویت می‌کند. این مهارت‌ها پایه‌ای محکم برای شروع پروژه‌های پیچیده‌تر در اینترنت اشیا (IoT) و سیستم‌های نهفته (Embedded Systems) هستند. حالا که یک LED را کنترل کرده‌اید، آماده‌اید تا گام‌های بزرگتری بردارید و به دنیای هیجان‌انگیز میکروکنترلرها وارد شوید!

فراتر از چشمک زدن LED: گام‌های بعدی در میکروپایتون

چشمک زدن LED با ESP32 و میکروپایتون یک نقطه شروع عالی و ضروری برای هر علاقه‌مند به سیستم‌های نهفته (Embedded Systems) و اینترنت اشیا (IoT) است. این پروژه به شما اصول اولیه راه‌اندازی سخت‌افزار، فلش کردن فریمور میکروپایتون، پیکربندی محیط توسعه VSCode، برنامه‌نویسی GPIO و استقرار کد را آموزش داد. اکنون که پایه محکمی دارید و درک درستی از چرخه توسعه پیدا کرده‌اید، زمان آن رسیده است که دانش میکروپایتون خود را گسترش دهید و به سمت پروژه‌های پیچیده‌تر و کاربردی‌تر حرکت کنید. ESP32 با قابلیت‌های غنی خود و میکروپایتون با سادگی و قدرت پایتون، ترکیب بی‌نظیری برای نوآوری هستند. در این بخش، به برخی از گام‌های بعدی و ایده‌های پروژه‌ها اشاره می‌کنیم که می‌توانید برای کاوش پتانسیل کامل این پلتفرم دنبال کنید.

۱. خواندن ورودی از سنسورها:

یکی از مهمترین کاربردهای میکروکنترلرها، جمع‌آوری داده از محیط اطراف با استفاده از انواع سنسورها است.

  • سنسورهای دما و رطوبت (مانند DHT11/DHT22): یاد بگیرید چگونه با استفاده از یک پروتکل ارتباطی تک‌سیمه (One-Wire Protocol) داده‌های دما و رطوبت را بخوانید. این سنسورها برای پروژه‌های مانیتورینگ محیطی در خانه‌های هوشمند یا گلخانه‌ها بسیار محبوب هستند و کتابخانه‌های آماده‌ای برای میکروپایتون دارند.
  • سنسورهای PIR (Passive Infrared – حرکت‌سنج): این سنسورها برای تشخیص حرکت استفاده می‌شوند. می‌توانید از آنها برای راه‌اندازی رویدادهایی مانند روشن کردن چراغ در صورت تشخیص حرکت، فعال کردن آلارم، یا ارسال اعلان‌های امنیتی استفاده کنید. این سنسورها خروجی دیجیتال ساده‌ای دارند که به راحتی با پین‌های GPIO قابل خواندن است.
  • مبدل‌های آنالوگ به دیجیتال (ADC): ESP32 دارای چندین پین ADC با دقت بالا است که می‌توانید از آنها برای خواندن سنسورهای آنالوگ استفاده کنید. مثال‌ها شامل:
    • پتانسیومترها: برای تنظیم میزان روشنایی LED یا سرعت موتور.
    • فوتورزیستورها (LDR): برای اندازه‌گیری شدت نور محیط و ساخت سیستم‌های روشنایی هوشمند.
    • سنسورهای رطوبت خاک: برای پروژه‌های آبیاری هوشمند گیاهان.
    • میکروفون‌های آنالوگ: برای تشخیص سطح صدا.

    کتابخانه machine در میکروپایتون توابعی برای کنترل ADCها و همچنین تعامل با سنسورهای دیجیتال از طریق پروتکل‌های سریال (SPI/I2C/UART) را ارائه می‌دهد.

۲. استفاده از Wi-Fi و اتصال به اینترنت:

قابلیت Wi-Fi داخلی ESP32 یکی از بزرگترین مزایای آن است که آن را به یک پلتفرم ایده‌آل برای اینترنت اشیا تبدیل می‌کند.

  • اتصال به شبکه Wi-Fi: یاد بگیرید چگونه ESP32 را به یک شبکه Wi-Fi موجود متصل کنید. ماژول network در میکروپایتون این کار را با چند خط کد ساده می‌کند. این اولین گام برای هر پروژه متصل به اینترنت است.
  • درخواست‌های HTTP: پس از اتصال به اینترنت، می‌توانید از ماژول urequests (یک نسخه فشرده از ماژول requests پایتون) برای ارسال درخواست‌های HTTP (GET/POST) به سرورهای وب یا APIها استفاده کنید. این به شما امکان می‌دهد داده‌های سنسور را به یک پلتفرم IoT Cloud (مانند ThingSpeak، Adafruit IO، Cayenne، یا پلتفرم‌های ابری بزرگتر مانند AWS IoT Core، Azure IoT Hub، Google Cloud IoT Core) ارسال کنید یا اطلاعاتی را از اینترنت (مانند وضعیت آب و هوا یا اخبار) دریافت کرده و روی یک نمایشگر نشان دهید.
  • پروتکل‌های MQTT: برای ارتباطات IoT، پروتکل MQTT یک انتخاب عالی است. این پروتکل سبک‌وزن و مبتنی بر Publish/Subscribe برای دستگاه‌های با منابع محدود بهینه‌سازی شده است. یاد بگیرید چگونه ESP32 را به عنوان یک کلاینت MQTT پیکربندی کنید تا پیام‌ها را به یک کارگزار (Broker) MQTT منتشر و از آن مشترک شود. این امر امکان ارتباط دوطرفه و مقیاس‌پذیر بین دستگاه‌ها را فراهم می‌کند.

۳. پروتکل‌های ارتباطی (I2C, SPI, UART):

ESP32 از پروتکل‌های ارتباطی سریال استاندارد صنعتی پشتیبانی می‌کند که برای تعامل با طیف وسیعی از دستگاه‌های جانبی (peripherals) و سنسورهای پیچیده‌تر ضروری هستند.

  • I2C (Inter-Integrated Circuit): یک پروتکل دو سیمه است که برای ارتباط با چندین دستگاه در یک باس مشترک استفاده می‌شود. سنسورهای رایج I2C شامل سنسورهای IMU (Inertial Measurement Unit) مانند MPU6050 (ژیروسکوپ و شتاب‌سنج)، سنسورهای فشار، نمایشگرهای OLED و RTCها (Real-Time Clocks) هستند.
  • SPI (Serial Peripheral Interface): یک پروتکل ارتباطی با سرعت بالا است که برای ارتباط با دستگاه‌هایی مانند کارت‌های SD (برای ذخیره‌سازی داده)، نمایشگرهای TFT (برای رابط‌های کاربری گرافیکی) و برخی سنسورهای با سرعت بالای انتقال داده استفاده می‌شود.
  • UART (Universal Asynchronous Receiver-Transmitter): برای ارتباط سریال ناهمزمان با دستگاه‌هایی مانند ماژول‌های GPS، ماژول‌های RFID، مودم‌های GSM/GPRS و سایر میکروکنترلرها استفاده می‌شود. این پروتکل معمولاً از پین‌های TX (ارسال) و RX (دریافت) استفاده می‌کند.

ماژول machine در میکروپایتون کلاس‌هایی برای پیاده‌سازی و کنترل این پروتکل‌ها (مانند I2C، SPI، UART) فراهم می‌کند که کار با آنها را آسان می‌سازد.

۴. ساخت وب سرور کوچک:

می‌توانید یک وب سرور ساده را مستقیماً بر روی ESP32 خود اجرا کنید. این وب سرور می‌تواند از طریق شبکه محلی (LAN) یا حتی از طریق اینترنت (با تنظیمات صحیح شبکه) قابل دسترسی باشد و به شما امکان می‌دهد:

  • نظارت بر وضعیت سنسورها: داده‌های سنسور را در یک صفحه وب ساده نمایش دهید.
  • کنترل خروجی‌ها: LEDها، رله‌ها یا سایر دستگاه‌های متصل را از طریق مرورگر وب کنترل کنید.
  • تنظیم پارامترها: تنظیمات دستگاه خود را (مانند آستانه دما یا فواصل اندازه‌گیری) از طریق یک رابط کاربری وب تغییر دهید.

میکروپایتون با ماژول‌هایی مانند usocket و microdot یا picoweb، توسعه وب سرورهای سبک‌وزن را روی ESP32 تسهیل می‌کند.

۵. مدیریت پکیج با upip:

میکروپایتون دارای یک مدیریت‌کننده پکیج داخلی به نام upip است که مشابه pip در پایتون استاندارد عمل می‌کند. با upip می‌توانید کتابخانه‌های میکروپایتون (که معمولاً با پیشوند u مانند umqtt.simple نشان داده می‌شوند) را مستقیماً از اینترنت روی حافظه فلش برد خود نصب کنید و قابلیت‌های پروژه خود را گسترش دهید. این به شما امکان می‌دهد تا به سرعت از قابلیت‌های افزودنی بدون نیاز به دانلود و آپلود دستی فایل‌ها بهره‌مند شوید.

import upip
upip.install('micropython-umqtt.simple') # نصب کتابخانه MQTT

۶. پروژه‌های پیشرفته‌تر IoT:

پس از تسلط بر مفاهیم پایه، می‌توانید به سمت ساخت پروژه‌های IoT پیچیده‌تر و با ارزش عملی بیشتر حرکت کنید:

  • سیستم نظارت بر دما و رطوبت با داشبورد آنلاین: جمع‌آوری داده‌ها از DHT11/DHT22، ارسال آنها به یک پلتفرم ابری (مانند Ubidots یا Adafruit IO) و نمایش آنها در یک داشبورد زیبا و قابل دسترس از هر کجا.
  • سیستم آبیاری هوشمند: استفاده از سنسور رطوبت خاک برای تشخیص نیاز گیاهان به آب و کنترل یک رله برای روشن/خاموش کردن پمپ آب به صورت خودکار. می‌توانید آن را با اتصال به اینترنت ترکیب کرده و از راه دور آبیاری را کنترل کنید.
  • خانه هوشمند ساده: کنترل چراغ‌ها، پریزهای هوشمند یا دستگاه‌های دیگر از طریق یک وب سرور محلی یا با استفاده از پروتکل MQTT و یک اپلیکیشن موبایل ساده.
  • رباتیک و اتوماسیون: کنترل موتورهای DC، سروو موتورها و استپر موتورها برای ساخت ربات‌های کوچک، بازوهای رباتیک یا سیستم‌های اتوماسیون صنعتی سبک.
  • جمع‌آوری داده‌ها (Data Logging): استفاده از کارت SD برای ذخیره‌سازی طولانی‌مدت داده‌های سنسورها و سپس تحلیل آنها.

۷. بهینه‌سازی کد و مصرف انرژی:

برای دستگاه‌های IoT که با باتری کار می‌کنند و باید برای مدت طولانی بدون شارژ مجدد دوام بیاورند، مدیریت مصرف انرژی یک جنبه بسیار حیاتی است.

  • حالت‌های خواب (Sleep Modes): ESP32 دارای حالت‌های خواب عمیق (Deep Sleep) و خواب سبک (Light Sleep) است که می‌توانند مصرف انرژی را به شدت کاهش دهند. در حالت Deep Sleep، ESP32 تقریباً به حالت خاموش می‌رود و فقط مصرف بسیار کمی دارد. یاد بگیرید چگونه از این حالت‌ها استفاده کنید تا عمر باتری دستگاه‌های خود را به ماه‌ها یا حتی سال‌ها افزایش دهید، به خصوص در کاربردهایی که نیاز به جمع‌آوری داده‌های دوره‌ای دارند.
  • بهینه‌سازی کد: نوشتن کد کارآمد که منابع CPU و حافظه را به حداقل می‌رساند. این شامل استفاده از الگوریتم‌های بهینه، اجتناب از عملیات‌های سنگین غیرضروری و مدیریت حافظه است.
  • کاهش فرکانس نمونه‌برداری: اگر نیازی به جمع‌آوری مداوم داده‌ها نیست، فواصل بین خواندن سنسورها یا ارسال داده‌ها را افزایش دهید تا برد زمان بیشتری را در حالت خواب بماند.

با دنبال کردن این گام‌های بعدی در میکروپایتون، شما نه تنها مهارت‌های برنامه‌نویسی خود را تقویت خواهید کرد، بلکه درک عمیق‌تری از نحوه عملکرد سیستم‌های نهفته و اینترنت اشیا به دست خواهید آورد. ESP32 و میکروپایتون یک ترکیب قدرتمند هستند که دروازه‌هایی را به سوی نوآوری‌های بی‌شمار در دنیای تکنولوژی باز می‌کنند. اکنون توپ در زمین شماست تا خلاقیت خود را به کار بگیرید و پروژه‌های منحصر به فرد خود را بسازید و به یک توسعه‌دهنده ماهر IoT تبدیل شوید!

“تسلط به برنامه‌نویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT”

قیمت اصلی 2.290.000 ریال بود.قیمت فعلی 1.590.000 ریال است.

"تسلط به برنامه‌نویسی پایتون با هوش مصنوعی: آموزش کدنویسی هوشمند با ChatGPT"

"با شرکت در این دوره جامع و کاربردی، به راحتی مهارت‌های برنامه‌نویسی پایتون را از سطح مبتدی تا پیشرفته با کمک هوش مصنوعی ChatGPT بیاموزید. این دوره، با بیش از 6 ساعت محتوای آموزشی، شما را قادر می‌سازد تا به سرعت الگوریتم‌های پیچیده را درک کرده و اپلیکیشن‌های هوشمند ایجاد کنید. مناسب برای تمامی سطوح با زیرنویس فارسی حرفه‌ای و امکان دانلود و تماشای آنلاین."

ویژگی‌های کلیدی:

بدون نیاز به تجربه قبلی برنامه‌نویسی

زیرنویس فارسی با ترجمه حرفه‌ای

۳۰ ٪ تخفیف ویژه برای دانشجویان و دانش آموزان