MyTetra Share
Делитесь знаниями!
структуру работы с ESP-IDF
Время создания: 06.10.2025 17:48
Автор: alensav
Текстовые метки: ESP-IDF
Раздел: ESP_IDF_INSTRUCTION
Запись: alensav/MyTetra2/main/base/1759762083hgfrnxzixq/text.html на raw.githubusercontent.com

Отличный вопрос! Давайте подробно разберем всю структуру работы с ESP-IDF и где что находится.

Структура директорий ESP-IDF

text

/home/alensav/

├── esp/ # Основная директория для проектов ESP

│ ├── esp-idf/ # Сама ESP-IDF (исходный код)

│ │ ├── components/ # Компоненты ESP-IDF

│ │ ├── tools/ # Инструменты (idf.py, компиляторы)

│ │ └── venv/ # Виртуальное окружение Python

│ └── hello_world/ # Ваш тестовый проект

│ ├── main/ # Исходный код проекта

│ │ └── hello_world.c # Основной файл программы

│ ├── CMakeLists.txt # Конфигурация сборки

│ └── build/ # Директория сборки (создается автоматически)

Где писать код?

1. Основной файл программы

bash

# Открываем основной файл для редактирования

nano ~/esp/hello_world/main/hello_world.c

Содержимое файла (упрощенный пример):

c

#include <stdio.h>

#include "freertos/FreeRTOS.h"

#include "freertos/task.h"

#include "esp_system.h"

#include "esp_spi_flash.h"


void app_main(void)

{

printf("Hello World!\n");

// Бесконечный цикл с выводом сообщения каждые 2 секунды

while(1) {

printf("Hello from ESP32!\n");

vTaskDelay(2000 / portTICK_PERIOD_MS);

}

}

2. Добавление новых файлов

bash

# Создаем новый файл в проекте

nano ~/esp/hello_world/main/my_functions.c

c

// my_functions.c

#include <stdio.h>


void my_function(void) {

printf("This is my custom function!\n");

}

И добавляем в main/CMakeLists.txt:

cmake

idf_component_register(SRCS "hello_world.c" "my_functions.c"

INCLUDE_DIRS ".")

🛠️ Полный рабочий процесс

Шаг 1: Активация окружения

bash

# Всегда начинаем с этого!

~/activate_esp_idf.sh

Шаг 2: Переход в проект

bash

# Переходим в проект (если нужно создать новый)

cd ~/esp/hello_world


# Или создаем новый проект

cp -r ~/esp/esp-idf/examples/get-started/hello_world ~/esp/my_project

cd ~/esp/my_project

Шаг 3: Редактирование кода

bash

# Редактируем основной файл

nano main/hello_world.c


# Или используем любой редактор:

# code . # VS Code

# gedit main/hello_world.c # GEdit

# vim main/hello_world.c # Vim

Шаг 4: Сборка проекта

bash

# Собираем проект

~/build_esp_project.sh


# Или вручную (если проверка зависимостей мешает):

cd ~/esp/esp-idf

cp tools/check_python_dependencies.py tools/check_python_dependencies.py.backup

cat > tools/check_python_dependencies.py << 'EOF'

#!/usr/bin/env python3

import sys

print("Python dependencies check passed (skipped for build)")

sys.exit(0)

EOF


cd ~/esp/hello_world

idf.py build


# Восстанавливаем проверку

cd ~/esp/esp-idf

mv tools/check_python_dependencies.py.backup tools/check_python_dependencies.py

Шаг 5: Прошивка и мониторинг

bash

# Прошиваем устройство (ESP32 должен быть подключен)

idf.py flash


# Запускаем мониторинг последовательного порта

idf.py monitor


# Для выхода из монитора: Ctrl+]

📝 Пример полного сеанса работы

bash

# Сеанс 1: Создание и редактирование проекта

~/activate_esp_idf.sh

cd ~/esp/hello_world

nano main/hello_world.c

# (редактируем код)

~/build_esp_project.sh


# Сеанс 2: Прошивка и тестирование

~/activate_esp_idf.sh

cd ~/esp/hello_world

idf.py flash

idf.py monitor

Полезные команды

bash

# Просмотр доступных целей (чипов)

idf.py --list-targets


# Конфигурация проекта (графический интерфейс)

idf.py menuconfig


# Очистка сборки

idf.py clean


# Полная очистка

idf.py fullclean


# Просмотр размера файлов

idf.py size

idf.py size-components

idf.py size-files

Создание нового проекта с нуля

bash

# Активируем ESP-IDF

~/activate_esp_idf.sh


# Создаем директорию проекта

mkdir -p ~/esp/my_awesome_project/main

cd ~/esp/my_awesome_project


# Создаем основной CMakeLists.txt

cat > CMakeLists.txt << 'EOF'

cmake_minimum_required(VERSION 3.5)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)

project(my_awesome_project)

EOF


# Создаем CMakeLists.txt для main компонента

cat > main/CMakeLists.txt << 'EOF'

idf_component_register(SRCS "main.c"

INCLUDE_DIRS ".")

EOF


# Создаем основной файл

cat > main/main.c << 'EOF'

#include <stdio.h>

#include "freertos/FreeRTOS.h"

#include "freertos/task.h"


void app_main(void)

{

printf("My Awesome Project Started!\n");

int counter = 0;

while(1) {

printf("Counter: %d\n", counter++);

vTaskDelay(1000 / portTICK_PERIOD_MS);

}

}

EOF


# Собираем проект

~/build_esp_project.sh

Ключевые моменты:

  1. Всегда начинайте с ~/activate_esp_idf.sh
  2. Код пишется в файлах в директории main/
  3. Для сборки используйте ~/build_esp_project.sh
  4. Прошивка: idf.py flash
  5. МониторEOинг: idf.py monitor

Теперь вы знаете всю структуру и можете начинать разработку!


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