Я уже пробовал, на простейших проектах вроде функциклирует. А с более сложными проектами у меня не хватает опыта настройки, знания терминологии, и прочие досадные мелочи мешают. Возможно, кто-то что-то подскажет потом. Но обо всем по порядку.
В папке C:\arduino\ где у меня уже был установлен исполнимый файл Arduino CLI создал папку проекта blink. Открыл эту папку в VS Code (Open Folder) и создал в ней файл проекта blink.ino с кодом для мигания светодиодом на плате NodeMCU-32S.
- Код:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "echo Hello"
}
]
}
Для компиляции и заливки этого в борду из VS Code создал файл задач tasks.json. В этом файле две задачи, которые выполняясь будут передавать в командную строку необходимые команды. А далее уже Arduino ClI подчиняясь этим командам скомпилирует и зальет прошивку в ESP32 на борде.
Нажимаем "View" в главном меню VS Code, и давим там "Command Palette":
Спойлер
В верхней части окна редактора появится строка. Начинаем набирать в ней "task" и вывалится выпадающий список с командами содержащими это слово. Выберем мышью "Configure Task":
Спойлер
Затем там же "Create tasks.json file from template":
Спойлер
И "Others Example to run an arbitrary external command":
Спойлер
В папке с проектом blink редактор VS Code создаст папку .vscode а в ней файл tasks.json. По сути текстовый файл, с шаблонным текстом кода правка которого позволит нам передавать необходимые команды в командную строку Windows.
Спойлер
Спойлер
Этот же файл откроется в самом редакторе VS Code:
Спойлер
Меняем шаблонный код файла tasks.json следующим образом:
- Код:
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [ // Задача
{
"label": "blink_compile", // Метка, имя задачи
"type": "shell", // Тип задачи
"command": "arduino-cli compile -v -b esp32:esp32:nodemcu-32s blink.ino" // Команды, действия, выполняемые задачей.
},
{
"label": "blink_upload",
"type": "shell",
"command": "arduino-cli upload -p COM9 -v -b esp32:esp32:nodemcu-32s blink.ino"
}
]
}
Собственно, здесь у нас две задачи. Первая под именем (меткой) blink_compile будет запускать компиляцию проекта в Arduino CLi. Вторая - blink_upload, прошивать нашу ESP32. Каждая отдельная задача располагается внутри фигурных скобок. Друг от друга они отделяются запятыми и обе находятся внутри скобок квадратных. В строчке command": для задачи компиляции нужно указать имя исполняемого файла Arduino CLI, саму команду compile, полное название (Fully Qualified Board Name, сокращенно FQBN) нашей борды с ESP32, и имя файла проекта .ino. В моем случае с платой NodeMCU-32S указывается название esp32:esp32:nodemcu-32s. Полное название платы можно узнать в Arduino CLI или в самом VS Code, но об этом после.
В задаче для прошивки доски blink_upload все то же самое, только с командой upload вместо compile, имя задачи другое, и указывается номер COM-порта через который будет прошиваться ESP32.
Теперь сохраняем все файлы, жмем в главном меню VS Code "Terminal", там давим "Run Task..." и в строке в верхней части редактора видим выпадающий список, в котором присутствуют две задачи: blink_compile и blink_upload.
Спойлер
Выбираем мышью сначала задачу компиляции "blink_compile", потом "Continue without scanning the task output". Начинается процесс компиляции кода программой Arduino CLI, ход которого будет отображаться в терминале VS Code. Хорошо, если он завершится без ошибок. По завершению компиляции в конце портянки в терминале должно отобразится приблизительно следующее:
"C:\\Users\\Fox\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\esp-2021r2-patch5-8.4.0/bin/xtensa-esp32-elf-size" -A "C:\\Users\\Fox\\AppData\\Local\\Temp\\arduino\\sketches\\6C6877D94AC58F39A3E164AD9DA17F9B/blink.ino.elf"
Скетч использует 235901 байт (17%) памяти устройства. Всего доступно 1310720 байт.
Глобальные переменные используют 22056 байт (6%) динамической памяти, оставляя 305624 байт для локальных переменных. Максимум: 327680 байт.
Used platform Version Path
esp32:esp32 2.0.8 C:\Users\Fox\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.8
* Terminal will be reused by tasks, press any key to close it.
Затем схожим образом запускаем процесс загрузки прошивки в борду: "Terminal" -> "Run Task..." -> "blink_upload" -> "Continue without scanning the task output". Начинается прошивка ESP32 на нашей плате. Возможно, для загрузки программы в борду потребуется нажать кнопочку "BOOT" на борде в ходе отображения строчки из точек в терминале, тут уж кому какая плата досталась... Дожидаемся окончания прошивки и смотрим результат в окне терминала и на плате, в виде светодиода мигающего с периодом в 6 секунд.
Ну вот и все. Теперь можно компилировать прошивку и прошивать борду посредством Arduino CLI всего в три клика. Понятно, что все описанные выше действия нужно будет проделать для каждого нового проекта. Но, делать их придется только один раз. Зато потом не нужно будет всякий раз вбивать команды для Arduino CLI в командной строке Винды когда нужно скомпилить или залить прошивку.