MyTetra Share
Делитесь знаниями!
Создать проект с нуля через шаблон ESP_IDF
Время создания: 10.09.2025 16:58
Автор: alensav
Текстовые метки: Создать проект с нуля через шаблон ESP_IDF
Раздел: ESP_ID
Запись: alensav/MyTetra2/main/base/17575127097htgu1wvd0/text.html на raw.githubusercontent.com

Шаг 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 # ещё быстрее







 
MyTetra Share v.0.67
Яндекс индекс цитирования