Arkadaşlar merhaba, bu bölümde oda sıcaklığını LM35 sensörü ile ölçüp bu veriyi Arduino ve ESP8266 kullanarak Twitter hesabımızdan, tweet olarak atacağız.

Bu uygulamada kullanacağımız malzemeler:

Uygulamamızı gerçekleştirirken ThingSpeak sitesini kullanacağız. Bu siteye nasıl kayıt olunup kanal açılacağını bilmiyorsanız bir önceki yazımıza göz atmanızı öneririm.

ThingSpeak’den bir kanal açtıktan sonra aşağıdaki gibi More Apps butonuna tıklıyoruz. Bu uygulamada yolladıklarımız yine grafik haline gelecek o yüzden bir önceki uygulamayı yaptıysanız aynı kanal üzerinden devam edebilirsiniz. eso8266 tweet atma

Üstteki butona bastıktan sonra gelen sayfada Action sekmesinden ThingTweet’i seçiyoruz. Gelen sayfadan Link Twitter Account a tıklayarak ThingSpeak’i twitter hesabımızı kullanması için yetkilendiriyoruz. (Bu konuda şüpheniz olmasın sizden habersiz tweet atma gibi bir durum söz konusu olamaz. Tamamen güvenilir binlerce kişi tarafından kullanılan bir uygulama.) Yetkilendirme işlemini yaptıktan sonra yine aynı sayfadan bize twitter adresimiz ile ilişkili bir KEY verecek. Bu keyi daha önceki uygulamamızdaki gibi yine kodumuzun içinde kullanacağız.

Thing Speak ile yapacaklarımız bu kadar bundan sonrası devrenin kurulumu ve kodumuzun ayarlanması. Devre önceki uygulamamız ile birebir aynı.

ESP8266 bağlantı şeması

NOT: Devreyi kurup Arduino’ya kod yüklemeye çalıştığınızda Arduino IDE’si hata verecektir. Merak etmeyin bunun nedeni, Arduino’nun RX ve TX bağlantılarının o an ESP modülünün bağlı olmasından dolayıdır. RX ve TX bağlantılarını söküp, Arduino’ya kodu yükledikten sonra takarsanız bir problem ile karşılaşmazsınız.

#define ag_ismi "WiFi_Ismi"
#define ag_sifresi "WiFi Sifresi"
#define IP "184.106.153.149"    //thingspeak.com IP adresi
 
int lm35_pini = A0;
 
void setup()
{
  Serial.begin(115200); //Seriport'u açıyoruz. Güncellediğimiz 
                        //ESP modülünün baudRate değeri 115200 olduğu için bizde Seriport'u 115200 şeklinde seçiyoruz
  
  Serial.println("AT"); //ESP modülümüz ile bağlantı kurulup kurulmadığını kontrol ediyoruz.
  
  delay(3000); //EPSP ile iletişim için 3 saniye bekliyoruz.
 
  if(Serial.find("OK")){         //esp modülü ile bağlantıyı kurabilmişsek modül "AT" komutuna "OK" komutu ile geri dönüş yapıyor.
     Serial.println("AT+CWMODE=1"); //esp modülümüzün WiFi modunu STA şekline getiriyoruz. Bu mod ile modülümüz başka ağlara bağlanabilecek.
     delay(2000);
     String baglantiKomutu=String("AT+CWJAP=\"")+ag_ismi+"\",\""+ag_sifresi+"\"";
    Serial.println(baglantiKomutu);
    
     delay(5000);
 }
}

void loop(){
 int analog_veri = analogRead(lm35_pini);
 analog_veri = (analog_veri/1023)*5000;
 float sicaklik = analog_veri/10.0;
 if(sicaklik > 27){
 sicaklik_yolla();
 }
 // dakikada 1 güncellenmesi için 1 dakika bekle
 delay(60000);
}
void sicaklik_yolla(){
 Serial.println(String("AT+CIPSTART=\"TCP\",\"") + IP + "\",80");  //thingspeak sunucusuna bağlanmak için bu kodu kullanıyoruz. 
                                                                   //AT+CIPSTART komutu ile sunucuya bağlanmak için sunucudan izin istiyoruz. 
                                                                   //TCP burada yapacağımız bağlantı çeşidini gösteriyor. 80 ise bağlanacağımız portu gösteriyor
 delay(1500);
 String tweet = "POST /apps/thingtweet/1/statuses/update HTTP/1.1\n";
    tweet+="Host: api.thingspeak.com\n";
    tweet+="Connection: close\n";
    tweet+="Content-Type: application/x-www-form-urlencoded\n";
    tweet+="Content-Length:50\r\n\r\napi_key=";
    tweet+=String("FQF3R17HJSB1DM43");                             //ThingSpeak'den aldığımız Twitter API KEY'ini buraya yazıyoruz.
    tweet+=String("&status=");
    tweet+=String("Cok Sicak #esp8266");                           // Yollamak istediğimiz tweeti buraya yazıyoruz.

 Serial.print("AT+CIPSEND=");                    //veri yollayacağımız zaman bu komutu kullanıyoruz. Bu komut ile önce kaç tane karakter yollayacağımızı söylememiz gerekiyor.
 delay(100);
 Serial.println(tweet.length());
 
 if(Serial.find(">")){                           //eğer sunucu ile iletişim sağlayıp komut uzunluğunu gönderebilmişsek ESP modülü bize ">" işareti ile geri dönüyor.
                                                 // arduino da ">" işaretini gördüğü anda sıcaklık verisini esp modülü ile thingspeak sunucusuna yolluyor.
 Serial.println(tweet);
 Serial.println("AT+CIPCLOSE=0");
 delay(100);

 }
 else{
 Serial.println("AT+CIPCLOSE=0");
 }
}

NOT: LM35 ile ölçtuğunuz sıcaklık 27 dereceyi geçtiğinde twitter hesabınızdan “Cok Sicak #ESP8266 ” şeklinde bir tweet atılacak. Eğer atılan tweeti değiştirmek isterseniz

tweet+=String("Cok Sicak #esp8266"); 

üstteki satırdaki metni değiştirmeniz ve

tweet+="Content-Length:49\r\n\r\napi_key=";

Bu satırdaki “50” yazan yeri yazdığınız mesaj kaç karakter ise 32 fazlası ile güncellemeniz gerekiyor.

NOT: Twitter sanırım direk elle tweet atılmadığı sürece aynı tweet’i bir daha kabul etmiyor. Ne kadar denersem deneyeyim, ne kadar beklersem bekleyeyim aynı tweet’i tekrar attıramadım. Örneğin #esp8266ilemerhaba diye bir tweet attıktan sonra bu tweet’i silmeden aynı şekilde başka bir tweet atmanıza izin vermiyor. Bunun nedeni bir hasthag için çok fazla tweet atılmasını engellemek sanırım. Fakat yazdırdığınız cümle sonuna ek olarak 0 ile 1000 arası bir random sayı eklerseniz her seferinde farklı tweetmiş gibi gözükeceğinden 1000 tane tweet atabilirsiniz.

 

1 YORUM

  1. tweet+=String(“Cok Sicak #esp8266”); bu kod satırında yani tweet olarak atmak istediğimiz metinde anlık sıcaklığı da atmak istediğimizde ne gibi bir kod kullanabiliriz?

CEVAP VER