În acest tutorial să învățăm cum să trimitem e-mailuri de la microcontrolerul PIC folosind celebrul modul WiFi ESP8266. Acest tutorial utilizează compilatorul PIC16F877A IC și MPLABX și XC8 pentru programare.
La sfârșitul acestui tutorial, veți putea trimite e-mailuri de la orice ID de e-mail normal, cum ar fi Gmail, Yahoo etc., la orice alt ID de e-mail. Prin urmare, acest tutorial presupune că aveți cunoștințe de bază despre modulele ESP8266-01 și microcontrolerele PIC. Dacă nu, următoarele tutoriale vă vor ajuta
- Noțiuni introductive despre ESP8266
- Interfațarea ESP8266 cu PIC
Deci, hai să începem…
Pregătirea cu ID-ul de e-mail:
După ce ați decis din ce ID de e-mail doriți să trimiteți e-mailurile, urmați pașii de mai jos
Pasul 1: Accesați https://www.smtp2go.com/ și înscrieți-vă ca utilizator nou. Introduceți numele, adresa de e-mail și parola ID-ului dvs. de e-mail de la care doriți să trimiteți e-mailul.
Acest tutorial utilizează ID-ul de e-mail: aswinthcd @ gmail.com și Password: circuitdigest.
Pasul 2: Faceți clic pe înscriere și vi se va trimite un e-mail de verificare la ID-ul dvs. de e-mail introdus. În acest caz, este aswinthcd @ gmail.com. Deschideți e-mailul și faceți clic pe „ACTIVAȚI CONTUL”
Pasul 3: s-ar putea să solicite din nou o parolă, dacă vi se solicită introduceți parola anterioară. În acest caz este „circuitdigest”. Apoi veți fi conectat la site-ul web SMPT2GO. Asta este acum, adresa dvs. de e-mail este pregătită să trimită mesaje utilizând modulul ESP8266.
Pasul 4: Ultimul pas este de a codifica ID-ul de e-mail și parola în formatul de bază 64 utilizând acest site web https://www.base64encode.org/. Vom folosi acest lucru în programul nostru PIC
În acest caz, valorile codificate vor arăta așa cum se arată în tabelul de mai jos.
Parametru |
Format normal |
Codificat în baza 64 |
ID de e-mail |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Parola |
circuitdigest |
Y2lyY3VpdGRpZ2VzdA == |
Pregătirea hardware-ului:
Schema completă a proiectului este prezentată mai jos.
Afișajul LCD este utilizat aici în scopul depanării. Nu este obligatoriu să conectați acest lucru. Programul va funcționa bine chiar și fără afișajul LCD. Dacă doriți să aflați mai multe despre schemele, vizitați acest tutorial. (Interfațarea PIC cu ESP).
Puteți pur și simplu asambla acest circuit pe o placă de calcul și apoi continuați cu programarea.
Programarea PIC pentru a trimite e-mail:
Pentru a trimite un e-mail de la ESP8266, trebuie trimisă o secvență de comenzi AT către modulul ESP. Următorii pași trebuie urmați pentru a trimite un e-mail de la ESP8266.
- Setați modulul în modul AP + STA (punct de acces și stație)
- Conectați-vă la un punct de acces pentru a obține conexiune la internet
- Activați mai multe conexiuni
- Porniți un server pe orice port specific
- Stabiliți o conexiune TCP cu site-ul web SMPT2GO
- Navigați la secțiunea de autentificare a site-ului web
- Introduceți ID-ul de e-mail și parola în format base64
- Introduceți din ID-ul de e-mail
- Introduceți ID-ul de e-mail
- Introduceți subiectul e-mailului
- Introduceți corpul e-mailului
- Indicați sfârșitul corespondenței
- Trimiteți e-mailul
- Părăsiți conexiunea TCP
Este un proces cam lung și plictisitor, dar nu vă faceți griji. Am simplificat procesul prin crearea unui fișier antet și îl puteți utiliza direct apelând doar câteva funcții (explicate mai jos) ceea ce face această sarcină foarte ușoară. Codul complet împreună cu fișierul antet pot fi descărcate de aici.
Notă: Dacă utilizați codul într-un proiect nou, asigurați-vă că descărcați fișierul antet și îl adăugați în proiect.
Am explicat câteva părți importante ale codului de mai jos, celelalte părți se explică de la sine. Dar dacă aveți dubii, nu ezitați să folosiți secțiunea de comentarii.
/ * Verificați dacă comunicarea ESP_PIC are succes * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nu a fost găsit"); } while (! esp8266_isStarted ()); // așteptați până când ESP trimite înapoi „OK” Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP este conectat"); __delay_ms (1500); Lcd_Clear (); / * Da Comunicare ESP reușită -Procedeți * /
Această parte a codului este utilizată pentru a verifica dacă există o comunicare corectă stabilită între PIC și ESP8266. Numai dacă ambii ar putea trimite și primi date prin USART, programul va trece la pasul următor.
esp8266_mode (3);
Această funcție va seta ESP8266 în modul 3. Adică modulul poate acționa acum ca punct de acces și, de asemenea, ca server.
esp8266_connect ("BPAS acasă", "cracksun");
Această funcție este utilizată pentru a vă conecta modulul ESP8266 la routerul Wifi. În acest caz, „BPAS home” este numele semnalului meu Wifi, iar „cracksun” este parola mea. Trebuie să utilizați propriile detalii ale semnalului Wifi.
_esp8266_enale_MUX (); // Activați conexiuni multiple _esp8266_create_server (); // Creați un server pe portul 80
Aceste două funcții sunt utilizate pentru a activa conexiuni multiple și pentru a crea un server pe portul 80.
_esp8266_connect_SMPT2GO ();
Acum, folosind această funcție putem stabili o conexiune TCP cu SMPT2GO. Odată ce conexiunea este stabilită, această funcție se mută și pe pagina de autentificare a site-ului web.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Utilizați această funcție pentru a introduce ID-ul de e-mail și parola în formatul de bază 64. După cum puteți vedea, aceste valori codificate sunt aceleași cu cele prezentate în tabelul de mai sus. Valorile codificate vor varia în funcție de ID-ul de e-mail și parola.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Această funcție este utilizată pentru a defini numele ID-ului expeditorului. În acest tutorial trimit e-mailul utilizând ID-ul meu Gmail aswinthcd @ gmail.com, prin urmare l-am transmis ca parametru.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Această funcție este utilizată pentru a defini numele ID-ului receptorului. Aș dori să-mi trimit mesajele către un alt cont Gmail de-al meu, prin urmare am trecut parametrul ca mailtoasiwnth @ gmail.com. Puteți utiliza ID-ul de e-mail dorit
_esp8266_start_mail ();
Această funcție instruiește serverul SMPT2GO că vom furniza subiectul și corpul e-mailului și îl pregătește pentru același lucru.
_esp8266_mail_subject ("E-mail de la ESP8266");
Puteți utiliza această funcție pentru a defini subiectul e-mailului. De exemplu, am folosit „Mail from ESP8266” ca subiect al mail-ului.
_esp8266_mail_body ("Testarea succesului -CircuitDigest");
După ce ați introdus subiectul, puteți introduce corpul e-mailului utilizând această funcție. De exemplu, am setat „Testarea succesului –CircuitDigest” ca corp al e-mailului meu.
_esp8266_End_mail ();
Acum, după ce am introdus subiectul și corpul e-mailului, trebuie să informăm serverul SMPT2GO că am terminat cu adăugarea detaliilor la e-mail. Acest lucru se poate face folosind funcția
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
În cele din urmă, după trimiterea e-mailului, trebuie să încheiem conexiunea TCP cu serverul SMPT2GO. Acest lucru se face folosind funcția de mai sus.
Lucru:
Odată ce ați terminat cu hardware-ul și programul. Pur și simplu aruncați codul în PIC MCU. Apoi porniți circuitul. Dacă totul merge așa cum era de așteptat, LCD-ul dvs. ar trebui să afișeze starea procesului și, în cele din urmă, să spună „E-mail trimis”, așa cum se arată în videoclipul de mai jos. Hardware-ul dvs. ar putea arăta cam așa.
După ce afișajul LCD arată că e-mailul a fost trimis, verificați dosarul Mesaje primite și Spam pentru mesajele trimise. Ar fi trebuit să primiți e-mailul așa cum se arată mai jos..
Asta este acum, puteți să vă creați propriile proiecte IOT citind datele senzorului și trimițându-le la ID-ul dvs. de e-mail. Creați un sistem de alertă de securitate pentru casa sau automobilele dvs., declanșând o alertă prin poștă.
Dacă aveți vreo îndoială sau rămâneți blocați în mijloc, folosiți cu amabilitate secțiunea de comentarii și vă voi ajuta cu plăcere.