Bu eğitimde, ünlü WiFi modülü ESP8266'yı kullanarak PIC Microcontroller'den nasıl E-posta göndereceğimizi öğrenelim. Bu öğretici, programlama için PIC16F877A IC ve MPLABX ve XC8 derleyicisini kullanır.
Bu öğreticinin sonunda, Gmail, yahoo vb. Gibi herhangi bir normal E-posta Kimliğinden başka herhangi bir E-posta Kimliğine E-posta gönderebileceksiniz. Bu nedenle bu eğitim, ESP8266-01 Modülleri ve PIC Mikroişlemcileri hakkında bazı temel bilgilere sahip olduğunuzu varsayar. Değilse, aşağıdaki eğitimler size yardımcı olacaktır
- ESP8266 ile Başlarken
- ESP8266'nın PIC ile arayüz bağlantısı
Öyleyse başlayalım…
Sizinle hazırlanmak E-posta kimliği:
E-postaları hangi posta kimliğinden göndermek istediğinize karar verdikten sonra aşağıdaki adımları izleyin
Adım 1: https://www.smtp2go.com/ adresini ziyaret edin ve yeni bir kullanıcı olarak kaydolun. Postayı göndermek istediğiniz E-posta kimliğinizin adınızı, E-posta adresinizi ve şifrenizi girin.
Bu eğitici Posta Kimliği: aswinthcd @ gmail.com ve Şifre: Circuitdigest kullanır.
Adım 2: Kaydol'a tıklayın ve girdiğiniz posta kimliğinize bir doğrulama postası gönderilecektir. Bu durumda aswinthcd @ gmail.com şeklindedir. Postayı açın ve "HESABI ETKİNLEŞTİR" e tıklayın
Adım 3: Önceki şifreyi girmeniz istenirse tekrar şifre sorabilir. Bu durumda "devre testi" dir. Daha sonra SMPT2GO web sitesinde oturum açacaksınız. Yani artık E-posta adresiniz ESP8266 Modülünü kullanarak posta göndermeye hazırdır.
Adım 4: Son adım, https://www.base64encode.org/ web sitesini kullanarak E-posta kimliğini ve parolayı temel 64 biçimine kodlamaktır. Bunu PIC programımızda kullanacağız
Bu durumda, kodlanan değerler aşağıdaki tabloda gösterildiği gibi görünecektir.
Parametre |
Normal format |
64 tabanında kodlanmıştır |
Posta Kimliği |
aswinthcd @ gmail.com |
YXN3aW50aGNkQGdtYWlsLmNvbQ == |
Parola |
devre testi |
Y2lyY3VpdGRpZ2VzdA == |
Donanımınızı Hazırlama:
Projenin tam şeması aşağıda gösterilmiştir.
LCD ekran burada hata ayıklama amacıyla kullanılır. Bunu bağlamanız zorunlu değildir. Program, LCD ekran olmadan da iyi çalışacaktır. Şemalar hakkında daha fazla bilgi edinmek istiyorsanız bu eğiticiyi ziyaret edin. (PIC ile ESP'yi arayüzleme).
Bu devreyi bir breadboard üzerine monte edebilir ve ardından programlamaya devam edebilirsiniz.
PIC'nizi E-posta gönderecek şekilde programlama:
Amacıyla ESP8266 bir e-posta göndermek AT komutları dizisi ESP modülüne gönderilen gerekmektedir. ESP8266'dan bir E-posta göndermek için aşağıdaki adımların izlenmesi gerekir.
- Modülü AP + STA (Erişim Noktası ve istasyon) modunda ayarlayın
- İnternet bağlantısı almak için bir Erişim noktasına bağlanın
- Birden çok bağlantıyı etkinleştirin
- Herhangi bir belirli bağlantı noktasında bir sunucu başlatın
- SMPT2GO web sitesi ile bir TCP bağlantısı kurun
- Web sitesinin Giriş bölümüne gidin
- E-posta Kimliğini ve Parolayı base64 biçiminde girin
- Gönderen posta kimliğini girin
- Posta kimliğine girin
- Postanın Konusunu girin
- Postanın gövdesini girin
- Postanın sonunu belirtin
- Postayı gönder
- TCP bağlantısından çıkın
Biraz uzun ve yorucu bir süreç ama merak etmeyin. Süreci bir başlık dosyası oluşturarak basitleştirdim ve bu görevi çok kolaylaştıran bazı işlevleri (aşağıda açıklanmıştır) çağırarak doğrudan kullanabilirsiniz. Başlık dosyasıyla birlikte kodun tamamı buradan indirilebilir.
Not: Kodu yeni bir projede kullanıyorsanız, başlık dosyasını indirdiğinizden ve projenize eklediğinizden emin olun.
Aşağıda kodun bazı önemli kısımlarını açıkladım, diğer kısımları ise kendinden açıklamalı. Ancak herhangi bir şüpheniz varsa yorum bölümünü kullanmaktan çekinmeyin.
/ * ESP_PIC iletişiminin başarılı olup olmadığını kontrol edin * / do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP bulunamadı"); } while (! esp8266_isStarted ()); // ESP "Tamam" ı geri gönderene kadar bekleyin Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP bağlı"); __delay_ms (1500); Lcd_Clear (); / * Evet ESP iletişimi başarılı - Devam et * /
Kodun bu kısmı, PIC ile ESP8266 arasında düzgün bir iletişim kurulup kurulmadığını kontrol etmek için kullanılır. Yalnızca her ikisi de USART aracılığıyla veri gönderip alabilirse, program bir sonraki adıma geçecektir.
esp8266_mode (3);
Bu işlev, ESP8266'yı mod 3'e ayarlayacaktır. Bu, modülün artık bir Erişim noktası ve aynı zamanda bir sunucu olarak hareket edebileceği anlamına gelir.
esp8266_connect ("BPAS ana sayfası", "cracksun");
Bu işlev, ESP8266 modülünüzü Wifi Yönlendiricinize bağlamak için kullanılır. Bu durumda, "BPAS ev" Wifi sinyalimin adı ve "cracksun" şifremdir. Kendi Wifi sinyal ayrıntılarınızı kullanmanız gerekir.
_esp8266_enale_MUX (); // Birden çok bağlantıyı etkinleştirin _esp8266_create_server (); // 80 numaralı bağlantı noktasında bir sunucu oluştur
Bu iki işlev, birden çok bağlantıyı etkinleştirmek ve 80 numaralı bağlantı noktasında bir sunucu oluşturmak için kullanılır.
_esp8266_connect_SMPT2GO ();
Artık bu işlevi kullanarak SMPT2GO ile bir TCP bağlantısı kurabiliriz. Bağlantı kurulduktan sonra bu işlev web sitesinin Oturum Açma sayfasına da taşınır.
_esp8266_login_mail ("YXN3aW50aGNkQGdtYWlsLmNvbQ ==", "Y2lyY3VpdGRpZ2VzdA ==");
E-posta Kimliğinizi ve şifrenizi temel 64 formatında girmek için bu işlevi kullanın. Gördüğünüz gibi bu kodlanmış değerler yukarıdaki tabloda gösterilenlerle aynıdır. Kodlanmış değerleriniz, E-posta kimliğinize ve şifrenize bağlı olarak değişecektir.
_esp8266_mail_sendID ("aswinthcd @ gmail.com");
Bu işlev, gönderen kimliğinin adını tanımlamak için kullanılır. Bu eğiticide, Gmail kimliğimi aswinthcd @ gmail.com kullanarak gönderiyorum, dolayısıyla onu bir parametre olarak geçtim.
_esp8266_mail_recID ("mailtoaswinth @ gmail.com");
Bu işlev, alıcı kimliğinin adını tanımlamak için kullanılır. Postalarımı başka bir Gmail hesabıma göndermek istiyorum, dolayısıyla parametreyi mailtoasiwnth @ gmail.com olarak geçtim. İstediğiniz mail kimliğini kullanabilirsiniz
_esp8266_start_mail ();
Bu işlev, SMPT2GO sunucusuna postanın konusunu ve gövdesini besleyeceğimizi bildirir ve onu buna hazır hale getirir.
_esp8266_mail_subject ("ESP8266'dan Posta");
Postanın konusunu tanımlamak için bu işlevi kullanabilirsiniz. Örnek olarak, postanın konusu olarak “ESP8266'dan Posta” kullandım.
_esp8266_mail_body ("Testing Success -CircuitDigest");
Konuyu girdikten sonra bu işlevi kullanarak postanın gövdesine girebilirsiniz. Örnek olarak, postamın gövdesi olarak "Testing Success –CircuitDigest" i ayarladım.
_esp8266_End_mail ();
Artık postanın konusunu ve gövdesini girdiğimize göre, SMPT2GO sunucusuna postaya ayrıntıları eklemeyi bitirdiğimizi bildirmemiz gerekiyor. Bu, işlevi kullanılarak yapılabilir
_esp8266_End_mail ();
_esp8266_disconnect_SMPT2GO ();
Son olarak postayı gönderdikten sonra, SMPT2GO sunucusu ile olan TCP bağlantısını kesmemiz gerekiyor. Bu, yukarıdaki işlevi kullanarak yapılır.
Çalışma:
Donanımınız ve programınızla işiniz bittiğinde. Kodu PIC MCU'nuza dökmeniz yeterlidir. Ardından devrenizi AÇIN. Her şey beklendiği gibi giderse, LCD'niz işlemin durumunu göstermeli ve sonunda aşağıdaki videoda gösterildiği gibi "Posta gönderildi" mesajı vermelidir. Donanımınız böyle bir şeye benzeyebilir.
LCD, postanın gönderildiğini gösterdiğinde, gönderilen posta için Gelen Kutunuzu ve Spam klasörünüzü kontrol edin. Postayı aşağıda gösterildiği gibi almış olmalısınız..
Yani artık bir sensör verisi okuyarak ve bunları posta kimliğinize göndererek kendi IoT projelerinizi yapabilirsiniz. Posta yoluyla bir uyarı tetikleyerek eviniz veya otomobilleriniz için bir Güvenlik uyarı sistemi oluşturun.
Herhangi bir şüpheniz varsa veya ortada sıkışırsanız lütfen yorum bölümünü kullanın ve size yardımcı olmaktan memnuniyet duyarım.