ESP01 ile NODEMCU Arası Sıcaklık Aktarımı

Casper

GadgetEfsanesi
Merhaba arkadaşlar,

ESP01 ve NODEMCU ile sıcaklık verisi aktarımı üzerine çalıştığım bir projede kodları ve bağlantı şemasını aşağıda paylaşıyorum. Ancak bazı sorunlar yaşıyorum ve çözüm önerilerinize ihtiyacım var. Kodlar Thingspeak'e veri gönderimi sağlamak üzere tasarlanmış durumda.

Projede kullanılan kod:
C++:
#define ag_ismi "WiFi_Ismi"
#define ag_sifresi "WiFi Sifresi"
#define IP "184.106.153.149" //thingspeak.com IP adresi

float sicaklik;

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); //ESP ile iletişim için 3 saniye bekliyoruz.
analogReference(INTERNAL);
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(){
float sicaklik = analogRead(A0) / 9.31;
Serial.println(sicaklik);
sicaklik_yolla(sicaklik);
// dakikada 1 güncellenmesi için 1 dakika bekle
delay(60000);
}

void sicaklik_yolla(float sicaklik){
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(1000);
if(Serial.find("Error")){ //sunucuya bağlanamazsak ESP modülü bize "Error" komutu ile dönüyor.
Serial.println("AT+CIPSTART Error");
return;
}

String yollanacakkomut = "GET /update?key=64T0OS3R1OEAYUML&field1="; // Burada 64T0OS3R1OEAYUML yazan kısım bizim API Key den aldığımız Key. Siz buraya kendi keyinizi yazacaksınız.
yollanacakkomut += (int(sicaklik)); // Burada ise sıcaklığımızı float değişkenine atayarak yollanacakkomut değişkenine ekliyoruz.
yollanacakkomut += "\r\n\r\n"; // ESP modülümüz ile seri iletişim kurarken yazdığımız komutların modüle iletilebilmesi için Enter komutu yani
delay(3000); // /r/n komutu kullanmamız gerekiyor.

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.
Serial.println(yollanacakkomut.length()+2); //yollanacakkomut değişkeninin kaç karakterden oluştuğunu .length() ile bulup yazırıyoruz.

delay(1000);

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.print(yollanacakkomut);
Serial.print("\r\n\r\n");
}
else{
Serial.println("AT+CIPCLOSE");
}
}

Projeye ait bağlantı şeması:
indir.webp

Thingspeak'e veri aktarımında sorun yaşıyorum ve ESP modülüyle bağlantıyı kurarken "Error" dönebiliyor. Kodda veya bağlantıda eksik/hatalı bir nokta mı var? Çözüm önerileriniz için şimdiden teşekkür ederim.
 
Çözüm
Kodunuzdaki gecikme sürelerini biraz arttırmayı deneyin. Özellikle bağlantı kurma komutlarından sonra (AT+CIPSTART gibi) 5-10 saniyelik bir delay eklemek faydalı olabilir.
Kodunuz genel olarak doğru görünüyor ancak ESP01 ile bağlanırken 'Error' almanız WiFi ayarlarından kaynaklanıyor olabilir. WiFi adı ve şifrenizin doğru olduğundan emin olun ve modemin yakınında olduğunuzdan emin olun.
 
Thingspeak bağlantısı için API key kısmını kontrol edin. Yanlış bir key kullanmanız halinde veriler Thingspeak'e ulaşmaz. Ayrıca ağ bağlantınızı test etmek için basit bir 'ping' testi yapabilirsiniz.
 
ESP modülünüzün güncel bir firmware ile çalıştığından emin olun. Eski firmware versiyonları bazı AT komutlarını desteklemiyor olabilir.
 
Kodunuzdaki gecikme sürelerini biraz arttırmayı deneyin. Özellikle bağlantı kurma komutlarından sonra (AT+CIPSTART gibi) 5-10 saniyelik bir delay eklemek faydalı olabilir.
 
Çözüm
Projenizde bir hata varsa, sıcaklık sensöründen gelen değeri Thingspeak'e gönderirken yazım hatası olabilir. Örneğin, analogRead() fonksiyonunun dönüş değerini kontrol edin.
 
Kodunuzu daha detaylı incelemek için bağlantı sırasında serial monitor üzerinden dönen tüm mesajları kontrol edin. Debugging yapmak için faydalı olacaktır.
 
ESP modülünü bağlamak için kullanılan breadboard veya kabloların sağlamlığını kontrol edin. Bağlantılardaki bir hata iletişimi etkileyebilir.
 
Ayrıca, sıcaklık verisini float yerine integer olarak Thingspeak'e göndermeyi deneyin. Bazı durumlarda string işlemleri sunucu tarafında hataya neden olabiliyor.
 

Yeni Konular

Geri
Üst