O ESP32-CAM é o nosso assunto
de hoje, isso por conta de inúmeras sugestões no meu canal do Youtube. Mostro
para você dois modelos, mas falo especificamente do funcionamento de câmeras no
ESP32. Trago também informações sobre um algoritmo de face detection, que é uma
API de teste, portanto, necessitaria de modificação para uma aplicação direta
no nosso exemplo.
Montagem
Demonstração
Na demonstração que trago no
vídeo, você confere o funcionamento de uma câmera, o registro de um usuário e o
reconhecimento de um rosto como cadastrado ou não.
Exemplo que vem com o ESP32
Na IDE do Arduino vá em
Arquivo->Exemplos->Exemplos para ESP32 Wrover-> ESP32->Camera
->CameraWebServer. O código
a seguir é o mesmo deste exemplo com algumas mudanças. O código do exemplo é
constituído de três arquivos: ESP32_Camera.ino (configurações), app_httpd.cpp
(webserver e manipulação da câmera) e camera_index.h (bytes da página html)
ESP32_Camera.ino
Includes e defines
#include "esp_camera.h" #include <WiFi.h> // // WARNING!!! Make sure that you have either selected ESP32 Wrover Module, // or another board which has PSRAM enabled // // Select camera model // #define CAMERA_MODEL_WROVER_KIT // #define CAMERA_MODEL_M5STACK_PSRAM #define CAMERA_MODEL_AI_THINKER // #define CAMERA_MODEL_TTGO //Use 1 para que o ESP crie uma rede com o ssid e password //Use 0 para o ESP se conectar a uma rede que tenha o ssid e password indicado #define ACCESS_POINT 1 const char* ssid = "CAM2"; const char* password = "12345678";
#if defined(CAMERA_MODEL_WROVER_KIT)
#if defined(CAMERA_MODEL_WROVER_KIT) #define PWDN_GPIO_NUM -1 #define RESET_GPIO_NUM -1 #define XCLK_GPIO_NUM 21 #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 19 #define Y4_GPIO_NUM 18 #define Y3_GPIO_NUM 5 #define Y2_GPIO_NUM 4 #define VSYNC_GPIO_NUM 25 #define HREF_GPIO_NUM 23 #define PCLK_GPIO_NUM 22
#elif defined(CAMERA_MODEL_M5STACK_PSRAM)
#elif defined(CAMERA_MODEL_M5STACK_PSRAM) #define PWDN_GPIO_NUM -1 #define RESET_GPIO_NUM 15 #define XCLK_GPIO_NUM 27 #define SIOD_GPIO_NUM 25 #define SIOC_GPIO_NUM 23 #define Y9_GPIO_NUM 19 #define Y8_GPIO_NUM 36 #define Y7_GPIO_NUM 18 #define Y6_GPIO_NUM 39 #define Y5_GPIO_NUM 5 #define Y4_GPIO_NUM 34 #define Y3_GPIO_NUM 35 #define Y2_GPIO_NUM 32 #define VSYNC_GPIO_NUM 22 #define HREF_GPIO_NUM 26 #define PCLK_GPIO_NUM 21
#elif defined(CAMERA_MODEL_AI_THINKER)
#elif defined(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
#elif defined(CAMERA_MODEL_TTGO)
#elif defined(CAMERA_MODEL_TTGO) #define PWDN_GPIO_NUM 0 #define RESET_GPIO_NUM 15 #define XCLK_GPIO_NUM 27 #define SIOD_GPIO_NUM 25 #define SIOC_GPIO_NUM 23 #define Y9_GPIO_NUM 19 #define Y8_GPIO_NUM 36 #define Y7_GPIO_NUM 18 #define Y6_GPIO_NUM 39 #define Y5_GPIO_NUM 5 #define Y4_GPIO_NUM 34 #define Y3_GPIO_NUM 35 #define Y2_GPIO_NUM 17 #define VSYNC_GPIO_NUM 22 #define HREF_GPIO_NUM 26 #define PCLK_GPIO_NUM 21 #else #error "Camera model not selected" #endif
startCameraServer e Setup
void startCameraServer(); void setup() { Serial.begin(115200); Serial.println(); 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;
psramFound
//init with high specs to pre-allocate larger buffers 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; } // camera init esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Camera init failed with error 0x%x", err); return; } //drop down frame size for higher initial frame rate sensor_t * s = esp_camera_sensor_get(); s->set_framesize(s, FRAMESIZE_QVGA);
ACCESS_POINT
if(ACCESS_POINT) { WiFi.softAP(ssid, password); } else { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); }
startCameraServer
startCameraServer(); Serial.print("Camera Ready! Use 'http://"); Serial.print(ACCESS_POINT ? WiFi.softAPIP() : WiFi.localIP()); Serial.println("' to connect"); }//setup
Loop
void loop() { }
Modificar configurações
Testando
Abra o navegador e digite o ip
que aparece no Monitor Serial (192.168.4.1 neste exemplo)
http://192.168.4.1 stream de
vídeo com configuração
http://192.168.4.1/capture
captura uma imagem fixa
http://192.168.4.1/status
mostra as configurações atuais
http://192.168.4.1:81/stream
apenas o vídeo
50 Comentários
Muito bacana, parabéns! Queria entender se tem como criar uma ação após a detecção de um rosto. Por exemplo, abrir uma porta. Obrigado pelos vídeos e excelente trabalho.
ResponderExcluirOlá! Estou com o mesmo problema, você conseguiu implementar esse seu projeto?
ExcluirOlá Sanderson e Felipe, tudo bem? Vocês conseguiram realizar essa implementação? Estou pensando em fazer algo parecido, porém estou encontrando muitas dificuldades...
ExcluirDÊem uma olhada nesse vídeo e vejam se atende... https://www.youtube.com/watch?v=mu3-Sff0B9w&t=267s
ExcluirSegue link (em inglês) https://robotzero.one/esp32-face-door-entry/
ExcluirPoderia fazer um projeto, explorar mais a placa ? quem sabe negar um acesso...
ResponderExcluirOlá, alguém poderia me informar quais pinos desse módulo eu posso usar para conectar outros sensores, servos, etc ?
ResponderExcluirHi, thanks for explanation. I have ESP32cam and I want to use it as a alarm in my garage. Do you know how to record short video on SD card after motion detection ?
ResponderExcluirYou can use a Raspberry Pi running motionEye (https://github.com/ccrisan/motioneye) for detect motion and save video or images when motion is detected. Configuring motionEye you can connect the ESP32-CAM with http://ip_esp32cam:81/stream.
ExcluirOi, sabe como posso fazer para testar se o rosto é reconhecido pela câmera, dai ele liga um led, se não reconhecer ele apaga, por exemplo?
ResponderExcluirOlá, tudo bem? Vocês conseguiu realizar essa implementação? Estou pensando em fazer algo parecido, porém estou encontrando muitas dificuldades...
ExcluirEstou com um problema. Eu gravo e consigo ver o vídeo da camera do ESP, e também altero todas as configurações da camera, mas não está fazendo o reconhecimento facial.
ResponderExcluirTestei com duas placas que tenho e acontece a mesma coisa nas duas placas.
E sim, eu ativei o reconhecimento facial. O que há de errado?
Oi estou com o mesmo problema, tenho cinco placas e em todas a mesma coisa, estou desconfiando do modelo da câmera porquê nenhuma delas é OV2640. Se conseguiu resolver, por favor comente
Excluirestou com o mesmo problema, não faz o reconhecimento facial
ExcluirVocê deve e ir "Ferramentas" > "Gerenciador de Placas" e procurar o ESP32, selecionar a versão 1.0.1 e instalar
ExcluirOi, Usei minha câmera em uma rede tim 2.4/5Ghz porém não conecta, será que temos um problema com banda ja testei em outras operadora que funcionou corretamente, li o datasheet que indica 2.4 como usi mas não fala sobre routear banda automaticamente
ResponderExcluirOi estou com o mesmo problema, tenho cinco placas e em todas a mesma coisa, estou desconfiando do modelo da câmera porquê nenhuma delas é OV2640.
ResponderExcluirVocê deve e ir "Ferramentas" > "Gerenciador de Placas" e procurar o ESP32, selecionar a versão 1.0.1 e instalar
ResponderExcluirOlá Ariel Sam . Tentei i stalar a versão 1.0.1 e o que acontece é que não mais aparece o skatch esp web connection e se eu tento colar o sckatch ele dá falha de esp_camera.h . Não sei mais por onde correr. Preciso resolver isso. Sinuca de bico por aqui. Roda perfeito mas não aparece a interface gráfica, quadrado de reconhecimento na face. Poderia me dar maiores dicas? Se possível alguém add meu zap seria legal pra me ajudar. 19 982568651 . Agradeço muito o apoio. Forte abraço. No aguardo
ResponderExcluirOi Ariel e Dyan. Por acaso vcs resolveram o problema da ESP32 CAM não realizando o reconhecimento facial ? Também estou com esse mesmo problema. Abs
Excluirhá como o esp-cam reconhecer peças? tipo materiais além de rostos? se puder trazer retorno a esta pergunta agradeço!
ResponderExcluirEspero que este video o ajude, mas não é com essa placa não. https://www.youtube.com/watch?v=aimSGOAUI8Y
ExcluirProcure por PIXY CAM (https://pixycam.com/pixy-cmucam5/)
Olá bom dia, consegui programar e achar o IP, mas quando coloco no navegador não funciona.
ResponderExcluirTeria alguma ajuda?
Bom dia, utilizei o programa, fiz download corretamente e abre o navegador a pagina web de configuração, porem não aparece o vídeo...testando também não abre se eu direcionar para porta 81...ex: 10.0.0.104:81/stream....alguem sabe como resolver?
ResponderExcluiraparece este erro na serial :
ResponderExcluir[E][camera.c:1344] esp_camera_fb_get(): Failed to get the frame on time!
I'm having the same error.
ExcluirQual o nome desse conector fêmea pra alimentação ?
ResponderExcluirTenho uma fonte USB, porém, não sei como ligar ela a placa.
Olá galera! E possível eu usar esse código pra identificar objetos? Tipo compara uma foto de um sem ter um rosto?
ResponderExcluirMuito bom o POST, porém preciso de mais uma ajuda. A minha placa é a GM - diymore - www.diymore.cc qual é a configuração da minha placa ESP32CAM??? Não estou conseguindo conexão com ela. Você poderia me ajudar?
ResponderExcluirEu implementei um exemplo q encontrei no Youtube q funcionou bem mas depois a camera parou de funcionar... nao sei o q houve porem, ela funciona com outros projetos. Segue o link:
ResponderExcluirhttps://www.youtube.com/watch?v=mu3-Sff0B9w&t=267s
Se alguem puder ajudar, fica meu obrigado.
AO executar apresenta o seguinte erro, poderia me ajudar?
ResponderExcluirsketch\ESP32_Camera.ino.cpp.o:(.literal._Z5setupv+0x2c): undefined reference to `startCameraServer()'
Você tem que pegar o Exemplos - ESP32 - Camera - CameraWebserver (que tem 4 arquivos nele e copiar o código do Fernando no primerio (seleciona tudo e cola por cima). Eu estava dando a mesma bobeada que você! Aí vai funcionar! 10!!!! Fernando arrebenta!
ExcluirOla amigos,
ResponderExcluiralguém conseguiu por para funcionar o ESP32-Cam? O meu tá dando um erro...
Senhores e Senhoras, bom dia. Para informar e aguardar alguma dica.
ResponderExcluir1- Usei 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. Desconfiei ser probloema do sketch ou da placa. Testei com varios sketchs de varios foruns e continua o mesmo sintoma. Passando no painel, opção: SPECIAL EFFECT 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). Desabilitei AEC SENSOR e aumentei EXPOSURE até a metade:apareceu imagem(tons de cinzas). Se optar por NO EFFECT a imagem fica toda VIOLETA e objetos sem côr.
Sei que a imagem normal não é assim.
Uma foto da imagem neste link: http://www.olintronica.com/imagens/ESP32_Olinto.jpg
Alguma dica estou a disposição.
Obrigado
Continuando: Adicionei IP FIXO ao sketch e portas diferentes de 80 para facilitar o acesso externo (internet).
ExcluirBom dia a todos. Como disse em outros foruns, obtive 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.
ResponderExcluirUltima 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
Resolvido. Era defeito no captador de imagens (camerazinha). Comprei outro kit ESP32CAM e funcionou normalmente. Troquei o captador e deu problema no kit novo.
ExcluirUm abraço a todos.
Bom dia Sr. Fernando.
ResponderExcluirEstou fazendo um projeto em que modifico o sketch ESP32_Camera.ino.
A finalidade é estudar o I2S usando o DMA.
Uso a IDE do Arduíno na versão 1.8.9.
Estou tendo os erros :
[E][camera.c:1049] camera_probe(): Detected camera not supported.
[E][camera.c:1249] esp_camera_init(): Camera probe failed with error 0x20004
Até aqui tudo bem, pois não tenho câmera plugada no ESP32.
A minha dificuldade é descobrir de onde vem estas mensagens com prefixo [E][camera.c:xxxx],
pois não encontrei o arquivo (camera.c) no meu PC.
Na internet, encontrei este arquivo,
" https://github.com/espressif/esp32-camera/blob/master/driver/camera.c ",
mas é para a IDE ESP-IDF.
Por exemplo, se procurar neste arquivo, encontro a msg de erro " Detected camera not supported. " ,
na linha 1053.
No arquivo camera.h, existem vários protótipos se funções mas não encontro as funções,
pois elas estão no arquivo camera.c
Vc consegue me ajudar nesta questão:
Qdo uso a IDE do Arduíno de onde vem as msgs do camera.c?
att:
Rui
Mano estou com um erro semelhante, tudo indica que nossos modulos da camera está com problema.
ExcluirEstou com o mesmo erro. conseguiram resolver?
ExcluirBom dia caros amigos,
ResponderExcluirJá tente inumeras vezes conectar com meu ESP 32 CAM, no entanto o mesmo fica em constante loop apresentando no monitor serial:
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
alguém passou por isso que possa me dá alguma luz?
saulo passei por isso , apnhei mas aprendi , use uma fonte externa de 5v ligado no gnd do esp junto com o ftdi e o positivo no 5v do esp a demais ligaçao continua normal
ExcluirBom dia Saulo. Tenta utilizar o exemplo do Fernando acima: "QIO" e "Hughe APP (3M.......)". Talvez seja isto.
ResponderExcluirBom dia a todos. UTILIZANDO A FUNÇÃO "CAPTURE" da ESP32CAM.
ResponderExcluirConsegui visualizar movimentos gerados pela ESP32CAM utilizando uma rotina (script) que captura a imagem gerada pelo endereço "192.168.0.xxx/capture" de modo contínuo simulando movimento.
O problema é que só funciona em modo local (LAN), por enquanto (rs rs rs).
Pra isso gerei uma pagina HTML/PHP/script que funciona tanto em modo local como se hospeda-la na nuvem. Logo que resolver o problema de só funcionar na LAN, informarei a todos.
Quem desejar o conteudo do arquio html/php entre em contato que enviarei.
Abs
Oi amigo, estou com um projeto similar, passa teu contato ou me envia um e-mail para everton@link2.pro para trocarmos informações.
ExcluirEu queria saber se é possível utilizar esse ESP-CAM e adicionar sensores de temperatura e umidade e mais uns 5 relés. Pelo q li até agora ele só tem três pinos GPIO sobrando. teria como utilizar aquele expansor de portas?
ResponderExcluirGostaria de saber qual o tipo de rede neural do ESP32-CAM e como esta funciona?
ResponderExcluirotima ideia, estou fazendo uma fechadura com arduino uno, tenho 13 anos e gostaria de implementar uma camera para o projeto, como eu poderia fazer, e qual circuito eu poderia fazer???? se conseguirem de preferencia fassom um exemplo no tinkercad
ResponderExcluirEste comentário foi removido pelo autor.
ResponderExcluirPessoal, falei no comentário anterior que o código estava errado. NÃO!!! Eu é que coloquei errado! O código é show!!!! Eu estava era com uma câmera defeituosa. Chegou outra placa pra mim e funcionou que foi uma maravilha. A placa é boa, mas as câmeras que colocam... vi vários forums do pessoal reclamando! Pode ter certeza de que, se sua imagem tá ruim, é a câmera!
ResponderExcluir