Отгрузим заказы 6,7,8 мая, с 12 мая по штатному расписанию
  • Производиться отгрузка заказов через пункты выдачи Boxberry!
  • Производиться курьерская доставка по г. Москва!
  • Производиться курьерская доставка EMS!
  • Остальные способы получения заказа временно недоступны.
  • КОРЗИНА
    0 ТОВАРА
    8 (499) 500-14-56 | ПН. - ПТ. 12:00-20:00
    ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"
     Контроллер ESP32-CAM с камерой OV2640 для Arduino ардуино
     Контроллер ESP32-CAM с камерой OV2640 для Arduino ардуино
     Контроллер ESP32-CAM с камерой OV2640 для Arduino ардуино

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

    Модификация
    Артикул: # 1309 Наличие: 0 шт.
    Сообщить о поставке на e-mail:
    {{ status }}


    Возможен безналичный расчёт для юридических лиц при оформлении заказа

    С этим товаром берут

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

    Контроллер 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;

    Ссылки

    Похожие товары

    Гарантии и возврат Используя сайт Вы соглашаетесь с условями