С камерой Esp32-Cam идеально работает Arduino! Как запустить Esp32-Cam с помощью Arduino IDE?
Проще говоря, Esp32-Cam — это микроконтроллер в паре с небольшой камерой, которую можно запрограммировать на съемку фотографий и даже таймлапсов и передавать все по Wi-Fi. Это идеальное решение для IoT-проектов, предполагающих беспроводное подключение и обработку изображений — например, системы домашнего наблюдения, умного дверного звонка или даже системы удаленного мониторинга для 3D-принтеров.
В этом руководстве мы покажем вам, как настроить среду разработки для платы Esp32-Cam. Хотя компания Espressif (производитель) имеет свой собственный фреймворк под названием «ESP-IDF» для программирования Esp32, она также поддерживает фреймворк Arduino, который более удобен для новичков. Поскольку это самый простой способ начать работу с платой, мы будем использовать Arduino IDE для прошивки вашей первой программы на Esp32-Cam.
Проверьте цену Esp32-Cam на сайте:
- Esp32-Cam
- Применение
- Альтернативы
- Приступая к работе
- Инструкция по подключению
- Кабель FTDI
- Программатор FTDI
- Arduino Nano, Uno и Co
- Программатор Esp32-Cam MB Micro-USB
- Программирование Esp32-Cam
- Установка и настройка среды Arduino IDE
- Загрузка демонстрационного скетча
- Загрузка кода по воздуху
- Устранение неполадок
- Неудачная загрузка или ошибки подключения
- Ошибки режима загрузки или вывод мусора на последовательный монитор
- Камера не найдена или ошибки инициализации
- Нестабильное соединение Wi-Fi или плохое качество изображения
Esp32-Cam

Esp32-Cam — это плата разработки, которая объединяет микроконтроллер ESP32, 2-мегапиксельную камеру и слот для карт MicroSD в одном корпусе размером 27 x 40,5 x 4,5 мм. Плата стоит от 500 руб. до 2000 руб. в зависимости от варианта и пользуется большой популярностью среди любителей благодаря своей низкой цене, компактности и функциональности.
Камера позволяет делать снимки и даже оснащена небольшим фонариком! Слот для карты памяти позволяет хранить отснятые изображения вместе с другими файлами. Более того, поскольку чип Esp32 поддерживает Wi-Fi и Bluetooth, вы можете отправлять изображения на другое устройство по Wi-Fi или Bluetooth. Сочетание беспроводных возможностей, интеграции камеры и вариантов хранения данных делает Esp32-Cam гибким и бюджетным решением для изучения IoT.
К сожалению, компактный форм-фактор имеет некоторые недостатки — например, отсутствие встроенного программатора. В отличие от типичных плат разработки Esp32, официальная плата Cam требует использования внешнего адаптера USB-to-Serial для программирования. Еще один недостаток платы Esp32-Cam заключается в том, что кнопка сброса (обозначенная «RST») расположена на нижней части платы. Поэтому, если вы установите ее на макетную плату, вы не сможете сбросить ее.
Применение
Esp32-Cam — отличный выбор для таких проектов, как домашнее наблюдение, мониторинг дикой природы или даже обнаружение объектов при передаче обработки на веб-сервер. Однако одно из самых популярных применений — создание таймлапс-записей ваших проектов 3D-печати.
Установив камеру так, чтобы она снимала стол принтера, вы можете снимать процесс печати от начала до конца, наблюдать и быстро выявлять такие проблемы, как застревание или смещение слоев, если вы следите за принтером удаленно.
Что касается удаленного мониторинга, то это видео от Canuck Creator поможет вам начать работу. Кроме того, если на вашем принтере установлен OctoPrint, вы можете использовать этот плагин для расширения интерфейса Esp32-Cam в интерфейс OctoPrint.
Как настроить таймлапс, смотрите в этом видео из Bitluni’s Lab. К сожалению, на данный момент не существует способа одновременного удаленного мониторинга и таймлапса. Если вы найдете решение, пожалуйста, поделитесь им в разделе комментариев.

Альтернативы
Некоторые компании выпустили свои собственные варианты платы Cam, которые включают в себя встроенный программатор. Например, компания Freenove выпускает плату, которая немного больше официальной платы Cam. Кнопка сброса находится на верхней части платы и ее легко достать. Если компактность не является абсолютной необходимостью, плата Freenove может оказаться более удачным выбором.
Существуют и более мощные варианты, такие как Esp32-S3-Cam, которые предлагают больше функций и лучшую производительность в плане вычислительной мощности. Esp32-S3-Cam сильно отличается от Esp32, поэтому инструкции по работе с ней в Arduino IDE могут отличаться.
В этой статье мы рассмотрим только плату разработки Esp32-Cam.
Приступая к работе

Чтобы запустить плату Esp32-Cam в работу, вам понадобятся следующие компоненты:
- Конвертер USB в последовательный порт (программатор FTDI или эквивалент): Если на вашей плате нет встроенного USB-программатора
(подсказка: если вы не видите USB-порта, значит, его нет), то для программирования вам понадобится внешний USB-UART-конвертер. В Интернете можно найти множество адаптеров USB-to-Serial, но мы рекомендуем выбирать те, которые называются «FTDI Programmer» или «FTDI cable», если это возможно.- Альтернативный вариант: Если у вас есть Arduino Uno или Nano, вы можете использовать его в качестве адаптера USB-to-Serial, минуя его встроенный микроконтроллер, и использовать его для программирования ESP32.
- Провода-перемычки и макетная плата: Хотя это и не обязательно, но несколько проводов-перемычек и небольшая макетная плата значительно упростят создание временных соединений при программировании платы ESP32-CAM.
- Arduino IDE: Как мы уже говорили, Arduino IDE — это самый простой способ начать работу с платой Esp32-Cam. Если у вас ее еще нет, ниже мы расскажем вам об установке и настройке Arduino IDE.
Инструкция по подключению
Поскольку способ подключения для каждого типа программатора отличается, мы вкратце рассмотрим их все.
Кабель FTDI

Кабель FTDI (Future Technology Devices International) — это конвертер USB-последовательного интерфейса, который обеспечивает простой способ подключения стандартной камеры Esp32-Cam к порту USB на компьютере. Если у вас под рукой есть кабель FTDI, вы можете запитать плату от выводов 3,3 В или 5 В, а также от выводов заземления (GND).
Контакт GPIO0 определяет нормальный режим или режим Flash модуля:
- GPIO0 подключен к земле = Esp32-CAM в режиме Flash = можно загружать код.
- GPIO0 не подключен к земле = Esp32-CAM в нормальном режиме = плата выполняет программу.
Имеются два последовательных вывода GPIO01 и GPIO03 (обозначены UOT и UOR), которые могут использоваться для последовательной передачи и приема данных по протоколу UART (Universal Asynchronous Receiver-Transmitter).
Кроме кабеля FTDI, для подключения Esp32-Cam вам понадобятся пять кабелей-перемычек, как показано на изображении выше:
- Красный кабель 5V подключается к 5V на плате.
- GND — к GND.
- Оранжевый кабель TXD подключается к UOT на плате.
- Желтый кабель RXD подключается к UOR на плате.
- Перемычка соединяет GPIO0 и GND (перед загрузкой кода). Всегда помните о необходимости сброса платы после изменения состояния GPIO0. Подключите и сбросьте, чтобы загрузить код, отключите и сбросьте, чтобы запустить программу.
Имейте в виду, что, поскольку переключатель сброса находится в нижней части платы, его может быть трудно достать. Чтобы перезагрузить плату, можно просто отсоединить и снова подсоединить провод 5 В или провод заземления. Не забывайте держать открытым Arduino Serial Monitor в программе Arduino IDE (Menu > Tools > Serial Monitor), поскольку он может дать вам важную информацию и помочь в отладке вашего скетча.
Программатор FTDI

Программатор FTDI имеет точно такую же функциональность, как и кабель — это также преобразователь USB в последовательный порт, что позволяет просто подключить его к USB-порту компьютера. Разница между кабелем и программатором заключается в различной распиновке последовательного соединения:
- Подключите RX на программаторе FTDI к UOT на плате.
- Подключите TX на программаторе FTDI к UOR на плате.
Поскольку логический уровень Esp32 составляет 3,3 В, программатор FTDI должен быть переключен на 3,3 В. Если оставить его на логическом уровне 5 В, это может привести к повреждению Esp32.
Arduino Nano, Uno и Co

Возможно, у вас нет под рукой кабеля FTDI или программатора FTDI, но у вас может быть Arduino, будь то Nano, Uno или другая плата Arduino.
Вы можете отправлять данные с платы Arduino на Esp32-Cam последовательно, используя протокол связи UART, который имеет следующие соединения:
- 5 В — 5 В на плате
- GND к GND.
- Оранжевый кабель TXD к UOT на плате.
- Желтый кабель RXD — к UOR на плате.
- Перемычка между GPIO0 и GND (перед загрузкой кода).
На изображении выше показаны подключения Arduino Nano.

Чтобы подключить Arduino Uno, вы можете следовать той же инструкции, что и для Arduino Nano, подключение Arduino Uno можно увидеть на изображении выше.
Если вы хотите использовать другую плату Arduino, которая у вас уже есть, вам просто нужно убедиться, что вы используете правильные контакты в соответствии с нумерованной схемой выше.
Чтобы подключить плату Arduino к компьютеру, вам понадобится только USB-разъем (для Nano необходим кабель mini USB).
Программатор Esp32-Cam MB Micro-USB

Программатор Esp32-Cam MB Micro-USB — это шилд для стандартной платы Esp32-Cam, в который добавлен порт Micro-USB. Вам просто нужно подключить вашу плату к шилду.
После сопряжения, как на фото выше, вам понадобится только кабель USB-micro-to-USB-A для подключения к ПК или Mac и загрузки кода. Вот и все. Легко, правда?
Вы можете купить либо только MB shield, либо комплект, в который входят Esp32-Cam и MB shield. Для подключения к компьютеру вам понадобится кабель Micro-USB.
Программирование Esp32-Cam
После того как Esp32-Cam подключен к нужному программатору, можно приступать к программированию платы Cam.
Установка и настройка среды Arduino IDE

Сначала установим Arduino IDE. Зайдите на официальный сайт Arduino и скачайте последний стабильный релиз Arduino IDE для вашей операционной системы. После загрузки установите ее на свой компьютер.
Затем нам нужно будет добавить платы Esp32:
- Запустив Arduino IDE, откройте диалог Preferences: «File > Preferences» в Windows/Linux или „Arduino IDE > Preferences“ в MacOS.
- В поле Additional Boards Manager URLs добавьте следующий URL:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json. - Нажмите OK, чтобы сохранить изменения.
- Перейдите в «Tools > Board > Boards Manager…», затем введите «esp32» в строке поиска. Должно появиться что-то вроде «esp32 by Espressif».
- Нажмите на кнопку установки. После установки платы Esp32 появятся в списке опций платы.
- Наконец, установите драйвер CH340 или CP2102 для USB-программатора (неважно, встроенного или внешнего). Если вы не уверены, какой из них использует ваш программатор, просто установите оба. Пользователям Windows 11 не нужно скачивать отдельно драйвер CH340.
Загрузка демонстрационного скетча

Теперь, когда IDE Arduino настроена и ядро Esp32 установлено, пришло время запустить все в действие. В этом разделе мы загрузим в Esp32-Cam пример скетча — программы, написанной на языке Arduino. Затем Arduino IDE переведет этот человекочитаемый код в машинные инструкции для микроконтроллера.
После загрузки Esp32-Cam выполнит код, подключится к вашей сети Wi-Fi и предоставит веб-интерфейс, через который вы сможете просматривать прямую трансляцию с камеры прямо из браузера. Давайте приступим!
Шаг 1. Выбор платы и правильного COM-порта
- Подключите Esp32-Cam к адаптеру USB-Serial, а затем к USB-порту вашего компьютера. Если микроконтроллер имеет встроенный программатор, вы можете подключить его напрямую к компьютеру.
- В Arduino IDE перейдите в меню «Tools > Board», затем выберите «AI Thinker ESP CAM».
- Затем перейдите в раздел «Tools > Port» и выберите COM-порт (в Windows) или устройство /dev/tty (в MacOS/Linux), связанное с вашим конвертером USB-to-Serial.
Шаг 2. Откройте и измените демо скетч CameraWebServer
Этот пример предоставляет полнофункциональный веб-интерфейс для просмотра непосредственно из браузера.
- Перейдите в «File > Examples > ESP32 > Camera > CameraWebServer».
- Далее давайте обновим учетные данные Wi-Fi в скетче. Найдите строки, определяющие SSID и пароль, и замените их на SSID и пароль вашей сети.
- Наконец, убедитесь, что для вашей платы установлена правильная модель камеры. Убедитесь, что все остальные строки #define CAMERA_MODEL_* закомментированы.
Шаг 3. Вход в режим загрузчика и загрузка скетча
Если ваша Esp32-Cam не имеет встроенного USB-программатора, вам нужно войти в режим загрузчика (программирования) вручную, выполнив следующие шаги. Если же он есть, то можно сразу перейти к нажатию кнопки Upload в IDE Arduino.
- Подключите провод-перемычку от GPIO0 к GND на ESP32-CAM. Это позволит плате перейти в режим загрузчика при перезагрузке.
- Нажмите кнопку Reset на плате — или ненадолго отключите и снова подключите питание платы — чтобы убедиться, что она перешла в режим загрузчика.
- Нажмите кнопку Upload в Arduino IDE. Если в процессе соединения произойдет зависание, нажмите кнопку Reset еще раз, чтобы вызвать успешное соединение.

Шаг 4. Запуск скетча и просмотр вывода
- После завершения загрузки удалите провод-перемычку между GPIO0 и GND.
- Нажмите Reset еще раз, чтобы запустить загруженный код.
- Откройте Serial Monitor, перейдя в меню «Tools > Serial Monitor», затем установите скорость передачи данных на 115200.
- Следите за тем, чтобы Esp32-Cam выводил назначенный ему IP-адрес в Serial Monitor. Запишите IP-адрес.
Шаг 5. Доступ к веб-интерфейсу камеры Esp32-Cam
- Откройте веб-браузер на устройстве, подключенном к той же сети Wi-Fi. Это может быть ваш компьютер.
- Введите IP-адрес, который вы видели в Serial Monitor, в адресную строку браузера, а затем нажмите Enter.
- Должна загрузиться страница CameraWebServer, которая позволит вам настроить параметры камеры, запустить видеопоток и захватить изображение.
Выполнив эти шаги, вы успешно настроили Arduino IDE, загрузили пример CameraWebServer и получили доступ к прямой трансляции с камеры Esp32-Cam.
Загрузка кода по воздуху

Возможно, физическое подключение не подходит и вам потребуется удаленная настройка. Возможно, у вас много устройств с одинаковым программным обеспечением или физическое подключение к плате может быть затруднено. На помощь приходят обновления по воздуху (OTA) или прошивки по воздуху (FOTA).
Существует множество способов реализовать OTA на обычных Esp32, но поскольку цель этой статьи — дать вам основы, мы сконцентрируемся на базовом OTA.
Итак, чтобы реализовать базовый OTA, запустите Arduino IDE и выполните следующие шаги:
- Убедитесь, что платы ESP32 успешно установлены в Arduino IDE. Если вы еще не сделали этого, смотрите раздел об установке и настройке Arduino IDE выше.
- Далее мы выберем плату. Перейдите в раздел «Tools > Board > ESP32 Arduino», затем выберите «ESP32 Wrover Module» — не Esp32-Cam.
- Установите следующие параметры в разделе «Tools»:
- Upload Speed: 115200
- Flash Frequency: 80 МГц
- Flash Mode: QIO
- Partition Scheme: Minimal SPIFFS
- Core Debug Level: Debug (может быть полезна)
- Port: Выберите подходящий последовательный порт
- Откройте пример скетча Basic OTA, перейдя в «File > Examples > ESP32 Wrover Module > Examples for Arduino OTA > BasicOTA».
- Добавьте SSID и пароль Wi-Fi, как мы делали выше в разделе «Загрузка демонстрационного скетча». Затем сохраните скетч.
- Загрузите скетч в вашу камеру Esp32-Cam.
- Далее давайте проверим, успешно ли запустился сервер. Это можно сделать, убедившись, что MAC-адрес вашей платы Esp32-Cam отображается. Откройте «Tools > Serial Monitor». Последнее сообщение должно выглядеть примерно так: «
begin(): OTA-сервер по адресу: esp32-4417937c9080.local:3232», где 4417937c9080 — это MAC-адрес вашей платы Esp32-Cam. - После этого вы можете выбрать сетевые порты, которые появятся в меню «Tools > Port» (см. шаг 1 в разделе Загрузка демонстрационного скетча).
Чтобы использовать OTA в своем скетче, вам нужно сохранить базовую структуруOTA и просто добавить свой код в четыре основные секции скетча Arduino:
- Секция комментариев
- Секция переменных
- Секция установки
- Секция цикла
Если вам нужно узнать больше о скетчах Arduino, посмотрите этот обзор.
Удачной загрузки OTA!
Устранение неполадок

Плата Esp32-Cam имеет свои причуды и проблемы, решение некоторых из которых может занять много времени. К счастью, сообщество поддерживает Esp32, поэтому вы сможете найти решения большинства из них в Интернете.
Ниже мы приводим руководство по устранению неполадок, которое поможет вам справиться с часто возникающими проблемами:
Неудачная загрузка или ошибки подключения
Если вы получаете ошибки типа «Failed to connect to ESP32: Timed out» или процесс загрузки застопорился, это часто связано с тем, что Esp32-Cam не вошла в правильный режим загрузчика.
- Проверьте подключение: Убедитесь, что TX адаптера USB-to-Serial подключен к выводу U0R (RX) Esp32-Cam, а RX адаптера USB-to-Serial — к U0T (TX) Esp32-Cam, а также что вы подключили GND к GND и 5 В или 3,3 В к соответствующему выводу питания.
- Обновите драйверы USB-to-Serial: Некоторые чипы USB-to-Serial (например, CH340 или CP2102) могут потребовать обновления драйверов. Установите последние версии драйверов для вашей операционной системы, а затем повторите попытку. Драйверы должны быть установлены независимо от того, используете ли вы внешний или встроенный программатор, поскольку оба используют эти драйверы.
- Войдите в режим прошивки: Во время загрузки кода Esp32-Cam должна автоматически перейти в режим прошивки. Однако если по какой-то причине этого не происходит, попробуйте нажать на кнопку сброса на плате прямо во время подключения Arduino IDE к плате — не до и уж точно не после.
- Используйте другой USB-кабель: Иногда низкокачественные USB-кабели плохо работают с Esp32, поэтому замена кабеля может помочь. Постарайтесь использовать приличный кабель, не слишком длинный (менее 1 метра).
Ошибки режима загрузки или вывод мусора на последовательный монитор
Иногда Esp32-Cam не может загрузиться или выводит нечитаемые символы на последовательный монитор из-за неправильной скорости передачи данных, проблем с подключением или неправильного выхода из режима программирования.
- Установите правильную скорость передачи данных: Начните со скорости 115200 в мониторе последовательного интерфейса. Если вы все еще видите тарабарщину, попробуйте использовать скорость 74880, которая по умолчанию используется загрузчиком на некоторых платах Esp32. Это поможет вам увидеть отладочные сообщения и понять, что происходит не так.
- Дважды проверьте свои пины: Убедитесь, что GPIO0 разблокирован (не заземлен) и что плата сброшена после программирования, чтобы убедиться, что она загружается нормально.
- Проверьте источник питания: Если Esp32 выдает что-то вроде «Brownout detector was triggered», это означает, что он не смог запуститься из-за слишком низкого напряжения. Если к Esp32-Cam подключены другие компоненты (например, датчики), проверьте, хватает ли питания для всех. Если вы используете только плату Esp32-Cam без периферийных устройств, попробуйте использовать другой USB-кабель.
Камера не найдена или ошибки инициализации
Если модуль камеры не обнаруживается или не инициализируется, это может быть связано с неправильными настройками кода, слабыми соединениями или несовместимостью оборудования.
- Проверьте соединения камеры: Убедитесь, что ленточный кабель камеры плотно и правильно вставлен в разъем. Камера не должна болтаться, а кабель должен быть правильно ориентирован.
- Проверьте настройки кода: Убедитесь, что модель камеры, заданная в коде (например, CONFIG_OV2640_MINI_2MP), соответствует реальной камере. На камере должна быть маркировка модели.
- Попробуйте другой источник питания: Некоторые камеры требуют стабильного напряжения и достаточного тока. Переключение на специальный источник питания 5 В вместо того, чтобы полагаться на питание адаптера USB-to-Serial, может помочь. Отсоедините вывод 5 В Esp32-Cam от адаптера USB-Serial и подключите его к внешнему источнику питания; землю следует оставить подключенной к адаптеру USB-to-Serial. Убедитесь, что земля внешнего источника питания также подключена к Esp32-Cam.
Нестабильное соединение Wi-Fi или плохое качество изображения
Слабый сигнал Wi-Fi или недостаточное освещение могут привести к ухудшению качества изображения или нестабильности соединения.
- Попробуйте разные места: Перемещение Esp32-Cam ближе к маршрутизатору Wi-Fi должно помочь повысить уровень сигнала. Если это невозможно, попробуйте переместить ее ближе к потолку.
- Настройте освещение и фокусировку: улучшите условия окружающего освещения или вручную настройте фокус камеры, осторожно поворачивая объектив, чтобы повысить четкость изображения.
- Уменьшите разрешение изображения или частоту кадров: Использование более низкого разрешения или частоты кадров может повысить надежность, особенно если сигнал Wi-Fi слабый.
- Используйте внешнюю антенну: если плата Esp32-Cam поддерживает внешнюю антенну, ее подключение может значительно повысить уровень сигнала и надежность.








Спасибо!
Интересно было почитать!