Sobre o ESP32-CAM
O ESP32-CAM é um módulo de câmera de tamanho reduzido lançado pela Ai-Thinker Co., Ltd, que pode funcionar de forma independente como o menor sistema, com um tamanho de 27*40,5*4,5 mm e uma corrente mínima em modo de suspensão profunda de 6 mA.
Características do ESP32 CAM
- Interface da câmera (até 24 MP)
- Conectividade Wi-Fi e Bluetooth
- Processador dual-core ESP32-D0WDQ6
- 520 KB de SRAM
- Memória flash de 4 MB
- Módulo de câmera OV2640 de 2 MP
- Suporta os formatos JPEG e BMP
- Interface USB tipo C
- Conector para bateria LiPo
- CPU de 32 bits, até 240 MHz
- Transceptor Wi-Fi 802.11b/g/n HT40 integrado
- Bluetooth integrado de modo duplo (clássico e BLE)
- Antena PCB integrada
- PSRAM integrada de 8 MB
- Câmera integrada
- Conector externo para câmera
- 5 GPIOs programáveis
- 2 x UART, 2 x SPI, I2C, I2S, IRDA, PWM, GPIOs
Pinagem do ESP32 CAM

O ESP32-CAM tem três pinos GND e dois pinos para alimentação: 3,3 V ou 5 V.
GPIO 1 e GPIO 3 são pinos seriais. Você precisa desses pinos para carregar o código na sua placa. Além disso, o GPIO 0 desempenha um papel importante, pois determina se o ESP32 está no modo de piscar ou não. Quando o GPIO 0 está conectado ao GND, o ESP32 está no modo de piscar.
Os seguintes pinos estão conectados internamente ao leitor de cartão microSD:
GPIO 14: CLK
GPIO 15: CMD
GPIO 2: Dados 0
GPIO 4: Dados 1 (também conectado ao LED integrado)
GPIO 12: Dados 2
GPIO 13: Dados 3
Desenvolvimento do projeto ESP32 Cam
Construção do ambiente
Hardware
- Módulo ESP32-CAM
- Câmera OV2640
- Placa USB para porta serial (USB-TTL)
- Linha Dupont
- Fonte de alimentação 5V 2A
O módulo ESP32-CAM é alimentado separadamente, U0TXD, U0RXD e GND são conectados à placa de porta serial e conectados ao computador, e a câmera é conectada ao módulo por meio de um cabo.
Antes da programação, o GPIO0 do módulo ESP32-CAM precisa ser aterrado e reiniciado. Após a conclusão da programação, o GPIO0 é suspenso e reiniciado para entrar no modo de funcionamento.
Ambiente do sistema
O ESP32 pode ser desenvolvido em diferentes sistemas. Aqui está uma introdução ao ambiente de desenvolvimento da versão desktop do Ubuntu (a versão é Ubuntu 18.04.3).
Configurar servidor de download
Execute "Software e atualizações", clique na caixa suspensa "Baixar de" na guia "Software Ubuntu", selecione "Outros…", encontre "China" e selecione qualquer servidor, clique em "Escolher servidor" e, em seguida, digite a senha para confirmar. Quando estiver fechado, será solicitado que você atualize as informações. Clique em "Recarregar" para atualizar.

Instalar software
sudo apt-get purge vim-common
sudo apt-get install vim
sudo apt install git
Instalar ambiente dependente
sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev
Código do projeto e ambiente de desenvolvimento
item de tração
Puxe o projeto e os submódulos ao mesmo tempo:
git clone --recurse-submodules https://github.com/Ai-Thinker-Open/Ai-Thinker-Open_ESP32-CAMERA_LAN.git
Se a extração for interrompida, você precisará entrar no diretório do projeto para extrair o submódulo novamente:
cd Ai-Thinker-Open_ESP32-CAMERA_LAN/
git submodule update --init --recursive
Estrutura de Desenvolvimento
Depois que o projeto é puxado, você pode ver que há um diretório esp-idf no diretório do projeto. esp-idf (Espressif IoT Development Framework) é a estrutura de desenvolvimento esp. O ambiente de desenvolvimento do projeto é construído através do esp-idf. A versão idf neste projeto é esp- idf-v4.0.
Defina o caminho IDF_PATH
Edite o arquivo de configuração .bashrc:
cd esp-idf/
vim ~/.bashrc
Use o comando vim para abrir o .bashrc, use o teclado para mover o cursor até o final do arquivo, pressione a para entrar, pressione Enter no final para ir para uma linha em branco e insira o conteúdo correspondente de acordo com o seguinte formato para definir a variável IDF_PATH:
# export IDF_PATH=<esp-idf absolute path>, the example is as follows
export IDF_PATH=/home/user/Desktop/esp32/Ai-Thinker-Open_ESP32-CAMERA_LAN/esp-idf
Após concluir a inserção, pressione esc para cancelar a edição, :wq para salvar e sair, execute o seguinte comando para que a modificação entre em vigor imediatamente:
source ~/.bashrc
Verifique se a variável é válida:
echo $IDF_PATH
Se o caminho impresso for consistente com a configuração, vá para a próxima etapa; caso contrário, você precisará repetir a operação.
Instalar ferramentas de desenvolvimento
Execute o script install.sh no diretório esp-idf:
./install.sh
Em seguida, o terminal solicita as informações de download. Após exibir a mensagem "All done!", a instalação está concluída. Nesse momento, execute o script export.sh para definir a variável de ambiente:
. ./export.sh
Observe que há um espaço após o primeiro ".", que precisa ser executado sempre que você abrir o terminal para desenvolvimento e depuração do projeto.
Após a execução do script, "Done!" (Concluído!) é impresso para indicar sucesso e, em seguida, o projeto pode ser configurado, compilado e baixado.
Configurar, compilar e baixar
Configuração do projeto
Entre no diretório do projeto de demonstração "Ai-Thinker-Open_ESP32-CAMERA_LAN/examples/single_chip/camera_web_server"
cd ../examples/single_chip/camera_web_server/
Em seguida, começamos a configurar o projeto:
make menuconfig
A mensagem "recipe for target 'mconf.o' failed" é um problema de dependência. Digite sudo apt-get install libncurses5-dev para instalar as dependências relevantes e tente novamente.
A interface de configuração é a seguinte:

Use as teclas de seta e a tecla Enter para mover o cursor para operar, entre na interface "Serial flasher config" e consulte a figura a seguir para configuração. Aqui, a porta serial está definida como "/dev/ttyUSB0" e precisa ser configurada para se conectar ao módulo ESP32-CAM durante a operação da porta serial.

Entre na interface "Camera Web Server"->"Camera Pins"->"Select Camera Pinout" e selecione "ESP32-CAM by AI-Thinker".

Entre na interface "Camera Web Server"->"Wifi Settings" para definir o modo Wi-Fi, "Wifi STA SSID" e "Wifi STA Password" e "Wifi AP SSID" e "Wifi AP Password" para definir um deles.
(Wifi STA significa modo Estação, o ESP32-CAM se conecta à rede Wi-Fi de outros dispositivos; Wifi AP significa modo AP, o computador ou celular se conecta ao ponto de acesso Wi-Fi aberto pelo ESP32-CAM)
O modo Wifi AP é usado aqui, e o "Endereço IP Wifi AP" abaixo define o endereço IP do módulo no modo Wifi AP.

Após concluir a configuração, use as teclas esquerda e direita para mover o cursor inferior para "<Salvar>" e pressione Enter para salvar. Em seguida, mova para "<Sair>" para sair da configuração.
Compilar e baixar
compilar:
make
download:
make flash
É importante observar que o módulo GPIO0 deve ser aterrado e reiniciado antes da programação.
Ao fazer o download do make flash, a porta "/dev/ttyUSB0" configurada anteriormente é usada por padrão, e outras portas podem ser especificadas pelo parâmetro -p: make flash -p [PORT]
Se for exibida uma mensagem informando que a falha na abertura da porta serial pode ser causada por um problema de permissão, você pode abrir todas as permissões da porta serial com sudo chmod -R 777 <porta>, como sudo chmod -R 777 /dev/ttyUSB0, mas todas as permissões da porta serial aberta se tornarão inválidas após a porta serial ser desconectada. Além disso, o usuário atual pode ser adicionado ao grupo dialout sudo usermod -a -G dialout <nome de usuário>
Receber informações de impressão da porta serial:
make monitor
Deve-se observar que o módulo GPIO0 deve ser suspenso para ligar ou reiniciar durante o funcionamento.
Além disso, você também pode usar o assistente da porta serial para visualizar as informações de impressão do módulo.
Tirar foto e gravar vídeo
Após baixar o firmware de demonstração, o módulo ESP32-CAM é ligado e começa a funcionar. Conecte o computador ou celular à rede onde o módulo está localizado e acesse o endereço do módulo no navegador.
No modo Station, o endereço do módulo é o endereço IP atribuído pelo dispositivo hotspot Wi-Fi ao módulo; no modo AP, é o endereço definido por "Wifi AP IP Address".
Na página da web do módulo, clique no botão "Get Still" (Obter imagem estática) abaixo da barra de operação à esquerda para tirar uma foto e no botão "Start Stream" (Iniciar transmissão) para gravar um vídeo. Depois de tirar uma foto ou gravar um vídeo, a imagem será exibida na página da web.
Visualize a interface de operação do módulo no celular da seguinte maneira: você pode clicar em "Save" no canto superior direito da imagem para salvar a imagem.





