Dalam tutorial ini mari kita pelajari cara mengirim E-mel dari PIC Microcontroller menggunakan modul WiFi terkenal ESP8266. Tutorial ini menggunakan penyusun PIC16F877A IC dan MPLABX dan XC8 untuk pengaturcaraan.
Pada akhir tutorial ini, anda akan dapat menghantar E-mel dari mana-mana ID E-mel biasa seperti Gmail, yahoo dll ke ID E-mel yang lain. Oleh itu tutorial ini mengandaikan bahawa anda mempunyai beberapa pengetahuan asas mengenai ESP8266-01 Modul dan PIC Microcontroller. Sekiranya tidak, tutorial berikut akan membantu anda
- Bermula dengan ESP8266
- Memadankan ESP8266 dengan PIC
Oleh itu mari kita mulakan…
Bersedia dengan ID E-mel anda:
Setelah anda memutuskan dari mana ID e-mel yang anda ingin hantarkan e-mel, ikuti langkah-langkah di bawah
Langkah 1: Lawati https://www.smtp2go.com/ dan Daftar sebagai pengguna baru. Masukkan nama, alamat e-mel dan kata laluan ID E-mel anda dari mana anda ingin menghantar e-mel.
Tutorial ini menggunakan ID Mel: aswinthcd @ gmail.com dan Kata Laluan: circuitdigest.
Langkah 2: Klik mendaftar dan anda akan dihantar surat pengesahan ke ID mel yang anda masukkan. Dalam kes ini adalah aswinthcd @ gmail.com. Buka surat dan klik pada "AKTIFKAN AKAUN"
Langkah 3: Mungkin meminta kata laluan sekali lagi, jika diminta masukkan kata laluan sebelumnya. Dalam kes ini, ia adalah 'circuitdigest'. Kemudian anda akan log masuk ke laman web SMPT2GO. Itulah sekarang alamat E-mel anda siap untuk menghantar e-mel menggunakan Modul ESP8266.
Langkah 4: Langkah terakhir adalah menyandikan ID E-mel dan kata laluan ke dalam format asas 64 dengan menggunakan laman web ini https://www.base64encode.org/. Kami akan menggunakannya dalam program PIC kami
Dalam kes ini, nilai yang dikodkan akan kelihatan seperti yang ditunjukkan dalam jadual di bawah.
Parameter |
Format biasa |
Dikodkan di pangkalan 64 |
ID Mel |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Kata Laluan |
litar litar |
Y2lyY3VpdGRpZ2VzdA == |
Menyiapkan Perkakasan anda:
Skema lengkap projek ditunjukkan di bawah.
Paparan LCD digunakan di sini untuk tujuan penyahpepijatan. Anda tidak perlu menyambungkannya. Program ini akan berjalan lancar walaupun tanpa paparan LCD. Sekiranya anda ingin mengetahui lebih lanjut mengenai skema, lawati tutorial ini. (Memadankan PIC dengan ESP).
Anda hanya boleh memasang litar ini di papan roti dan kemudian meneruskan pengaturcaraan.
Memprogram PIC anda untuk menghantar E-mel:
Untuk menghantar E-mel dari ESP8266 urutan arahan AT harus dihantar ke modul ESP. Langkah-langkah berikut harus diikuti untuk menghantar E-mel dari ESP8266.
- Tetapkan modul dalam mod AP + STA (Titik Akses dan stesen)
- Sambungkan ke titik Akses untuk mendapatkan sambungan internet
- Dayakan berbilang sambungan
- Mulakan pelayan di mana-mana port tertentu
- Menjalin hubungan TCP dengan laman web SMPT2GO
- Navigasi ke bahagian Masuk laman web
- Masukkan ID E-mel dan Kata Laluan dalam format base64
- Masukkan Dari ID mel
- Masukkan ke ID mel
- Masukkan Subjek mel
- Masukkan isi surat
- Nyatakan akhir surat
- Hantar surat
- Tutup sambungan TCP
Prosesnya agak panjang dan membosankan tetapi jangan risau. Saya telah mempermudah prosesnya dengan membuat fail header dan anda boleh menggunakannya secara langsung dengan hanya memanggil beberapa fungsi (dijelaskan di bawah) yang menjadikan tugas ini sangat mudah. Kod lengkap bersama dengan fail tajuk boleh dimuat turun dari sini.
Catatan: Sekiranya anda menggunakan kod dalam projek baru, pastikan anda memuat turun fail tajuk dan menambahkannya dalam projek anda.
Saya telah menerangkan beberapa bahagian penting kod di bawah, bahagian-bahagian lain adalah jelas. Tetapi jika anda mempunyai keraguan, sila gunakan bahagian komen.
/ * Periksa sama ada komunikasi ESP_PIC berjaya * / lakukan {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP tidak dijumpai"); } sementara (! esp8266_isMulakan ()); // tunggu sehingga ESP menghantar kembali "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP disambungkan"); __delay_ms (1500); Lcd_Clear (); / * Ya komunikasi ESP berjaya -Lanjutkan * /
Bahagian kod ini digunakan untuk memeriksa sama ada terdapat komunikasi yang tepat antara PIC dan ESP8266. Hanya jika, kedua-duanya dapat mengirim dan menerima data melalui USART, program akan melangkah ke langkah seterusnya.
esp8266_mode (3);
Fungsi ini akan menetapkan ESP8266 dalam mod 3. Maksudnya modul sekarang boleh bertindak sebagai Jalur Akses dan juga sebagai pelayan.
esp8266_connect ("rumah BPAS", "cracksun");
Fungsi ini digunakan untuk menghubungkan modul ESP8266 anda ke Wifi Router anda. Dalam kes ini "BPAS home" adalah nama isyarat Wifi saya dan "cracksun" adalah kata laluan saya. Anda mesti menggunakan perincian isyarat Wifi anda sendiri.
_esp8266_enale_MUX (); // Dayakan berbilang sambungan _esp8266_create_server (); // Buat pelayan di port 80
Kedua fungsi ini digunakan untuk mengaktifkan pelbagai sambungan dan membuat pelayan di port 80.
_esp8266_connect_SMPT2GO ();
Sekarang, dengan menggunakan fungsi ini kita dapat membuat sambungan TCP dengan SMPT2GO. Setelah sambungan dibuat, fungsi ini juga berpindah ke halaman Login laman web.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
Gunakan fungsi ini untuk memasukkan ID E-mel dan kata laluan anda dalam format asas 64. Seperti yang anda lihat, nilai yang dikodkan ini sama seperti yang ditunjukkan dalam jadual di atas. Nilai dikod anda akan berbeza-beza berdasarkan ID E-mel dan kata laluan anda.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Fungsi ini digunakan untuk menentukan nama ID pengirim. Dalam tutorial ini saya menghantar e-mel menggunakan ID Gmail saya aswinthcd @ gmail.com oleh itu saya memberikannya sebagai parameter.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Fungsi ini digunakan untuk menentukan nama ID penerima. Saya ingin menghantar e-mel saya ke akaun Gmail saya yang lain, oleh itu saya telah meneruskan parameter sebagai mailtoasiwnth @ gmail.com Anda boleh menggunakan ID mel yang anda mahukan
_esp8266_start_mail ();
Fungsi ini memberi arahan kepada pelayan SMPT2GO yang akan kita masukkan dalam subjek dan isi surat dan menjadikannya siap untuk perkara yang sama.
_esp8266_mail_subject ("Mel dari ESP8266");
Anda boleh menggunakan fungsi ini untuk menentukan subjek surat. Sebagai contoh saya telah menggunakan "Mail from ESP8266" sebagai subjek surat.
_esp8266_mail_body ("Menguji Kejayaan -CircuitDigest");
Setelah memasukkan subjek anda boleh memasukkan isi surat menggunakan fungsi ini. Sebagai contoh saya telah menetapkan "Testing Success –CircuitDigest" sebagai isi surat saya.
_esp8266_End_mail ();
Sekarang kita telah memasukkan subjek dan isi surat, kita harus mengarahkan pelayan SMPT2GO bahawa kita sudah selesai dengan menambahkan perincian ke surat. Ini boleh dilakukan dengan menggunakan fungsi
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Akhirnya setelah menghantar surat, kita harus menghentikan sambungan TCP dengan pelayan SMPT2GO. Ini dilakukan dengan menggunakan fungsi di atas.
Bekerja:
Setelah selesai dengan perkakasan dan program anda. Cukup masukkan kod ke MCU PIC anda. Kemudian hidupkan litar anda. Sekiranya semuanya berjalan seperti yang diharapkan, LCD anda akan memaparkan status prosesnya dan akhirnya mengatakan "Mail dikirim" seperti yang ditunjukkan dalam video di bawah. Perkakasan anda mungkin kelihatan seperti ini.
Setelah LCD menunjukkan bahawa surat itu dihantar, periksa folder Peti Masuk dan Spam anda untuk mel yang dihantar. Anda semestinya telah menerima surat seperti di bawah..
Sekarang anda boleh membuat projek IOT anda sendiri dengan membaca data sensor dan menghantarnya ke ID mel anda. Buat sistem amaran Keselamatan untuk rumah atau kenderaan anda dengan mencetuskan amaran melalui surat.
Sekiranya anda mempunyai keraguan atau tersekat di tengah silakan gunakan bahagian komen dan saya dengan senang hati akan membantu anda.