In deze tutorial leren we hoe we e-mails kunnen verzenden vanaf PIC Microcontroller met behulp van de beroemde WiFi-module de ESP8266. Deze tutorial gebruikt PIC16F877A IC en MPLABX en XC8 compiler voor programmeren.
Aan het einde van deze tutorial kunt u e-mail verzenden vanaf elke normale e-mail-ID, zoals Gmail, Yahoo, enz. Naar elke andere e-mail-ID. Daarom wordt in deze tutorial ervan uitgegaan dat u enige basiskennis heeft over ESP8266-01-modules en PIC-microcontrollers. Als dit niet het geval is, zullen de volgende tutorials u helpen
- Aan de slag met ESP8266
- Koppeling van ESP8266 met PIC
Dus laten we beginnen…
Voorbereiden met uw e-mail-ID:
Als u eenmaal heeft besloten vanaf welk e-mailadres u de e-mails wilt verzenden, volgt u de onderstaande stappen
Stap 1: Bezoek https://www.smtp2go.com/ en meld u aan als nieuwe gebruiker. Voer uw naam, e-mailadres en wachtwoord in van uw e-mail-ID waarmee u de e-mail wilt verzenden.
Deze tutorial gebruikt de e-mail-ID: aswinthcd @ gmail.com en het wachtwoord: circuitdigest.
Stap 2: Klik op aanmelden en u ontvangt een verificatiemail naar uw opgegeven e-mailadres. In dit geval is het aswinthcd @ gmail.com. Open de mail en klik op "ACCOUNT ACTIVEREN"
Stap 3: Mogelijk wordt opnieuw om een wachtwoord gevraagd, voer desgevraagd het vorige wachtwoord in. In dit geval is het 'circuitdigest'. Vervolgens wordt u ingelogd op de SMPT2GO-website. Dat is het, nu is uw e-mailadres klaar om e-mails te verzenden met behulp van de ESP8266-module.
Stap 4: De laatste stap is het coderen van de e-mail-ID en het wachtwoord in base 64-indeling met behulp van deze website https://www.base64encode.org/. We gaan dit gebruiken in ons PIC-programma
In dat geval zien de gecodeerde waarden eruit zoals in onderstaande tabel.
Parameter |
Normaal formaat |
Gecodeerd in basis 64 |
E-mail-ID |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Wachtwoord |
circuitdigest |
Y2lyY3VpdGRpZ2VzdA == |
Uw hardware gereed maken:
Het volledige schema van het project wordt hieronder weergegeven.
Het LCD-scherm wordt hier gebruikt voor foutopsporing. U hoeft deze niet aan te sluiten. Het programma werkt prima, zelfs zonder het LCD-scherm. Als je meer wilt weten over de schema's, bezoek dan deze tutorial. (Koppeling van PIC met ESP).
U kunt dit circuit eenvoudig op een breadboard monteren en vervolgens doorgaan met programmeren.
Uw PIC programmeren om e-mail te verzenden:
Om een e-mail vanaf de ESP8266 te kunnen verzenden, moet een reeks AT-opdrachten naar de ESP-module worden gestuurd. De volgende stappen moeten worden gevolgd om een e-mail te verzenden vanuit ESP8266.
- Zet de module in AP + STA-modus (Toegangspunt en station)
- Maak verbinding met een toegangspunt om een internetverbinding te krijgen
- Schakel meerdere verbindingen in
- Start een server op een specifieke poort
- Breng een TCP-verbinding tot stand met de SMPT2GO-website
- Navigeer naar het Login-gedeelte van de website
- Voer de e-mail-ID en het wachtwoord in base64-indeling in
- Voer Van e-mail-ID in
- Voer naar e-mail-ID in
- Voer het onderwerp van de e-mail in
- Voer de hoofdtekst van de e-mail in
- Geef het einde van de mail aan
- Stuur de mail
- Verbreek de TCP-verbinding
Het is een wat langdurig en vervelend proces, maar maak je geen zorgen. Ik heb het proces vereenvoudigd door een header-bestand te maken en je kunt het direct gebruiken door enkele functies aan te roepen (hieronder uitgelegd), wat deze taak erg gemakkelijk maakt. De volledige code samen met het header-bestand kan hier worden gedownload.
Opmerking: als u de code in een nieuw project gebruikt, zorg er dan voor dat u het headerbestand downloadt en aan uw project toevoegt.
Ik heb enkele belangrijke delen van de onderstaande code uitgelegd, de andere delen spreken voor zich. Maar als u twijfelt, kunt u het commentaargedeelte gebruiken.
/ * Controleer of de ESP_PIC-communicatie is gelukt * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP niet gevonden"); } while (! esp8266_isStarted ()); // wacht tot de ESP "OK" Lcd_Set_Cursor (1,1) terugstuurt; Lcd_Print_String ("ESP is verbonden"); __delay_ms (1500); Lcd_Clear (); / * Ja ESP-communicatie geslaagd -Doorgaan * /
Dit deel van de code wordt gebruikt om te controleren of er een goede communicatie tot stand is gebracht tussen de PIC en ESP8266. Alleen als ze allebei gegevens kunnen verzenden en ontvangen via USART, gaat het programma verder met de volgende stap.
esp8266_mode (3);
Met deze functie wordt de ESP8266 in modus 3 gezet. Dit betekent dat de module nu kan fungeren als toegangspunt en ook als server.
esp8266_connect ("BPAS home", "cracksun");
Deze functie wordt gebruikt om uw ESP8266-module te verbinden met uw wifi-router. In dit geval is "BPAS home" de naam van mijn wifi-signaal en "cracksun" mijn wachtwoord. U moet uw eigen wifi-signaaldetails gebruiken.
_esp8266_enale_MUX (); // Schakel meerdere verbindingen _esp8266_create_server () in; // Maak een server op poort 80
Deze twee functies worden gebruikt om meerdere verbindingen mogelijk te maken en een server op poort 80 te maken.
_esp8266_connect_SMPT2GO ();
Met deze functie kunnen we nu een TCP-verbinding tot stand brengen met SMPT2GO. Zodra de verbinding tot stand is gebracht, gaat deze functie ook naar de inlogpagina van de website.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Gebruik deze functie om uw e-mail-ID en wachtwoord in het basis 64-formaat in te voeren. Zoals u kunt zien, zijn deze gecodeerde waarden dezelfde als die in de bovenstaande tabel. Uw gecodeerde waarden zullen variëren op basis van uw e-mail-ID en wachtwoord.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Deze functie wordt gebruikt om de naam van de afzender-ID te definiëren. In deze zelfstudie verzend ik de e-mail met mijn Gmail-ID aswinthcd @ gmail.com, vandaar dat ik deze als parameter heb doorgegeven.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Deze functie wordt gebruikt om de naam van de ontvanger-ID te definiëren. Ik zou graag mijn mails naar een ander Gmail-account van mij willen sturen, vandaar dat ik de parameter heb doorgegeven als mailtoasiwnth @ gmail.com. U kunt uw gewenste e-mail-ID gebruiken
_esp8266_start_mail ();
Deze functie instrueert de SMPT2GO-server dat we het onderwerp en de hoofdtekst van de e-mail gaan invoeren en maakt deze hierop voorbereid.
_esp8266_mail_subject ("E-mail van ESP8266");
U kunt deze functie gebruiken om het onderwerp van de mail te definiëren. Als voorbeeld heb ik "Mail from ESP8266" gebruikt als onderwerp van de mail.
_esp8266_mail_body ("Testsucces -CircuitDigest");
Na het invoeren van het onderwerp kunt u met deze functie de hoofdtekst van de mail invoeren. Als voorbeeld heb ik "Testing Success –CircuitDigest" ingesteld als de body van mijn mail.
_esp8266_End_mail ();
Nu we het onderwerp en de inhoud van de mail hebben ingevoerd, moeten we de SMPT2GO-server instrueren dat we klaar zijn met het toevoegen van details aan de mail. Dit kan gedaan worden door de functie te gebruiken
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Ten slotte moeten we na het verzenden van de mail de TCP-verbinding met de SMPT2GO-server verbreken. Dit wordt gedaan met behulp van de bovenstaande functie.
Werken:
Als u klaar bent met uw hardware en programma. Dump gewoon de code in je PIC MCU. Schakel vervolgens uw circuit in. Als alles verloopt zoals verwacht, zou uw LCD de status van het proces moeten weergeven en uiteindelijk "E-mail verzonden" moeten zeggen, zoals weergegeven in de onderstaande video. Uw hardware kan er ongeveer zo uitzien.
Zodra het LCD-scherm aangeeft dat de e-mail is verzonden, controleert u uw Postvak IN en de map Spam voor de verzonden e-mail. Je zou de mail moeten hebben ontvangen zoals hieronder getoond.
Dat is het nu, u kunt uw eigen IOT-projecten maken door sensorgegevens te lezen en naar uw e-mailadres te sturen. Creëer een beveiligingswaarschuwingssysteem voor uw huis of auto's door een waarschuwing via e-mail te activeren.
Als je twijfelt of vastloopt in het midden, gebruik dan alstublieft het commentaargedeelte en ik help je graag verder.