Категории
Как прошить ESP32 на Raspberry Pi от терминала до VS code c PlatformIO IDE
05.07.2026 | из категории: IOT умный дом
Если у вас есть Raspberry Pi (особенно свежая 5-я модель) и вы хотите использовать её для программирования микроконтроллеров ESP32, то эта статья для вас. Мы настроим всё с нуля, чтобы вы могли писать код и заливать его на 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
Команда
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
- Запустите VS Code (
codeв терминале или через ярлык на рабочем столе) - Нажмите на иконку Extensions (🧩) на левой панели
- В поиске введите PlatformIO IDE
- Нажмите Install
.cpp файла.
📁 5. Создаём проект в PlatformIO (через VS Code)
Теперь создадим проект с кодом для теста — классическое мигание светодиодом.
Шаг 1. Открываем папку проекта
- В VS Code нажмите
File → Open Folder... - Выберите папку, например
/home/mazzick/esp_blink_test - Нажмите OK
Если папки нет — создайте её через терминал:
mkdir -p ~/esp_blink_test/src
Шаг 2. Создаём файл platformio.ini
- В VS Code нажмите на иконку Explorer (📁) слева
- Наведите на имя папки, нажмите New File
- Назовите файл:
platformio.ini - Вставьте содержимое (подставьте свой порт вместо
/dev/ttyUSB1):
[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
- Нажмите правой кнопкой на папку
src→ New File - Назовите:
main.cpp - Вставьте код для теста — быстрое мигание (100 мс):
#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 с тремя главными кнопками:
- — Build (сборка проекта, проверка на ошибки)
- — Upload (загрузка прошивки на ESP32)
- — Serial Monitor (открыть монитор порта для просмотра данных)
Порядок действий:
- Нажмите Build — дождитесь зелёного
[SUCCESS]в терминале внизу - Нажмите Upload — прошивка загрузится на ESP32
- Нажмите Serial Monitor — увидите вывод
🔥 FAST BLINK v2.0
В большинстве случаев нажимать её не нужно — 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. Это особенно удобно, когда ваша метеостанция уже висит на стене или в труднодоступном месте.
Что нужно сделать
- Один раз прошить ESP32 по USB кодом, который включает OTA-сервер
- Все последующие прошивки загружать через 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. Загрузите файл через браузер:
- Откройте в браузере:
http://[IP-адрес_ESP32]/update - Выберите файл
.pio/build/esp32dev/firmware.bin - Нажмите Update
Быстрый способ через терминал (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 |
💡 Советы профи
- Используйте SSD: загрузка VS Code и больших проектов с SD-карты может быть медленной. Для разработки рекомендуется загружать систему с внешнего SSD-диска (USB 3.0).
-
Алиас для VS Code: если интерфейс тормозит, добавьте в
~/.bashrc:alias code="code --disable-gpu" -
При ошибке с keyring: запускайте VS Code с флагом
code --password-store basic -
Не путайте порты: если у вас подключено несколько USB-устройств,
всегда проверяйте, какой порт принадлежит ESP32 (
ls -l /dev/serial/by-id/). - Установите расширение C++ для VS Code — оно даёт подсветку синтаксиса, автодополнение и подсказки.
🎯 Что дальше?
Поздравляю! Теперь у вас есть полностью рабочий стенд для разработки под ESP32 на Raspberry Pi с возможностью OTA-обновлений. Вы можете:
- Подключать датчики (пыли, температуры, влажности, газа) и читать данные
- Передавать данные по Wi-Fi в Home Assistant, MQTT, или Google Sheets
- Собирать метеостанции, системы умного дома и робототехнику
- Обновлять прошивку по воздуху, не снимая ESP32 с места