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

ESP8266 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1

İ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 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1

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

ESP8266 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1

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.

ESP8266 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1

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.

ESP8266 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1
ESP8266 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1

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

ESP8266 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1

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ı;

ESP8266 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1

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();
}
ESP8266 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1
ESP8266 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1

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

ESP8266 , nodemcu, NodeMCU ESP8266 Kullanımı ve Fonksiyonları : Bölüm 1

Ö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!