You are on page 1of 30

NodeMCU Nedir?

• Açık kaynak kodlu bir kontrol ünitesidir. Geniş bir kullanım alanı olan
ünite; “nesnelerin interneti” dediğimiz alanda kullanılarak birçok
sorunun çözülmesini sağlar. 
• bir mikro çip olan NodeMCU; ESP8266 türü bir mikro çip setinin
üzerinde bulunur. Boyutları bir madeni para kadar olan NodeMCU;
içinde bir yazılım bulundurur. Bu yazılım sayesinde de akıllı hale
gelmiş olur, yani işlem yapabilir hale gelir. NodeMCU; bir anlamda
mikro bir bilgisayar gibidir.
Arduino ile Farkı Nedir?
• NodeMCU, Kod yazım şekli Arduino cihazlarda olduğu gibidir. Yani o
cihazlardaki yapıya çok benzerdir. Fakat NodeMCU, Arduino cihazlara
nazaran daha etkileşimlidir. NodeMCU‘da Arduino'larda olmayan WiFi
özeliği vardır. NodeMCU kontrol ünitesi sayesinde kendinize bir
uzaktan kumandalı araba, otomatik olarak açılıp kapanan kapılar,
perdeler ve pencereler gibi aklınıza gelebilecek birçok şeyi
yapabilirsiniz. Akıllı ev sistemleri denilen ve yeni gelişip yayılan bu
teknolojilerde de bir NodeMCU kontrol ünitesi yer alıyor.
NodeMCU‘lar, sizinle nesne arasındaki veri alışverişini sağlayacak olan
bir donanımdır.
Neler Yapılabilir?
• NodeMCU Esp8266 modülü ile neler yapabiliriz;
• 1-Modülümüzü evimizde bulunan kablosuz internet yada akıllı
telefonumuzun internetine bağlayarak istediğimiz yerden NodeMCU
yu kontrol edebiliriz.
• 2-NodeMCU ya Web Sever kurarak akıllı ev sistemi hazırlayıp
evimizdeki cihazları internete bağlı herhangi bir cihazla kontrol
edebiliriz.
• 3-NodeMCU ya yükleyeceğimiz arduino programı ile uzaktan
kumandalardan bağımsız olarak internetin olduğu her yerden Drone
larımızı kontrol edebiliriz.
NodeMCU yapısı
NodeMCU ESP12E modülümüzü nasıl
Arduino IDE ile programlayacağız?
• 1-Ö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.
• 2-Arduino IDE de Araçlar---Kart-Board Manager'a tıklayıp
• Çıkan kutucuğa ESP8266 yazıp arama yapıyoruz. e insatall deyip
kuruyoruz. Daha sonra Arduino IDE yi kapatıp tekrar açıyoruz.
• 4-NodeMCU ESP8266 12E modülümüzü bilgisayarımıza bağlıyoruz.Eğer tanımadıysa USB driverını
yada sizdeki cp2102 ise driver ı internetten indirip kuruyoruz kuruyoruz.
• Arduino IDE nin Araçlar---port kısmına girip NodeMCU ESP8266 12E kartımızın kağlı olduğu COM
u seçiyoruz.
• 5-Daha sonra Arduino IDE den Araçlar----Lartlar bölümünden
NodeMCU 1.0 seçiyoruz.
ESP8266 WiFi iletişim modları

• ESP8266 WiFi üzerinde 2 modda iletişim kurar. Varolan kablosuz hot


spot, Access noktasına telefon ve internete bağlanır gibi bağlanır.
Buna “station” mod denir. Station modunda ESP8266 intenete
bağlanır ve diğer cihazlarla iletişime geçer.
ESP8266 WiFi station mod kod örneği
#include <ESP8266WiFi.h>
const char* ssid = "ESP8266"; //replace this with your WiFi network name
const char* password = "ESP8266Test"; //replace this with your WiFi network password
void setup() {
delay(1000);
Serial.begin(115200);

WiFi.begin(ssid, password);

Serial.println();
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("success!");
Serial.print("IP Address is: ");
Serial.println(WiFi.localIP());
}
void loop() {
}
Kodu ESP8266 modüle yükleyince, serial monitor açın ve and module reset buton a basıp
modulu yeniden başlatın. Aşağıdaki gibi bir çıktı görmeniz lazım:
ESP8266 WiFi Soft Access Point (Soft AP)
örneği
• ESP8266 , Wi-Fi access points (AP) olarak kullanılırsa hub gibi
davranır. An access point kablolu olarak internete bağlıdır ve bir
router ile integre edilmiştir. Bir Access noktası internete kablolu
bağlanmışsa «soft Access point» adını alır.
• ESP8266 modulu soft access point (Soft AP) olarak görev yapabilir ve
and 5 taneye kadar Wi-Fi client cihaz bağlanabilir.
ESP8266 WiFi Soft Access Point (Soft AP)
kod örneği
Serial.println("done!");
#include <ESP8266WiFi.h> Serial.println("");
/* Your WiFi Soft Access Point settings */ Serial.print("WiFi network name: ");
const char* ssid = "ESP8266"; //this will be the network name Serial.println(ssid);
const char* password = "ESP8266Test"; //this will be the network password Serial.print("WiFi network password: ");
Serial.println(password);
void setup() { Serial.print("Host IP Address: ");
delay(1000); Serial.println(myIP);
Serial.begin(115200); Serial.println("");
Serial.println(); }
Serial.println();
Serial.print("Configuring WiFi access point..."); else {
Serial.println("error! Something went wrong...");
/* You can remove the password parameter if you want the AP to be open. */ }
boolean result = WiFi.softAP(ssid, password); }
if(result==true) { void loop() {
IPAddress myIP = WiFi.softAPIP(); Serial.printf("Number of connected devices (stations) = %d\n",
WiFi.softAPgetStationNum());
delay(3000);
}
Kodu ESP8266 modüle yükleyince , aşağıdaki gibi bir çıktı görmeniz
lazım:
Telefonunuzu açıp açık Wi-Fi bağlantılarını kontrol edin. Password vererel bağlanabilirsiniz ve bağlı olan cihazları aşağıdaki
gibi görebilirsiniz.
ESP8266 ve Arduino kullanarak
WiFi Kontrollü LED
#include <ESP8266WiFi.h> while (WiFi.status() != WL_CONNECTED) {
const char* ssid = "MODI"; delay(500);
const char* password = "8826675619"; Serial.print(".");
}
int ledPin = 13; // GPIO13---D7 of NodeMCU Serial.println("");
WiFiServer server(80); Serial.println("WiFi connected");

void setup() { // Start the server


Serial.begin(115200); server.begin();
delay(10); Serial.println("Server started");
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW); // Print the IP address
Serial.print("Use this URL to connect: ");
// Connect to WiFi network Serial.print("http://");
Serial.println(); Serial.print(WiFi.localIP());
Serial.println(); Serial.println("/");
Serial.print("Connecting to ");
Serial.println(ssid);

WiFi.begin(ssid, password);

}
void loop() { // Set ledPin according to the request
// Check if a client has connected //digitalWrite(ledPin, value);
WiFiClient client = server.available();
if (!client) { // Return the response
return; client.println("HTTP/1.1 200 OK");
} client.println("Content-Type: text/html");
client.println(""); // do not forget this one
// Wait until the client sends some data client.println("<!DOCTYPE HTML>");
Serial.println("new client"); client.println("<html>");
while(!client.available()){
delay(1); client.print("Led is now: ");
}
if(value == HIGH) {
// Read the first line of the request client.print("On");
String request = client.readStringUntil('\r'); } else {
Serial.println(request); client.print("Off");
client.flush(); }
client.println("<br><br>");
// Match the request client.println("<a href=\"/LED=ON\"\"><button>On </button></a>");
client.println("<a href=\"/LED=OFF\"\"><button>Off </button></a><br />");
int value = LOW; client.println("</html>");
if (request.indexOf("/LED=ON") != -1) {
digitalWrite(ledPin, HIGH); delay(1);
value = HIGH; Serial.println("Client disonnected");
} Serial.println("");
if (request.indexOf("/LED=OFF") != -1) {
digitalWrite(ledPin, LOW); }
value = LOW;
}
Kodu kart ve port seçip yükleyin.
URL koyarak web browser’dan bağlanın.
hotspot üzerinden mobil bağlantı paylaşma
• 1. Adım: Telefonunuzun hotspot'unu açın
• Telefonunuzun Ayarlar uygulamasını açın.
• Ağ ve internet ve sonra Hotspot ve tethering'e dokunun.
• Kablosuz hotspot'a dokunun.
• Kablosuz hotspot'u açın.
• Ad veya şifre gibi bir hotspot ayarını görmek veya değiştirmek için
ayara dokunun. Gerekirse ilk olarak Kablosuz hotspot kurulum yap'a
dokunun. (SSID : telefonun network adı(genelede AndroidAP))
ThingSpeak’e Sıcaklık Yollama
• ThingSpeak Sitesinde Hesap Açma: Kayıt olup giriş yaptıktan sonra
üstteki Channels menüsünden My Channels seçeneği seçildiğinde
karşımıza aşağıdaki gibi bir menü geliyor.
• Bu menüye geldiğinizde New Channel sekmesine tıklayın ve karşımıza
gelen menü ile yeni bir kanal açmaya hazırız.
• Gelen sayfada Name yazan yere kanalımızın ismini yazıyoruz. Önemli olan Türkçe karakter
kullanmamamız.
• Birden çok LM35 sensörü ile evin tamamının sıcaklığını ölçme ya da sıcaklık haricinde başka veriler
de yollamak isterseniz Field 2, Field 3 gibi başka grafikler de oluşturabilirsiniz. Bilgileri girip Save
Channel ‘a tıkladığımızda kanalımız oluşturuluyor ve aşağıdaki gibi bir sayfaya yönlendiriliyoruz.  
#define ag_ismi "WiFi_Ismi" delay(3000); //ESP ile iletişim için 3 saniye bekliyoruz.
#define ag_sifresi "WiFi Sifresi" analogReference(INTERNAL);
#define IP "184.106.153.149" //thingspeak.com IP adresi if(Serial.find("OK")){ //esp modülü ile bağlantıyı
kurabilmişsek modül "AT" komutuna "OK" komutu ile geri dönüş
float sicaklik; yapıyor.
Serial.println("AT+CWMODE=1"); //esp modülümüzün WiFi
void setup() modunu STA şekline getiriyoruz. Bu mod ile modülümüz başka
{ ağlara bağlanabilecek.
Serial.begin(115200); //Seriport'u açıyoruz. Güncellediğimiz delay(2000);
//ESP modülünün baudRate değeri 115200 olduğu String baglantiKomutu=String("AT+CWJAP=\"")
için bizde Seriport'u 115200 şeklinde seçiyoruz +ag_ismi+"\",\""+ag_sifresi+"\"";
Serial.println(baglantiKomutu);
Serial.println("AT"); //ESP modülümüz ile bağlantı kurulup
kurulmadığını kontrol ediyoruz. delay(5000);
}
}
void loop(){ String yollanacakkomut = "GET /update?key=64T0OS3R1OEAYUML&field1="; // Burada
float sicaklik = analogRead(A0) / 9.31; 64T0OS3R1OEAYUML yazan kısım bizim API Key den aldığımız Key. Siz buraya kendi keyinizi yazacaksınız.
Serial.println(sicaklik); yollanacakkomut += (int(sicaklik)); // Burada ise sıcaklığımızı float değişkenine
sicaklik_yolla(sicaklik); atayarak yollanacakkomut değişkenine ekliyoruz.
// dakikada 1 güncellenmesi için 1 dakika bekle yollanacakkomut += "\r\n\r\n"; // ESP modülümüz ile seri iletişim kurarken
delay(60000); 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


void sicaklik_yolla(float sicaklik){ önce kaç tane karakter yollayacağımızı söylememiz gerekiyor.
Serial.println(String("AT+CIPSTART=\"TCP\",\"") + IP + "\",80"); //thingspeak sunucusuna bağlanmak için Serial.println(yollanacakkomut.length()+2); //yollanacakkomut değişkeninin kaç karakterden oluştuğunu
bu kodu kullanıyoruz. .length() ile bulup yazırıyoruz.
//AT+CIPSTART komutu ile sunucuya bağlanmak için sunucudan izin
istiyoruz. delay(1000);
//TCP burada yapacağımız bağlantı çeşidini gösteriyor. 80 ise
bağlanacağımız portu gösteriyor if(Serial.find(">")){ //eğer sunucu ile iletişim sağlayıp komut uzunluğunu gönderebilmişsek
delay(1000); ESP modülü bize ">" işareti ile geri dönüyor.
if(Serial.find("Error")){ //sunucuya bağlanamazsak ESP modülü bize "Error" komutu ile dönüyor. // arduino da ">" işaretini gördüğü anda sıcaklık verisini esp modülü ile
Serial.println("AT+CIPSTART Error"); thingspeak sunucusuna yolluyor.
return; Serial.print(yollanacakkomut);
} Serial.print("\r\n\r\n");
}
else{
Serial.println("AT+CIPCLOSE");
}
}

You might also like