Riconoscimento facciale per la domotica con l’ESP32-CAM – Parte 2

In questo articolo riprendiamo il progetto iniziato nel precedente articolo "Riconoscimento facciale per la domotica con l’ESP32-CAM – Parte 1" in cui abbiamo testato la videocamera della scheda di sviluppo ESP32-CAM utilizzando lo sketch di esempio "CameraWebServer" estratto dagli esempi dell’IDE di Arduino.

REGISTRAZIONE PERMANENTE DEI VOLTI

L’esempio "CameraWebServer" è stato utile per dimostrare il funzionamento di registrazione dei volti della scheda ESP32-CAM, ma a causa della memoria volatile utilizzata in questo sketch, spegnendo la scheda, tutte le registrazioni dei volti andranno perse. Pertanto, al fine di garantire che i volti siano registrati permanentemente nella scheda, occorre creare una nuova partizione della memoria flash della scheda in cui salvare i volti registrati e ritrovarli anche dopo lo spegnimento e riaccensione della scheda, cosicché potremo utilizzare questi riconoscimenti di volti salvati per abilitare specifiche applicazioni mediante l’ESP32-CAM. Per creare una nuova partizione saranno necessarie alcune operazioni e file da aggiungere al programma. Dobbiamo scaricare un file che contiene uno schema di partizione da questo link: https://robotzero.one/wp-content/uploads/2019/04/rzo_partitions.csv e aggiungerlo alla cartella contenente gli altri schemi di partizione che si trovano in una delle due cartelle di Arduino, a seconda della modalità di installazione dell'IDE di Arduino.

Se l’IDE Arduino è stato installato da Windows Store, la cartella di destinazione sarà:

C:\ Users\ tuo-user-name *\ Documents\ ArduinoData\ packages\ esp32\ hardware\ esp32\ 1.0.4\ tools\ partitions

Se l’IDE di Arduino è stato installato dal sito Web di Arduino, la cartella di destinazione sarà:

C:\ Users\ * tuo-user-name *\ AppData\ Local\\ Arduino15\ packages\ esp32\ hardware\ esp32\ 1.0.4\ tools\partitions

Il nuovo schema deve essere aggiunto all’ESP32-CAM nel file di configurazione del gestore delle schede "boards.txt". Anche in questo caso il file si trova in una delle due cartelle di Arduino: se l’IDE di Arduino è stato installato da Windows Store, il file si troverà in: C:\Users\ * tuo-user-name *\ Documents\ ArduinoData\ packages\ esp32\ hardware\ esp32\ 1.0.4.

Se l’IDE di Arduino è stato installato dal sito Web di Arduino, il file si troverà in:

C:\ Users\ * tuo-user-name *\ AppData\ Local\ Arduino15\ packages\ esp32\ hardware\ esp32\ 1.0.4.

Individuato e aperto il file "board.txt" si dovranno aggiungere le tre righe seguenti in fondo alla sezione:

"partitionScheme"

esistente relativa alla scheda esp32wrover:

esp32wrover.menu.PartitionScheme.rzo_partition = Riconoscimento facciale (2621440 byte con OTA)

esp32wrover.menu.PartitionScheme.rzo_partition.build.partitions = rzo_partitions

esp32wrover.menu.PartitionScheme.rzo_partition.upload.mamost_size = 2621440

Riavviate l'IDE di Arduino per confermare che il nuovo schema di partizione è disponibile, quindi selezionate Strumenti -> Partition Scheme -> Face Recognition. Un articolo interessante per comprendere la creazione di partizioni di memoria flash si trova in https://robotzero.one/arduino-ide-partitions/. Ora occorre creare una copia del codice di esempio "CameraWebServer" in un nuovo sketch che chiameremo "CameraWebServerPermanent" in cui sarà utilizzata la nuova partizione. Lo sketch "CameraWebServerPermanent" si presenterà come in Figura 1 dopo aver cliccato sul secondo tab "app_httpd.cpp" il cui codice andremo di seguito a modificare:

Figura 1: Sketch "CameraWebServerPermanent"

- alla riga 24, dopo #include "fr_forward.h" inserite #include "fr_flash.h";

- alla riga 177 sostituite int8_t left_sample_face = enroll_face(&id_list, aligned_face);(&id_list, aligned_face) con:

int8_t left_sample_face = enroll_face_id_to_flash(&id_list, aligned_face);

- alla riga 648, dopo "face_id_init(&id_list, FACE_ID_SAVE_NUMBER, ENROLL_CONFIRM_TIMES);" inserite:

"read_face_id_from_flash(&id_list)".

Prima di caricare lo sketch "CameraWebServerPermanent", occorre impostare la scheda ESP32-CAM e configurarla in modalità di programmazione. Alimentate il circuito di Figura 2 che avete realizzato se avete seguito la Parte 1 di questo progetto, altrimenti realizzatelo su una breadboard sperimentale. Collegate la scheda convertitore seriale CH340 ad una porta USB del computer.

Figura 2: Schema elettrico del circuito di controllo di una serratura con l’ESP3-CAM

Predisponete la scheda ESP32-CAM in modalità di programmazione: con un jumper collegate a massa il pin GPIO0 e premete il pulsante RESET della scheda ESP32-CAM. Da Strumenti > Scheda, selezionate la scheda "ESP32 Wrover Module", poi selezionate la porta COM (su Windows) o ttyUSB (su Mac) corrispondente al driver del convertitore seriale CH340, infine, da Strumenti > Partition Scheme: selezionate "Face Recognition…". Nello sketch controllate che il modello CAMERA_MODEL_AI_THINKER della videocamera sia non commentato alla riga 17, e che siano commentati gli altri modelli di videocamera. Poi inserite l’SSID e la PASSWORD della vostra rete WiFi nelle righe 22 e 23 dello sketch. Ora caricate lo sketch. Terminata la compilazione e il caricamento dello sketch, togliete il collegamento a massa del pin GPIO0 e aprite il monitor seriale di Arduino e impostatelo alla velocità di trasmissione di 115200 bps. Premendo il pulsante RESET della scheda vedrete nel monitor seriale l’indirizzo IP dell’ESP32-CAM, come mostrato nella Figura 3.

Figura 3: Indirizzo IP dell’ESP32-CAM

Aprite un browser nello smartphone, tablet o PC e lanciate l’indirizzo IP indicato nel monitor seriale. Vedrete apparire la pagina dello streaming con il menu di configurazione della videocamera, come mostrato in Figura 4.

Figura 4: Interfaccia della videocamera

Questa volta, con il codice "CameraWebServerPermanent" la registrazione del volto avrà effetto permanente. Registrate i volti che vi interessa siano riconosciuti in quanto saranno i volti delle persone autorizzate ad attivare l’applicazione desiderata mediante il sistema di riconoscimento facciale, come vedremo in un’applicazione di esempio nel prossimo paragrafo.

Controllo di un accesso mediante riconoscimento facciale

Una volta registrati con "CameraWebServerPermanent" i volti delle persone autorizzate ad attivare una desiderata applicazione domotica, come ad esempio accendere o spegnere un dispositivo elettrico, il codice di esempio seguente può essere utilizzato per realizzare un sistema di controllo di apertura di una porta mediante riconoscimento facciale. Per questa applicazione utilizzeremo il codice seguente, che salveremo come AccessControl o come volete, e il circuito realizzato secondo lo stesso schema di Figura 2. Prima di caricare il codice nello sketch "AccessControl", occorre impostare la scheda ESP32-CAM e configurarla in modalità di programmazione. Alimentate il circuito, collegate la scheda convertitore seriale CH340 ad una porta USB del computer e predisponete la scheda ESP32-CAM in modalità di programmazione collegando a massa il pin GPIO0 e premendo il pulsante RESET della scheda ESP32-CAM. Ora, da Strumenti > Scheda, selezionate la scheda "ESP32 Wrover Module", poi selezionate la porta COM (su Windows) o ttyUSB (su Mac) corrispondente al driver del convertitore seriale CH340, infine, da "Partition Scheme:" selezionate "Face Recognition…".

/*********************AccessControl*************************/

#include "esp_camera.h"

#include "fd_forward.h"

#include "fr_forward.h"

#include "fr_flash.h"

 #define relayPin 2 // pin 12 can also be used

unsigned long currentMillis = 0;

unsigned long openedMillis = 0;

long interval = 5000;           

// open lock for ... milliseconds

 #define ENROLL_CONFIRM_TIMES 5

#define FACE_ID_SAVE_NUMBER 7

 static inline mtmn_config_t app_mtmn_config()

{

  mtmn_config_t mtmn_config = {0};

  mtmn_config.type = FAST;

  mtmn_config.min_face = 80;

  mtmn_config.pyramid = 0.707;

  mtmn_config.pyramid_times = 4; [...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2045 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici e potrai fare il download in formato PDF eBook e Mobi per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Una risposta

  1. fcrudo 13 Maggio 2021

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend