Ott 252020
 

Lo ammetto, sono già in giro da un po’ di tempo e sono mesi che ho questi moduli nel cassetto ma non avevo avuto tempo di provarli. Ora comincerò a “domotizzare” il mio laboratorio per cui ho pensato di provarli e vedere come se la cavano. Ah, vero, non vi ho detto cosa sono. Di fatto sono delle schede basate su ESP32, microcontrollore a 32bit a 160MHz che ha 4MB di flash oltre che WiFi, Bluetooth ed SD card  integrati. Bene, questo modulo ha anche una minuscola videocamera integrata (OV2460 – CMOS UXGA (1632 * 1232) da 1/4 di pollice). Parliamo di moduli davvero molto economici, li potete portare a casa anche con meno di 6€ (si ho detto 6 euro!). Nel momento in cui vi scrivo non ho ancora ben chiaro se potrò utilizzarli in modo affidabile, solo ieri, rispetto a quando scrivo l’articolo, ho fatto le prime prove e non vi nasconderò che qualche problema di stabilità del sistema l’ho avuto anche se sembra tutto legato alla fonte di alimentazione. Ma questo fa parte del lavoro del Maker, se volete una IP camera bella pronta e funzionante andate su Amazon ve la prendete, la collegate e la usate. 

Se invece siete qui vi piace “sporcarvi le mani” e quindi vorrei stuzzicare la vostra immaginazione prima di cominciare a collegarla. Ora pensate alla classica IP cam. Quella riprende, fa le foto, i video, magari il riconoscimento facciale e basta. Ora pensate a questo modulo. Avete un microcontrollore completamente programmabile. Potreste ad esempio usare la videocamera per fare il riconoscimento facciale perchè si, usandola a 320×200 effettua anche il riconoscimento facciale, e potete ad esempio far si che se vi riconosce apra una porta, disattivi l’allarme o tutto quel che vi pare (e tralasciamo un attimo la sicurezza). Ma potreste fare il contrario. Io ad esempio sto per sostituire dei faretti all’esterno del laboratorio. Userò un sensore PIR (infrarossi) per rilevare la presenza di movimento, il sensore sarà collegato a questo modulo che oltre a fare lo steaming wifi, al momento della rilevazione accenderà i fari tramite un relè e farà delle foto che memorizzerà sulla SD card, cosa che permette di registrare delle immagini anche nel caso la connessione wifi non sia funzionante per qualche motivo. Se ho stuzzicato la vostra curiosità passiamo ai collegamenti.

ESPCam32 <–> FTDI

Il titolo già dice tutto. Questo modulo non ha la porta usb per effettuare la programmazione. Quindi armatevi di un po’ di pazienza perchè dovrete collegarvi ad un classico convertitore FTDI che permette di interfacciare la porta USB del vostro PC alla porta UART del modulo. 

Nell’immagine qui sopra potete vedere i collegamenti da fare. Nulla di difficile ma bisogna sempre prestare molta attenzione specie se, come in questo caso, VCC e GND sono molto vicini e rischiate di collegare la massa della scheda alla VCC o viceversa, cioè l’unica cosa che non dovete MAI fare 🙂

FTDI ESP32-CAM
5V 5V
GND GND
RX UOT
TX UOR

Se avete osservato con attenzione, avrete notato che nella tabellina qui sopra non ho riportato il “filo grigio” che collega la massa al GPIO0 (IO0). Questo collegamento mette la scheda in modalità programmazione ed ovviamente lo farete prima di alimentare la scheda stessa. Una volta flashato il software spegniamo tutto, togliamo il ponticello e ridiamo alimentazione. 

Installiamo il primo esempio

Qui nulla di particolarmente nuovo. Prima di tutto però dobbiamo associare all’IDE di Arduino, la famiglia di scede ESP32, sempre che non l’abbiate già fatto. Quindi andate su File -> Impostazione e nella riga “URL aggiuntive per il gestore schede” aggiungete https://dl.espressif.com/dl/package_esp32_index.json. Se per caso c’è già qualche url inserito in quella casella di testo, separate con una virgola. 

A questo punto andate sulla gestione delle schede (Strumenti->”scheda attuale”->Gestore schede) e cercate ESP32. A questo punto sarete in grado di selezionare la “AI Thinker ESP32-CAM” e caricare l’esempio “CameraWebServer”.

Le cose da fare sono davvero poche. Prima di tutto verificate nei #define, che sia definita la CAMERA_MODEL_AI_THINKER. 

// Select camera model

//#define CAMERA_MODEL_WROVER_KIT

//#define CAMERA_MODEL_M5STACK_PSRAM

#define CAMERA_MODEL_AI_THINKER

A questo punto modificate ssid e password per permettere l’accesso alla vostra rete WiFi, flashate il tutto e poi ricordate di riavviare e togliere il ponticello che ha messo la scheda in modalità programmazione. Aprendo il monitor seriale dovrebbero uscire delle scritte tipo: 

…….
Wifi Connected
Starting web server on port : ’80’
Starting stream server on port: ’81’
Camera ready! Use ‘http://xxx.xxx.xxx.xxx’ to connect

 

Bene. Se siete arrivati a questo punto siete a cavallo. Ora aprite un browser qualunque e nella barra dell’indirizzo potete utilizzare 3 diversi indirizzi.

Il primo è http://xxx.xxx.xxx.xxx, ovviamente al posto delle x ci sarà l’indirizzo IP che vi è stato dato nel monitor seriale. Vorrei però segnalarvi che io ho avuto qualche problema nella fase di avvio, spesso sembrava che il sistema non si avviasse, in realtà il tutto è legato ad un problema del monitor seriale, magari è il mio convertitore FTDI che non è abbastanza veloce, ma ho avuto diverse “false partenze”, tant’è che le prime volte ho preso l’indirizzo dall’interfaccia del mio router. 

Comunque sia a quell’indirizzo troverete sia l’immagine in streaming che tutta l’interfaccia per modificare le varie opzioni a disposizione.  Ci sono però altri due indirizzi che trovo molto utili in quanto ci permettono l’integrazione con i sistemi di domotica, io ad esempio ho cominciato a lavoricchiare con Homeassistant e vi assicuro che è utile conoscere questi due link. 

http://xxx.xxx.xxx.xxx:81/stream : a questo indirizzo potete vedere il solo streaming della videocamera. Purtroppo però è possibile fare un solo streaming quindi non potete usare questo canale come sistema di videosorveglianza con multipli client connessi, per farlo è indispensabile un sistema che “ripeta” lo streaming attraverso altri canali. 

http://xxx.xxx.xxx.xxx/capture : Qui invece abbiamo un fotogramma singolo che viene creato nel momento esatto in cui arriva la richiesta via url. Come tale è usufruibile tranquillamente anche da più postazioni che accedono al servizio dato che non vi è una reale contemporaneità di accesso. 

Vi avevo detto che la scheda ha un led bianco bello potente da poter usare per illuminare la scena? Ebbene si, è collegato al pin 4 per cui non dovete far altro che usare quel pin per accenderlo e spegnerlo. Io l’ho usato anche nella fase di inizializzazione del modulo, si accende subito allo startup e si spegne non appena aggancia la rete wifi. in questo modo ho un riscontro visivo di quel che succede. 

Per usarlo per prima cosa impostate il pin in uscita con una classica pinMode(4,OUTPUT); e poi non dovete far altro che usare le classiche digitalWrite(4,HIGH); e digitalWrite(4,LOW) rispettivamente per accenderlo e spegnerlo.

3-2-1 via

Bene non mi resta che mostrarvi i risultati. Qui sotto potete vedere l’interfaccia grafica completa.

Si noti che in basso ci sono tre pulsanti, il primo per il “fermo immagine”, il secondo attiva e disattiva lo streaming, il terzo serve a far apprendere delle “facce” per il riconoscimento facciale. Questa funzione utilizza risoluzioni 320×200 o inferiori, ma da quanto ho letto in giro sono mantenute in memoria ram per cui vengono perse in caso di riavvio. Sempre in giro ho letto della possibilità di memorizzare i profili acquisiti ma è un’operazione complessa che richiede il ripartizionamento della memoria interna e che non può essere fatto con la semplice IDE di Arduino. E poi potrebbe essere meglio usare la camera solo per il video, magari a maggior risoluzione e far fare a macchine più potenti il riconoscimento facciale. E’ comunque una gran cosa poter avere un sistema di questo tipo in una schedina da 6 euro, anche se per sfruttarla a fondo sarà necessario lavorarci un po’. Qui sotto, a puro titolo di esempio, vi mostro una schermata di un test fatto con Homeassistant.

Conclusioni

Allora, come vi ho accennato agli inizi, nei primi test ho avuto dei problemi di stabilità in cui “perdevo” la videocamera, ma dopo aver sostituito la fonte di alimentazione il problema è scomparso. Saltuariamente viene persa la rete wifi, ma ho modificato il software per riagganciarla e segnalarmi la cosa attraverso il led bianco, in questo modo ho un riscontro visivo del fatto che è stata persa la connessione. E’ comunque un evento raro. La seconda cosa da dire è che questi moduli non hanno nessun tipo di custodia per cui per utilizzarli in modo proficuo dovete pensare anche a questo aspetto, ma quando li ho acquisati avevo già pensato di fare le custodie con la stampante 3D e proprio volendo essere pigri ci sono già un sacco di progetti pronti solo da stampare in rete. Diciamocelo, se ci mettete tutto il lavoro da fare e la usate solamente come IP cam, forse non sono così convenienti come sembrano, ma resta una schedina di indubbio interesse. Altri punti da risolvere sono l’uso di un ip statico o comunque di un nome che identifichi il dispositivo nella rete in modo da raggiungerlo agevolmente. Io ad esempio con HomeAssistant durante i test fatti, ho usato la videocamera per alcune settimane senza problemi, poi un aggiornamento firmware del router ha fatto si che l’indirizzo ip della qebcam fosse assegnato in maniera diversa con relativa perdita della connessione alla cam. Tutti dettagli risolvibili ma che necessitano di lavoro “dietro le quinte”.

Appena sarà pubblicato, qui sotto troverete il link al video sul canale youtube.