I denna handledning kan vi lära oss att skicka e-post från PIC Microcontroller med den berömda WiFi-modulen ESP8266. Denna handledning använder PIC16F877A IC- och MPLABX- och XC8-kompilator för programmering.
I slutet av denna handledning kommer du att kunna skicka e-post från alla vanliga e-post-ID som Gmail, yahoo etc till alla andra e-post-ID. Därför förutsätter denna handledning att du har grundläggande kunskaper om ESP8266-01-moduler och PIC-mikrokontroller. Om inte, kommer följande handledning att hjälpa dig
- Komma igång med ESP8266
- Gränssnitt ESP8266 med PIC
Så låt oss komma igång…
Gör dig redo med ditt e-post-ID:
När du har bestämt från vilket e-post-ID du vill skicka e-postmeddelandena, följ stegen nedan
Steg 1: Besök https://www.smtp2go.com/ och registrera dig som ny användare. Ange ditt namn, e-postadress och lösenord för ditt e-post-ID som du vill skicka e-postmeddelandet från.
Denna handledning använder Mail-ID: aswinthcd @ gmail.com och Password: circuitdigest.
Steg 2: Klicka på registreringen så skickas ett verifieringsmeddelande till ditt angivna e-post-ID. I det här fallet är det aswinthcd @ gmail.com. Öppna e-postmeddelandet och klicka på “AKTIVERA KONTO”
Steg 3: Det kan fråga om ett lösenord igen, om du blir ombedd, ange föregående lösenord. I det här fallet är det 'circuitdigest'. Då kommer du att vara inloggad på SMPT2GO-webbplatsen. Det är nu din e-postadress är redo att skicka e-post med ESP8266-modulen.
Steg 4: Det sista steget är att koda e-post-ID och lösenord till bas 64-format med hjälp av denna webbplats https://www.base64encode.org/. Vi kommer att använda detta i vårt PIC-program
I det här fallet ser de kodade värdena ut som visas i tabellen nedan.
Parameter |
Normalt format |
Kodad i bas 64 |
E-post-ID |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Lösenord |
circuitdigest |
Y2lyY3VpdGRpZ2VzdA == |
Förbereda din hårdvara:
Det fullständiga schemat för projektet visas nedan.
LCD-skärmen används här för felsökningsändamål. Det är inte obligatoriskt för dig att ansluta detta. Programmet fungerar bra även utan LCD-skärmen. Om du vill veta mer om schemat kan du besöka denna handledning. (Gränssnitts PIC med ESP).
Du kan helt enkelt montera den här kretsen på en bräda och sedan fortsätta med programmeringen.
Programmera din PIC för att skicka e-post:
För att skicka ett e-postmeddelande från ESP8266 måste en sekvens av AT-kommandon skickas till ESP-modulen. Följande steg måste följas för att skicka ett e-postmeddelande från ESP8266.
- Ställ in modulen i läget AP + STA (åtkomstpunkt och station)
- Anslut till en åtkomstpunkt för att få internetanslutning
- Aktivera flera anslutningar
- Starta en server på valfri port
- Upprätta en TCP-anslutning med SMPT2GO-webbplatsen
- Navigera till inloggningssektionen på webbplatsen
- Ange e-post-ID och lösenord i base64-format
- Ange från e-post-ID
- Ange till e-post-ID
- Ange ämnet för posten
- Ange e-postadressen
- Ange slutet på e-post
- Skicka e-postmeddelandet
- Avsluta TCP-anslutningen
Det är en lite lång och tråkig process men oroa dig inte. Jag har förenklat processen genom att skapa en rubrikfil och du kan använda den direkt genom att bara ringa några funktioner (förklaras nedan) vilket gör den här uppgiften väldigt lätt. Den fullständiga koden tillsammans med rubrikfilen kan laddas ner härifrån.
Obs! Om du använder koden i ett nytt projekt, se till att du laddar ner huvudfilen och lägger till den i ditt projekt.
Jag har förklarat några viktiga delar av koden nedan, de andra delarna är självförklarande. Men om du är osäker, använd gärna kommentarsektionen.
/ * Kontrollera om ESP_PIC-kommunikationen lyckas * / gör {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP hittades inte"); } medan (! esp8266_isStarted ()); // vänta tills ESP skickar tillbaka "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP är ansluten"); __fördröja_ms (1500); Lcd_Clear (); / * Ja ESP-kommunikation lyckad - Fortsätt * /
Denna del av koden används för att kontrollera om det finns en korrekt kommunikation mellan PIC och ESP8266. Bara om båda kan skicka och ta emot data via USART kommer programmet att gå vidare till nästa steg.
esp8266_mode (3);
Denna funktion ställer ESP8266 i läge 3. Det betyder att modulen nu kan fungera som en åtkomstpunkt och även som en server.
esp8266_connect ("BPAS hem", "cracksun");
Denna funktion används för att ansluta din ESP8266-modul till din Wifi-router. I det här fallet är “BPAS home” namnet på min Wifi-signal och “cracksun” är mitt lösenord. Du måste använda dina egna Wifi-signaluppgifter.
_esp8266_enale_MUX (); // Aktivera flera anslutningar _esp8266_create_server (); // Skapa en server på port 80
Dessa två funktioner används för att aktivera flera anslutningar och skapa en server på port 80.
_esp8266_connect_SMPT2GO ();
Nu, med den här funktionen kan vi upprätta en TCP-anslutning med SMPT2GO. När anslutningen har upprättats flyttar denna funktion också till inloggningssidan på webbplatsen.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Använd den här funktionen för att ange ditt e-post-ID och lösenord i bas 64-format. Som du kan se är de kodade värdena desamma som de som visas i tabellen ovan. Dina kodade värden varierar beroende på ditt e-post-ID och lösenord.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Denna funktion används för att definiera namnet på avsändar-ID: t. I den här handledningen skickar jag e-postmeddelandet med mitt Gmail-ID aswinthcd @ gmail.com, därför har jag skickat det som en parameter.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Denna funktion används för att definiera namnet på mottagar-ID. Jag vill skicka mina e-postmeddelanden till ett annat Gmail-konto för mig, därför har jag skickat parametern som mailtoasiwnth @ gmail.com. Du kan använda önskat e-post-ID
_esp8266_start_mail ();
Denna funktion instruerar SMPT2GO-servern att vi ska mata in postens ämne och kropp och gör den förberedd för detsamma.
_esp8266_mail_subject ("E-post från ESP8266");
Du kan använda den här funktionen för att definiera ämnet för e-post. Som ett exempel har jag använt “Mail från ESP8266” som ämnet för posten.
_esp8266_mail_body ("Testing Success -CircuitDigest");
När du har skrivit in ämnet kan du skriva in e-postmeddelandet med den här funktionen. Som ett exempel har jag ställt in "Testing Success –CircuitDigest" som min post.
_esp8266_End_mail ();
Nu när vi har angett postens ämne och kropp måste vi instruera SMPT2GO-servern att vi är klara med att lägga till information i e-posten. Detta kan göras med hjälp av funktionen
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Slutligen efter att vi har skickat e-posten måste vi avsluta TCP-anslutningen med SMPT2GO-servern. Detta görs med hjälp av ovanstående funktion.
Arbetssätt:
När du är klar med din hårdvara och ditt program. Släpp bara koden i din PIC MCU. Slå sedan på din krets. Om allt går som förväntat bör din LCD visa status för processen och slutligen säga "Mail skickad" som visas i videon nedan. Din hårdvara kan se ut ungefär så här.
När LCD-skärmen visar att e-postmeddelandet har skickats, kontrollera din inkorg och skräppostmapp för den skickade e-posten. Du borde ha fått posten enligt nedan.
Det är nu du kan skapa dina egna IOT-projekt genom att läsa sensordata och skicka dem till ditt e-post-ID. Skapa ett säkerhetsvarningssystem för ditt hem eller bilar genom att utlösa en varning via e-post.
Om du är osäker eller fastnar i mitten vänligen använd kommentarsektionen så hjälper jag dig gärna.