Skip to main content

🛠️ Среды разработки для робототехники

Обзор сред разработки

IDE / FrameworkПлатформыСложностьПрименение
Arduino IDEAVR, ESP, STM32Обучение, прототипы
PlatformIO1000+ плат⭐⭐Серьёзные проекты
ESP-IDFESP32⭐⭐⭐Продакшн на ESP
STM32CubeIDESTM32⭐⭐⭐Низкоуровневая разработка
Keil / IARARM Cortex⭐⭐⭐⭐Промышленные проекты

PlatformIO — рекомендуемый выбор

Почему PlatformIO?

┌─────────────────────────────────────────────────────────┐
│                    PlatformIO                          │
├─────────────────────────────────────────────────────────┤
│  ✅ Единый интерфейс для всех платформ                 │
│  ✅ Интеграция с VS Code                               │
│  ✅ Менеджер библиотек с зависимостями                 │
│  ✅ Поддержка unit-тестов                              │
│  ✅ CI/CD интеграция                                   │
│  ✅ Отладка с GDB                                      │
└─────────────────────────────────────────────────────────┘

Установка

# Через pip
pip install platformio

# Или расширение VS Code
# Поиск: "PlatformIO IDE"

Структура проекта

my_robot/
├── platformio.ini          # Конфигурация
├── src/
│   └── main.cpp           # Основной код
├── lib/
│   └── MyLibrary/         # Локальные библиотеки
├── include/
│   └── config.h           # Заголовочные файлы
└── test/
    └── test_main.cpp      # Unit-тесты

Пример platformio.ini

[env:esp32]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200

lib_deps =
    adafruit/Adafruit NeoPixel@^1.10.0
    bblanchon/ArduinoJson@^6.19.0

build_flags =
    -DCORE_DEBUG_LEVEL=5
    -DBOARD_HAS_PSRAM

ESP-IDF — нативный фреймворк ESP32

Когда использовать?

  • Нужен полный контроль над аппаратурой
  • FreeRTOS с точной настройкой
  • Продакшн с OTA-обновлениями
  • Криптография, Secure Boot

Установка

# Linux/macOS
mkdir -p ~/esp
cd ~/esp
git clone --recursive https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh
. ./export.sh

# Создание проекта
idf.py create-project my_robot
cd my_robot
idf.py build
idf.py flash monitor

Пример: многозадачность FreeRTOS

#include "freertos/FreeRTOS.h"
#include "freertos/task.h"

void motor_task(void *pvParameters) {
    while (1) {
        // Управление моторами на высоком приоритете
        update_motors();
        vTaskDelay(pdMS_TO_TICKS(10));  // 100 Hz
    }
}

void sensor_task(void *pvParameters) {
    while (1) {
        // Чтение датчиков
        read_sensors();
        vTaskDelay(pdMS_TO_TICKS(50));  // 20 Hz
    }
}

void app_main(void) {
    xTaskCreatePinnedToCore(motor_task, "motors", 4096, NULL, 10, NULL, 0);
    xTaskCreatePinnedToCore(sensor_task, "sensors", 4096, NULL, 5, NULL, 1);
}

VS Code + расширения

Рекомендуемые расширения

РасширениеНазначение
PlatformIO IDEОсновная среда
C/C++IntelliSense
clangdАльтернативный IntelliSense
Serial MonitorТерминал для отладки
GitLensКонтроль версий

settings.json для проекта

{
    "C_Cpp.default.configurationProvider": "platformio.platformio-ide",
    "files.associations": {
        "*.ino": "cpp"
    },
    "editor.formatOnSave": true,
    "platformio-ide.autoOpenPlatformIOIniFile": false
}

Сравнение workflow

Arduino IDE (для начинающих)

Написал код  Нажал Upload  Готово

PlatformIO (для проектов)

Написал код  pio run  pio upload  pio monitor
              (сборка)   (загрузка)   (отладка)

ESP-IDF (для продакшн)

Написал код → idf.py build → idf.py flash → idf.py monitor
            → idf.py menuconfig (настройка SDK)

Практические советы

1. Используй Git с самого начала

git init
echo ".pio/" >> .gitignore
echo "build/" >> .gitignore
git add .
git commit -m "Initial commit"

2. Разделяй код на модули

// src/motors.cpp — управление моторами
// src/sensors.cpp — работа с датчиками  
// src/comm.cpp — коммуникации
// src/main.cpp — только инициализация

3. Используй конфиги для разных плат

[env:esp32]
board = esp32dev

[env:stm32]
platform = ststm32
board = bluepill_f103c8

; Общие настройки
[env]
lib_deps = ...

Связанные материалы