🤖 Робототехника 🚗 Робомашинка
1 2 3 4 5 6 7 8 9 10 11 12
Урок 12 · бонус · продвинутый

Камера — вид от первого лица

Цель урока Подключить камеру ESP32-CAM и показать видео с машины в окне pygame. Получится FPV — «вид от первого лица», как у настоящих дронов.
⚠️ Это продвинутый и необязательный урок Камера ESP32-CAM не входит в набор и подключается отдельно. Весь курс прекрасно работает и без неё. Берись за этот урок, если хочется большего и рядом есть взрослый-помощник.

📷 Как камера отдаёт видео

ESP32-CAM — это маленькая плата с камерой и Wi-Fi. Она раздаёт видео как поток картинок JPEG (формат MJPEG) по адресу вроде http://192.168.4.1:81/stream. Видео — это просто много картинок подряд, наша задача — ловить их и показывать.

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

  1. Залить в ESP32-CAM пример CameraWebServer из Arduino IDE (со взрослым: для прошивки нужен USB-переходник).
  2. Узнать IP-адрес камеры — он печатается в Serial Monitor при старте.
  3. Подключить ноутбук к Wi-Fi камеры и вписать адрес в CAM_URL.
CAM_URL = "http://192.168.4.1:81/stream"   # ← адрес своей камеры

🖼️ Показываем кадры в pygame

Поток читаем в фоновом потоке, вырезаем каждый кадр JPEG (он начинается с байтов FF D8 и кончается FF D9) и рисуем картинку:

frame = pygame.image.load(io.BytesIO(latest_jpeg))
screen.blit(frame, (0, 0))

Запусти fpv.py. Если камеры нет — программа не упадёт, просто покажет «нет сигнала».

⬇️ fpv.py
💡 Куда расти дальше Соедини камеру и кокпит: видео на весь экран, а сверху — HUD радара и кнопки управления. Получится настоящая станция управления: видишь «глазами» машины и рулишь, даже когда она в другой комнате.
🏆 Финал курса Ты собрал машину-робота, научил её ездить по Bluetooth, рисовать радар, тормозить у стен, повторять маршруты — и даже показывать видео. Это уже серьёзная робототехника. Поздравляю!

🧠 Проверь себя

Выбери ответ. Ошибёшься — 30 секунд на то, чтобы вернуться в урок и перечитать.

Как камера ESP32-CAM отдаёт видео?

✅ Камера раздаёт поток по адресу вроде http://192.168.4.1:81/stream — ловим кадры и рисуем.

Видео — это по сути что?

✅ Каждый кадр JPEG начинается с байтов FF D8 и кончается FF D9 — вырезаем и показываем blit.
← НазадУрок 11 — Миссия