ESP8266 bir WiFi modülüdür. Bu modül vasıtası ile hem kablosuz ağlara bağlanmak hem de kablosuz erişim noktası kurmak mümkündür. Modül kendi işlemcisine sahip olduğu için üzerinde bulunan I/O (giriş/çıkış) pinleri kullanılabilmektedir. Bu da Arduino ve buna benzer herhangi bir mikrokontrolcü bulunmadan da modül ile projeler yapabileceğimiz anlamına geliyor
Peki ESP8266 Wifi modülü ile ne tarz projeler yapabiliriz? Wifi ile kablosuz iletişim kurabildiğimizden dolayı internete bağlanarak pek çok keyifli proje yapabiliriz. Bunlara örnek verecek olursak hırsız alarmı, oda sıcaklığını tweet olarak paylaşma, akıllı kahve makinesi, internet üzerinden LED kontrolü ve buna benzer yüzlerce proje…
Arduino Kullanmadan ESP8266 İçindeki İşlemciyi Doğrudan Kodlamak Mümkün Mü?
Yukarıda da bahsettiğimiz gibi evet, mümkün. Modülde bulunan işlemci 32-bitlik CPU’ya sahip ve üzerinde yer alan GPIO pinleri ile bağlantı kurmamız sağlanıyor. Yani Arduino olmadan da ESP8266 modülünü doğrudan programlayabiliyoruz. Farklı markaların farklı türden ESP8266 modülleri olduğundan dolayı GPIO pin sayısı değişkenlik gösterebiliyor.
Arduino İle ESP8266 Kullanarak Verilerimizi İnternet Olan Her Yerden Görecek Şekilde Ayarlamayı Öğrenelim
Gereken malzemeler:
- Arduino UNO
- Breadboard
- ESP8266 Wifi Modülü
- DHT11 Sıcaklık ve Nem Sensörü
- Erkek-erkek jumper kablo
Uygulamada kullanacağımız malzemeleri de belirledikten sonra devremizi aşağıdaki gibi kuralım:
Gerekli olan Arduino kodunu yazabiliriz.
//elektroforum.net
#include //SoftwareSerial kütüphanimizi ekliyoruz.
#include //DHT11 sensör kütüphanemizi ekliyoruz.
String agAdi = "Elektroforum"; //Ağımızın adını buraya yazıyoruz.
String agSifresi = "fortinet"; //Ağımızın şifresini buraya yazıyoruz.
int rxPin = 10; //ESP8266 RX pini
int txPin = 11; //ESP8266 TX pini
int dht11Pin = 2;
String ip = "184.106.153.149"; //Thingspeak ip adresi
float sicaklik, nem;
dht11 DHT11;
SoftwareSerial esp(rxPin, txPin); //Seri haberleşme pin ayarlarını yapıyoruz.
void setup() {
Serial.begin(9600); //Seri port ile haberleşmemizi başlatıyoruz.
Serial.println("Started");
esp.begin(115200); //ESP8266 ile seri haberleşmeyi başlatıyoruz.
esp.println("AT"); //AT komutu ile modül kontrolünü yapıyoruz.
Serial.println("AT Yollandı");
while(!esp.find("OK")){ //Modül hazır olana kadar bekliyoruz.
esp.println("AT");
Serial.println("ESP8266 Bulunamadı.");
}
Serial.println("OK Komutu Alındı");
esp.println("AT+CWMODE=1"); //ESP8266 modülünü client olarak ayarlıyoruz.
while(!esp.find("OK")){ //Ayar yapılana kadar bekliyoruz.
esp.println("AT+CWMODE=1");
Serial.println("Ayar Yapılıyor....");
}
Serial.println("Client olarak ayarlandı");
Serial.println("Aga Baglaniliyor...");
esp.println("AT+CWJAP=\""+agAdi+"\",\""+agSifresi+"\""); //Ağımıza bağlanıyoruz.
while(!esp.find("OK")); //Ağa bağlanana kadar bekliyoruz.
Serial.println("Aga Baglandi.");
delay(1000);
}
void loop() {
esp.println("AT+CIPSTART=\"TCP\",\""+ip+"\",80"); //Thingspeak'e bağlanıyoruz.
if(esp.find("Error")){ //Bağlantı hatası kontrolü yapıyoruz.
Serial.println("AT+CIPSTART Error");
}
DHT11.read(dht11Pin);
sicaklik = (float)DHT11.temperature;
nem = (float)DHT11.humidity;
String veri = "GET https://api.thingspeak.com/update?api_key=2F55993RWVDCTSUS"; //Thingspeak komutu. Key kısmına kendi api keyimizi yazıyoruz. //Göndereceğimiz sıcaklık değişkeni
veri += "&field1=";
veri += String(sicaklik);
veri += "&field2=";
veri += String(nem); //Göndereceğimiz nem değişkeni
veri += "\r\n\r\n";
esp.print("AT+CIPSEND="); //ESP'ye göndereceğimiz veri uzunluğunu veriyoruz.
esp.println(veri.length()+2);
delay(2000);
if(esp.find(">")){ //ESP8266 hazır olduğunda içindeki komutlar çalışıyor.
esp.print(veri); //Veriyi gönderiyoruz.
Serial.println(veri);
Serial.println("Veri gonderildi.");
delay(1000);
}
Serial.println("Baglantı Kapatildi.");
esp.println("AT+CIPCLOSE"); //Bağlantıyı kapatıyoruz
delay(1000); //Yeni veri gönderimi için 1 dakika bekliyoruz.
}