Если у вас есть Raspberry Pi (особенно свежая 5-я модель) и вы хотите использовать её для программирования микроконтроллеров ESP32, то эта статья для вас. Мы настроим всё с нуля, чтобы вы могли писать код и заливать его на ESP32 буквально одной кнопкой.
В новых версиях 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 ~/.bashrcesp-on в любом терминале.
Внутри активированного окружения ставим всё необходимое:
pip install esptool platformio
esptool — утилита для прямой работы с ESP-чипами.
PlatformIO — мощная среда разработки, которой мы будем пользоваться.
Подключите 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.
Работать в терминале удобно, но для больших проектов лучше использовать Visual Studio Code с расширением PlatformIO.
wget -O ~/vscode.deb "https://update.code.visualstudio.com/latest/linux-deb-arm64/stable"
sudo dpkg -i ~/vscode.deb
sudo apt --fix-broken install
code в терминале или через ярлык на рабочем столе).cpp файла.
Теперь создадим проект с кодом для теста — классическое мигание светодиодом.
File → Open Folder.../home/mazzick/esp_blink_testЕсли папки нет — создайте её через терминал:
mkdir -p ~/esp_blink_test/src
platformio.iniplatformio.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
src/main.cppsrc → New Filemain.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 (у некоторых плат другие пины).
После создания файлов внизу VS Code появится синяя/красная панель PlatformIO с тремя главными кнопками:
Порядок действий:
[SUCCESS] в терминале внизу🔥 FAST BLINK v2.0Если вы привыкли к командной строке, внутри VS Code можно открыть терминал (Terminal → New Terminal) и выполнить:
pio run --target upload
OTA (Over-The-Air) — это возможность обновлять прошивку на ESP32 без подключения по USB. Это особенно удобно, когда ваша метеостанция уже висит на стене или в труднодоступном месте.
Создайте новый проект ~/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);
}
1. Соберите проект локально:
pio run
2. Загрузите файл через браузер:
http://[IP-адрес_ESP32]/update.pio/build/esp32dev/firmware.binОдна команда — и прошивка улетела на 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.
| Что делаем | Команда / действие |
|---|---|
| Активировать окружение | 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 |
~/.bashrc:
alias code="code --disable-gpu"
code --password-store basic
ls -l /dev/serial/by-id/).
Поздравляю! Теперь у вас есть полностью рабочий стенд для разработки под ESP32 на Raspberry Pi с возможностью OTA-обновлений. Вы можете:
Комментарии
Пока нет комментариев. Будьте первым!