Wi-Fi FPV-робот на Arduino и ESP8266: сборка, код и веб-управление
Компоненты
| Arduino UNO | ×1 |
| Arduino Proto Shield (или макетная плата) | ×1 |
| ESP8266 ESP-01 | ×1 |
| Шаговые двигатели 28BYJ-48 + драйверы ULN2003 | ×2 |
| Колёса 42×19 мм с резиной | ×2 |
| Омни-колесо 49×20×32 мм (стальной шар) | ×1 |
| Смартфон на Android (FPV-камера) | ×1 |
| Power Bank (питание 5В) | ×1 |
| Резисторы 1 кОм (×2), 100 кОм (×2) — делитель для ESP RX | — |
| Крепёж: болты/гайки M2, M3, 5/32″, алюминиевые уголки, акрил 2 мм, клепка для селфи-палки | — |
Инструменты
- Дрель, ручная пила, напильник, канцелярский нож (для акрила), отвёртка
Софт и сервисы
- Arduino IDE, Notepad++
- Autodesk Fusion 360 / DraftSight (3D/2D проектирование)
- Приложение IP Webcam на Android (видео/аудио стрим)
Механическая часть
Корпус вырезается из 2-мм акрила по 2D-чертежам (в проекте есть .dwg, .pdf, .123dx). Разметка переносится через клейкую бумагу. Акрил режут ножом по линейке (нарезают groove) и ломают по линии. Отверстия сверлят дрелью (акрил легко сверлится). Сборка на болтах/гайках: M3 — моторы, 5/32″ — переднее колесо и крепление телефона.
Электрика
- Arduino UNO + Proto Shield компактно размещают всю схему.
- ESP-01: VCC/CH_PD → 3.3В (от 3.3В пина Arduino или LDO), GND → GND, TX → D3 (RX SoftwareSerial), RX → D2 (TX) через делитель 1к/2к.
- Два драйвера ULN2003: IN1–IN4 → D8–D11 (правый), D4–D7 (левый).
- Питание всего — Power Bank в USB Arduino.
Код Arduino (stepperRobot.ino)
#include <SoftwareSerial.h> #include <Stepper.h>
SoftwareSerial esp8266(3, 2); // RX=3, TX=2
#define DEBUG true
const int stepsPerRevolution = 500;
Stepper rightStepper(stepsPerRevolution, 8,10,9,11);
Stepper leftStepper(stepsPerRevolution, 4,6,5,7);
void setup() {
Serial.begin(9600);
esp8266.begin(19200); // проверьте бодрейт вашего модуля!
sendData("AT+RST\r\n", 2000, DEBUG);
sendData("AT+CWMODE=1\r\n", 1000, DEBUG);
sendData("AT+CWJAP=\"SSID\",\"PASS\"\r\n", 5000, DEBUG);
while(!esp8266.find("OK")) {}
sendData("AT+CIFSR\r\n", 1000, DEBUG); // узнать IP
sendData("AT+CIPMUX=1\r\n", 1000, DEBUG);
sendData("AT+CIPSERVER=1,80\r\n", 1000, DEBUG);
rightStepper.setSpeed(60); leftStepper.setSpeed(60);
}
void loop() {
if(esp8266.available()) {
if(esp8266.find("+IPD,")) {
esp8266.find("?");
String msg = esp8266.readStringUntil(' ');
String cmd = msg.substring(0,3);
int val = msg.substring(4).toInt();
if(cmd=="cm1") state=1; // forward
else if(cmd=="cm2") state=2; // backward
else if(cmd=="cm3") state=3; // right
else if(cmd=="cm4") state=4; // left
else if(cmd=="cm5") state=5; // stop
}
}
// выполнение шагов согласно state
if(state==1) { rightStepper.step(1); leftStepper.step(-1); }
else if(state==2) { rightStepper.step(-1); leftStepper.step(1); }
else if(state==3) { rightStepper.step(1); leftStepper.step(1); }
else if(state==4) { rightStepper.step(-1); leftStepper.step(-1); }
}
String sendData(String cmd, int timeout, bool debug) {
String resp=""; esp8266.print(cmd);
long t=millis(); while((t+timeout)>millis()) {
while(esp8266.available()) resp += (char)esp8266.read();
} if(debug) Serial.print(resp); return resp;
}
Веб-интерфейс управления
HTML/JS файл (в архиве interface.rar) открывается в Firefox. Вводится IP ESP-модуля и IP видео-стрима (из IP Webcam). Стрелки клавиатуры → команды cm1–cm4. Есть тестовая кнопка «Spin».
Запуск
- Загрузить скетч, открыть Serial Monitor — дождаться коннекта к Wi-Fi и IP.
- Отключить USB, подключить Power Bank.
- Запустить IP Webcam на смартфоне, вставить его в клепку на роботе.
- В веб-интерфейсе ввести IP ESP и IP камеры, нажать Connect.
- Удерживать стрелки для движения. При задержке видео снизить разрешение в IP Webcam.
Файлы проекта
- 3D-модель:
robot.123dx, 2D-чертеж основания:base.dwg - Схема Fritzing:
wistepper - rev1.fzz - Веб-интерфейс:
interface.rar
Производственный процесс
- Создание Bluetooth-робота на Raspberry Pi с аудио-обратной связью
- Создание интернет-управляемого видеostreaming-робота на Arduino и Raspberry Pi
- Робот УФ-дезинфекции на Arduino Mega: дистанционно управляемая гермицидная система
- Робот-ускользатор на сервоприводе: сборка на Arduino и HC-SR04
- Интеграция ёмкостного сканера отпечатков DFRobot с Arduino или ESP8266
- Управление Roomba Create 2 через Arduino и Android: пошаговое руководство
- Роботизированная рука 6 степеней свободы на Arduino Mega с управлением через Nunchuk
- Управление двумя шаговыми двигателями через джойстик на Arduino Nano — простой урок (Visuino)
- Голосовой робот на Arduino Nano: Управление речью через Bluetooth
- Оценка здоровья растений с TinyML: Практическое руководство