↩️ Назад

Категории

Как прошить ESP32 на Raspberry Pi от терминала до VS code c PlatformIO IDE

05.07.2026 | Статья из категории: IOT умный дом

Если у вас есть Raspberry Pi (особенно свежая 5-я модель) и вы хотите использовать её для программирования микроконтроллеров ESP32, то эта статья для вас. Мы настроим всё с нуля, чтобы вы могли писать код и заливать его на ESP32 буквально одной кнопкой.

💡 Почему Raspberry Pi + ESP32 — это круто?
Raspberry Pi — это полноценный мини-компьютер, который потребляет всего 15–20 Вт. Вы можете держать его включённым 24/7, использовать как домашний сервер и при этом комфортно разрабатывать проекты на ESP32. И никаких киловатт!

📦 1. Создаём виртуальное окружение Python

В новых версиях Raspberry Pi OS (Bookworm и новее) нельзя устанавливать Python-пакеты глобально — система защищает себя от поломок. Поэтому мы создадим виртуальное окружение.

python3 -m venv ~/esp_env
source ~/esp_env/bin/activate

После активации в начале строки терминала появится приписка (esp_env) — значит, вы внутри окружения.

✅ Чтобы не вводить команду каждый раз:
echo 'alias esp-on="source ~/esp_env/bin/activate"' >> ~/.bashrc && source ~/.bashrc
Теперь достаточно ввести esp-on в любом терминале.

🔧 2. Устанавливаем инструменты

Внутри активированного окружения ставим всё необходимое:

pip install esptool platformio

esptool — утилита для прямой работы с ESP-чипами.
PlatformIO — мощная среда разработки, которой мы будем пользоваться.

🔌 3. Проверяем подключение ESP32

Подключите ESP32 к Raspberry Pi через USB-кабель. Затем выполните:

ls /dev/ttyUSB*

Вы увидите список портов, например /dev/ttyUSB0 или /dev/ttyUSB1. Чтобы узнать точный порт, выполните:

ls -l /dev/serial/by-id/

Теперь проверим, что ESP32 отвечает:

esptool --port /dev/ttyUSB1 chip-id
✅ Chip is ESP32-D0WD-V3 (revision v3.1) — отлично, связь есть!
⚠️ Внимание!
Команда esptool.py устарела. Используйте esptool без суффикса .py. Также вместо chip_id теперь нужно писать chip-id.

🖥️ 4. Устанавливаем Visual Studio Code

Работать в терминале удобно, но для больших проектов лучше использовать Visual Studio Code с расширением PlatformIO.

Установка VS Code

wget -O ~/vscode.deb "https://update.code.visualstudio.com/latest/linux-deb-arm64/stable"
sudo dpkg -i ~/vscode.deb
sudo apt --fix-broken install

Установка расширения PlatformIO

  1. Запустите VS Code (code в терминале или через ярлык на рабочем столе)
  2. Нажмите на иконку Extensions (🧩) на левой панели
  3. В поиске введите PlatformIO IDE
  4. Нажмите Install
💡 Рекомендуется также установить расширение C++ — оно даёт подсветку синтаксиса, автодополнение и подсказки при написании кода. VS Code предложит его автоматически при открытии .cpp файла.

📁 5. Создаём проект в PlatformIO (через VS Code)

Теперь создадим проект с кодом для теста — классическое мигание светодиодом.

Шаг 1. Открываем папку проекта

Если папки нет — создайте её через терминал:

mkdir -p ~/esp_blink_test/src

Шаг 2. Создаём файл platformio.ini

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
upload_port = /dev/ttyUSB1
monitor_port = /dev/ttyUSB1
build_flags =
    -DCORE_DEBUG_LEVEL=0

Шаг 3. Создаём файл src/main.cpp

#include <Arduino.h>

#define LED_BUILTIN 2   // встроенный светодиод на большинстве ESP32

void setup() {
    Serial.begin(115200);
    pinMode(LED_BUILTIN, OUTPUT);
    Serial.println("🔥 FAST BLINK v2.0");
}

void loop() {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(100);
    digitalWrite(LED_BUILTIN, LOW);
    delay(100);
}
⚠️ Если встроенный светодиод не мигает — попробуйте заменить LED_BUILTIN на GPIO5 или GPIO12 (у некоторых плат другие пины).

⚡ 6. Собираем и прошиваем через кнопки PlatformIO

После создания файлов внизу VS Code появится синяя/красная панель PlatformIO с тремя главными кнопками:

Порядок действий:

  1. Нажмите Build — дождитесь зелёного [SUCCESS] в терминале внизу
  2. Нажмите Upload — прошивка загрузится на ESP32
  3. Нажмите 🔌 Serial Monitor — увидите вывод 🔥 FAST BLINK v2.0
✅ После загрузки встроенный светодиод на ESP32 начнёт быстро мигать (5 раз в секунду). Это значит, что всё работает!
💡 Кнопка BOOT:
В большинстве случаев нажимать её не нужно — PlatformIO автоматически переводит ESP32 в режим загрузки. Если прошивка зависла, зажмите BOOT, подключите USB, отпустите — и повторите загрузку.

Альтернативный способ — через терминал

Если вы привыкли к командной строке, внутри VS Code можно открыть терминал (Terminal → New Terminal) и выполнить:

pio run --target upload

📡 7. OTA — прошиваем ESP32 по Wi-Fi (без USB)

OTA (Over-The-Air) — это возможность обновлять прошивку на ESP32 без подключения по USB. Это особенно удобно, когда ваша метеостанция уже висит на стене или в труднодоступном месте.

Что нужно сделать

  1. Один раз прошить ESP32 по USB кодом, который включает OTA-сервер
  2. Все последующие прошивки загружать через Wi-Fi

Код с OTA-сервером

Создайте новый проект ~/ota_blink_test с файлом platformio.ini:

[env:esp32dev]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
board_build.partitions = min_spiffs.csv
lib_deps =
    ayushsharma82/ElegantOTA

А в src/main.cpp вставьте код с OTA и миганием:

#include <Arduino.h>
#include <WiFi.h>
#include <WebServer.h>
#include <ElegantOTA.h>

const char* ssid = "ваш_wi-fi";       // ⬅️ подставьте свой
const char* password = "ваш_пароль";  // ⬅️ подставьте свой

WebServer server(80);

#define LED_PIN 2

void setup() {
    Serial.begin(115200);
    pinMode(LED_PIN, OUTPUT);
    Serial.println("🔵 OTA Blink Test");

    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, password);
    Serial.print("Подключение к Wi-Fi");
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("\n✅ Подключено!");
    Serial.print("📡 IP: ");
    Serial.println(WiFi.localIP());

    ElegantOTA.begin(&server);
    server.begin();
    Serial.println("🌐 OTA доступен: http://" + WiFi.localIP().toString() + "/update");
}

void loop() {
    ElegantOTA.loop();
    server.handleClient();

    digitalWrite(LED_PIN, HIGH);
    delay(250);
    digitalWrite(LED_PIN, LOW);
    delay(250);
}

Загружаем прошивку по Wi-Fi

1. Соберите проект локально:

pio run

2. Загрузите файл через браузер:

✅ ESP32 перезагрузится с новой прошивкой — без USB-кабеля!

Быстрый способ через терминал (curl)

Одна команда — и прошивка улетела на ESP32 по Wi-Fi:

curl -F "image=@.pio/build/esp32dev/firmware.bin" http://192.168.88.226/update
💡 Где найти файл прошивки?
Файл firmware.bin лежит в папке .pio/build/esp32dev/.
Папка .pio — скрытая (начинается с точки). Чтобы её увидеть в файловом менеджере, нажмите Ctrl+H.
⚠️ Важно!
Не выключайте ESP32 во время OTA-обновления. Если процесс прервётся — придётся снова подключать по USB.

📌 Коротко о главном

Что делаем Команда / действие
Активировать окружение source ~/esp_env/bin/activate
Установить инструменты pip install esptool platformio
Установить VS Code sudo dpkg -i ~/vscode.deb
Собрать проект (VS Code) Кнопка Build
Загрузить прошивку (VS Code) Кнопка Upload
Загрузить прошивку по Wi-Fi curl -F "image=@firmware.bin" http://IP/update
Открыть монитор порта Кнопка 🔌 Serial Monitor
Проверить ESP32 esptool --port /dev/ttyUSB1 chip-id

💡 Советы профи

🎯 Что дальше?

Поздравляю! Теперь у вас есть полностью рабочий стенд для разработки под ESP32 на Raspberry Pi с возможностью OTA-обновлений. Вы можете:




Категории:

Категории

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Посетителей сегодня: 0
о блоге | карта блога | 📡 Подписаться на RSS

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA