Como solucionar problemas comuns do ESP32-CAM

ESP32-CAM é um módulo de câmera compacto que combina a popular placa de desenvolvimento Wi-Fi ESP32 com o sensor de câmera OV2640. A câmera faz parte da série ESP32 de dispositivos system-on-chip (SoC) habilitados para Wi-Fi e Bluetooth, desenvolvidos pela Espressif Systems.

ESP32 é um microcontrolador dual-core de 32 bits com recursos integrados de Bluetooth e Wi-Fi – baseado no Espressif IoT Development Framework (ESP-IDF). O módulo de câmera combinado OV2640 oferece uma resolução de dois megapixels, oferecendo um dispositivo acessível para capturar imagens e vídeos em um aplicativo incorporado ou dispositivo de Internet das Coisas (IoT).

ESP32-CAM possui um slot para cartão MicroSD, que pode ser usado para armazenamento de imagens e vídeos. Ele também oferece pinos de entrada-saída de uso geral (GPIO) suficientes no módulo para fazer interface direta com sensores e outros periféricos.

O módulo pode ser facilmente programado usando o Arduino IDE com o pacote de suporte da placa ESP32 apropriado ou o ESP-IDF para um desenvolvimento mais avançado. A programação é apoiada por um suporte comunitário amplo, ativo e de código aberto, com diversas bibliotecas e exemplos on-line.

No entanto, apesar de suas vantagens, o ESP32-CAM também tem algumas desvantagens. Neste artigo, revisaremos alguns problemas comuns de trabalhar com este módulo de câmera e ofereceremos soluções potenciais.

Por que escolher o ESP32-CAM?
A câmera ESP32 oferece diversas vantagens para adicionar funcionalidades de streaming de imagem ou vídeo a aplicativos embarcados. O módulo da câmera é compacto, com Wi-Fi e Bluetooth integrados. Ele se integra facilmente a qualquer rede IoT e pode operar no modo de suspensão para prolongar a vida útil da bateria em projetos portáteis.

Este módulo de baixo custo possui slot para cartão MicroSD com conexões internas ao seu GPIO para armazenamento local de imagens e vídeos. Ele oferece GPIO suficiente para fazer interface direta com sensores ou periféricos adicionais com o módulo. Ele também pode ser programado a partir do Arduino IDE e possui uma grande comunidade de código aberto, tornando-o ideal para aplicações iniciantes ou intermediárias.

Limitações do módulo
ESP32-CAM é atraente porque é fácil de usar e acessível. No entanto, não é ideal para tarefas computacionalmente intensivas, como executar algoritmos complexos de aprendizado de máquina. A RAM disponível no módulo é insuficiente para tarefas de processamento de imagens de alta resolução. A resolução da câmera do sensor OV2640 integrado é de apenas dois megapixels.

Uma grande desvantagem do ESP32-CAM é que ele não tem uma porta USB na maioria das breakout boards, então é necessário usar um programador FTDI externo ou uma placa Arduino para fazer flash code no módulo. O módulo também não tem medidas de segurança integradas ao se conectar a uma rede, que devem ser adicionadas ao firmware incorporado, se necessário.

Além disso, as breakout boards ESP32-CAM esquentam, especialmente com streaming de vídeo, potencialmente exigindo dissipadores de calor. Embora haja um bom suporte da comunidade para ESP32-CAM, a documentação não é ideal. É uma curva de aprendizado íngreme fazer a transição para ESP-IDF para construir projetos avançados usando ESP32-CAM.

Formulários
O ESP32-CAM é um módulo versátil, graças aos seus recursos integrados de Bluetooth, Wi-Fi e cartão MicroSD. É útil em projetos de IoT, como automação residencial, monitoramento ambiental, segurança e vigilância. Também é útil para projetos de aprendizado de máquina, como detecção de objetos, reconhecimento facial e outras tarefas simples a intermediárias baseadas em imagens. O módulo pode até ser usado para monitoramento de vida selvagem e fotografia em lapso de tempo.

Problemas comuns com ESP32-CAM

  1. Problemas de fornecimento de energia
  2. Falha ao conectar ao ESP32
  3. Falha na inicialização da câmera
  4. Detector de queda de energia
  5. Problemas de memória
  6. Placa na COMX não disponível
  7. Erro de Psram
  8. Conectividade Wi-Fi
  9. Nenhum endereço IP no monitor serial do Arduino IDE
  10. Não é possível abrir o servidor web
  11. Qualidade da imagem
  12. Latência da imagem
  13. Superaquecimento
  14. Segurança
  15. esp_camera_fb_get : Falha ao obter o quadro a tempo!

Vamos discutir esses problemas e suas possíveis soluções.

Problemas de fonte de alimentação
O ESP32–CAM pode não ligar ou pode reinicializar com frequência. Isso geralmente ocorre devido a uma fonte de alimentação inadequada ou instável. Certifique-se de que uma fonte de alimentação estável com capacidade de corrente de pelo menos 500 mA esteja alimentando o módulo. Além disso, use um cabo USB e uma fonte de alimentação de qualidade, evitando cabos mais longos, se possível.

O flash LED da câmera normalmente consome energia adicional e alimentá-lo a partir do ESP32-CAM pode causar quedas de tensão. O ideal é usar uma bateria externa, que também é boa para portabilidade. Se alimentar o módulo através de um programador FTDI, use uma fonte de 5V em vez de 3V3.

Falha na conexão: Tempo limite esgotado ao aguardar o cabeçalho do pacote
Este erro ocorre ao carregar um esboço no ESP32-CAM e indica que o módulo não está no modo de flash ou não está conectado corretamente ao programador FTDI.

O diagrama de circuito para carregar corretamente um esboço no ESP32-CAM através do programador FTDI é o seguinte.

O diagrama do circuito para enviar o esboço para o ESP32-CAM através do Arduino é o seguinte.

Se estiver usando um programador FTDI, o programador pode ter um jumper para selecionar entre 5 e 3,3 V. Se for o caso, certifique-se de que o jumper esteja posicionado de forma que 5 V seja selecionado e que o GPIO0 do ESP32-CAM esteja conectado corretamente ao terra. Caso contrário, o módulo não entrará no modo de piscar.

Além disso, qualquer programador FTDI baseado no modelo CH340 não funcionará com a câmera ESP32. Escolha um programador FTDI compatível com ESP32-CAM ou faça o flash code através do Arduino. Se estiver usando o Arduino, certifique-se de que seu pino de reset também esteja conectado ao seu aterramento.

Após fazer as conexões de circuito adequadas entre o ESP32-CAM e o programador FTDI/Arduino, certifique-se de que as configurações adequadas estejam selecionadas. Por exemplo, selecione 'ESP32 Wrover Module' ou 'AI-Thinker ESP32-CAM' de acordo com o modelo da sua câmera ESP32 em Tools->Board. Além disso, escolha a porta correta para o Arduino ou o programador FTDI e certifique-se de que ela esteja conectada em Tools->Port. Quando o botão de upload for clicado e 'Connecting…' for apresentado na janela de depuração, pressione o botão de reset do ESP32-CAM. O esboço deve começar a ser carregado para o módulo da câmera.

Falha na inicialização da câmera
Este problema indica que a atribuição de pin do código está incorreta ou que a câmera OVX não está corretamente vinculada à placa ESP32. O problema pode ser resolvido algumas vezes reiniciando a placa repetidamente ou desconectando e conectando o programador FTDI.

No entanto, há mais de um motivo potencial para essa mensagem de erro. A câmera tem um conector minúsculo, então garanta que ele esteja conectado com segurança. Além disso, verifique se o modelo correto da câmera está selecionado no código e se a definição do pino do ESP32-CAM está correta dentro do esboço. Em seus projetos, escolha o módulo de câmera apropriado. Cada módulo de câmera deve ser “comentado”, mas deixe o correto “descomentado”.

É importante notar que a fiação entre o ESP32 e a câmera OV em muitas placas é considerada “placas falsas”, portanto, há uma chance de que a escolha do módulo de câmera correto seja insuficiente. Pode ser necessário comparar a pinagem da sua placa com cada declaração GPIO.

Também é possível que o programador FTDI esteja com defeito ou a porta USB do seu computador não esteja fornecendo energia suficiente para o módulo da câmera. Considere usar outro programador FTDI ou porta USB.

Este erro também ocorre quando o sensor da câmera não está conectado corretamente ao módulo. A fita da câmera pode estar quebrada, ou o sensor OV2640 pode estar com defeito.

Detector de queda de energia
Após enviar o esboço para o ESP32-CAM, desconecte o GPIO0 do terra no módulo da câmera. Após o upload do esboço, abra o Serial Monitor do Arduino e pressione o botão reset no módulo.

Se você receber a mensagem de erro “O detector de queda de energia foi acionado” repetidamente no console serial, o motivo típico é porque:

  • O cabo USB é muito longo ou de baixa qualidade
  • A porta USB do computador não está funcionando corretamente
  • A porta USB não está fornecendo energia suficiente
  • A placa está com defeito

Tente usar um cabo USB diferente ou uma porta USB diferente. Por exemplo, considere usar um hub USB com fonte de alimentação externa. Ou tente usar uma fonte de 5 V em vez de 3,3 V para o ESP32-CAM. Se nenhuma dessas soluções funcionar, desative a detecção de Brownout adicionando as seguintes linhas de código ao seu esboço.

#incluir “soc/soc.h”
#incluir “soc/rtc_cntl_reg.h”
configuração vazia {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0);
}

Problemas de memória
O ESP32-CAM tem RAM limitada, então problemas relacionados à memória podem ocorrer ao trabalhar com imagens grandes ou programas complexos. O gerenciamento eficiente da memória é crucial para evitar travamentos.

Você pode encontrar um erro 'Esboço muito grande' ao enviar o esboço. Certifique-se de selecionar o esquema de partição correto. Navegue até Ferramentas-> Esquema de partição e selecione 'APP enorme (3 MB sem OTA).'

Placa na COMX não disponível
Se o erro “Board at COMX is not available” ocorrer, você provavelmente não selecionou a porta COM correta do Arduino. Navegue até Tools-> Port e a porta COM à qual o ESP32 está conectado. Um problema com o cabo USB ou a porta USB do computador também pode gerar esse erro.

Erro PSRAM: o serviço GPIO ISR não está instalado
Este erro ocorrerá se sua placa ESP32-CAM não tiver PSRAM. Tarefas baseadas em imagens, como reconhecimento facial e detecção de objetos, são impossíveis nessas placas.

O ideal é escolher um modelo ESP32-CAM que tenha PSRAM. Mas se você tiver uma placa sem PSRAM, uma solução alternativa é diminuir a resolução da imagem no sketch.

Adicione as seguintes linhas de código ao esboço.

se(psramEncontrado ){
config.frame_size=FRAMESIZE_UXGA;
config.jpeg_quality = 10;
config.fb_count = 2;
} outro {
config.frame_size=FRAMESIZE_SVGA;
config.jpeg_qualidade = 12;
config.fb_count = 1;
}

Conectividade Wi-Fi
Problemas de rede Wi-Fi podem ocorrer devido a credenciais incorretas, intensidade do sinal ou interferência. Verifique novamente a intensidade do sinal Wi-Fi e atualize o firmware, se necessário.

Além disso, experimente diferentes posições de antena para melhor recepção. O ESP32-CAM pode ser configurado para usar uma antena externa ou embutida, que pode ser usada se o sinal Wi-Fi estiver fraco.

Caso contrário, verifique se o resistor do jumper 0K próximo ao conector da antena está posicionado corretamente. Três pequenos quadrados brancos são organizados como “<”, sendo a posição do meio normalmente a mais popular. O resistor deve estar na posição superior para usar a antena PCB e na posição inferior para usar o conector da antena. Para ativar a antena integrada, dessolde o resistor que está conectado a ela e solde as duas conexões.

Nenhum endereço IP no Arduino IDE Serial Monitor
Se houver um sinal Wi-Fi confiável, mas pontos (como '………') ainda ocorrerem no console serial, então o ESP32-CAM não está conectado corretamente à rede Wi-Fi. Poderia haver varias razões para isso.

Verifique novamente o seguinte, garantindo:

  • Você inseriu as credenciais de rede Wi-Fi corretas no esboço.
  • A taxa de transmissão do ESP32-CAM é de 115.200 bps.
  • Os pinos TX e RX do ESP32-CAM são conectados com segurança aos pinos TX e RX do programador Arduino ou FTDI.

Conectar o TX do ESP32-CAM com o Arduino ou o RX do programador FTDI e/ou o RX do ESP32-CAM com o Arduino ou o ESP32-CAM do programador FTDI é um erro comum. “TX” deve ser conectado a “TX” e “RX” deve ser conectado a “RX” para comunicação serial adequada. Às vezes, pressionar repetidamente o botão de reinicialização no módulo da câmera também resolve o problema.

Não é possível abrir o servidor web
Quando o ESP32-CAM informa o endereço IP no IDE Serial Monitor do Arduino, mas uma tela em branco aparece ao abrir o servidor web em um navegador, você pode estar acessando o servidor web por meio de várias guias.

O ESP32-CAM só pode manipular solicitações HTTP de um único cliente, então tente acessar o servidor web a partir de uma única aba no navegador.

Má qualidade de imagem
Se você estiver conectado a um servidor web, mas receber imagens borradas ou distorcidas, tente ajustar as configurações da câmera – incluindo resolução, taxa de quadros e equilíbrio de branco. Garanta o foco adequado ajustando a lente. Além disso, tente limpar a lente da câmera para obter imagens nítidas.

Latência da imagem
Pode haver latência na visualização de imagens ou fluxos de vídeo no servidor web com alguns módulos. Isso pode ser resolvido usando uma fonte de alimentação independente de 5 V para o módulo da câmera. Em alguns casos, é útil usar uma antena externa.

Se ainda houver problemas de latência, tente reduzir o tamanho do quadro adicionando a seguinte linha de código no esboço.

config.frame_size = TAMANHO_DO_QUADRO_SVGA

Ou, alternativamente, tente isto:

config.frame_size = TAMANHO_DO_QUADRO_VGA

Superaquecimento
O ESP32-CAM pode superaquecer, especialmente durante streaming de vídeo. Tente reduzir a resolução do vídeo e a taxa de quadros. Adicione um dissipador de calor para dissipar o calor, especialmente para tarefas exigentes, e garanta a ventilação adequada no gabinete do projeto.

Segurança
Há potenciais vulnerabilidades de segurança com o ESP32-CAM quando conectado à Internet. Essas falhas de segurança podem ser evitadas usando senhas fortes e criptografia. Você também pode implementar mecanismos de autenticação e autorização, se necessário. Sempre mantenha o firmware atualizado para patches de segurança.

esp_camera_fb_get : Falha ao obter o quadro a tempo!
Este erro normalmente ocorre com os modelos M5 e aqueles sem PSRAM. Para o modelo M5, o problema pode ser resolvido adicionando atribuições de pinos no esboço.

Considere adicionar esta linha de código ao esboço principal.

#define MODELO_DE_CÂMERA_M5STACK_SEM_PSRAM

Em seguida, na guia camera_pins.h, adicione as seguintes linhas de código:

#elif definido(CAMERA_MODEL_M5STACK_NO_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 17
#define VSYNC_GPIO_NUM 22
#define HREF_GPIO_NUM 26
#define PCLK_GPIO_NUM 21

Isso deve resolver o problema.

Conclusão
Para tarefas simples de processamento de imagem em dispositivos IoT e aplicativos embarcados, o ESP32-CAM é uma boa escolha. É eficiente, acessível e fácil de integrar. No entanto, alguns problemas podem ocorrer com este módulo. Felizmente, a maioria deles pode ser resolvida seguindo sugestões simples.

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.