مقدمه
پلتفرم IO، مشابه با Arduino IDE، یک محیط برنامه نویسی برای انواع میکروکنترلرها است. این پلتفرم کار برنامه نویسی را برای ما بسیار ساده تر می کند. ضمنا این محیط به صورت یک افزونه از نرم افزار VS Code قابل دسترسی می باشد.
یکی از مزیت های مهم این پلتفرم نسبت به Arduino IDE: انتخاب پورت مناسب به صورت اتوماتیک.
همچنین Platform-IO IDE با حدس زدن کدی که در حال نوشتن آن هستید پیشنهادهای مختلفی برای تکمیل و اصلاح آن به شما ارائه دهد. بخاطر همین ویژگی، از اشتباه نوشتن دستوراتتان در Arduino IDE بخاطر کوچک و یا بزرگ بودن حروف خلاص می شوید!
از دیگر ویژگی های جذاب پلتفرم IO: هایلایت ارور قبل از کامپایل کد، و باز کردن تب های مختلف به صورت همزمان .

نصب PlatformIO IDE در ویندوز
گام اول: نصب نرم افزار VS Code
در ابتدا این لینک را باز کرده و روی گزینه ی Download for Windows کلیک کنید. سپس نرم افزار Vs Code را دانلود کنید.
گام دوم: نصب Python
برای پروگرام کردن بردهای ESP32 و ESP8266 باید پایتون ورژن 3.5 و یا بالاتر را بر روی سیستم خود نصب کنید. اگر پایتون را بر روی سیستم خود ندارید، وارد این لینک شده و مانند تصویر زیر، آخرین نسخه را دانلود و نصب کنید.

پس از دانلود، با باز کردن فایل دانلود شده، صفحه زیر نمایش داده میشود. توجه داشته باشید که هنگام نصب، تیک add python.exe to path را بزنید.

گام سوم: نصب Platform IO
با توجه به مراحل زیر، افزونه PlatformIO IDE را نصب کنید.

در این زمان آیکن Platform-IO IDE باید در نوار سمت چپ ظاهر شود. همچنین در پایین صفحه، آیکن خانه نیز پدیدار می شود که شما را به صفحه ی اصلی Platform-IO IDE هدایت میکند.

اکنون پلتفرم IO به طور کامل بر روی سیستم شما نصب شده است. پیشنهاد می شود که در این مرحله یک بار نرم افزار VS Code را باز و بسته شود.
آشنایی با محیط کاربری PlatformIO IDE

• Explorer: دسترسی به پوشه
در این بخش می توان به تمامی فایل های پوشه ی باز شده در پلتفرم IO، و همچنین مواردی مثل اضافه کردن فایل و یا تغییر نام فایل و…. دسترسی داشت.
• Search: جستجو داخل فایل
می توانید کلمه ای را داخل فایل های پوشه جستجو کرده و آن را با کلمه ای دیگر جایگزین کنید.
• Source Control: مدیریت کدهای مرکزی
با دانلود نرم افزار git از این بخش می توانید کنترل بیشتری روی کد خود داشته و آن را بهتر مدیریت کنید. مهم ترین خاصیت source control، نشان دادن و مدیریت تغییراتی است که روی کد شما اعمال شده، در مقایسه با کد پایه ای که توسط شما ایجاد شده.
• Run and Debug: اجرا و عیب یابی
می توانید کد خود را قبل از آپلود، اجرا و عیب یابی کنید.
• Extension: افزونه ها
افزونه های بسیار زیادی در Vs code وجود دارد که می توانند پروسۀ برنامه نویسی را راحت تر کنند. برای اضافه کردن این افزونه ها باید وارد Extension شده و افزونه موردنظر را سرچ و دانلود کنید.
• PlatformIO: مدیریت پلتفرم IO
یکی از مهم ترین بخش های هر پروژه ای است. از طریق پلتفرم IO راه اندازی شده و به طور کلی از دو قسمت تشکیل می شود: (1) Projects Task: از طریق آن میتوانید تغییرات زیادی مثل Erase Flash را انجام دهید و یا بر روی Flash میکروکنترلر خودتان فایلی را آپلود کنید؛ و (2) Quick Access: با تغییرات و مدیریت خود پلتفرم IO و تمامی پروژه ها در ارتباط است.
نوار سمت چپ (پایین صفحه):

کاربرد هر آیکون به ترتیب از سمت چپ به راست:
• Platform-IO Home: صفحه ی اصلی پلتفرم IO
• Build: ساختن / کامپایل کد
• Upload: آپلود کد
• Clean: پاک کردن ( فایل کامپایل)
• Test: تست پیکربندی
• Serial Monitor: نمایشگر سریال دیتا
• New Terminal: ترمینال جدید
برنامه نویسی ESP32 در PlatformIO
ابتدا از صفحه ی اصلی پلتفرم، روی New Project کلیک کنید.

نام، برد و فریم وُرک موردنظر خودتان را در پنجرۀ پایین انتخاب کنید.

پس از بازساخت پروژه، می توانید از قسمت EXPLORER به فایل های پروژه دسترسی داشته باشید.

میتوانید با کلیک بر روی فایل platformio.ini به تغییراتی نظیر تنظیم باود ریت، انتخاب سریال پورت، اضافه کردن کتابخانه و ..... دسترسی داشته باشید.

داخل پوشه ی src میتوانید به فایل های کد خود دسترسی داشته باشید.

اکنون می خواهیم چشمک زدن LED داخلی ESP32 را تست کنیم. کد زیر را بر روی برد ESP32 آپلود کنید. برای بردهای دیگر، define LED را تغییر دهید و یا از LED جدا استفاده کنید.
/*
modified on Des 13, 2020
Modified by AminDamirchi from https://github.com/adafruit/Adafruit_SSD1306
Home<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="https://electropeak.com/learn/embed/#?secret=62NRTTshVq" data-secret="62NRTTshVq" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
*/
/*********
Rui Santos
Complete project details at https://RandomNerdTutorials.com/vs-code-platformio-ide-esp32-esp8266-arduino/
*********/
#include <Arduino.h>
#define LED 2
void setup() {
// put your setup code here to run once:
Serial.begin(115200);
pinMode(LED, OUTPUT);
}
void loop() {
// put your main code here to run repeatedly:
digitalWrite(LED, HIGH); // Turn on the LED
Serial.println("LED is on"); // Print message to Serial Monitor
delay(1000); // Delay for 1 second
digitalWrite(LED, LOW); // Turn off the LED
Serial.println("LED is off"); // Print message to Serial Monitor
delay(1000); // Delay for 1 second
}
برای آپلود، بر روی دکمه ی نمایش داده شده در تصویر زیر کلیک کنید.

پس از آپلود، منتظر پیام Success در انتهای ترمینال باشید.

اکنون باید LED داخلی برد ESP32 هر ثانیه چشمک بزند.

می توانید وضعیت LED را در سریال مانیتور مشاهده کنید.
