In questo tutorial impariamo come inviare e-mail dal microcontrollore PIC utilizzando il famoso modulo WiFi ESP8266. Questo tutorial utilizza PIC16F877A IC e compilatore MPLABX e XC8 per la programmazione.
Alla fine di questo tutorial sarai in grado di inviare e-mail da qualsiasi normale ID e-mail come Gmail, yahoo ecc. A qualsiasi altro ID e-mail. Quindi questo tutorial presuppone che tu abbia una conoscenza di base sui moduli ESP8266-01 e sui microcontrollori PIC. In caso contrario, i seguenti tutorial ti aiuteranno
- Introduzione a ESP8266
- Interfacciamento di ESP8266 con PIC
Quindi iniziamo…
Prepararsi con il tuo ID e-mail:
Dopo aver deciso da quale ID di posta si desidera inviare le e-mail, seguire i passaggi seguenti
Passaggio 1: visita https://www.smtp2go.com/ e registrati come nuovo utente. Inserisci il tuo nome, indirizzo e-mail e password del tuo ID e-mail da cui desideri inviare la posta.
Questo tutorial utilizza l'ID posta: aswinthcd @ gmail.com e la password: circuitdigest.
Passaggio 2: fai clic su registrati e ti verrà inviata un'e-mail di verifica al tuo ID di posta inserito. In questo caso è aswinthcd @ gmail.com. Apri la posta e fai clic su "ATTIVA ACCOUNT"
Passaggio 3: potrebbe richiedere di nuovo una password, se richiesto immettere la password precedente. In questo caso è "circuitdigest". Quindi accederai al sito web di SMPT2GO. Ora il tuo indirizzo e-mail è pronto per inviare e-mail utilizzando il modulo ESP8266.
Passaggio 4: l'ultimo passaggio consiste nel codificare l'ID e la password e-mail nel formato base 64 utilizzando questo sito Web https://www.base64encode.org/. Lo useremo nel nostro programma PIC
In questo caso i valori codificati appariranno come mostrato nella tabella sottostante.
Parametro |
Formato normale |
Codificato in base 64 |
ID posta |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Parola d'ordine |
circuitdigest |
Y2lyY3VpdGRpZ2VzdA == |
Preparare l'hardware:
Di seguito è riportato lo schema completo del progetto.
Il display LCD viene utilizzato qui a scopo di debug. Non è obbligatorio collegarlo. Il programma funzionerà bene anche senza il display LCD. Se vuoi saperne di più sugli schemi, visita questo tutorial. (Interfacciamento PIC con ESP).
Puoi semplicemente montare questo circuito su una breadboard e poi procedere con la programmazione.
Programmare il tuo PIC per inviare e-mail:
Per inviare un'e-mail dall'ESP8266 è necessario inviare una sequenza di comandi AT al modulo ESP. I seguenti passaggi devono essere seguiti per inviare un'e-mail da ESP8266.
- Impostare il modulo in modalità AP + STA (Access Point and station)
- Connettiti a un punto di accesso per ottenere la connessione a Internet
- Abilita più connessioni
- Avvia un server su una porta specifica
- Stabilire una connessione TCP con il sito Web SMPT2GO
- Vai alla sezione Login del sito web
- Immettere l'ID e la password e-mail nel formato base64
- Immettere l'ID della posta
- Immettere l'ID della posta
- Inserisci l'oggetto della mail
- Inserisci il corpo della mail
- Indica la fine della posta
- Invia la mail
- Esci dalla connessione TCP
È un processo un po 'lungo e noioso, ma non preoccuparti. Ho semplificato il processo creando un file di intestazione e puoi usarlo direttamente chiamando alcune funzioni (spiegate di seguito) che rendono questa operazione molto semplice. Il codice completo insieme al file di intestazione può essere scaricato da qui.
Nota: se stai usando il codice in un nuovo progetto assicurati di scaricare il file di intestazione e di aggiungerlo al tuo progetto.
Ho spiegato alcune parti importanti del codice di seguito, le altre parti sono autoesplicative. Ma se hai dei dubbi sentiti libero di usare la sezione commenti.
/ * Controlla se la comunicazione ESP_PIC è riuscita * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP non trovato"); } while (! esp8266_isStarted ()); // aspetta che l'ESP rispedisca "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP è connesso"); __delay_ms (1500); Lcd_Clear (); / * Sì Comunicazione ESP riuscita -Procedi * /
Questa parte del codice viene utilizzata per verificare se è stata stabilita una comunicazione corretta tra PIC e ESP8266. Solo se entrambi potessero inviare e ricevere dati tramite USART il programma procederà al passaggio successivo.
esp8266_mode (3);
Questa funzione imposterà ESP8266 in modalità 3. Ciò significa che il modulo può ora agire come punto di accesso e anche come server.
esp8266_connect ("BPAS home", "cracksun");
Questa funzione viene utilizzata per collegare il modulo ESP8266 al router Wi-Fi. In questo caso "casa BPAS" è il nome del mio segnale Wifi e "cracksun" è la mia password. Devi utilizzare i dettagli del tuo segnale Wi-Fi.
_esp8266_enale_MUX (); // Abilita più connessioni _esp8266_create_server (); // Crea un server sulla porta 80
Queste due funzioni vengono utilizzate per abilitare più connessioni e creare un server sulla porta 80.
_esp8266_connect_SMPT2GO ();
Ora, utilizzando questa funzione, possiamo stabilire una connessione TCP con SMPT2GO. Una volta stabilita la connessione, questa funzione passa anche alla pagina di Login del sito.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Utilizzare questa funzione per inserire l'ID e-mail e la password nel formato base 64. Come puoi vedere, questi valori codificati sono gli stessi mostrati nella tabella sopra. I valori codificati variano in base all'ID e alla password e-mail.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Questa funzione viene utilizzata per definire il nome dell'ID mittente. In questo tutorial invio la posta utilizzando il mio ID Gmail aswinthcd @ gmail.com, quindi l'ho passato come parametro.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Questa funzione viene utilizzata per definire il nome dell'ID del ricevitore. Vorrei inviare le mie mail a un altro mio account Gmail, quindi ho passato il parametro come mailtoasiwnth @ gmail.com. È possibile utilizzare l'ID di posta desiderato
_esp8266_start_mail ();
Questa funzione istruisce il server SMPT2GO che stiamo per inserire l'oggetto e il corpo del messaggio e lo prepara per lo stesso.
_esp8266_mail_subject ("Posta da ESP8266");
È possibile utilizzare questa funzione per definire l'oggetto della posta. Come esempio ho usato "Mail from ESP8266" come oggetto della posta.
_esp8266_mail_body ("Testing Success -CircuitDigest");
Dopo aver inserito l'oggetto è possibile inserire il corpo della mail utilizzando questa funzione. Ad esempio, ho impostato "Testing Success –CircuitDigest" come corpo della mia posta.
_esp8266_End_mail ();
Ora che abbiamo inserito l'oggetto e il corpo della posta, dobbiamo istruire il server SMPT2GO che abbiamo finito di aggiungere i dettagli alla posta. Questo può essere fatto usando la funzione
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Infine, dopo aver inviato la mail, dobbiamo terminare la connessione TCP con il server SMPT2GO. Questo viene fatto usando la funzione sopra.
Lavorando:
Una volta che hai finito con l'hardware e il programma. Basta scaricare il codice nella MCU PIC. Quindi accendi il circuito. Se tutto va come previsto, il tuo LCD dovrebbe visualizzare lo stato del processo e infine finire per dire "Mail inviata" come mostrato nel video qui sotto. Il tuo hardware potrebbe assomigliare a questo.
Quando il display mostra che la posta è stata inviata, controlla la posta in arrivo e la cartella Spam per la posta inviata. Dovresti aver ricevuto la posta come mostrato di seguito..
È così che ora puoi creare i tuoi progetti IOT leggendo i dati di un sensore e inviandoli al tuo ID di posta. Crea un sistema di avviso di sicurezza per la tua casa o le tue automobili attivando un avviso tramite posta.
Se hai qualche dubbio o rimani bloccato nel mezzo usa gentilmente la sezione commenti e sarò felice di aiutarti.