V tej vadnici se naučimo, kako pošiljati e-pošto iz mikrokrmilnika PIC z uporabo znanega modula WiFi ESP8266. Ta vadnica za programiranje uporablja prevajalnik IC in MPLABX ter XC8 PIC16F877A.
Na koncu te vadnice boste lahko pošiljali e-pošto iz katerega koli običajnega e-poštnega ID-ja, kot je Gmail, yahoo itd., Na kateri koli drug e-poštni ID. Zato ta vadnica predpostavlja, da imate nekaj osnovnega znanja o modulih ESP8266-01 in mikrokrmilnikih PIC. V nasprotnem primeru vam bodo pomagale naslednje vadnice
- Uvod v ESP8266
- Povezava ESP8266 s PIC
Začnimo torej…
Priprava na vaš e-poštni ID:
Ko se odločite, iz katerega poštnega ID-ja želite poslati e-pošto, sledite spodnjim korakom
1. korak: Obiščite https://www.smtp2go.com/ in se prijavite kot nov uporabnik. Vnesite svoje ime, e-poštni naslov in geslo svojega e-poštnega ID-ja, s katerega želite poslati pošto.
Ta vadnica uporablja ID pošte: aswinthcd @ gmail.com in Password: circuitdigest.
2. korak: Kliknite prijavo in na vneseni ID pošte boste prejeli potrditveno sporočilo. V tem primeru je to aswinthcd @ gmail.com. Odprite pošto in kliknite »AKTIVIRAJ RAČUN«
3. korak: Morda bo znova zahteval geslo, če bo vprašan, vnesite prejšnje geslo. V tem primeru je "diagramdigest". Nato boste prijavljeni na spletno mesto SMPT2GO. To je to, zdaj je vaš e-poštni naslov pripravljen za pošiljanje e-pošte z uporabo modula ESP8266.
4. korak: Zadnji korak je kodiranje e-poštnega ID-ja in gesla v osnovni format 64 s pomočjo tega spletnega mesta https://www.base64encode.org/. To bomo uporabili v našem programu PIC
V tem primeru bodo kodirane vrednosti videti tako, kot je prikazano v spodnji tabeli.
Parameter |
Običajna oblika |
Kodirano v osnovi 64 |
ID pošte |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Geslo |
circuitdigest |
Y2lyY3VpdGRpZ2VzdA == |
Priprava strojne opreme:
Celotna shema projekta je prikazana spodaj.
Zaslon LCD se tukaj uporablja za odpravljanje napak. Za to ni obvezno, da to povežete. Program bo dobro deloval tudi brez LCD zaslona. Če želite izvedeti več o shemah, obiščite to vadnico. (Povezovanje PIC z ESP).
To vezje lahko preprosto sestavite na plošči in nato nadaljujete s programiranjem.
Programiranje vašega PIC-a za pošiljanje e-pošte:
Za pošiljanje e-pošte z ESP8266 je treba modulu ESP poslati zaporedje ukazov AT. Za pošiljanje e-pošte z ESP8266 je treba slediti naslednjim korakom.
- Modul nastavite v način AP + STA (dostopna točka in postaja)
- Če želite vzpostaviti internetno povezavo, se povežite z dostopno točko
- Omogoči več povezav
- Zaženite strežnik na poljubnih vratih
- Vzpostavite povezavo TCP s spletnim mestom SMPT2GO
- Pojdite na razdelek Prijava na spletnem mestu
- Vnesite e-poštni ID in geslo v obliki base64
- Vnesite iz ID-ja pošte
- Vnesite na ID pošte
- Vnesite zadevo e-pošte
- Vnesite telo pošte
- Navedite konec pošte
- Pošlji pošto
- Zaprite povezavo TCP
To je nekoliko dolgotrajen in dolgočasen postopek, vendar ne skrbite. Postopek sem poenostavil z ustvarjanjem datoteke z glavo in ga lahko uporabite neposredno s klicem nekaterih funkcij (razloženo spodaj), kar olajša to nalogo. Celotno kodo skupaj z glavo lahko prenesete od tukaj.
Opomba: Če kodo uporabljate v novem projektu, prenesite datoteko glave in jo dodajte v svoj projekt.
Spodaj sem razložil nekatere pomembne dele kode, drugi deli so samoumevni. Če pa dvomite, uporabite odsek za komentarje.
/ * Preverite, ali je komunikacija ESP_PIC uspešna * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP ni mogoče najti"); } medtem ko (! esp8266_isStarted ()); // počakamo, da ESP pošlje nazaj "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP je povezan"); __zakasnitev_ms (1500); Lcd_Clear (); / * Da ESP komunikacija uspešna -Nadaljuj * /
Ta del kode se uporablja za preverjanje, ali je med PIC in ESP8266 vzpostavljena ustrezna komunikacija. Šele če bi oba lahko pošiljala in prejemala podatke prek USART, bo program prešel na naslednji korak.
esp8266_mode (3);
Ta funkcija bo ESP8266 preklopila v način 3. To pomeni, da lahko modul zdaj deluje kot dostopna točka in tudi kot strežnik.
esp8266_connect ("dom BPAS", "cracksun");
Ta funkcija se uporablja za povezavo modula ESP8266 z usmerjevalnikom Wifi. V tem primeru je "moj dom BPAS" ime mojega Wi-Fi signala in "cracksun" je moje geslo. Uporabiti morate svoje podatke o signalu Wifi.
_esp8266_enale_MUX (); // Omogoči več povezav _esp8266_create_server (); // Ustvari strežnik na vratih 80
Ti dve funkciji se uporabljata za omogočanje več povezav in ustvarjanje strežnika na vratih 80.
_esp8266_connect_SMPT2GO ();
Zdaj lahko s to funkcijo vzpostavimo TCP povezavo s SMPT2GO. Ko je povezava vzpostavljena, se ta funkcija premakne tudi na prijavno stran spletnega mesta.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
S to funkcijo vnesite svoj e-poštni ID in geslo v osnovni obliki 64. Kot lahko vidite, so te kodirane vrednosti enake kot v zgornji tabeli. Kodirane vrednosti se bodo razlikovale glede na vaš e-poštni ID in geslo.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Ta funkcija se uporablja za določanje imena ID-ja pošiljatelja. V tej vadnici pošiljam pošto z mojim Gmailovim ID-jem aswinthcd @ gmail.com, zato sem ga poslal kot parameter.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Ta funkcija se uporablja za določanje imena ID-ja sprejemnika. Svojo pošto bi rad poslal na drug svoj Gmailov račun, zato sem parameter poslal kot mailtoasiwnth @ gmail.com. Uporabite lahko želeni ID pošte
_esp8266_start_mail ();
Ta funkcija ukaže strežniku SMPT2GO, da bomo podali zadevo in telo pošte, in jo pripravi na isto.
_esp8266_mail_subject ("Mail from ESP8266");
S to funkcijo lahko določite zadevo pošte. Kot primer sem uporabil “Mail from ESP8266” kot predmet pošte.
_esp8266_mail_body ("Testiranje uspeha -CircuitDigest");
Po vnosu teme lahko s to funkcijo vnesete telo pošte. Kot primer sem za telo svoje pošte postavil “Testing Success –CircuitDigest”.
_esp8266_End_mail ();
Zdaj, ko smo vnesli zadevo in telo pošte, moramo strežniku SMPT2GO naročiti, da smo končali z dodajanjem podrobnosti v pošto. To lahko storite z uporabo funkcije
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Po pošiljanju pošte moramo končati povezavo TCP s strežnikom SMPT2GO. To se naredi z uporabo zgornje funkcije.
Delo:
Ko končate s strojno opremo in programom. Preprosto vstavite kodo v svoj PIC MCU. Nato vklopite vezje. Če gre vse po pričakovanjih, mora vaš LCD prikazati stanje postopka in na koncu izgovoriti »Mail sent«, kot je prikazano v spodnjem videoposnetku. Vaša strojna oprema je lahko videti nekako tako.
Ko se na LCD-prikazovalniku prikaže, da je sporočilo poslano, preverite, ali je v mapi Prejeto in Vsiljena pošta poslano. Morali bi prejeti pošto, kot je prikazano spodaj.
To je to, zdaj lahko naredite lastne IOT projekte tako, da preberete podatke senzorja in jih pošljete na svoj poštni ID. Ustvarite sistem varnostnih opozoril za svoj dom ali avtomobil, tako da sprožite opozorilo po pošti.
Če imate kakršen koli dvom ali se zataknete na sredini, prosimo, uporabite odsek za komentarje in z veseljem vam bom pomagal.