Пример разработки проекта ESP32 Cam на Ubuntu

Содержание

ESP32-CAM camera development board

Об ESP32-CAM

ESP32-CAM — это небольшой модуль камеры, выпущенный компанией Ai-Thinker Co., Ltd, который может работать автономно как самая маленькая система, с размерами 27*40,5*4,5 мм и минимальным током в режиме глубокого сна 6 мА.

Особенности ESP32 CAM

  • Интерфейс камеры (до 24 Мп)
  • Подключение по Wi-Fi и Bluetooth
  • Двухъядерный процессор ESP32-D0WDQ6
  • 520 КБ SRAM
  • 4 МБ флэш-памяти
  • Модуль камеры OV2640 2 МП
  • Поддержка форматов JPEG и BMP
  • Интерфейс USB Type-C
  • Разъем для LiPo-аккумулятора
  • 32-разрядный процессор, до 240 МГц
  • Встроенный приемопередатчик Wi-Fi 802.11b/g/n HT40
  • Встроенный двухрежимный Bluetooth (классический и BLE)
  • Встроенная печатная антенна
  • Встроенная память PSRAM объемом 8 Мбайт
  • Встроенная камера
  • Внешний разъем для камеры
  • 5 программируемых GPIO
  • 2 x UART, 2 x SPI, I2C, I2S, IRDA, PWM, GPIO

Распиновка ESP32 CAM

ESP32 CAM Pinout
ESP32 CAM Pinout

ESP32-CAM имеет три контакта GND и два контакта для питания: 3,3 В или 5 В.

GPIO 1 и GPIO 3 являются последовательными контактами. Эти контакты необходимы для загрузки кода на плату. Кроме того, GPIO 0 играет важную роль, поскольку определяет, находится ли ESP32 в режиме мигания или нет. Когда GPIO 0 подключен к GND, ESP32 находится в режиме мигания.

Следующие контакты подключены внутренне к считывателю карт microSD:

GPIO 14: CLK
GPIO 15: CMD
GPIO 2: Данные 0
GPIO 4: Данные 1 (также подключен к встроенному светодиоду)
GPIO 12: Данные 2
GPIO 13: Данные 3

Разработка проекта ESP32 Cam

Создание среды

Оборудование

  • Модуль ESP32-CAM
  • Камера OV2640
  • Плата USB-TTL (USB-TTL)
  • Линия Dupont
  • Источник питания 5 В 2 А

Модуль ESP32-CAM питается отдельно, U0TXD, U0RXD и GND подключаются к плате последовательного порта и подключаются к компьютеру, а камера подключается к модулю через кабель.

Перед программированием GPIO0 модуля ESP32-CAM необходимо заземлить и сбросить. После завершения программирования GPIO0 приостанавливается и сбрасывается для перехода в рабочий режим.

Системная среда

ESP32 можно разрабатывать на разных системах. Здесь представлено введение в среду разработки для настольной версии Ubuntu (версия Ubuntu 18.04.3).

Настройка сервера загрузки

Запустите «Программное обеспечение и обновления», щелкните раскрывающийся список «Загрузить из» на вкладке «Программное обеспечение Ubuntu», выберите «Другое…», найдите «Китай» и выберите любой сервер, нажмите «Выбрать сервер», а затем введите пароль для подтверждения. Когда окно закроется, появится запрос на обновление информации, нажмите «Перезагрузить» для обновления.

ESP32 Cam system environment: choose a download server
ESP32 Cam system environment: choose a download server
Установить программное обеспечение
sudo apt-get purge vim-common
sudo apt-get install vim
sudo apt install git
Установить зависимую среду
sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev

Код проекта и среда разработки

вытаскивать предмет

Одновременное извлечение проекта и подмодулей:

git clone --recurse-submodules https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_ESP32-CAMERA_LAN.git

Если выгрузка прервана, необходимо войти в каталог проекта, чтобы повторно выгрузить субмодуль:

cd Ai-Thinker-Open_ESP32-CAMERA_LAN/
git submodule update --init --recursive
Структура развития

После извлечения проекта вы увидите, что в каталоге проекта есть каталог esp-idf. esp-idf (Espressif IoT Development Framework) — это среда разработки esp. Среда разработки проекта построена на основе esp-idf. Версия idf в этом проекте — esp-idf-v4.0.

Установите путь IDF_PATH

Отредактируйте файл конфигурации .bashrc:

cd esp-idf/
vim ~/.bashrc


Используйте команду vim, чтобы открыть .bashrc, переместите курсор в конец файла с помощью клавиатуры, нажмите a для ввода, нажмите Enter в конце, чтобы перейти к пустой строке, и введите соответствующее содержимое в соответствии со следующим форматом, чтобы установить переменную IDF_PATH:

# export IDF_PATH=<esp-idf absolute path>, the example is as follows
export IDF_PATH=/home/user/Desktop/esp32/Ai-Thinker-Open_ESP32-CAMERA_LAN/esp-idf


После завершения ввода нажмите esc, чтобы отменить редактирование, :wq, чтобы сохранить и выйти, выполните следующую команду, чтобы изменения вступили в силу немедленно:

source ~/.bashrc


Проверьте, является ли переменная действительной:

echo $IDF_PATH


Если выведенный путь соответствует настройке, перейдите к следующему шагу, в противном случае необходимо повторить операцию.

Установить инструменты разработки

Запустите скрипт install.sh в каталоге esp-idf:

./install.sh

Затем терминал запросит информацию о загрузке. После вывода сообщения «All done!» установка завершена. В этот момент запустите скрипт export.sh, чтобы установить переменную среды:

. ./export.sh

Обратите внимание, что после первой точки «.» есть пробел, который необходимо выполнять каждый раз при открытии терминала для разработки и отладки проекта.

После выполнения скрипта отобразится сообщение «Done!», означающее успешное завершение, после чего можно настраивать, компилировать и загружать проект.

Настройка, компиляция и загрузка

Конфигурация проекта

Войдите в каталог демонстрационного проекта «Ai-Thinker-Open_ESP32-CAMERA_LAN/examples/single_chip/camera_web_server».

cd ../examples/single_chip/camera_web_server/

Затем приступаем к настройке проекта:

make menuconfig

Сообщение «recipe for target 'mconf.o' failed» (рецепт для цели «mconf.o» не удался) является проблемой зависимости. Введите sudo apt-get install libncurses5-dev, чтобы установить соответствующие зависимости, и попробуйте снова.

Интерфейс конфигурации выглядит следующим образом:

ESP32 Cam Project - Espressif IoT Development Framework Configuration
ESP32 Cam Project - Espressif IoT Development Framework Configuration

Используйте клавиши со стрелками и клавишу Enter для перемещения курсора, войдите в интерфейс «Serial flasher config» (Настройка последовательного мигателя) и следуйте инструкциям на рисунке ниже для настройки. Здесь последовательный порт настроен на «/dev/ttyUSB0», и его необходимо настроить для подключения к модулю ESP32-CAM во время работы последовательного порта.

ESP32 Cam Project - Serial Flasher Config
ESP32 Cam Project - Serial Flasher Config

Войдите в интерфейс «Camera Web Server»->«Camera Pins»->«Select Camera Pinout», выберите «ESP32-CAM by AI-Thinker».

ESP32 Cam Project - Select Camera Pinout

Войдите в интерфейс «Camera Web Server»->«Wifi Settings» (Веб-сервер камеры->Настройки Wi-Fi), чтобы установить режим Wi-Fi, «Wifi STA SSID» (SSID Wi-Fi STA) и «Wifi STA Password» (Пароль Wi-Fi STA), а также «Wifi AP SSID» (SSID Wi-Fi AP) и «Wifi AP Password» (Пароль Wi-Fi AP), чтобы установить один из них.

(Wifi STA означает режим станции, ESP32-CAM подключается к сети Wi-Fi других устройств; Wifi AP означает режим AP, компьютер или мобильный телефон подключается к точке доступа Wi-Fi, открытой ESP32-CAM)

Здесь используется режим Wifi AP, а «Wifi AP IP Address» ниже устанавливает IP-адрес модуля в режиме Wifi AP.

ESP32 Cam Project - WIFI Settings

После завершения настройки используйте клавиши «влево» и «вправо», чтобы переместить нижний курсор на «<Save>» (Сохранить) и нажмите Enter для сохранения, а затем перейдите к «<Exit>» (Выход), чтобы выйти из конфигурации.

Скомпилировать и скачать

сборка:

make

загрузка:

make flash

Следует отметить, что перед программированием модуль GPIO0 необходимо заземлить и сбросить.

При загрузке make flash по умолчанию используется ранее настроенный порт «/dev/ttyUSB0», а другие порты можно указать с помощью параметра -p: make flash -p [PORT]

Если появится сообщение о том, что не удается открыть последовательный порт из-за проблем с правами доступа, можно открыть все права доступа к последовательному порту с помощью sudo chmod -R 777 <порт>, например sudo chmod -R 777 /dev/ttyUSB0, но все права доступа к открытому последовательному порту станут недействительными после отключения последовательного порта. Кроме того, текущий пользователь может быть добавлен в группу dialout sudo usermod -a -G dialout <имя пользователя>

Получение информации о печати последовательного порта:

make monitor

Следует отметить, что модуль GPIO0 должен быть приостановлен для включения или сброса при работе.

Кроме того, вы также можете использовать помощник последовательного порта для просмотра информации о печати модуля.

Сделать фото и видео

После загрузки демонстрационной прошивки модуль ESP32-CAM включается и запускается. Подключите компьютер или мобильный телефон к сети, в которой находится модуль, и перейдите по адресу модуля в браузере.

В режиме Station адрес модуля — это IP-адрес, назначенный модулю устройством Wi-Fi-хотспота; в режиме AP — это адрес, установленный в поле «Wifi AP IP Address».

На веб-странице модуля нажмите кнопку «Get Still» (Сделать снимок) под панелью управления слева, чтобы сделать фотографию, и кнопку «Start Stream» (Запустить трансляцию), чтобы записать видео. После съемки фотографии или видео изображение будет отображаться на веб-странице.

Просмотрите интерфейс управления модулем на мобильном телефоне, как показано ниже. Вы можете нажать «Save» (Сохранить) в правом верхнем углу изображения, чтобы сохранить изображение.

ESP32-CAM module taking photogram

Подписаться

Присоединяйтесь к нашему списку подписчиков, чтобы получать ежемесячные обновления блога, новости о технологиях, практические примеры. Мы никогда не будем рассылать спам, и вы можете отказаться от подписки в любое время.

Прокрутить вверх

Instant Quote