Начало работы с ESP32-CAM
Несколько лет назад, если бы кто-то спросил вас, сколько будет стоить цифровая камера со встроенным Wi-Fi, вы, вероятно, не угадали бы $10. Но времена изменились.
ESP32-CAM, плата, появившаяся на рынке в начале 2019 года, полностью изменила правила игры. Менее чем за десять долларов вы получаете мощный процессор ESP32, 2-мегапиксельную камеру и даже слот для microSD-карты для хранения фотографий и видео. Звучит почти слишком хорошо, чтобы быть правдой, но эти маленькие модули — это настоящая находка.
Хотите ли вы создать детектор движения для Хэллоуина, систему распознавания лиц, считыватель номерных знаков или простую недорогую камеру безопасности — ESP32-CAM вам в этом поможет.
В этом руководстве мы расскажем вам всё, что нужно знать для начала работы с этой удивительной маленькой платой — от понимания назначения всех выводов до загрузки первой программы и потоковой передачи живого видео по домашней сети.
Давайте начнём!
Обзор оборудования ESP32-CAM
ESP32-CAM — это небольшая, недорогая отладочная плата, которая сочетает в себе мощный чип ESP32 с 2-мегапиксельной камерой и слотом для microSD-карты для сохранения изображений и видео. Это делает её автономным модулем для проектов машинного зрения и приложений Интернета вещей (IoT). Давайте рассмотрим, что делает это маленькое устройство таким способным.
Процессор ESP32-S
В основе ESP32-CAM лежит System-on-Chip (SoC) ESP32-S производства Ai-Thinker. «Система на кристалле» означает, что она содержит почти всё, что нужно маленькому компьютеру — микропроцессор, ОЗУ, хранилище и периферийные устройства — всё на одном чипе.
ESP32-S имеет микропроцессор Tensilica Xtensa® LX6 с двумя 32-битными ядрами, которые могут работать на невероятной скорости до 240 МГц. Эта высокая скорость позволяет ESP32-CAM справляться с ресурсоёмкими задачами, такими как обработка видео, распознавание лиц и даже базовые приложения искусственного интеллекта.
Память
Память имеет первостепенное значение для сложных задач. ESP32-S включает 520 килобайт встроенной оперативной памяти. Однако этого объёма памяти недостаточно для ресурсоёмких задач, таких как обработка изображений или видео. Вот почему ESP32-CAM включает дополнительные 4 мегабайта внешней PSRAM (псевдостатической RAM).
Помимо ОЗУ, чип также включает 4 мегабайта флеш-памяти для постоянного хранения программ и данных.
Камера
Одной из наиболее отличительных особенностей ESP32-CAM является встроенная камера OV2640. Это 2-мегапиксельный CMOS-датчик изображения со встроенной обработкой сигнала изображения и сжатием JPEG.
OV2640 может захватывать изображения с разрешением до 1600x1200 (UXGA) и поддерживает несколько форматов вывода, включая JPEG, RGB565 и YUV422.
Камера подключается к плате через 24-контактный разъём FPC, что означает, что вы можете снять OV2640 и заменить её другой совместимой камерой, например OV3660, если вам нужны изображения более высокого разрешения. Полный список совместимых камер можно найти на GitHub.
Хранилище
Помимо встроенной памяти, ESP32-CAM имеет слот для MicroSD-карты, который принимает карты от 4 ГБ до 32 ГБ, отформатированные в FAT32. Это даёт достаточно места для сохранения тысяч фотографий или часов видеозаписей.
Антенна
Для беспроводной связи ESP32-CAM предоставляет как встроенную PCB-антенну (дорожку на плате), так и разъём u.FL для подключения внешней антенны. Встроенная антенна хорошо работает для большинства проектов, где плата находится относительно близко к Wi-Fi роутеру, в то время как внешняя антенна может значительно расширить радиус действия и улучшить стабильность сигнала — особенно когда ваша плата находится внутри корпуса или используется на открытом воздухе, где сигнал может быть слабее.
На плате есть перемычка для выбора антенны (небольшой резистор с нулевым сопротивлением), который позволяет переключаться между двумя антеннами.
Если вы хотите использовать внешнюю антенну, вы можете следовать этим инструкциям.
Светодиоды
ESP32-CAM включает два светодиода:
Белый светодиод вспышки, расположенный рядом с объективом камеры, предназначен для использования в качестве вспышки камеры, но его также можно использовать для общего освещения. Он подключён к GPIO 4 и программируется пользователем.
На задней стороне платы также есть небольшой красный светодиод, который идеально подходит для отображения информации о состоянии, например, подключено ли устройство к Wi-Fi или в данный момент ведётся запись. Он подключён к GPIO 33 и также программируется пользователем.
Технические характеристики
Подводя итог, ESP32-CAM имеет следующие характеристики.
Процессоры:
CPU: двухъядерный 32-битный микропроцессор Xtensa LX6, работающий на частоте 240 МГц и обеспечивающий производительность до 600 DMIPS
Сопроцессор ультранизкого энергопотребления (ULP)
Память:
520 КБ SRAM
4 МБ внешней PSRAM
4 МБ внутренней флеш-памяти
Беспроводная связь:
Wi-Fi: 802.11 b/g/n
Bluetooth: v4.2 BR/EDR и BLE (разделяет радиомодуль с Wi-Fi)
Камера:
2-мегапиксельный датчик OV2640
Размер массива UXGA 1622x1200
Форматы вывода: YUV422, YUV420, RGB565, RGB555 и 8-битные сжатые данные
Скорость передачи изображений от 15 до 60 кадров/с
Встроенный светодиод вспышки
Поддержка множества датчиков камер
Поддержка microSD-карт
Безопасность:
Поддержка всех стандартных функций безопасности IEEE 802.11, включая WFA, WPA/WPA2 и WAPI
Безопасная загрузка
Шифрование флеш-памяти
1024-бит OTP, до 768 бит для пользователей
Аппаратное ускорение криптографии: AES, SHA-2, RSA, криптография на эллиптических кривых (ECC), генератор случайных чисел (RNG)
Управление питанием:
Внутренний стабилизатор с малым падением напряжения
Индивидуальный домен питания для RTC
Ток в режиме глубокого сна 5 мкА
Пробуждение от прерывания GPIO, таймера, измерений АЦП, прерывания ёмкостного сенсорного датчика
Схема и даташиты
Для получения дополнительной информации о ESP32-CAM обратитесь к:
Энергопотребление ESP32-CAM
ESP32-CAM может потреблять довольно много энергии в зависимости от того, что она делает. В режиме ожидания, без потоковой передачи видео, она потребляет около 80 мА тока. Во время потоковой передачи видео она потребляет от 100 до 160 мА. Если вы включите светодиод вспышки во время потоковой передачи, потребление энергии может возрасти примерно до 270 мА.
Вот краткая сводка:
Режим работы |
Энергопотребление |
|---|---|
Режим ожидания |
80 мА |
Потоковая передача |
100~160 мА |
Потоковая передача со вспышкой |
270 мА |
Из-за этого наличие стабильного источника питания очень важно. Если источник питания слишком слабый, плата может постоянно перезагружаться или не инициализировать камеру должным образом.
Распиновка ESP32-CAM
ESP32-CAM имеет в общей сложности 16 выводов. Чтобы упростить понимание, мы рассмотрим выводы с похожими функциями вместе.
Выводы питания На плате есть два вывода для подачи питания: один помечен 5V, а другой — 3V3. Технически вы можете запитать ESP32-CAM через вывод 3V3 или 5V. Однако многие пользователи сталкивались с проблемами при использовании варианта 3V3, поэтому настоятельно рекомендуется всегда запитывать ESP32-CAM через вывод 5V. Также есть вывод VCC, который обычно выдаёт 3,3 В от встроенного стабилизатора напряжения, но его также можно настроить на вывод 5 В, отрегулировав маленькую перемычку с нулевым сопротивлением рядом с выводом VCC.
GND — это вывод заземления.
Выводы GPIO Чип ESP32-S имеет 32 вывода GPIO. Однако, поскольку многие из этих выводов уже используются внутри для камеры и памяти PSRAM, на плате ESP32-CAM доступны только 10 выводов GPIO. Этим выводам можно назначить различные периферийные функции, такие как UART, SPI, АЦП и Touch.
Выводы UART Чип ESP32-S имеет два интерфейса UART — UART0 и UART2. К сожалению, на плате доступен только вывод RX (GPIO 16) UART2. Это означает, что UART0 (GPIO 1 и GPIO 3) является единственным полностью используемым интерфейсом UART на ESP32-CAM. В отличие от многих других отладочных плат, ESP32-CAM не имеет встроенного USB-интерфейса. Из-за этого выводы UART0 используются как для прошивки (загрузки кода на плату), так и для связи с UART-устройствами, такими как GPS-модули, датчики отпечатков пальцев или датчики расстояния.
Выводы microSD-карты используются для подключения к слоту microSD-карты на плате. Однако, если ваш проект не использует microSD-карту, вы можете использовать эти выводы как обычные выводы ввода и вывода.
Выводы АЦП позволяют считывать аналоговые сигналы с датчиков. Обратите внимание, что на этой плате доступны только выводы ADC2. И поскольку эти выводы совместно используются с модулем Wi-Fi, они не могут использоваться для аналогового ввода, когда Wi-Fi включён.
Сенсорные выводы (Touch) могут определять, когда ёмкостная нагрузка, например, человеческий палец, приближается к ним. ESP32-CAM имеет семь таких сенсорных выводов. Вы можете использовать эти выводы для создания сенсорных кнопок или элементов управления для ваших проектов без необходимости использования физических переключателей.
Выводы SPI ESP32-CAM имеет один интерфейс SPI (VSPI), который может работать как в режиме ведущего (master), так и в режиме ведомого (slave).
Выводы ШИМ (PWM) ESP32-CAM имеет 10 каналов ШИМ, что означает, что она может генерировать ШИМ-сигналы на всех своих выводах GPIO. ШИМ, или широтно-импульсная модуляция, — это метод, используемый для управления такими вещами, как скорость двигателя или яркость светодиода, путём быстрого включения и выключения сигнала.
Если вы хотите подробнее изучить назначение каждого вывода, вы можете ознакомиться с нашим справочником по распиновке ESP32-CAM. В этом руководстве объясняется, какие выводы GPIO полностью безопасны для использования и с какими выводами следует быть осторожным.
Загрузка кода в ESP32-CAM
Загрузка кода в ESP32-CAM может быть немного сложной, потому что, в отличие от большинства других отладочных плат, она не имеет встроенного USB-порта. Это означает, что вы не можете просто подключить её к компьютеру USB-кабелем для загрузки кода.
Чтобы обойти это, вам понадобится дополнительное оборудование. У вас есть два основных варианта: вы можете использовать USB-to-serial адаптер (также называемый FTDI-адаптером) или приобрести плату-адаптер ESP32-CAM-MB, которая значительно упрощает весь процесс.
Использование FTDI-адаптера
Если вы решите использовать FTDI-адаптер, вот как подключить его к модулю ESP32-CAM:
Многие FTDI-адаптеры поставляются с маленькой перемычкой, которая позволяет выбирать между выходным напряжением 3,3 В и 5 В. Поскольку мы запитываем ESP32-CAM от 5 В, убедитесь, что перемычка установлена на 5 В перед подключением.
Обратите внимание, что вывод GPIO 0 подключён к земле (Ground). Это подключение переводит ESP32-CAM в режим программирования, чтобы она могла принять ваш код. Однако, после завершения загрузки программы, вы должны отключить это подключение.
Запомните! Вам нужно будет выполнять это подключение каждый раз, когда вы хотите загрузить новую программу на плату.
Использование адаптера ESP32-CAM-MB (рекомендуется)
Поскольку подключение FTDI-адаптера может быть немного утомительным, многие пользователи предпочитают использовать адаптер ESP32-CAM-MB, который значительно упрощает загрузку кода.
Вы просто устанавливаете ESP32-CAM поверх адаптера, подключаете кабель micro USB и нажимаете кнопку Upload в Arduino IDE. Вот и всё — никаких перемычек, никаких ручных подключений.
Настройка Arduino IDE
Прежде чем программировать ESP32-CAM, необходимо подготовить Arduino IDE на компьютере. Это включает два основных шага:
Установка платы ESP32
Для работы с ESP32-CAM или любой платой на базе ESP32 в Arduino IDE вам сначала нужно установить пакет плат ESP32. Этот пакет добавляет все необходимые инструменты и библиотеки, которые позволяют Arduino IDE понимать, как программировать устройства ESP32.
Если вы ещё этого не сделали, следуйте этому руководству:
Выбор платы и порта
Теперь подключите ESP32-CAM к компьютеру с помощью FTDI-адаптера или платы ESP32-CAM-MB с USB-кабелем.
В Arduino IDE нажмите на выпадающее меню вверху и выберите «Select Other Board and Port». Если вы используете более старую версию IDE, перейдите в Tools > Board.
Появится список плат. Из этого списка выберите «AI-Thinker ESP32-CAM».
Далее выберите правильный COM-порт для вашей ESP32-CAM. Если вы не уверены, какой именно, вот простой способ: отключите ESP32-CAM и посмотрите, какой порт исчезнет из списка. Затем подключите её обратно и выберите этот порт.
Вот и всё! Ваша Arduino IDE теперь настроена и готова к программированию ESP32-CAM.
Пример 1 для ESP32-CAM: Мигание светодиодом (Blink)
Теперь, когда вы завершили все шаги настройки, вы готовы запустить свою первую программу на ESP32-CAM!
Давайте начнём с самой простой программы: классического скетча Blink! Эта программа заставляет встроенный светодиод вспышки камеры мигать.
int flashPin = 4;
void setup() {
pinMode(flashPin, OUTPUT);
}
void loop() {
digitalWrite(flashPin, HIGH);
delay(1000);
digitalWrite(flashPin, LOW);
delay(1000);
}
После загрузки скетча на ESP32-CAM встроенный светодиод вспышки камеры должен начать мигать!
Если вы используете FTDI-адаптер, сначала отключите его от компьютера, затем отключите GPIO 0 от GND. После этого снова подключите адаптер к компьютеру.
Поздравляем! Ваша ESP32-CAM теперь выполняет свою первую программу.
Пример 2 для ESP32-CAM: Сервер потокового видео
Теперь давайте перейдём на следующий уровень, превратив вашу ESP32-CAM в сервер потокового видео. Это фантастическая демонстрация того, насколько мощной на самом деле является ESP32-CAM!
Вы можете найти этот пример, перейдя в File > Examples > ESP32 > Camera > CameraWebServer.
Перед загрузкой вам нужно внести несколько небольших изменений в код.
Сначала найдите раздел в коде, где вы должны ввести свои учётные данные Wi-Fi. Замените заполнители на SSID (имя) и пароль вашей сети. Эта информация сообщает вашему ESP32, к какой сети подключиться.
Далее вам нужно указать, какую модель камеры вы используете. Нажмите на вкладку «board_config.h» в Arduino IDE. Поскольку мы работаем с моделью AI-THINKER ESP32-CAM, вам нужно найти строку «CAMERA_MODEL_AI_THINKER» и раскомментировать её. Убедитесь, что все остальные варианты моделей камер остаются закомментированными.
После внесения этих изменений загрузите скетч на ESP32-CAM.
Доступ к серверу потокового видео
После загрузки скетча откройте Монитор порта и убедитесь, что скорость передачи данных установлена на 115200. Затем нажмите кнопку Reset на ESP32-CAM. Если всё работает правильно, ESP32 подключится к вашей Wi-Fi сети и выведет сообщение «Camera Ready!» вместе с IP-адресом, который ваш роутер назначил вашей ESP32-CAM.
Теперь откройте веб-браузер на компьютере или телефоне и введите IP-адрес. Просто убедитесь, что ваше устройство подключено к той же Wi-Fi сети, что и ESP32-CAM, иначе вы не сможете к ней подключиться.
Вы должны увидеть веб-страницу, размещённую на ESP32-CAM. Чтобы начать просмотр живого видео с вашей камеры, просто нажмите кнопку «Start Stream».
В левой части веб-страницы вы найдёте различные настройки камеры. Вы можете регулировать такие параметры, как разрешение, частота кадров, яркость, контрастность и насыщенность для настройки видеопотока.
Если вы хотите сделать одиночный снимок, просто нажмите кнопку «Get Still». Имейте в виду, что при этом изображение загружается непосредственно на ваш компьютер, а не сохраняется на microSD-карту в ESP32-CAM.
Подключение внешней антенны к ESP32-CAM
Для беспроводной связи ESP32-CAM включает два варианта антенны: встроенную PCB-антенну (дорожку на плате) и разъём u.FL для подключения внешней антенны.
Встроенная PCB-антенна довольно хорошо работает, когда ваша ESP32-CAM находится близко к Wi-Fi роутеру. По данным AI-Thinker, PCB-антенна имеет коэффициент усиления 2,1 дБи, что неплохо для использования внутри помещений на малых и средних расстояниях.
Однако, если ваша ESP32-CAM находится далеко от роутера, или если на пути есть стены и другие препятствия, вы можете заметить, что видеопоток идёт медленно или соединение часто обрывается. В таких ситуациях переключение на внешнюю антенну 2,4 ГГц с разъёмом IPX может значительно улучшить производительность.
Чтобы переключиться на внешнюю антенну, внимательно посмотрите на свою ESP32-CAM — вы увидите три маленькие контактные площадки для пайки рядом с разъёмом u.FL. По умолчанию маленький резистор с нулевым сопротивлением соединяет две верхние площадки, что направляет сигнал на PCB-антенну. Вам нужно аккуратно снять этот резистор с верхних двух площадок с помощью паяльника и затем припаять его между двумя нижними площадками. Это перенаправит сигнал на разъём u.FL, к которому подключается ваша внешняя антенна.
После этих изменений подключите внешнюю антенну, и ваша ESP32-CAM будет иметь гораздо более сильный и стабильный сигнал Wi-Fi.