NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1
Daha önce Arduino Alternatifi Geliştirme Kartları yazımızda tanıttığımız NodeMCU ESP8266 ile basit fonksiyonlar ve web işlemleri yapacağız. NodeMCU; madeni paradan biraz daha büyük boyutta, minik bir elektronik devredir. Açık kaynaktır, ucuzdur ve yeteneklidir. Düşük gerilimli enerjiyle çalışır. Üzerinde çok sayıda bağlantı noktaları vardır. Bu bağlantı noktalarını kullanarak bağlayacağınız başka elektonik bileşenleri yönetebilirsiniz. Barındırığı WiFi sayesinde kolayca IOT yani internet şeyleri olarak bilinen cihazlar yapmanıza olanak sağlar. HTTP kütüphaneleri sayesinde web istemleri yapabilirsiniz veya web sunucusu çalıştırabilirsiniz. Bu sayede internet üzerinden bu cihazla iletişime geçebilirsiniz. Uzaktan bir şeyleri açabilir veya kapatabilirsiniz. Programlama dili olarak Lua betiği yani scripti kullanır. Buna rağmen yine de; Arduino IDE ve Arduino’nun kullandığı dille de programlanabilir. USB kablosuyla bilgisayara kolayca bağlanır, programlanabilir ve veri iletişim kurulabilir

İlk Hazırlık
Diğer geliştirme kartlarını Arduino IDEye tanımlarken kullandığımız yöntem ile kartımızı Arduino IDEye ekleyeceğiz. Önce Arduino IDE mizi açıyoruz ve Dosya—Tercihler bölümüne giriyoruz burada en altta Additional Board manager URLs in yanındaki kutucuğa http://arduino.esp8266.com/stable/package_esp8266com_index.json linkini yapıştırıyoruz.

ESP8266 kütüphanesini IDEye kurduktan sonra programımız, kartımızı kodlamaya uygun hale gelmiş oluyor

Kullanım Alanları
İnternet artık hayatımızın olmazsa olmazı haline geldi. Nesnelerin bir biri ile bağlantısı, farklı platformlardan cihazlarımızı kontrol etmemiz, evlerin akıllı sistemlere geçmesi ile “IoT” yani “Nesnelerin İnterneti” yeni üretilen ve üretilecek olan cihazların temel prensibi olmuş durumda. Bu kart ile bir çok internet tabanlı kontrollerinizi yapabilirsiniz, örneğin röle bağlantısı ile evinizde cihazları açayıp, kapatabilirsiniz. Bunun dışında evinizi, odanızı akıllı hale getirmek için ESP8266; kolay kullanımı ve kurulumu açısından çok güzel bir başlangıç olacaktır.

Bu Yazı Serisinin Amacı
devreyakan olarak bir çok yazı serisinde içerik üretiyoruz fakat spesifik olarak “ESP8266” bizim için ilk ders niteliğinde bir rehber olucak. Bu yüzden bu seriye diğer yazılarımıza nazaran daha dikkatli yaklaşacağız. Bu yazı dizisinde aşağıdaki başlıklara deyineceğiz;
(+) ESP8266 Kurulumu
(+) ESP8266 Çalışma Testi
(+) ESP8266 İşletim Sistemi Flashlama / Güncelleme
(+) ESP8266 Web Server ile Basit Hello Programı
(+) ESP8266 Kod Örnekleri
(+) ESP8266 Ev/Oda Kullanımına Entegresi
(+) ESP8266 Performans Testleri
(+) ESP8266 Kullanım Dışı ve Test Programları
(+) ESP8266 Ekstra Programlar
ESP8266 İşletim Sistemi ve Flashlama
Kartımızı aldığımızda flashlama işlemi ve işletim sistemini güncellemek her açıdan sizlere olumlu olarak dönecektir. Bunun yanında kendi istediğiniz özellikler ile bir işletim sistemi yükleyebilirsiniz. Flashlama işlemini yapmak için bu programı kullanacağız. İndirmek için buradan erişebilirsiniz. Kartınız bağladıktan sonra COM bağlantınız seçip, Flash işlemine başyabilirisiniz. İşlem bittikten sonra program size işlemin tamamlandığına dair geri dönüşte bulunacak, bunun yanında kendi .bin dosyalarınızı Config kısmından da yükleyebilirsiniz yani Arduino IDEde yaptığınız işlemleri buradan doğrudan yükleyebilirsiniz. Unutmadan belirtmeliyim Flash işlemi yaparken kartın bütün pinlerinin boşta olduğuna emin olun, yoksa Flash işlemi yaparken sorunlarla karşılaşabilirsiniz.




ESP8266ya Kod Yüklemek
ATtiny85ye kod yüklerken kullandığımız mantığın biraz daha gelişmiş bir versiyonu ile kodumuzu başarılı bir şekilde yüklüyoruz. Kart ve port ayarlarımızı doğru seçtikten sonra kodumuzu yükle butonuna basıyoruz ve genel bilgileri log ekranında görüyoruz, yükleme işlemi bittiğinde kartımıza RST butonu ile tekrar başlatmamız gerekiyor.


Yükleme işlemimiz bu şekilde devam ediyor.

Yükleme bittikten sonra RTS butonu ile kartımızı tekrardan başlatıyoruz.
Çalışma Testi; WiFi Ağlarını Taramak
Yukardaki bölümde anlattığımız gibi yüklememizi yapıyoruz ve bu kod örneğimiz ile çevredeki ağları tarayıp serial monitor ile gözlemliyoruz;
#include "ESP8266WiFi.h" void setup() { Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.disconnect(); delay(100); Serial.println("Kurulum Tamamlandi"); } void loop() { Serial.println("Tarama Basladi"); int n = WiFi.scanNetworks(); Serial.println("Tarama Tamamlandi"); if (n == 0) { Serial.println("Aktif Bir Ag Bulunamadi"); } else { Serial.print(n); Serial.println(" Tane Ag Aktif"); for (int i = 0; i < n; ++i) { Serial.print(i + 1); Serial.print(": "); Serial.print(WiFi.SSID(i)); Serial.print(" ("); Serial.print(WiFi.RSSI(i)); Serial.print(")"); Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*"); delay(10); } } Serial.println(""); delay(5000); }
Serial Monitor Çıktısı;

Web Server Çalışması
Web Server, bu kartın en güzel ve kullanışlı özelliklerinden birinin olması yanında, Web Server ile IoT kontrolü yapacağımızı unutmayalım.
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> #ifndef STASSID #define STASSID "android-52724e6h8392af" #define STAPSK "qqqqqqqq" #endif const char* ssid = STASSID; const char* password = STAPSK; ESP8266WebServer server(80); const int led = 13; void handleRoot() { digitalWrite(led, 1); server.send(200, "text/plain", "devreyakan.com ESP8266 Web Server Testi"); digitalWrite(led, 0); } void handleNotFound() { digitalWrite(led, 1); String message = "File Not Found\n\n"; message += "URI: "; message += server.uri(); message += "\nMethod: "; message += (server.method() == HTTP_GET) ? "GET" : "POST"; message += "\nArguments: "; message += server.args(); message += "\n"; for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; } server.send(404, "text/plain", message); digitalWrite(led, 0); } void setup(void) { pinMode(led, OUTPUT); digitalWrite(led, 0); Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); Serial.println(""); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Baglanilan Ag: "); Serial.println(ssid); Serial.print("IP addresi: "); Serial.println(WiFi.localIP()); if (MDNS.begin("esp8266")) { Serial.println("MDNS servisi basladi"); } server.on("/", handleRoot); server.on("/inline", []() { server.send(200, "text/plain", "root klasoru calisiyor"); }); server.on("/gif", []() { static const uint8_t gif[] PROGMEM = { 0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x10, 0x00, 0x10, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x02, 0x19, 0x8c, 0x8f, 0xa9, 0xcb, 0x9d, 0x00, 0x5f, 0x74, 0xb4, 0x56, 0xb0, 0xb0, 0xd2, 0xf2, 0x35, 0x1e, 0x4c, 0x0c, 0x24, 0x5a, 0xe6, 0x89, 0xa6, 0x4d, 0x01, 0x00, 0x3b }; char gif_colored[sizeof(gif)]; memcpy_P(gif_colored, gif, sizeof(gif)); // Set the background to a random set of colors gif_colored[16] = millis() % 256; gif_colored[17] = millis() % 256; gif_colored[18] = millis() % 256; server.send(200, "image/gif", gif_colored, sizeof(gif_colored)); }); server.onNotFound(handleNotFound); server.begin(); Serial.println("HTTP server baslatildi"); } void loop(void) { server.handleClient(); MDNS.update(); }


Aynı zamanda alt klasörler ve listeleme çalışmalarıda kolaylıkla yapılabiliyor.

Özetle
Bu yazımızda, kartımızı tanıyıp, kod yüklemeyi, flashlamayı, WiFi taraması yapmayı ve Web Server açmayı öğrendik. Bir sonraki yazımızda interaktif bir web sayfayı tasarlayarak ESP8266yı röle kartımıza entegre edeceğiz. Anlamadığınız bir yer olmasında veya takıldığınız bir yerde yorum yazmaktan çekinmeyin kendinize iyi bakın!
Bilgiler için çok teşekkürler. Aylardan beri kullanamadığım kartımı sayenizde kullanmaya başladım.
Biz teşekkür ederiz:) Öğrenmeye ve öğretmeye devam.
Gerçekten o kadar site dolaştım yerli yabancı ve bu kadar açık kod paylaşımı ve entegrasyonu bu sitede var, gerçekten tebrik ediyorum azizim. Başarılarınızın devamını dilerim.
Çok teşekkür ederiz, öğrenmeye ve öğretmeye devam:)
MERHABALAR;
VERDİĞİNİZ KODLARI YAZIP SERİAL MONŞTÖRDEE SADECE SORU İŞARTETİ ÇIKIYOR ? SORUNUM NE OLABİLİR.
Merhaba, seri bağlantı noktaları RX-TX boşta mı ?
doğru seri portu seçtiniz mi?
kodu doğru yüklediğinize emin misiniz?
Bilgiler için çok teşekkürler ellerinize sağlık. Fakat bir sorum olacak, kodların açıklamasını da yazmanız mümkün müdür.
static const uint8_t gif[] PROGMEM = {
0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x10, 0x00, 0x10, 0x00, 0x80, 0x01,
0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x2c, 0x00, 0x00, 0x00, 0x00,
0x10, 0x00, 0x10, 0x00, 0x00, 0x02, 0x19, 0x8c, 0x8f, 0xa9, 0xcb, 0x9d,
0x00, 0x5f, 0x74, 0xb4, 0x56, 0xb0, 0xb0, 0xd2, 0xf2, 0x35, 0x1e, 0x4c,
0x0c, 0x24, 0x5a, 0xe6, 0x89, 0xa6, 0x4d, 0x01, 0x00, 0x3b
Örnek verecek olursak yukarıdaki yer ne işe yarıyor.
Merhaba, bu kısım sadece görsel/gif için her hangi bir görseli Hexadecimal formata çevirme kısmıdır, her hangi bir görseli ya da gifi hex formatında yazıp, bu kısmıda değiştirirseniz o görseli görmüş olacaksınız. Kodu yüklediyseniz nodemcu’nun aldığı ip adresinin sonuna /gif ekleyerek buradaki kodun, görsel karşılığını görebilirsiniz. Bu gif kısmı aslında nodemcu’nun kabiliyetlerini göstermek için hazırlanmıştır.
Anladım çok teşekkür ederim, denedim ve sonuç olumlu. Ellerinize sağlık
Rica eder, iyi çalışmalar dileriz:)