Câmera IP: Cuide do seu bebê com o ESP32-CAM 99

Para o dia das mães trouxemos um projeto para dar uma ajudinha para as mamães makers! O projeto consiste em uma câmera IP para supervisionar crianças, utilizando o módulo ESP32-CAM. É uma ótima escolha para mamães makers (e papais makers também!) que precisam de liberdade para fazerem suas atividades em casa, mas gostam de estar sempre de olho nas crianças. As imagens podem ser visualizadas através do navegador de computadores, celulares e tablets. O módulo ESP32-CAM realizada a conexão via Wifi, exigindo assim um menor número de fios no projeto. Disponibilizamos também um compartimento em forma de cachorrinho, para ser impresso em uma impressora 3D, onde o ESP32-CAM pode ser encaixado.

Características do ESP32-CAM

O módulo ESP32-CAM com Câmera OV2640 2MP tem como principais características: Bluetooth BLE 4.2, suporte para cartão SD, antena embutida, wireless padrão 802.11 b/g/n e conexão Wifi 2.4 GHz. Possui 16 portas GPIO com as funções PWM, IC2, SPI e UART, sendo que 10 delas são de entrada e saída e 6 estão relacionadas a energia. A tensão de alimentação é de 5V.

Além disso possui um tamanho reduzido e sua operação é independente de outras plataformas*. 

*OBS: O módulo ESP32-CAM não possui entrada USB, portanto para sua configuração/programação inicial é necessário utilizar um Conversor USB para serial. Feito isso, o módulo ESP32-CAM não necessita de nenhum outro dispositivo auxiliar para seu funcionamento, apenas uma fonte de alimentação ou bateria.

Neste projeto iremos usar os seguintes materiais:

Configuração da Arduino IDE para o ESP32-CAM

Já mostramos como programar o módulo ESP32 com a Arduino IDE. O procedimento para o ESP32-CAM é parecido, veja abaixo:

Abra a Arduino IDE. Clique em Arquivo > Preferências.

preferências Arduino IDE

No campo URLs Adicionais para Gerenciador de Placas digite o link https://dl.espressif.com/dl/package_esp32_index.json e depois clique em OK.

URLs da câmera IP

Importante: Se você já possui a URL de outras placas ESP, você pode separar as URLs com uma vírgula da seguinte forma:

https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json

Feito isso, clique em Ferramentas > Placa > Gerenciador de Placas…placa para câmera IP

Na caixa de busca, digite esp32. Clique em Instalar.

instalação esp32 para câmera IP

Após alguns minutos as placas da linha ESP32 estarão disponíveis.

Programação da câmera IP

Copie o seguinte código na Arduino IDE:

/* 
Programa da câmera IP baseado no programa original desenvolvido por Rui Santos

  IMPORTANTE!!! 
   - Em Placa selecione "ESP32 Wrover Module"
   - Em Partion Scheme selecione "Huge APP (3MB No OTA)"
   - Para carregar o código é necessário que o GPIO 0 esteja conectado ao GND
*/

#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" 
#include "soc/rtc_cntl_reg.h"
#include "dl_lib.h"
#include "esp_http_server.h"

//Configuração da rede WiFi
const char* ssid = "nome-da-rede-wifi";
const char* password = "senha-da-rede-wifi";

#define PART_BOUNDARY "123456789000000000000987654321"

// Configuração do modelo de câmera (CAMERA_MODEL_AI_THINKER)
  #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;
    }
    //Serial.printf("MJPG: %uB\n",(uint32_t)(_jpg_buf_len));
  }
  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
  };
  
  //Serial.printf("Starting web server on port: '%d'\n", config.server_port);
  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; 
  config.frame_size = FRAMESIZE_UXGA;
  config.jpeg_quality = 10;
  config.fb_count = 2;
  
  // Iniciação da câmera
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x", err);
    return;
  }
  // Conexão WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  
  // Início da transmissão no servidor Web
  startCameraServer();
  Serial.print("Camera Stream Ready! Go to: http://");
  Serial.print(WiFi.localIP());
}

void loop() {
  delay(1);
}

Insira o nome da sua rede Wifi e a senha da sua rede Wifi na seguinte parte do código:

//Configuração da rede WiFi
const char* ssid = "nome-da-rede-wifi";
const char* password = "senha-da-rede-wifi";

Como comentado anteriormente, o ESP32-CAM não possui entrada USB. Por esse motivo, nessa etapa é necessário utilizar o conversor USB para serial – FTDI FT232RL para fazer a comunicação entre o computador e o módulo. Faça a seguinte conexão entre ESP32-CAM, conversor USB para serial e a fonte de alimentação externa:

Note que nessa etapa é necessário conectar o GPIO0 no GND.

Conecte o conversor USB para serial no computador. A fonte de alimentação também deve estar ligada.

Na Arduino IDE vá em Ferramentas > Placa. Selecione ESP32 Wrover Module.

Depois, vá em Ferramentas > Partition Scheme. Selecione Hige APP (3MB No OTA).

Vá em Ferramentas > Porta. Selecione a porta a qual o ESP32-CAM está conectado.

configurações esp32 para câmera IP

Clique no botão de RESET na parte de trás da placa (o flash irá piscar uma vez).

Por fim, carregue o código (esse processo pode algum tempo).

Transmissão de vídeo

Desconecte o pino GPIO0 do GND.

Abra o Monitor Serial da Arduino IDE.

Configure para “nova linha” e  “velocidade 115200”.

serial monitor para câmera IP

Clique novamente no botão de RESET na parte de trás da placa (o flash irá piscar uma vez).

O endereço IP aparecerá em seguida. 

IP da câmera

Digite o endereço IP no seu navegador.

Compartimento para a câmera IP

Com o objetivo de proteger e dar um bom posicionamento para a câmera do ESP32-CAM, fizemos um compartimento em forma de cachorrinho. Assim, além de câmera IP para o supervisão de crianças o projeto também servirá como decoração para o ambiente. O cachorrinho foi impresso em PLA e o arquivo da modelagem 3D pode ser baixado nesse link.

A câmera fica posicionada no focinho do cachorro.

Além de um câmera IP para o cuidado de crianças, o módulo ESP32-CAM pode ser usado em diversas aplicações, tais como: reconhecimento de rostos, detecção de movimento, transmissão de vídeo ao vivo, leitor de código de barras e QR-Code, entre outros. Em breve teremos mais tutoriais sobre outras aplicações do ESP32-CAM! 

Gostou? Ajude nosso blog a ficar cada vez melhor deixando seu comentário logo abaixo. E se quiser postar seu projeto, acesse nosso fórum.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

99 Comentários

  1. Boa noite, a minha esp32- cam, ainda não chegou mas pelo o que eu pude perceber no programa, tem alguma alteração que possa ser feito para utilizar outro metodo de visualização da imagem da camera que não seja por wifi (web) ? Algum que teria suporte para isso

    1. Olá Julio,

      Como você pensou em fazer isso? Via USB?

      Abraço!
      Rosana – Equipe FilipeFlop

      1. Pensei em via USB, tem como? o wifi esquenta muito e tem muita latencia

    2. Sim existe todo esp possui o modo Ap do dispositivo direto pra camera!!

      1. e como q muda na programação pra ele usar essa função?

  2. Boa tarde, notei que a primeira imagem está apresentando erro 404, poderiam checar? obg!

    1. Olá Alexandre,

      Veja se agora está tudo ok!

      Abraço!
      Rosana – Equipe FilipeFlop

        1. Olá Alexandre,

          Verifiquei que o problema estava ocorrendo apenas no Firefox, não Chrome o problema não ocorria.
          Mas pode ficar tranquilo que a “imagem” não fazia parte do post.
          Muito obrigada pelo aviso 😀

          Abraço!
          Rosana – Equipe FilipeFlop

          1. Consigo fazer um contador de saídas e entradas de pessoas com a placa ?

          2. Adael,

            Você precisa detalhar melhor o seu projeto. Para isso, acesso nosso fórum 😀

            Abraços!
            Diogo – Equipe FilipeFlop

  3. é possível, com essa placa e câmera, implementar o protocolo ONVIF? Estou pensando em montar uma rede de monitoramento na minha casa e esse protocolo me pareceu bastante versátil e amigável.

    1. Olá Alexandre,

      Não tenho certeza, mas acho que é possível sim.

      Abraço!
      Rosana – Equipe FIlipeFlop

      1. Boa tarde. Agradecendo o compartilhamento do assunto eu tenho uma dúvida.
        Sobra algum GPIO para mandar sinal para servo, minha intenção e poder realizar um tilt na camera.
        Grato

        CLAUDIO PEIXOTO ROCHA
  4. Rosana,

    esse ESP já envia o áudio tbm ou só imagem?

    1. Olá Joni,

      Infelizmente não :/

      Abraço!
      Rosana – Equipe FilipeFlop

  5. Boa noite. Estou tentando conectar mas esta dando erro.
    A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

    o que pode ser?

    1. Olá Raphael,

      Você está utilizando uma fonte de alimentação externa? Se não estiver usando, recomendo fortemente que use.

      Abraço!
      Rosana – Equipe FilipeFlop

  6. Alow Rosana, Eu somente consegui fazer a câmera funcionar, conectando uma fonte de 5VCC mas também conectando os 3.3 VCC da placa FTDI.. Apanhei bastante antes de conseguir que funcionasse . Abç. Ótimos tutoriais do FilipeFlop

    1. Roberto,

      Que bom que você conseguiu!

      Abraços!
      Diogo – Equipe FilipeFlop

  7. É possivel fazer tratamento da imagem? tipo, reconhecer um carro se fosse posta na porta da garagem?

    1. Olá, Fernando,

      Reconhecer de que forma?

      Abraços!
      Diogo – Equipe FilipeFlop

      1. Boa tarde, assim, estou com um problemas em mãos que se resume por exemplo, uma câmera na frente de uma garagem, então essa câmera se reconhecer o veículo irá acionar a cancela e liberar o acesso. Aí não sei se seria possível com o ESP32CAM, e se fosse como o fazer, pois há pouco material sobre.

        Abraços.

        1. Fernando,

          Teria que ter algum programa específico para identificar contorno de automóvel para aquela imagem. No caso, teria de ser planejado um software pra isso. A câmera serviria apenas para entregar as imagens para seu software.

          Abraços!
          Diogo – Equipe FilipeFlop

          1. Bom dia, fico contente que o meu projeto seja útil e que o utilizem, mas podiam incluir um link no post para o meu código original?

        2. Poderia enviar a imagem para a API VISION do Google, toda conta possui créditos mensais gratuitos, provavelmente não terá cobranças.
          https://cloud.google.com/functions/docs/tutorials/ocr?hl=pt-br

          Esta API recebe a imagem, e retorna o TEXTO da placa.
          Voce deve validar se o TEXTO = PLACAdoCarro, entao libera

          Só reconhecendo o modelo do carro possuirá falhas de segurança.

          O ideal seria utilizar outros processos. Como automatação de tarefas,
          quando você se conectar na mesma wi-fi, ou seu celular estiver a 30m do endereço….

          Com a Alexa ou Google Home poderia ser usada para você falar, “abra o portão/feche o portão”…

  8. Olá. Para alimentar o esp32 CAM (5v), posso usar um segundo node mcu, usando o gnd e o pino vin ? os 2 estão na mesma protoboard

    1. Olá, Sidi,

      Não é aconselhável fazer isso. Pode danificar sua NodeMCU.

      Abraços!
      Diogo – Equipe FilipeFlop

  9. O meu esp32 cam foi gravado conforme acima mas a parte do reconhecimento facial nao funciona de maneira nenhuma? Sera que alguem me da uma luz para solucionar o problema?

    1. Olá, Carlúcio!

      Para usar o reconhecimento facial é necessário que utilize outra programação!

      Abraços!
      Diogo – Equipe FilipeFlop

    2. Há alguns codigos em Python e em JS (https://github.com/Tastenkunst https://tastenkunst.github.io/brfv5-browser/). Voce capta a imagem e envia para um endpoint em um servidor que retornará se reconhece a pessoa ou não….

      O Google tem o Vision para capturar a imagem, e a ML (Machine Learning) que você deve enviar varias imagens dentro de uma pasta com o nome da pessoa. Assim ele vai aprender todos os rostos de cada pessoa, e reconhecer em milesimos de segundos a imagem capturada.

  10. Boa tarde, não consigo compilar, diz não possuir a biblioteca “dl_lib.h”. onde baixo ela?

    1. Erinton,

      Existe duas opções:
      1. Você pode comentar a linha que vai compilar ok;
      2. Você pode fazer o downgrade da versão da sua placa para a 1.02 (já que isso é um erro referente a versão 1.03 da placa).

      Abraços!
      Diogo – Equipe FilipeFlop

  11. Como faço para tivar o flash do esp32Cam?

    Leo Sousa Santiago de Oliveira
  12. Boa noite pessoal, apos a transferencia do sketch ele conecta na rede, mostra o IP, aceita o PING porem ao chamar o IP no navegador fica so carregando e nao carrega. Alguem ja teve este problema?

    1. Usei outro sketch e ele carregou a pagina, porem a imagem da camera nao aparece

      1. Mario,

        Utilize as configurações da câmera do post no seu novo sketch para testar.

        Abraços!
        Diogo – Equipe FilipeFlop

        1. Engracado que com este sketch do post ele nao esta nem carregando a pagina. Voce usou este sketch?

          1. Sim, aqui funciona, Mario.

            Pode enviar o código para que eu dê uma olhada (no seu que funciona).

            Abraços!
            Diogo – Equipe FilipeFlop

          2. Estou testando com o sketch que vem nos exemplos .

            Qual versão do Arduino vc está usando e qual versão da placa Esp32 (1.0.2, 1.0.3, 1.0.4)

            Testei com Arduino 1.8.10 e placa Esp32 1.0.4

          3. Mario,

            Arduino 1.8.21 e ESP32 1.0.4

            Abraços!
            Diogo – Equipe FilipeFlop

  13. Olá boa noite, eu não sei como ligar a fonte de 5v direto no ESP, tendo em vista que ele não tem entrada, o que eu devo fazer ? Cortar o cabo da fonte e emendar em um jumper para ligar nos pinos ?
    Sou iniciante por aqui e não vi nenhuma forma pra isso.

  14. Ola! Funcionou muito bem, obrigado. Pergunto se sobrou alguma porta GPIO para ser utilizada com outra função? Na descrição do código não identifiquei…

  15. OLá

    Está dando um erro: #include “dl_lib.h”
    Compiland dá esse erro, como resolvo? Obrigado!

    1. Eusebio,

      Está faltando a biblioteca em questão. Para isso, basta baixar ela clicando aqui e então instalar ela 🙂

      Abraços!
      Diogo – Equipe FilipeFlop

  16. No meu Linux o menu de Porta não habilita, será que a placa tem algum defeito?
    O FTDI acende normalmente, mas o ESP em si não dá nenhuma resposta (apesar de passar energia para o FTDI.

    1. Vitor,

      Não aparece a Porta na IDE? Se sim, verifique as conexões para garantir o funcionamento.

      Abraços!
      Diogo – Equipe FilipeFlop

  17. Hola Rosana!
    Escribo desde Uruguay. He podido conectar todo correctamente y funciona, gracias!!
    Me puede decir por favor como hago para entrar a mi red wifi desde otro lado que no sea mi casa? Obrigado

  18. Um conversor usb ttl funcionaria tambem?

    RAQUEL FELIX DA SILVA
    1. Raquel,

      Pode sim!

      Diogo – Equipe FilipeFlop

  19. Parabéns po projeto ,preciso de 1 help , seguindo essa mesma linha de pensamento, tenho 70 salas de RN ( recém nascidos) ,preciso colocar 70 câmeras, ( esp32cam) e através de 1 app( MIT e via Pc ), DIGITAR o número 1 a 70 , enter , ou seja número 1 seria a 1 sala , assim por diante , e obter as imagens , como vcs podem me ajudar

    1. Alex,

      Nesse caso você teria que fazer um código que alternasse entre essas câmeras (no caso o app).

      Abraços!
      Diogo – Equipe FilipeFlop

  20. boa noite pessoal, fiz o projeto, deu tudo certo, até mudei o ip colocando como ip estático e não dhcp e mudei a porta, a’vem a pergunta:
    depois de tudo programado é só colocar uma fonte 5 volts de 2Amp. e tudo certo ? posso desligar da usb e manter somente a fonte ou tem que ser maior a amperagem ou tem que colocar um regulador para os 3.3 volts ?
    Forte abraço a todos

  21. Boa tarde, como faço para gravar os vídeos no cartão SD?

    1. Luciano,

      Você pode dar uma olhadinha nesse tutorial para ter uma base: https://randomnerdtutorials.com/esp32-cam-take-photo-save-microsd-card/

      Abraços!
      Diogo – Equipe FilipeFlop

  22. Bonjour, merci de ce programme, j’écris de France.
    Je voudrais savoir si c’est possible de mettre volontairement l’esp32-cam en sommeil profond “esp_deep_sleep_start” ?
    C’est à dire mettre VOLONTAIREMENT en sommeil l’esp32-cam qui diffuse le streaming, par l’appuie sur un bouton extérieur ou mieux avec une télécommande infrarouge, et si c’est possible comment le faire s’il vous plait ?
    Merci de votre aide et de votre avis

    1. Salut, Gérard! Merci beucoup pour votre visite!

      Si j’ai bien compris, vous voulez utiliser un bouton extérieur par exemple pour déclancher le mode, oui? Pour faire cela, c’est nécessaire ensemble un “wakeup source”, pour ensuite utiliser le command “esp_deep_sleep_start”. Je recommand le ensuite lien pour plus d’informmations: https://docs.espressif.com/projects/esp-idf/en/latest/api-reference/system/sleep_modes.html

      Câlins!
      Diogo – Équipe FilipeFlop

  23. Amigos, não consigo conectar o ESP32 CAM de jeito algum. A mensagem “A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header” é recorrente. Estou usando a fonte de 5V vinda de um Arduino UNO para alimentar a ESP. Ja tentei com 3V também e não funcionou. Onde posso estar errando, uma vez que varios colegas aqui já conseguiram conectar?

    1. Luiz,

      Tente diminuir o Upload Speed e faça o teste 🙂

      Abraços!
      Diogo – Equipe FilipeFlop

      1. Amigo, estou tentando conectar meu ESP32, ele ate conecta, mas pelo visto não esta ativando o wifi visto que não aparece o IP

        rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
        configsip: 0, SPIWP:0xee
        clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
        mode:DIO, clock div:1
        load:0x3fff0018,len:4
        load:0x3fff001c,len:1100
        load:0x40078000,len:9232
        load:0x40080400,len:6400
        entry 0x400806a8

        no meu monitor serial só ate ai, não aparece o IP, alguma ideia?

        1. Saulo,

          Verifique se está tudo ajustado certinho (nome da rede e etc) no código. Outra opção é testar um outro código de teste WiFi do ESP32 🙂

          Abraços!
          Diogo – Equipe FilipeFlop

        2. O meu estava acontecendo isto mas após reset pela tecla do ESP32 normalizou.

  24. Boa tarde! Durante a execução do ESP32-CAM apresenta o seguinte erro, alguém poderia me ajudar?

    18:32:41.637 -> [E][sccb.c:154] SCCB_Write(): SCCB_Write Failed addr:0x30, reg:0x35, data:0xda, ret:-1
    18:32:41.671 -> [E][sccb.c:154] SCCB_Write(): SCCB_Write Failed addr:0x30, reg:0xff, data:0x00, ret:263
    18:32:41.876 -> [E][sccb.c:154] SCCB_Write(): SCCB_Write Failed addr:0x30, reg:0x05, data:0x01, ret:-1
    18:32:41.876 -> [E][camera.c:1215] camera_init(): Failed to set frame size
    18:32:41.876 -> [E][camera.c:1270] esp_camera_init(): Camera init failed with error 0x20002

    1. Renato,

      Verifique se está tudo soldado no seu ESP-32 e se o cabinho flat da câmera está em boas condições.

      Abraços!
      Diogo – Equipe FilipeFlop

  25. Excelente tutorial….parabéns! estou querendo montar um projeto onde tiro uma foto baseado na digital…ligar um leitor de digital e acionar a câmera com a leitura.. porem pra tirar foto e não stream… já viu algo do tipo? vou usar seu codigo pra tentar montar esse projetinho.

    1. Eldimar,

      Confesso que nunca vi algo assim! Ficarei observando essa história hehe!

      Abraços!
      Diogo – Equipe FilipeFlop

  26. Amigos,

    estou tentando conectar meu ESP32, tudo esta funcionando, exceto o fato de que no monitor serial não aparece o IP:

    rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:1
    load:0x3fff0018,len:4
    load:0x3fff001c,len:1100
    load:0x40078000,len:9232
    load:0x40080400,len:6400
    entry 0x400806a8

    alguma ideia de como resolver isso???

  27. Ola boa tarde… Obrigado pelo post.
    Essa aplicação é para rede wi fi certo, caso eu queira um acesso remoto utilizando está mesma rede porém eu entrando com 4G, é possível a Kms de distância por exemplo.. Ou essa já faz a funcao de acordo como Ip?

    1. Olá, Oziris

      Para utilizar uma rede como 4G, você teria que utilizar em conjunto com todos os componentes desse tutorial, um módulo GSM capaz de acessar o 4G.

      Abraços!
      Diogo – Equipe FilipeFlop

  28. Boa noite. Parabens pelo tutorial. Minha placa ESP32+cam chegou hoje pelos correios. Corri para instalar seu sketch com as mudanças necessárias de minha rede. Estou usando o Arduino IDE 1.8.9. Ainda não quis atualiza-lo.
    Usando um adaptador serial/usb proprio para ESP8266, rodei o teste do sketch e informou : dl_lib.h: No such file or directory.
    Olhando os comentarios vi que aconteceu com outro colega. Diogo sugeriu o link https://github.com/denizyuret/dlib“. Baixei o arquivo zip e instalei pela IDE. Porem continua falando que não acho o arquivo ou pasta. A pasta instalada foi a “dlib_master”. Uma observação: o include está assim: #include “dl_lib.h” e não dlib (sem 1 L). Está certo ?
    Outra coisa: Instalei o sketch sem este #include “dl_lib.h” e aceitou só que a imagem da tela fica VIOLETA SOLIDA.
    Um abraço e antecipo agradecimentos sobre as respostas.
    Desculpem se estou “comendo mosca ” kkkkki.

    1. Olinto,

      Você tentou alterar no sketch o include? Ficando #include “dlib.h”

      Teste e dê um toque se não resolver 😀

      Abraços!
      Diogo – Equipe FilipeFlop

      1. Obrigado Diego. Se resolver o problema que citei no ultimo post vou tentar kkkkkk.
        Valeu

        1. Alias, posso tentar só compilando o sketch…..lhe respondo depois. Obrigado

    2. Problema: Consegui transferir o sketch por 2 vezes mas agora, dá “time out” na transferência mesmo após reset na plaquinha.
      Não é a velocidade e nem os cabos pois consigo monitor pelo MONITOR SERIAL. vide abaixo:
      ___________________________________________________________________________________
      rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
      configsip: 0, SPIWP:0xee
      clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
      mode:DIO, clock div:1
      load:0x3fff0018,len:4
      load:0x3fff001c,len:1216
      ho 0 tail 12 room 4
      load:0x40078000,len:9720
      ho 0 tail 12 room 4
      load:0x40080400,len:6352
      entry 0x400806b8
      .
      WiFi connected
      Camera Stream Ready! Go to: http://192.168.0.253
      _______________________________________________________________________________
      Alguem pode me ajudar ? Pior que acho ser problema do ESP32.
      obrigado

      1. Olinto,

        Tente colocar para gravar segurando o botão Reset. Isso tende a resolver.

        Att

        1. Obrigado Diodo. Já tinha tentado antes e não transferiu. Vou tentar novamente.

          1. Diogo, não adiantou. O Monitor Serial funciona mas na hora de transferir dados/sketch não link. Já troquei o conversor serial/USB por via das duvidas por sem sucesso. Teria como resetar de fabrica o ESP32 sem perder o firmware ? Obrigado

            Olinto Godinho R.Filho
          2. Olinto,

            Qual o erro que vem apresentando nesse caso?

            Abraços!
            Diogo – Equipe FilipeFlop

          3. Quando fez a pergunta que erro que deu, não apareceu opção de responder.

            RESPOSTA: TIME OUT.

          4. Olinto,

            Tente a gravação segurando o botão de RST durante o processo. Não simplesmente apertar, mas segurar durante a gravação.

            Abraços!
            Diogo – Equipe FilipeFlop

          5. Bom dia Diogo. Já tinha feito isto apos sua primeira sugestão sem sucesso.
            Acredito que o ESP deu problema. Só gravou 2 vezes. Vou reclamar no fornecedor. Uma solução seria o reset de fabrica (desde que nao perca o firmware residente) para testar. Testo a IDE com ESP8266 e funciona bem. Pretendo comprar outro ESP32CAM para testes. Se tiver alguma dica, agradeço. Um abraço

          6. Obs: Quando nas primeiras gravação só dava um toque no reset e gravava. Agora nem segurando.

          7. Então, Olinto,

            Acredito que possa mesmo ser algum problema com seu ESP32. Vale a pena verificar.

            Abraços!
            Diogo – Equipe FilipeFlop

          8. Caro Diogo. Localizada a falha. Somente estava conectador o RX data. O fio do TX data (tx do conversor serial/USB) estava partido no conector. O MONITOR SERIAL funcionava porque ele só precisa de receber informações do ESp32 (comunicação unidirecional) mas para gravar o sketch precisa ser bidirecional. Resolvido o problema de comunicação mas o #include dl_lib.h ainda dá problema. Sem ele o sketch grava mas não mostra imagem. Com ele no programa se apresentam varios erros tipo: multiplos arquivos, bla, bla, etc. Vou analisar melhor e mando reportagem. Obrigado por suportar a “canseira” de questionamentos. Abraços

          9. Olinto,

            Experimente, na versão da placa (no gerenciador de placas da IDE), alterar para a versão 1.02 da ESP32. Em seguida, deixe o #include dl_lib.h exatamente como no program original e faça o teste, por favor.

            Abraços!
            Diogo – Equipe FilipeFlop

          10. Obrigado pelo apoio Diogo. Nem todo mundo tem sua paciência de ensinar e ajudar. Parabens. Antes de fazer o testes mudando a versão para 1.02 /ESp32 quero informar, com intenção educativa meus progressos:
            1- Usando sketch de outro forum com as seguintes opções:
            #define CAMERA_MODEL_AI_THINKER.
            2- Usando na listagem da IDE Arduino:
            ESP WROVER Module, Hugge APP (3MB NoOTA/2M…..).

            Consegui transferir tudo para o ESP32 S (2AHMR-ESP32S) e rodar um painel com controles diversos (Chrome e FireFox). Ao disparar a imagem (Start Stream) veio a tal tela violeta. Descobri depois que é inconsistencia do sketch ou da placa. Passando seleção de Special Efects para tons de cinza (GrayScale) a imagem começou a aparecer. Vi que este sensor não tem muita sensibilidade, precisando de muita luz (a não ser que seja defeito). Cor de objetos não aparecerem de jeito nenhum. Vou continuar pesquisando. Após ajustar a IDE para 1.02 e testar lhe informo.

            Um foto da imagem veja neste link: http://www.olintronica.com/imagens/ESP32_Olinto.jpg
            Obrigado

          11. Bom dia a todos.
            Sucesso em todas as transferencias de sketch. Ainda estou com problemas na imagem. Ela inicia em violeta solido. Porem alterando para TONS DE CINZA, desabilitando AEC SENSOR e aumentando a EXPOSURE (exposição) vejo uma imagem melhor sem cores.
            Ultima tentativa: Adquirir outra ESP32 CAM do mesmo fornecedor para testes. Se for hardware defeituoso, troco.
            Aproveitando estas indas e vindas incrementei coisas que podem ajudar nos projetos de vocês:
            Como já penso em ter várias ESP32 e monitoramento multiplo por aplicativo do celular, adicionei definições para IP FIXO, GATEWAY e MASCARA no squetch exemplo da IDE.
            Ficou assim:
            const char* ssid = “xxxxxxxxx”;//original
            const char* password = “yyyyyyyy”; //original
            //implementado em 21jan20//
            //Declarando os endereços//
            IPAddress ip(192,168,x,yyy); //endereço da camera ESP32_001 //NOVO
            IPAddress gateway(192,168,x,1); //roteador //NOVO
            IPAddress subnet(255,255,255,0);//mascara //NOVO
            IPAddress dns(8,8,8,8); //NOVO

            É necessário adicionar no sketch:
            WiFi.begin(ssid, password); // original
            //implementado em 21jan20//
            WiFi.config(ip, gateway, subnet, dns); // NOVO

            Tambem alterei a porta de video (STREAM) editando o arquivo “app_httpd.cpp” linhas 656/657:
            config.server_port += 1; //onde +=1=porta 81(original)–mudar para” = zzzzz”
            config.ctrl_port += 1;
            Por precaução gravei o original como “app_httpd.ORI”.
            Estas informações foram adquiridas por pesquisas na web.
            Se precisarem tenho as fontes.

            Qualquer duvida estou a disposição.
            Olinto Godinho

          12. Boa tarde Diogo.
            Resolvido. Era defeito no sensor de imagem. Comprei mais 2 e funcionaram corretamente. Já providenciei troca.
            Obrigado por tudo.

          13. Olinto,

            Que bom que deu tudo certo!!

            Abraços!
            Diogo – Equipe FilipeFlop

  29. Ótimo artigo, achei bem explicativo, e olha que não sou programador.
    Gostaria de saber se seria possível visualizar uma atividade ou ambiente e também acionar um dispositivo via relé.
    Possuo um aparelho de ar condicionado em uma sala com sistema de telefonia analógica, eventualmente ele falha pois é antigo, e gostaria de saber se posso acionar e ligá-lo a distância. Tenho um node mcu e tenho noções básicas de seu funcionamento, inclusive a intenção seria monitoramento via browser.

    1. Boa tarde Marcelo.
      Para controlar este ar condicionado pode ser utilizado o circuito ESP8266 sendo que utilizará uma das entradas GPIO para monitorar a alimentação do ar condicionado e a outra engrada GPIO para ligar um mini relé por sua vez acionará um contactor (respeitando as devidas grandezas de tensão e corrente) que ligará ou desligará o ar condicionado.
      O software interno do ESP8266 (Sketch no IDE Arduino ou outras interfaces) terá que ser customizado para isso e será preciso que este ESP fique conectado na rede WiFi da sua área.
      Para acesso fora da rede local (internet) é muito fácil se configurarmos o roteador WifI/provedor de internet no local com abertura da porta do ESP. Caso queira visualizar a sala ai utilize o ESP32CAM comentado acima.
      Qualquer duvida estou a disposição.
      Abs

  30. Boa tarde,

    estou tendo problemas para me conectar ao ESP 32 CAM, fica repetindo a mensagem no monitor serial:

    16:42:39.376 -> rst:0x3 (SW_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    16:42:39.376 -> configsip: 0, SPIWP:0xee
    16:42:39.376 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    16:42:39.376 -> mode:DIO, clock div:1
    16:42:39.376 -> load:0x3fff0018,len:4
    16:42:39.376 -> load:0x3fff001c,len:1100
    16:42:39.376 -> load:0x40078000,len:9232
    16:42:39.376 -> load:0x40080400,len:6400
    16:42:39.376 -> entry 0x400806a8
    16:42:39.895 -> ets Jun 8 2016 00:22:57

    alguma ideia por favor….

    1. Saulo,

      Por favor, verifique todas as suas conexões para garantir que nada está conflitando. Em seguida, refaça os passos.

      Abraços e cuide-se com o COVID-19!
      Diogo – Equipe FilipeFlop

    2. resolvi esse problema , ajustando a frequencia antes de carregar ,, no software do arduino vá em ferramentas e em flash frequency … mude para 40mhz.

  31. Essa conexão é apenas loca

    Lucas Fuzetti Fernandes
  32. Essa conexão é apenas local, teria como fazer essa tranmissão direto para um servidor na internet usando o servidor Blynk?

    Lucas Fuzetti Fernandes
  33. O que deveria ser mudado no Código para fazer detecção de Qr-Code

  34. Ola! Consegui conectar, mas a imagem no browser demora muito para atualizar…nao fica fluido..é assim mesmo?
    att
    Rafael