Usando una ESP-Cam, basata su ESP32, possiamo scattare foto e inviarle per e-mail

In qualche articolo fa [LINK] abbiamo visto come sfruttare la connettività Wi-Fi inclusa nella ESP32 per inviare e-mail di testo o in HTML. Oggi vedremo come adoperare una ESP-Cam, ossia una dev-board ESP32 con camera integrata, per scattare foto ed inviarle per e-mail.

Dev-Board

Per questo progetto adopereremo una ESP32-WROVER, brandizzata Freenove, che integra una cam e non necessità di adattatori esterni per caricare gli sketch. Potete acquistare la scheda su Amazon a questo LINK per 19€. Il vantaggio maggiore sarà proprio questo: connetteremo la scheda al PC, tramite un cavetto micro-USB, e caricheremo il codice. Per maggiori dettagli sulla scheda, eccovi il LINK da cui scaricare datasheet e sketch di esempio.

Fase preliminare

Iniziamo creando un nuovo account di posta a questo LINK, nel nostro esempio adoperiamo Gmail, la e-mail di Google. Compiliamo tutti i campi, assicurandoci di non adoperare password banali.



N.B.: ti consigliamo vivamente di evitare di usare il tuo account Gmail e di crearne uno appositamente pensato per la ESP32, poiché se qualcosa dovesse andare storta nella programmazione e le richieste fossero troppe, Google potrebbe bloccare il tuo account e generare una serie di problematiche di cui non ci assumiamo alcun modo la responsabilità.

Il passo seguente è accedere alla sezione “Gestisci il tuo Account Google” cliccando sull’icona che appare in alto a destra della pagina web.

e-mail

Nella barra dei menu laterale, clicchiamo su Sicurezza, andando sulla scheda Accesso a Google per impostare la Verifica in due passaggi. Quando avrete impostato la verifica in due passaggi, muoviamoci per impostare una Password per le app.

e-mail

La procedura è guidata ed è molto semplice; scegliamo come app Posta e come dispositivo Altra (nome personalizzato). Scriviamo il nome da dare al nostro dispositivo.

e-mail

Per mancanza di fantasia, il nostro dispositivo si chiamerà ESP32. Verrà generata una password per la nostra app, come appare in immagine, che inseriremo nello sketch, quindi va conservata gelosamente.

e-mail

Ora che abbiamo ricavato il nome della nostra app e la sua password, facciamo una rapida ricerca su Google per trovare i parametri SMTP per Gmail. Per evitarvi la seccatura di cercare, ecco di seguito i parametri necessari:

  • Host SMTP: smtp.gmail.com
  • Nome utente: [la nostra e-mail]
  • Password: [password dell’app]
  • Porta SMTP con SSL: 465 
  • Porta SMTO con TLS: 587

Ricordatevi che è impostato un limite giornaliero di 2000 e-mail.



Codice

Per inviare e-mail con ESP32 sarà necessario affidarci ad una apposita libreria, chiamata ESP-Mail-Client e scaricabile al seguente LINK. Una volta scaricata ed installata sulla IDE di Arduino, scaricate il file zippato, che contiene il codice che abbiamo preparato per voi, scaricandolo a questo LINK. Apritele ed estraete la cartella CameraSendSMTP, al cui interno 4 file.

ESP-Cam

Una volta estratta la cartella, aprite il file CameraSendSMTP.ino , assicurandoci che gli altri file siano stati aperti come schede.

ESP-Cam

Muoviamoci per configurare assieme lo sketch per l’invio una foto scattata con la ESP-Cam. Inseriamo per primo il nome della nostra rete Wi-Fi e la relativa password.


const char *ssid_Router = "SSID_NAME";
const char *password_Router = "PASSWORD";

Definiamo poi il nome dell’Host come segue:


#define SMTP_HOST "smtp.gmail.com"

Per la porta scegliamo se usare quella con SSL o TLS


#define SMTP_PORT esp_mail_smtp_port_465

Inseriamo le credenziali della e-mail dalla quale inviare il messaggio.


#define AUTHOR_EMAIL "lamiaemail@gmail.com"
#define AUTHOR_PASSWORD "passwordellapp"

Nel VOID SETUP troviamo le impostazioni per il dominio utente della e-mail, da lasciare vuoto


session.login.user_domain = F("");

e per la impostazioni di invio messaggio, come il nome del mittente (message.sender.name), l’oggetto della e-mail (message.subject), il nome del destinatario e la sua e-mail (message.addRecipient) ed, infine, il corpo della e-mail.


message.sender.name = F("ESP Mail");
message.sender.email = AUTHOR_EMAIL;
message.subject = F("Invio immagine da camera");
message.addRecipient(F("ESP32-CAM"), F("emaildeldestinatario"));
message.html.content = F("<span style=\"color:#ff0000;\">L'immagine della camera.</span><br/><br/><img src=\"cid:image-001\" alt=\"esp32 cam image\" width=\"800\" height=\"600\">");

Non ci resta che selezionare la nostra ESP-Cam, la relativa porta e caricare lo sketch.

ESP-Cam

Se tutto è andato bene, apparirà questo su monitor seriale.

Aprendo poi la casella di posta riceveremo una e-mail con un file JPG in allegato.

ESP-Cam