ESP8266 Modülü İle Gmail’den Mesaj Gönderme
Bu projemizde ESP8266 modülünü kullanarak, Gmail server’ı üzerinden mail göndermeyi göstereceğiz. Bu projemizle elinde ESP8266 modülü olan ve nasıl kullanacağını bilmeyenler içinde bir öğretici olabilir. Örneğin öğrendikçe kendiniz herhangi bir yerde email göndererek buna bağladığınız sensörleri istediğiniz gibi değiştirebilirsiniz.
Gereken Donanımlar
- ESP8266 (Herhangi bir modülü olabilir. Bu projede ESP8266-07 modülü kullanılmıştır.)
- USB UART (Bu projede FT232RL FTDI Seri Adaptör kullanışmıştır.
- Jumper kabloları
- WIFI Yönlendirici (WIFI Router)
Gereken Yazılımlar
- Arduino IDE
- ESP8266 WIFI çipi için Arduino Core yazılımı. (Bulmanız zor olacağını düşünerek, GitHub üzerinden bulduk. https://github.com/esp8266/Arduino tıklayarak ulaşabilirsiniz.)
Test kodu ve örnek projeyi Google Driver adresinden .ZIP şeklindeki dosyayı indirebilirsiniz. İlgili adrese (Buradan) ulaşabilirsiniz. Anti-virüs programlarından geçirerek yüklüyoruz ama isterseniz indirdikten sonra sizlerde anti-virüs programlarından teyit edin.)
Google Gmail Hesabı Açma
Arkadaşlar Gmail hesabı serverını kullanacağımız için bir adet gmail hesabına ihtiyacımız var. Belki sizlerde vardır ama bence yeni bir hesap açın. Çünkü bazı ayarları değiştireceğiz ve sık kullandığınız kendi hesabınızda güvenlik riskleri oluşturabilir. Onun için hemen hızlıca bir hesap açabilirsiniz.
Hesabı açtıktan sonra Gmail server ayarlarını değiştirelim; Mesaj göndermek için SMTP kullanacağız. SMTP kimlik doğrulaması kullanmamız, hesabımıza email adresimiz ve pasapordumuz ile ulaşabilmemizi sağlayacak. Yani ekstra önlemleri yani “Google Kötü Amaçlı Bir Davranış” sezdi diyerek telefon doğrulama veya mesaj doğrulama isteme durumunu ortadan kaldıracağız.
Bunun için Google hesabımızda “Oturum Açma ve Güvenlik” kısmına gidiyoruz. Bulamazsanız Buraya tıklayarak gidebilirsiniz. İlk önce kendiniz bulmaya çalışın derim böylelikle aklınızda daha kalıcı olabilir. Bulamazsanız direk tıklayarak gidebilirsiniz. Ardından alt taraftaki resimden de gördüğünüz gibi “Daha az güvenli uygulamalara izin ver: Kapalı” kısmını açıyoruz.
Örnek Verdiğimiz Sketch Üzerinde Ayarlamaları Yapma
Yukarıdaki Google Driver üzerinden indirebileceğiniz bir örnek sketch bulunmaktadır. Bu test sketchimizi kendimize göre bazı yerlerini değiştirmeliyiz.
Bütün indirmeleri ve kurmaları yaptıktan sonra sırasıyla;
♦ESP8266_TeknolojiProjeleri_GMAIL.zip dosyasını bir yere çıkart,
♦ESP8266_Gmail_Sender.ino isimli dosyayı bul ve onu aç,
♦SSID ve password yazan kısımları kendi WiFi’ne göre ayarla;
- const char* ssid = “Wifi İsmi”;
- const char* password = “Wifi Şifresi”;
♦setup() function kısmını bul ve orada
- if(gsender->Subject(subject)->Send(“mesajı alacak email adresi”, “Setup test”))
♦gsender->Send(to, message);
Şimdi Gsender.h tab açarak, oluşturduğun email adresini ve email şifreni Base64 çevrimi ile oluşturduğun adres ve şifreyi kullanacaksın. Bunun için base64encode.org adresini kullanabilirsin. Öneğin xxx@gmail.com olan email adresini buraya yaz sonra “encode” tuşuna basınca alt tarafta base64 olarak çevrilmiş karakterleri göreceksin. Ardından email şifreni de aynı şekilde yazıp “encode” edince şifrene ait base64 karakterlerini elde edeceksin. Alt tarafta bir örneğini görebilirsin;
- const char* EMAILBASE64_LOGIN = “Y29zbWkxMTExMUBnbWFpbC5jb20=”;
- const char* EMAILBASE64_PASSWORD = “TGFzZGFzZDEyMzI=”;
♦Şimdi de FROM alanını ayarlayacağız;
- const char* FROM = “seninemailadresin@gmail.com”;
Bütün işlemleri kaydet. Yukarıdaki işlemleri tek tek ayarladıktan sonra ESP8266 kartına sketch upload et. Ardından serial monitör ekranında, log mesajlarının yazdığını göreceksiniz.
#include <ESP8266WiFi.h> #include “Gsender.h” #pragma region Globals const char* ssid = “”; // WIFI network name const char* password = “”; // WIFI network password uint8_t connection_state = 0; // Connected to WIFI or not uint16_t reconnect_interval = 10000; // If not connected wait time to try again #pragma endregion Globals uint8_t WiFiConnect(const char* nSSID = nullptr, const char* nPassword = nullptr) { static uint16_t attempt = 0; Serial.print(“Connecting to “); if(nSSID) { WiFi.begin(nSSID, nPassword); Serial.println(nSSID); } else { WiFi.begin(ssid, password); Serial.println(ssid); } uint8_t i = 0; while(WiFi.status()!= WL_CONNECTED && i++ < 50) { delay(200); Serial.print(“.”); } ++attempt; Serial.println(“”); if(i == 51) { Serial.print(“Connection: TIMEOUT on attempt: “); Serial.println(attempt); if(attempt % 2 == 0) Serial.println(“Check if access point available or SSID and Password\r\n”); return false; } Serial.println(“Connection: ESTABLISHED”); Serial.print(“Got IP address: “); Serial.println(WiFi.localIP()); return true; } void Awaits() { uint32_t ts = millis(); while(!connection_state) { delay(50); if(millis() > (ts + reconnect_interval) && !connection_state){ connection_state = WiFiConnect(); ts = millis(); } } } void setup() { Serial.begin(115200); connection_state = WiFiConnect(); if(!connection_state) // if not connected to WIFI Awaits(); // constantly trying to connect Gsender *gsender = Gsender::Instance(); // Getting pointer to class instance String subject = “Subject is optional!”; if(gsender->Subject(subject)->Send(“xxx@gmail.com”, “Setup test”)) { Serial.println(“Message send.”); } else { Serial.print(“Error sending message: “); Serial.println(gsender->getError()); } } void loop(){}
Önerilen Diğer Yazı: ESP8266 ile Sıcaklık Sensörünü Kullanarak Ölçüm Alma Projesi
linkler kırılmış sanırım yeniden atabilir misiniz acaba
Tabi ki linkleri yeniledik. 🙂
İyi çalışmalar dilerim.
emeğine sağlık,link çalışmıyor güncelleme yapabilir misiniz?
Merhabalar,
Linki yeniledik ve test ettik. Şuan çalışıyor.
exit status 1
Error compiling for board Arduino Nano.
bu hatayı alıyorum sebebi nedir acaba
Merhaba,
Sanırım bu kodları ESP8266 içine atıyoruz. ESP8266 ‘yı arduinoya entegre edip DHT22 sensörü ile saptadığım nem ve sıcaklık verilerini mailime nasıl atabilirim?
kolay gelsin.. şimdi bi preje için yardım istiyoruz. projemiz ardinyoya bağlı olan sensör ve siren olacak sensör görünce hem siren ötecek hemde wifi üzerinden email yollicak bana nasıl yardımcı olabiirsiniz.
Ne yazık ki kişisel projeler için bir çalışmamız yoktur Emre Bey.
Güzel bir çalışma ama maalesef her ne yaptıysam “Mail Gonderilemedi: Could not connect to mail server
” mesajından başka bir adım ileri gidemedim. tüm istenen yönergeleri yaptım. hem wifi kullanıcı adı hem şifresi değiştirdim ki zaten bağlantı sorunum yok. Pinglere cevap da alıyorum. base64 sitesinden hem mail hem şifreyi encode edip ilgili kütüphanedeki yerlerine kopyaladım. Google güvenlik ayarlarından az güvenlik seçeneğini açtım ancak sonuç değişmedi. Böyle bir durumda sizin söyleyebilecek bir şeyiniz var mı?
Merhaba Necip Bey,
Yazıyı yazdığımız tarihte yapmıştık. Bir güncelleme gelip bir şeyleri değiştirmiş olabilir. Uygun bir zaman da bu projeyi yeniden yapıp biz de bakarız. Mail adresimiz: teknolojiprojeleri@gmail.com
Eğer uğraşıpta yapamazsanız bize buradan mail atıp, hatırlatır mısınız? Yabancı kaynaklara da bakıp, elimizden geldiğince size bir yol göstermeye çalışırız.