NODEMCU-Esp01 Arasında Dht11li Sıcaklık Veri Aktarma

Sizlere yaptığım proje olan ESP01 ile NODEMCU arasında sıcaklık aktarımını anlatacağım.
Sizlere şöyle detaylandırayım.
ESP01 Arduino’ya bağlı olacak. Thingspeak’e veri aktaracak. Sıcaklık ölçümü LM35 ile gerçekleşecek.
NODEMCU’ya 16x2 LCD Ekran bağlı olacak. Thingspeak’ten aldığı bu veriyi ekrana yazacak.
Öncelikle Kötü Devre Tasarımımdan özür diliyorum, ilk defa fritzing kullandım :smiley:
Arduino’ya atılacak kodu ROBOTISTAN.COM’dan aldım.
İsteyen (ESP8266 Dersleri 2: ThingSpeak'e Sıcaklık Yollama).

Arduino’ya atılacak kodumuz.

<i>#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");
}
}</i>

indir
NOT: Arduino’ya kodu atmadan RX ve TX Pinlerini çıkarın, aksi halde kodunuz atılamaz.

NODEMCU’ya atılacak kodumuz.

<i>#include <LiquidCrystal.h>

#include <ESP8266WiFi.h>

#include <ThingSpeak.h>

LiquidCrystal lcd(16,5,4,0,2,14);

WiFiClient client;

void setup()
{
lcd.begin(16,2);

Serial.begin(9600);
ThingSpeak.begin(client);

WiFi.disconnect();
WiFi.begin("ev wifisi","ev wifi şifresi");
while ((!(WiFi.status() == WL_CONNECTED))){
delay(300);
Serial.println("...");

}
Serial.println("Baglanildi");

}

void loop()
{

if (client.connect("api.thingspeak.com",80)) {
Serial.println((ThingSpeak.readIntField(**kanalnumarasi**,1,"**dataalmakicinnumara**")));

}

}</i>

Öncelikle Ev wifi adınız, ev wifi şifrenizi kendi bilgilerinizle doldurun.
Kanal numarasını ve data almak için gereken id’yi de değiştirin.(Get data api)
Bu Projenin kodlarını robotistan ve kendi kodlarımla birleştirerek yaptım. Birkaç başka forumdada paylaşmıştım.
KAYNAKLAR: www.robotistan.com

1 Beğeni