O ESP32-CAM é um microcontrolador poderoso e de baixo custo, com um módulo de câmera embutido, capaz de capturar imagens e transmitir vídeo ao vivo. Ao alavancar seus recursos de processamento e integrar bibliotecas ou estruturas de aprendizado de máquina externas, você pode ativar a detecção de objetos diretamente na cam. Este tutorial o guiará através da configuração de detecção básica de objetos com o ESP32-CAM usando modelos pré-treinados.
O que você precisará
- Módulo ESP32-CAM
- Programador FTDI (adaptador USB para serial)
- Fios de jumper
- Pão de pão (opcional)
- Um computador com o Arduino IDE instalado
- Impulso de borda ou Lite Tensorflow para modelos de detecção de objetos
Etapa 1: Configurando o Arduino IDE
1. Instale o pacote da placa ESP32
-
Abra o Arduino IDE.
-
Vá para Arquivo > Preferências.
-
No campo "URLs adicionais do gerente do conselho", adicione:
https://dl.espressif.com/dl/package_esp32_index.json
-
Clique OK.
-
Vá para Ferramentas > Quadro > Gerente de placas.
-
Pesquise "ESP32" e instale o pacote pelos sistemas Espressif.
2. Instale as bibliotecas necessárias
- Instale a biblioteca "Esp32 Camera".
- Para modelos de detecção de objetos, instale "TensorFlow Lite Micro" (ou bibliotecas similares).
Etapa 2: Fiação da Cam ESP32
Pino esp32-cam | PIN do programador FTDI |
---|---|
Gnd | Gnd |
5V | VCC (5V) |
U0r | Tx |
U0t | Rx |
Gnd | Gnd (io0 para gnd para piscando) |
Importante: Conecte o pino IO0 ao GND para colocar o ESP32-CAM no modo Flash.
Etapa 3: Enviando um esboço básico de detecção de objetos
1. Selecione a placa e a porta
- Vá para Ferramentas > Quadro e selecione Ai-Thinker ESP32-CAM.
- Sob Ferramentas, selecione o correto Porta COM para o seu programador FTDI.
2. Preparando o código
Use um exemplo básico para carregar um modelo de detecção de objetos pré-treinado (por exemplo, modelo TensorFlow Lite). Abaixo está um snippet de amostra para integrar a detecção de objetos:
#include <esp_camera.h>
#include <TensorFlowLite_ESP32.h>
// Replace with your specific model and labels
#include "model.h"
#include "labels.h"
void setup() {
Serial.begin(115200);
// Initialize the camera
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 (!esp_camera_init(&config)) {
Serial.println("Camera initialized successfully!");
} else {
Serial.println("Camera initialization failed!");
while (1);
}
// Load the TensorFlow Lite model
TfLiteStatus model_status = tflite::InitModel(model);
if (model_status != kTfLiteOk) {
Serial.println("Failed to initialize the model");
while (1);
}
}
void loop() {
// Capture a frame
camera_fb_t *frame = esp_camera_fb_get();
if (!frame) {
Serial.println("Camera capture failed");
return;
}
// Run object detection
tflite::RunInference(frame->buf, frame->len);
// Display detected objects
for (int i = 0; i < NUM_CLASSES; i++) {
float confidence = tflite::GetConfidence(i);
if (confidence > 0.5) {
Serial.print("Detected: ");
Serial.print(labels[i]);
Serial.print(" with confidence: ");
Serial.println(confidence);
}
}
esp_camera_fb_return(frame); // Free the frame buffer
delay(200);
}
3. Carregue o código
- Pressione o Reiniciar Botão no ESP32-CAM enquanto o IO0 está conectado ao GND.
- Clique Carregar no Arduino IDE.
- Depois que o upload estiver concluído, desconecte a io0 do GND e pressione o Reiniciar botão novamente.
Etapa 4: Acessando resultados de detecção de objetos
- Abra o monitor serial (Ferramentas > Monitor serial) e definir a taxa de transmissão como
115200
. - Ver objetos detectados e suas pontuações de confiança no monitor serial.
- Você pode expandir isso exibindo resultados em uma interface da Web usando HTML ou integrando com plataformas IoT como o MQTT.
Etapa 5: Aprimorando a detecção de objetos
- Otimização do modelo: Use o impulso de borda ou o tensorflow lite para treinar modelos personalizados otimizados para o ESP32-CAM.
- Interface da web: Aprimore o projeto exibindo os objetos detectados diretamente em uma interface do navegador.
- Integração da IoT: Envie resultados de detecção para serviços em nuvem para mais sistemas de processamento ou alerta.
Solução de problemas
- Modelo muito grande: Verifique se o tamanho do modelo se encaixa na memória do ESP32-CAM.
- Câmera não detectada: Verifique a fiação e verifique se a câmera está conectada com segurança.
- Baixa precisão: Treine ou ajuste o modelo com dados mais relevantes.
Aplicações da detecção de objetos com ESP32-CAM
- Câmeras de segurança com detecção de movimento ou movimento
- Automação residencial inteligente (por exemplo, detecção de entregas ou animais de estimação)
- Sistemas de monitoramento e contagem industriais
- Monitoramento e pesquisa da vida selvagem
Conclusão
Você configurou com sucesso a detecção básica de objetos com o ESP32-CAM. Este poderoso módulo, combinado com modelos de aprendizado de máquina, abre inúmeras possibilidades para aplicativos do mundo real. Experimente modelos diferentes, melhore a precisão e expanda a funcionalidade para atender às necessidades do seu projeto!