# douglasteyh/pesquisa-yolo-esp32cam-deteccao architecture

> Architecture diagram of the GitHub repository douglasteyh/pesquisa-yolo-esp32cam-deteccao, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao
- Repository: https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao

## Overview

VenomESP monitors environments with an ESP32-CAM and a FastAPI service: the camera sends images, the service runs trained animal detectors, and detections can trigger Telegram alerts. Separate webcam programs provide local detection, while training notebooks and stored weights represent the model-development lifecycle. The README documents these major integrations; some implementation details, including firmware transmission and model-loading code, were not sampled, so those links rely on README evidence.

Main entry points: [`api/main.py`](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/api/main.py) (FastAPI Image API), [`pesos/cobras_best.pt`](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/pesos/cobras_best.pt) (Snake Weights), [`pesos/escorpioes_best.pt`](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/pesos/escorpioes_best.pt) (Scorpion Weights), [`esp32cam_firmware/esp32cam_firmware.ino`](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/esp32cam_firmware/esp32cam_firmware.ino) (ESP32-CAM Firmware)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_capture["Image Capture"]
  node_firmware["ESP32-CAM Firmware"]
end

subgraph group_service["Detection Service"]
  node_api["FastAPI Image API<br/>[main.py]"]
  node_inference["YOLO Inference<br/>[main.py]"]
end

subgraph group_models["Models and Training"]
  node_cobra_weights["Snake Weights<br/>[cobras_best.pt]"]
  node_scorpion_weights["Scorpion Weights<br/>[escorpioes_best.pt]"]
  node_cobra_training["Snake Training"]
  node_scorpion_training["Scorpion Training"]
end

subgraph group_local["Local Detection"]
  node_webcam_cobra["Snake Webcam Detector<br/>[detector_cobras.py]"]
  node_webcam_scorpion["Scorpion Webcam Detector"]
end

subgraph group_alerts["Device Alerts"]
  node_registry[("Device Registry<br/>[main.py]")]
  node_bot["Telegram Bot Polling<br/>[main.py]"]
end

node_environment(("Monitored Area"))
node_telegram["Telegram"]
node_computer_camera(("Local Webcam"))

node_environment -->|"captures images"| node_firmware
node_firmware -->|"uploads images"| node_api
node_api -->|"runs detection"| node_inference
node_inference -->|"uses weights"| node_cobra_weights
node_inference -->|"uses weights"| node_scorpion_weights
node_api -->|"reads device mapping"| node_registry
node_bot -->|"registers devices"| node_registry
node_bot -->|"polls and replies"| node_telegram
node_api -->|"sends detection alerts"| node_telegram
node_cobra_training -->|"trains model"| node_cobra_weights
node_scorpion_training -->|"trains model"| node_scorpion_weights
node_computer_camera -->|"provides frames"| node_webcam_cobra
node_computer_camera -->|"provides frames"| node_webcam_scorpion
node_webcam_cobra -->|"uses weights"| node_cobra_weights
node_webcam_scorpion -->|"uses weights"| node_scorpion_weights

click node_firmware "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/esp32cam_firmware/esp32cam_firmware.ino"
click node_api "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/api/main.py"
click node_inference "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/api/main.py"
click node_registry "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/api/main.py"
click node_bot "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/api/main.py"
click node_cobra_weights "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/pesos/cobras_best.pt"
click node_scorpion_weights "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/pesos/escorpioes_best.pt"
click node_cobra_training "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/treinamento/notebook_treinamento_cobras.ipynb"
click node_scorpion_training "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/treinamento/notebook_treinamento_escorpioes.ipynb"
click node_webcam_cobra "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/webcam/detector_cobras.py"
click node_webcam_scorpion "https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/webcam/detector_escorpioes.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_firmware toneBlue
class node_api,node_inference toneAmber
class node_cobra_weights,node_scorpion_weights,node_cobra_training,node_scorpion_training toneMint
class node_webcam_cobra,node_webcam_scorpion toneRose
class node_registry,node_bot,node_environment,node_telegram,node_computer_camera toneIndigo
```

## Components

### Image Capture

- [ESP32-CAM Firmware](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/esp32cam_firmware/esp32cam_firmware.ino): `esp32cam_firmware/esp32cam_firmware.ino`

### Detection Service

- [FastAPI Image API](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/api/main.py): `api/main.py`
- [YOLO Inference](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/api/main.py): `api/main.py`

### Models and Training

- [Snake Weights](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/pesos/cobras_best.pt): `pesos/cobras_best.pt`
- [Scorpion Weights](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/pesos/escorpioes_best.pt): `pesos/escorpioes_best.pt`
- [Snake Training](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/treinamento/notebook_treinamento_cobras.ipynb): `treinamento/notebook_treinamento_cobras.ipynb`
- [Scorpion Training](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/treinamento/notebook_treinamento_escorpioes.ipynb): `treinamento/notebook_treinamento_escorpioes.ipynb`

### Local Detection

- [Snake Webcam Detector](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/webcam/detector_cobras.py): `webcam/detector_cobras.py`
- [Scorpion Webcam Detector](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/webcam/detector_escorpioes.py): `webcam/detector_escorpioes.py`

### Device Alerts

- [Device Registry](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/api/main.py): `api/main.py`
- [Telegram Bot Polling](https://github.com/douglasteyh/pesquisa-yolo-esp32cam-deteccao/blob/main/api/main.py): `api/main.py`

### Other components

- **Monitored Area**
- **Telegram**
- **Local Webcam**

## Connections

- Monitored Area → ESP32-CAM Firmware: captures images (evidence: `README.md`)
- ESP32-CAM Firmware → FastAPI Image API: uploads images (evidence: `README.md`)
- FastAPI Image API → YOLO Inference: runs detection (evidence: `README.md`)
- YOLO Inference → Snake Weights: uses weights (evidence: `README.md`)
- YOLO Inference → Scorpion Weights: uses weights (evidence: `README.md`)
- FastAPI Image API → Device Registry: reads device mapping (evidence: `api/main.py`)
- Telegram Bot Polling → Device Registry: registers devices (evidence: `api/main.py`)
- Telegram Bot Polling → Telegram: polls and replies (evidence: `api/main.py`)
- FastAPI Image API → Telegram: sends detection alerts (evidence: `README.md`)
- Snake Training → Snake Weights: trains model (evidence: `README.md`)
- Scorpion Training → Scorpion Weights: trains model (evidence: `README.md`)
- Local Webcam → Snake Webcam Detector: provides frames (evidence: `README.md`)
- Local Webcam → Scorpion Webcam Detector: provides frames (evidence: `README.md`)
- Snake Webcam Detector → Snake Weights: uses weights (evidence: `README.md`)
- Scorpion Webcam Detector → Scorpion Weights: uses weights (evidence: `README.md`)
