Шаг 1: Создай новый проект (или используй существующий)
Вариант A: Создать проект с нуля через шаблон
cd ~/esp
idf.py create-project my_first_app
cd my_first_app
⚠️ В ESP-IDF v4.4 команда create-project может не поддерживаться.
Тогда используй Вариант B.
ариант B: Скопировать минимальный шаблон вручную
cd ~/esp
mkdir -p my_first_app/main
cd my_first_app
Создай файл CMakeLists.txt в корне проекта:
nano CMakeLists.txt
Вставь:
cmake_minimum_required(VERSION 3.5)
include($ENV{IDF_PATH}/tools/cmake/project.cmake)
project(my_first_app)
Создай файл main/CMakeLists.txt:
nano main/CMakeLists.txt
Вставь:
idf_component_register(SRCS "main.c"
INCLUDE_DIRS ".")
Создай файл с кодом main/main.c:
nano main/main.c
Вставь простой код (мигание LED на GPIO2):
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
#include "esp_log.h"
#define BLINK_GPIO 2
void app_main(void)
{
gpio_reset_pin(BLINK_GPIO);
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
while(1) {
gpio_set_level(BLINK_GPIO, 1); // Включить LED
vTaskDelay(1000 / portTICK_PERIOD_MS);
gpio_set_level(BLINK_GPIO, 0); // Выключить LED
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
Шаг 2: Настрой порт (если не делал)
idf.py menuconfig
Перейди в Serial flasher config → Укажи порт, например /dev/ttyUSB0 → Сохрани (S) → Выйди (Q).
idf.py menuconfig
Шаг 3: Собери и прошей код одной командой
idf.py -p /dev/ttyUSB0 flash monitor
Замени /dev/ttyUSB0 на свой порт. Узнать его можно командой:
bash
1 ls /dev/ttyUSB*
или
bash
1 ls /dev/ttyACM*
Что произойдёт:
ESP-IDF соберёт твой код в бинарный файл.
Прошьёт его на ESP32.
Откроет монитор последовательного порта — ты увидишь лог загрузки.
Светодиод на плате начнёт мигать с интервалом 1 секунда.
Чтобы выйти из монитора — нажми Ctrl + ]
Советы по разработке
Быстрая пересборка и прошивка
Если ты изменил только код приложения (не конфигурацию), можно прошивать только приложение — это быстрее:
bash
1 idf.py -p /dev/ttyUSB0 app-flash monitor
Очистка сборки (если что-то сломалось)
bash
1
2
idf.py clean # Очистить объектные файлы
idf.py fullclean # Полная очистка (включая конфиг)
После fullclean нужно снова запустить idf.py menuconfig.
Структура типичного проекта ESP-IDF
my_first_app/
├── CMakeLists.txt ← Основной CMake-файл проекта
├── main/
│ ├── CMakeLists.txt ← CMake-файл компонента
│ └── main.c ← Твой код
└── sdkconfig ← Конфигурация (генерируется)
✅ Готово!
Теперь ты можешь:
✏️ Писать любой код в main.c
Менять GPIO, добавлять Wi-Fi, датчики
Пересобирать и прошивать одной командой: idf.py flash monitor
Совет для ленивых (как я 😊):
Добавь алиас в ~/.bashrc:
bash
1 echo 'alias esp="idf.py -p /dev/ttyUSB0"' >> ~/.bashrc
2 source ~/.bashrc
Теперь можно просто:
bash
1 esp flash monitor
2 esp app-flash monitor # ещё быстрее