I denne vejledning lad os lære at sende e-mails fra PIC Microcontroller ved hjælp af det berømte WiFi-modul ESP8266. Denne tutorial bruger PIC16F877A IC og MPLABX og XC8 compiler til programmering.
I slutningen af denne vejledning kan du sende e-mail fra ethvert normalt e-mail-id som Gmail, yahoo osv. Til ethvert andet e-mail-id. Derfor forudsætter denne vejledning, at du har grundlæggende viden om ESP8266-01-moduler og PIC-mikrokontrollere. Hvis ikke, vil følgende tutorials hjælpe dig
- Kom godt i gang med ESP8266
- Interfacing ESP8266 med PIC
Så lad os komme i gang…
Gør dig klar med dit e-mail-id:
Når du har besluttet fra hvilket mail-id du vil sende e-mails, skal du følge nedenstående trin
Trin 1: Besøg https://www.smtp2go.com/ og tilmeld dig som en ny bruger. Indtast dit navn, e-mail-adresse og adgangskode til dit e-mail-id, som du vil sende e-mailen fra.
Denne tutorial bruger Mail-ID: aswinthcd @ gmail.com og Password: circuitdigest.
Trin 2: Klik på tilmeld dig, og du får tilsendt en bekræftelsesmail til dit indtastede mail-id. I dette tilfælde er det aswinthcd @ gmail.com. Åbn mailen, og klik på “AKTIVER KONTO”
Trin 3: Det beder muligvis om en adgangskode igen, hvis du bliver bedt om at indtaste den forrige adgangskode. I dette tilfælde er det 'circuitdigest'. Derefter vil du være logget ind på SMPT2GO-webstedet. Det er nu, din e-mail-adresse er klar til at sende mails ved hjælp af ESP8266-modulet.
Trin 4: Det sidste trin er at kode E-mail-id'et og adgangskoden til base 64-format ved hjælp af dette websted https://www.base64encode.org/. Vi skal bruge dette i vores PIC-program
I dette tilfælde ser de kodede værdier ud som vist i nedenstående tabel.
Parameter |
Normalt format |
Kodet i base 64 |
Mail-id |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Adgangskode |
circuitdigest |
Y2lyY3VpdGRpZ2VzdA == |
Gør din hardware klar:
Projektets komplette skema er vist nedenfor.
LCD-skærmen bruges her til fejlfindingsformål. Det er ikke obligatorisk for dig at forbinde dette. Programmet fungerer fint selv uden LCD-displayet. Hvis du vil vide mere om skemaerne, besøger du denne vejledning. (Interfacing PIC med ESP).
Du kan simpelthen samle dette kredsløb på et brødbræt og derefter fortsætte med programmeringen.
Programmering af din PIC til at sende e-mail:
For at sende en e-mail fra ESP8266 skal en sekvens af AT-kommandoer sendes til ESP-modulet. Følgende trin skal følges for at sende en e-mail fra ESP8266.
- Indstil modulet i AP + STA (adgangspunkt og station) -tilstand
- Opret forbindelse til et adgangspunkt for at få internetforbindelse
- Aktivér flere forbindelser
- Start en server på en bestemt port
- Opret en TCP-forbindelse med SMPT2GO-webstedet
- Naviger til afsnittet Login på webstedet
- Indtast e-mail-id'et og adgangskoden i base64-format
- Indtast fra mail-id
- Indtast til mail-id
- Indtast emnets post
- Indtast brødteksten
- Angiv slutningen af mailen
- Send mailen
- Afslut TCP-forbindelsen
Det er en lidt langvarig og kedelig proces, men rolig. Jeg har forenklet processen ved at oprette en header-fil, og du kan bruge den direkte ved blot at ringe til nogle funktioner (forklaret nedenfor), hvilket gør denne opgave meget let. Den komplette kode sammen med headerfilen kan downloades herfra.
Bemærk: Hvis du bruger koden i et nyt projekt, skal du sørge for at downloade headerfilen og tilføje den i dit projekt.
Jeg har forklaret nogle vigtige dele af koden nedenfor, de andre dele er selvforklarende. Men hvis du er i tvivl, er du velkommen til at bruge kommentarsektionen.
/ * Kontroller, om ESP_PIC-kommunikationen er vellykket * / gør {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP ikke fundet"); } mens (! esp8266_isStarted ()); // vent til ESP sender "OK" Lcd_Set_Cursor (1,1) tilbage; Lcd_Print_String ("ESP er tilsluttet"); __forsink_ms (1500); Lcd_Clear (); / * Ja ESP-kommunikation vellykket -Fortsæt * /
Denne del af koden bruges til at kontrollere, om der er etableret en ordentlig kommunikation mellem PIC og ESP8266. Kun hvis begge kunne sende og modtage data via USART, fortsætter programmet til næste trin.
esp8266_mode (3);
Denne funktion indstiller ESP8266 i tilstand 3. Betydning, at modulet nu kan fungere som et adgangspunkt og også som en server.
esp8266_connect ("BPAS home", "cracksun");
Denne funktion bruges til at forbinde dit ESP8266-modul til din Wifi-router. I dette tilfælde er “BPAS home” navnet på mit Wifi-signal, og “cracksun” er min adgangskode. Du skal bruge dine egne Wifi-signaloplysninger.
_esp8266_enale_MUX (); // Aktivér flere forbindelser _esp8266_create_server (); // Opret en server på port 80
Disse to funktioner bruges til at aktivere flere forbindelser og oprette en server på port 80.
_esp8266_connect_SMPT2GO ();
Nu ved hjælp af denne funktion kan vi etablere en TCP-forbindelse med SMPT2GO. Når forbindelsen er oprettet, flyttes denne funktion også til websiden Login.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Brug denne funktion til at indtaste dit e-mail-id og din adgangskode i base 64-format. Som du kan se er disse kodede værdier de samme som vist i tabellen ovenfor. Dine kodede værdier vil variere afhængigt af dit e-mail-id og din adgangskode.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Denne funktion bruges til at definere navnet på afsender-id'et. I denne vejledning sender jeg mailen ved hjælp af mit Gmail-id aswinthcd @ gmail.com, derfor har jeg sendt den som en parameter.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Denne funktion bruges til at definere navnet på modtager-ID'et. Jeg vil gerne sende mine mails til en anden Gmail-konto, derfor har jeg passeret parameteren som mailtoasiwnth @ gmail.com. Du kan bruge dit ønskede mail-id
_esp8266_start_mail ();
Denne funktion instruerer SMPT2GO-serveren, som vi skal give i emnets emne og brødtekst og gør den klar til det samme.
_esp8266_mail_subject ("Mail fra ESP8266");
Du kan bruge denne funktion til at definere emnet for mailen. Som et eksempel har jeg brugt “Mail fra ESP8266” som emnet for mailen.
_esp8266_mail_body ("Testing Success-CircuitDigest");
Når du har indtastet emnet, kan du indtaste brødteksten ved hjælp af denne funktion. Som et eksempel har jeg indstillet “Testing Success –CircuitDigest” som brødteksten i min mail.
_esp8266_End_mail ();
Nu hvor vi har indtastet emnets emne og brødtekst, skal vi instruere SMPT2GO-serveren om, at vi er færdige med at tilføje detaljer til mailen. Dette kan gøres ved hjælp af funktionen
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Endelig efter afsendelse af mailen er vi nødt til at afslutte TCP-forbindelsen med SMPT2GO-serveren. Dette gøres ved hjælp af ovenstående funktion.
Arbejder:
Når du er færdig med din hardware og dit program. Dump blot koden i din PIC MCU. Tænd derefter dit kredsløb. Hvis alt går som forventet, skal din LCD vise status for processen og til sidst ende med at sige "Mail sendt" som vist i videoen nedenfor. Din hardware kan se sådan ud.
Når LCD-skærmen viser, at mailen er sendt, skal du kontrollere din indbakke og spam-mappen for den sendte mail. Du skulle have modtaget mailen som vist nedenfor..
Det er det nu, du kan lave dine egne IOT-projekter ved at læse sensordata og sende dem til dit mail-id. Opret et sikkerhedsalarmsystem til dit hjem eller biler ved at udløse en advarsel via mail.
Hvis du er i tvivl eller sidder fast i midten, bedes du bruge kommentarsektionen, så hjælper jeg dig gerne.