ESP32-CAM in breve
L'ESP32-CAM è un modulo low-cost (~€8) con sensore OV2640 da 2 MP, slot microSD e connessione WiFi. È perfetto per videocitofoni, webcam su modellini, stampanti 3D, nidi di uccelli e progetti di sorveglianza domestica.
Cablaggio per la programmazione
L'ESP32-CAM non ha USB. Per programmarla serve un adattatore FTDI USB-seriale a 3.3V:
- FTDI VCC 5V → ESP32-CAM 5V
- FTDI GND → ESP32-CAM GND
- FTDI TX → ESP32-CAM U0R (RX)
- FTDI RX → ESP32-CAM U0T (TX)
- IO0 → GND (solo durante il flash, poi rimuovere)
Premi RESET sull'ESP32-CAM mentre carichi lo sketch. A fine upload togli IO0-GND e premi di nuovo RESET per avviare il programma.
Sketch CameraWebServer
In Arduino IDE: File → Esempi → ESP32 → Camera → CameraWebServer. Modifica le credenziali WiFi e seleziona la board AI-Thinker ESP32-CAM:
const char* ssid = "TUA_RETE"; const char* password = "TUA_PASSWORD"; // Decommentare la board corretta: #define CAMERA_MODEL_AI_THINKER // Default Banggood/AliExpress //#define CAMERA_MODEL_M5STACK_PSRAM
Endpoint disponibili
Dopo il boot, il monitor seriale stampa l'IP. Apri il browser e visita gli endpoint:
http://<ip>/— pannello web con anteprima e controlli (esposizione, risoluzione, qualità JPEG)http://<ip>:81/stream— streaming MJPEG diretto, integrabile in tag<img>http://<ip>/capture— singolo JPEG (per snapshot via cron)
Integrare lo stream in una pagina HTML
<img src="http://192.168.1.50:81/stream" width="640">
Apri la pagina su qualsiasi dispositivo della rete: vedrai il flusso video in tempo reale con ~10 fps a 640×480.
Salvare snapshot su microSD
Inserisci una microSD da max 32 GB formattata FAT32. Sketch minimo per salvare ogni 60 secondi:
#include "esp_camera.h"
#include "FS.h"
#include "SD_MMC.h"
void setup() {
// ... init camera ...
SD_MMC.begin();
}
void loop() {
camera_fb_t *fb = esp_camera_fb_get();
String path = "/snap_" + String(millis()) + ".jpg";
File file = SD_MMC.open(path, FILE_WRITE);
file.write(fb->buf, fb->len);
file.close();
esp_camera_fb_return(fb);
delay(60000);
}
Integrazione Home Assistant
Configurazione in configuration.yaml:
camera:
- platform: mjpeg
name: Citofono
mjpeg_url: http://192.168.1.50:81/stream
still_image_url: http://192.168.1.50/capture
L'ESP32-CAM apparirà come una camera nativa di Home Assistant con tutti i benefici (registrazioni, automazioni, notifiche).
Limiti e accortezze
- Calore: il modulo scalda parecchio in streaming continuo. Aggiungi un dissipatore al chip ESP32.
- Alimentazione: serve almeno 1A stabile a 5V. Alimentatori USB scadenti causano crash continui.
- WiFi: solo 2.4 GHz. In ambienti rumorosi cala a pochi fps.
- Sicurezza: lo sketch base non ha autenticazione. Mai esporre l'IP su internet senza VPN o proxy.