0
КОРЗИНА
0 ТОВАРА
 Контроллер ESP32-CAM с камерой OV2640 для Arduino ардуино
 Контроллер ESP32-CAM с камерой OV2640 для Arduino ардуино
 Контроллер ESP32-CAM с камерой OV2640 для Arduino ардуино

Контроллер ESP32-CAM с камерой OV2640

Подробнее...
Модификация
Скоро в продаже Артикул: # 1309
740 ₽
Возможен безналичный расчёт для юридических лиц при оформлении заказа
Сообщить о поставке на e-mail:
{{ status }}
  • Доставка товаров по России, Белоруссии, Казахстану
  • Возможен безналичный расчёт для юридических лиц при оформлении заказа
Количество:
Перейти в корзину и оформить заказ.
Telegram
WhatsApp
Обсудить вопросы приобретения, не технические!
*Доступно общение только текстовыми сообщениями, звонки и аудио сообщения не обслуживаются
Офлайн
Описание товара
Подробное описание товара

Общие сведения

Контроллер ESP32-CAM с камерой OV2640 — это современный микроконтроллер камерой, с помощью которого можно создавать устройства машинного зрения, умный дом и роботов.

Характеристики

  • Процессор: 32-х битный, частота 160-240 МГц;
  • Объём RAM: 520 КБ
  • Объём Flash-памяти: 448 КБ
  • Питание: 2.2 - 3.6В;
  • Внешняя Flash-память: 4 МБ;
  • Поддержка Wi-Fi: 802.11 b/g/n/d/e/i/k/r (802.11n до 150 Мбит/с);
  • Поддержка Bluetooth: 4.2 BR/EDR и Low Energy
  • 8 Выводов GPIO;
  • Встроенный светодиод подсветки;
  • Интерфейсы: UART, SPI, I2C, PWM;
  • Поддержка microSD карт до 4 Гб;
  • Энергопотребление:
    • При включённом светодиоде 310 мА
    • При передаче Wi-Fi 160-260 мА
    • Режим "мягкого" сна до 6.7 мА

Скорость вывода фото в секунду

Размер QQVGA QVGA VGA SVGA
JPEG 6 7 7 8
BMP 9 9 - -
GRAYSCALE 9 8 - -

Более подробную информацию вы найдёте в DataSheet'е.

Пример Arduino IDE

Пример вывода потока камеры в браузер для Arduino IDE.

После загрузки скетча в адресную строку браузера необходимо ввести адрес, который покажет монитор последовательного порта Arduino IDE (shift+ctrl+m).

Для работы с платой необходимо установить поддержку плат ESP32. Ссылка на подробное описание как это сделать.

В меню Инструменты -> Плата: необходимо выбрать Node32s.

Для загрузки скетчей необходимо подключить плату к UART-USB преобразователю или к плате Arduino в режиме загрузчика по следующей схеме:

ESP32-CAM UART
UOT RX
UOR TX
IO0 GND
5V 5V
GND GND


Перед загрузкой скетча необходимо замкнут вывод IO0 с GND и нажать RESET

После загрузки скетча необходимо разомкнуть вывод IO0 от GND и нажать RESET

#include "esp_camera.h"
#include <WiFi.h>
#include "esp_timer.h"
#include "img_converters.h"
#include "Arduino.h"
#include "fb_gfx.h"
#include "soc/soc.h" //disable brownout problems
#include "soc/rtc_cntl_reg.h"  //disable brownout problems
#include "esp_http_server.h"

const char* ssid = "имя Вашей точки доступа WiFi";
const char* password = "пароль Вашей точки доступа WiFi";

#define PART_BOUNDARY "123456789000000000000987654321"

#define PWDN_GPIO_NUM     32
#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM      0
#define SIOD_GPIO_NUM     26
#define SIOC_GPIO_NUM     27

#define Y9_GPIO_NUM       35
#define Y8_GPIO_NUM       34
#define Y7_GPIO_NUM       39
#define Y6_GPIO_NUM       36
#define Y5_GPIO_NUM       21
#define Y4_GPIO_NUM       19
#define Y3_GPIO_NUM       18
#define Y2_GPIO_NUM        5
#define VSYNC_GPIO_NUM    25
#define HREF_GPIO_NUM     23
#define PCLK_GPIO_NUM     22

static const char* _STREAM_CONTENT_TYPE = "multipart/x-mixed-replace;boundary=" PART_BOUNDARY;
static const char* _STREAM_BOUNDARY = "\r\n--" PART_BOUNDARY "\r\n";
static const char* _STREAM_PART = "Content-Type: image/jpeg\r\nContent-Length: %u\r\n\r\n";

httpd_handle_t stream_httpd = NULL;

static esp_err_t stream_handler(httpd_req_t* req)
{
    camera_fb_t* fb = NULL;
    esp_err_t res = ESP_OK;
    size_t _jpg_buf_len = 0;
    uint8_t* _jpg_buf = NULL;
    char* part_buf[64];

    res = httpd_resp_set_type(req, _STREAM_CONTENT_TYPE);
    if (res != ESP_OK) {
        return res;
    }

    while(true){
        fb = esp_camera_fb_get();
        if (!fb) {
            Serial.println("Camera capture failed");
            res = ESP_FAIL;
        }
        else {
            if (fb->width > 400) {
                if (fb->format != PIXFORMAT_JPEG) {

                    bool jpeg_converted = frame2jpg(fb, 80, &_jpg_buf, &_jpg_buf_len);
                    esp_camera_fb_return(fb);
                    fb = NULL;
                    if (!jpeg_converted) {
                        Serial.println("JPEG compression failed");
                        res = ESP_FAIL;
                    }
                }
                else {
                    _jpg_buf_len = fb->len;
                    _jpg_buf = fb->buf;
                }
            }
        }

        if (res == ESP_OK) {
            size_t hlen = snprintf((char *)part_buf, 64, _STREAM_PART, _jpg_buf_len);
            res = httpd_resp_send_chunk(req, (const char *)part_buf, hlen);
        }

        if (res == ESP_OK) {
            res = httpd_resp_send_chunk(req, (const char *)_jpg_buf, _jpg_buf_len);
        }

        if (res == ESP_OK) {
            res = httpd_resp_send_chunk(req, _STREAM_BOUNDARY, strlen(_STREAM_BOUNDARY));
        }

        if (fb) {
            esp_camera_fb_return(fb);
            fb = NULL;
            _jpg_buf = NULL;
        }
        else if (_jpg_buf) {
            free(_jpg_buf);
            _jpg_buf = NULL;
        }

        if (res != ESP_OK){
            break;
        }
    }
    return res;
}

void startCameraServer()
{
    httpd_config_t config = HTTPD_DEFAULT_CONFIG();
    config.server_port = 80;

    httpd_uri_t index_uri = {
        .uri       = "/",
        .method    = HTTP_GET,
        .handler   = stream_handler,
        .user_ctx  = NULL
    };

    if (httpd_start(&stream_httpd, &config) == ESP_OK) {
        httpd_register_uri_handler(stream_httpd, &index_uri);
    }
}

void setup()
{
    WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);

    Serial.begin(115200);
    Serial.setDebugOutput(false);

    camera_config_t config;
    config.ledc_channel = LEDC_CHANNEL_0;
    config.ledc_timer = LEDC_TIMER_0;
    config.pin_d0 = Y2_GPIO_NUM;
    config.pin_d1 = Y3_GPIO_NUM;
    config.pin_d2 = Y4_GPIO_NUM;
    config.pin_d3 = Y5_GPIO_NUM;
    config.pin_d4 = Y6_GPIO_NUM;
    config.pin_d5 = Y7_GPIO_NUM;
    config.pin_d6 = Y8_GPIO_NUM;
    config.pin_d7 = Y9_GPIO_NUM;
    config.pin_xclk = XCLK_GPIO_NUM;
    config.pin_pclk = PCLK_GPIO_NUM;
    config.pin_vsync = VSYNC_GPIO_NUM;
    config.pin_href = HREF_GPIO_NUM;
    config.pin_sscb_sda = SIOD_GPIO_NUM;
    config.pin_sscb_scl = SIOC_GPIO_NUM;
    config.pin_pwdn = PWDN_GPIO_NUM;
    config.pin_reset = RESET_GPIO_NUM;
    config.xclk_freq_hz = 20000000;
    config.pixel_format = PIXFORMAT_JPEG;

    if (psramFound()) {
        config.frame_size = FRAMESIZE_UXGA;
        config.jpeg_quality = 10;
        config.fb_count = 2;
    }
    else {
        config.frame_size = FRAMESIZE_SVGA;
        config.jpeg_quality = 12;
        config.fb_count = 1;
    }

    // Инициализация камеры
    esp_err_t err = esp_camera_init(&config);
    if (err != ESP_OK) {
        Serial.printf("Camera init failed with error 0x%x", err);
        return;
    }
    // подключение к Wi-Fi
    WiFi.begin(ssid, password);
    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
    }
    Serial.println("");
    Serial.println("WiFi connected");

    Serial.print("Camera Stream Ready! Go to: http://");
    Serial.print(WiFi.localIP());

    // Инициализация сервера стрима
    startCameraServer();
}

void loop()
{
    delay(1);
}

Комплектация

  • 1х плата ESP-32-CAM;

Ссылки

Товары
Первой необходимости и другие вещи, которые могут пригодиться!
Скоро в продаже
247
В наличии
390
Скоро в продаже
MaKey MaKey: Подробнее
1490
Скоро в продаже
Arduino Due: На базе процессора Atmel SAM3X8E ARM Cortex-M3 на основе 32-битного микроконтроллера с ARM ядром. Подробнее
1821
В наличии
Piranha Pro Mini (с ногами): Когда важна компактность и наличие к контактных колодок. Если нет паяльника под рукой Подробнее
490
Скоро в продаже
140
Скоро в продаже
Raspberry Pi ZERO: Миниатюрный одноплатный компьютер с процессором частотой 1 ГГц и 512 МБ ОЗУ Подробнее
1480
Скоро в продаже
390
В наличии
590
В наличии осталось 3 шт.
Arduino Leonardo: Контроллер на базе ATmega32u4. В отличие от всех предыдущих плат ATmega32u4 имеет встроенную поддержку для USB соединения. Подробнее
790
В наличии
Piranha Pro Mini (без ног): В случае когда компактность очень важна, без колодок Подробнее
420
В наличии
Arduino Pro Mini 5V 16MHz: Arduino Pro Mini очень компактна Подробнее
390
Скоро в продаже
WEMOS D1 mini: Подробнее
320
Скоро в продаже
Arduino Nano 3.0: Подробнее
582
670
Или перейти в корзину и оформить заказ.
Гарантии и возврат Используя сайт Вы соглашаетесь с условями
Есть вопрос?