ESP8266 isimli wifi çipini duymayan elektronikçi sanırım artık kalmamıştır. Bu çip ilk olarak ESP-01 ismindeki modülle piyasaya çıkmıştı. ESP-01 isimli modülde sadece 2 adet GPIO pini bulunmaktaydı ve bu pinler de aslında çipin boot seçimini sağlayan ve çipe firmware yüklemek için gerekli olan pinlerdi. Bu 2 pini boot işlemleri bittikten sonra giriş çıkış olarak kullanabiliyorduk fakat oldukça zahmetli işti. Daha sonra ESP modüllerinin farklı türevleri ortaya çıktı. Son olarak NodeMcu isminde, esp8266’yı kullanabilmek için gerekli herşeyi üzerinde barındıran, ESP8266’nın bütün pinlerini kullanılabilir hale getiren kartlar piyasaya çıktı. NodeMcu aslında ESP8266’yı LUA dili ile programlamak için geliştirilmiş bir firmwarein ismi. Fakat ayrıca NodeMcu DevKit isminde geliştirme kartları da olduğu ve çok tutulduğu için bu kartlara da kısaca NodeMCU diyoruz. Ben de ESP8266’ya ilgimi tekrardan yönelttiğim bu günlerde bu kartlardan birisini aliexpress üzerinden sipariş ettim. Sipariş ettiğim kart, diğerlerinden farklı olarak üzerinde 32 Mbit flash barındırmakta. Standart NodeMcu kartlarında bu flash çipinin hafıza boyutu 4Mbit. Kartın üzerinde ayrıca 3.3V voltaj regülatörü ve micro USB konnektörü de mevcut. Böylece ekstra bir donanıma ihtiyaç duymadan kartımızı bilgisayarımıza bağlayıp programlamaya başlayabiliyoruz. Kartın fiyatı ben aldığımda 2.35$ dı ve 10 gün gibi bir sürede elime geçti. Böyle özellikleri olan bir kart için bence müthiş bir fiyat. Sanırım artık elimden düşmeyecek mikrodenetleyicilerin başında ESP8266 geliyor.
Kartın şeması aşağı yukarı şöyle;
Aşağı yukarı diyorum çünkü bendeki kartta TX0 ucuna ekstra bir led bağlı ve CH340 yerine CP2102 bulunmakta, diğer bütün bağlantılar aynı.
Kartta bulunan 32Mbit flashın avantajı daha büyük projelerin derlenip bu karta yüklenmesine izin vermesi.
Gelelim bu kartı nasıl programlayacağımıza. ESP8266 için 4 farklı programlama seçeneği mevcut;
2-LUA Programlama: LUA ile programlayabilmek için ESP8266 içerisinde nodemcu firmware yüklü olması gerekmektedir. Bu firmware aracılığı ile LUA ile yazılmış programlar ESP8266 tarafından yorumlanmaktadır. NodeMCU kartını LUA ile programlamak isteyenler buradan devam edebilirler.
3-Arduino IDE: Arduino ide ile programlanacaksa içerisinde hiç bir şey yüklü olmasına gerek yok. Sadece Arduino ide üzerinde gerekli yüklemelerin yapılması gerekiyor. Bunun için biraz googlellamak yeterli. Burada bilinmesi gereken şu; arduino ile programlandığında ESP8266 içerisindeki yüklü firmware siliniyor. Daha sonra AT veya Lua modunda kullanmak isterseniz firmware yüklemeniz gerekir.
4- MicroPython: ESP8266’yı micropython ile programlamak için, içerisine micropython firmware yüklemek gerekiyor. Micropython mikrodenetleyici dünyasında hızla gelişen bir programlama dili. Yakında kendisini iyiden iyiye hissettirecektir. MicroPython -ESP8266 ile ilgili detaylaraburadan ulaşabilirsiniz.
Bence AT komutlarıyla uğraşmak hamallıktan başka bişey değil. ESP8266 unutmayalım ki bir mikrodenetleyici ve onu kullanmak için başka bir mikrodenetleyici kullanmak bana ters 🙂
ESP8266 üzerinde bir adet 10bit ADC girişi de mevcut. Bu sayede dışarıdan herhangi bir analog veriyi de algılatabiliyoruz. Ayrıca dahili olarak ESP8266’nın besleme gerilimi de okunabiliyor ve bu sayede ADC ölçümlerimizi VCC’ye göre kalibre ederek daha stabil hale getirebiliriz.
Ben ESP8266’yı C programlama diline olan sevgimden dolayı Arduino IDE ile programlamaya karar verdim. Arduino bugüne kadar hep uzak durduğum bir platformdu. Bundan sonra da uzak duracağım çünkü herşeyin bu kadar basitçe yapılabilmesi bana ters:) Şaka bir yana , hazır fonksiyonların getirmiş olduğu basitlik tabiki arka planda pek çok şeyden taviz vermemizi de neden oluyor. Örneğin bir pinin on/off yapma hızının karşılaştırıldığı bir videoyu şuradan izleyebilirsiniz. LUA ile programlamak ta oldukça kolay olmasına rağmen süslü parantezlerin yerini malesef hiç birşey tutmuyor gönülde 🙂
ESP8266’yı arduino ile programlayabilmek için öncelikle buradan ARDUINO IDE’yi indirip kurmamız gerekiyor. Daha sonra;
- Arduino’yu başlatıyoruz ve Dosya–>Tercihler seçeneğini bulup tercihler penceresini açıyoruz.
- Ayarlar sekmesindeki “Ek devre Kartları Yöneticisi URL’leri” yazan kısıma aşağıdaki URL’yi kopyalayıp yapıştırıyoruz.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Başka ekstra kartlar da kullanılacaksa aralarına virgül koyarak birden fazla kart yöneticisi URL’si eklenebilir. - Araçlar–>Kart–> Kart Yöneticisi seçilerek ESP8266 araması yaptırılır ve çıkan “esp8266 by ESP8266 community” seçeneğinin üzerine gelinerek yüklenir.
- Araçlar–>Kart yolundan hangi kartı kullanıyorsak onu seçeriz. (Generic ESP8266, Nodemcu v1.0 vs.)
Bu işlemlerden sonra programlama yapmaya hazırız.
En basitinden bir web server uygulaması aşağıdaki gibidir:
#include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> const char* ssid = "........"; const char* password = "........"; ESP8266WebServer server(80); int led = D1; void yak() { digitalWrite(led,1); server.send(200, "text/html", "<html><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><h1>Mikrodunya</h1> <p>Led Yanıyor</p> <a href=\"/yak\"> Yak </a> <br> <a href=\"/sondur\"> Söndür </a> <br> <a href=\"/\"> Sayfayı Yenile </a> </html>"); } void sondur() { digitalWrite(led,0); server.send(200, "text/html", "<html><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><h1>Mikrodunya</h1> <p>Led Sönük</p> <a href=\"/yak\"> Yak </a> <br> <a href=\"/sondur\"> Söndür </a> <br> <a href=\"/\"> Sayfayı Yenile </a> </html>"); } void yenile() { int durum=digitalRead(led); String veri="<html><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/><h1>Mikrodunya</h1>"; veri+="<p>"; veri+=(durum)?"Led Yanıyor</p>":"Led Sönük</p>"; veri+="<a href=\"/yak\"> Yak </a> <br> <a href=\"/sondur\"> Söndür </a> <br> <a href=\"/\"> Sayfayı Yenile </a> </html>"; server.send(200, "text/html",veri); } void setup(void){ pinMode(led, OUTPUT); digitalWrite(led, 0); Serial.begin(115200); WiFi.begin(ssid, password); Serial.println(""); // Wait for connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); server.on("/yak", yak); server.on("/sondur", sondur); server.on("/", yenile); server.begin(); Serial.println("HTTP server started"); } void loop(void){ server.handleClient(); }
Bu kodda dikkat edilecek nokta kodun başında tanımlanan ssid yazan yere kendi routerımızın Wifi ismini tırnak içerisinde yazmamız, password yazan yere ise şifremizi tırnak içerisinde yazmamız gerektiğidir. Kodu derleyip karta yükledikten sonra Arduino IDE’nin sağ üst köşesinde bulunan seri port ekranımızı açarak kartın almış olduğu IP adresini görebilirsiniz. Daha sonra aşağıdaki resimde gösterdiğim gibi, bu IP adresini herhangi bir web browser’ın url çubuğuna girerek cihazımıza ulaşabiliriz.
Buradaki örneğimizde nodemcu’nun D1 pnine bağlı bir ledi aynı ağdaki bir cihaz üzerindeki web browser aracılığıyla yakıp söndürdük. İstenilirse kartımız, routerdan port yönlendirme yapılarak dünyaya açılabilir. Bundan sonrası web sayfası hazırlama bilgimize kalıyor. HTML, CSS, PHP bilgilerinizi kullanarak mükemmel arayüzler hazırlayıp, bu web server ile dünyanın diğer ucundan evinizdeki veya iş yerinizdeki cihazları açıp kapayabilir, istediğiniz veriyi istediğiniz noktaya ulaştırabilirsiniz. İstenilirse de mobil bir uygulama hazırlayıp kartımızı telefonumuzdan veya tabletimizden yönetebiliriz.
Umarım yararlı bir yazı olmuştur.
İyi çalışmalar.
Hocam, emeğinize sağlık. Çok kısa ve net bir doküman olmuş. Paylaştım. Görüşmek üzere
Teşekkürler. Görüşürüz.
Merhaba böyle örnekleri çok inceledim şöyle bir sıkıntı var nodemccu bağlanmak ip adresinde aynı ag üzerinden kolay ve anlamsiz ayni odadaysak ne anlami kaldi ama firebase nodemcu ya eklemek gibi uygulamaları gerçek bir uygulama yapmak zor firebase üzerinden ip adresi aramadan dünyanın bir ucundan bağlanmak çok kolay elinizde böyle örnekler var mi
Bu tarz bağlantılar kurmak kolay olabilir ama anlamsiz demek abartı olur. Zaten başlıkta belirttiğim gibi bu örnek basit bir uygulama. Ayrıca herhangi bir ağa bağlanıp ip alabilen bir cihaz çok kolay bir şekilde modem üzerinden internete açılıp dünya üzerinden kontrol edilebilir. Yani aynı oda diye bir durum söz konusu değil. Bunu yapabilmek için tek bilinmesi gereken şey modemin almış olduğu unique IP adresidir. Eğer sabit IP hizmetiniz varsa bu ip hiç değişmez ve heryerden istediğiniz zaman cihazınıza bağlanabilirsiniz. Buradaki uygulama eğer sana çok basit geldiyse ve mantığı kavradıysan firebase uygulaması yapmak ta senin için basit olmalı. Elimde yaptığım pek çok uygulama var ama hazır kod paylaşma taraftarı değilim. Çünkü hazır paylaşılan şeyleri insanlar gördükten bir süre sonra kolay olarak adlandırıyor. Şimdi firebase uygulamasını burada paylaşırsam o da size kolay gelir eminim.
İyi çalışmalar.
merhaba 29 agustos 2017.07:58 yazı için sizden özürdilerim bir konu hakkında arıştırma yaparken yazımı okudum sizin gibi kişilerin bir emek harcadığını ve en küçük bir yazının bile saygı duyulmasının geriktigini düşünüyorum.
NodeMcu ve Basit bir Uygulama. yazını için teşekkür ederim.
Merhabalar, yazınız için çok teşekkürler.
Yazınızda bahsettiğiniz satın aldığınız NodeMCU ‘nun aliexpress linkini paylaşırmısınız ?
Teşekkürler.
https://tr.aliexpress.com/item/1pcs-NodeMCU-V3-Lua-WIFI-module-integration-of-ESP8266-extra-memory-32M-Flash-USB-serial-CH340G/32816551119.html?spm=a2g0s.9042311.0.0.z7e5sF
Hocam merhabalar kolay gelsin. Bu uygulamada hazırlanan web sayfaları html den farklı bir alt yapıya müsait değil diye biliyorum. PHP komutlarının arka planda çalışmayacağını düşünüyorum. J serisi Pic ile yaptığım bir uygulamada admin panel yapmak için javascripten faydalandım. Tabi burada, “elektronik+gömülü sistem yazılımı+web page” hepsini harmanlamak zor işler ve uğraşmanız çok güzel. Kolay gelsin, Başarılar.
Merhaba.
Her türlü web arayüzünü istediğiniz platformu kullanarak hazırlayabilirsiniz. Java da php de çalışıyor.
Hocam merhaba. Yani nodeMCU da php interpreter var mı? Eminmi siniz? Kolay gelsin.
Merhaba.
ESP8266 şu anda bir php intewrpreter a sahip değil fakat javascript için yazılmış olan bir interpreter mevcut. Ben daha çok php ile hazırlanmış bir arayüzden esp8266’yı post ve get metodlarıyla kontrol etmeyi kast ettiğinizi düşünerek o şekilde cevap verdim.
Saygılar.
merhaba
bende de bu 8266 var usbye bağladığımda programı atıp çalıştırıyorum fakat usb yi çıkartıp vinden normal 5 v gerilim verdiğimde kart çalışmıyorve kendini resetliyor sanırım. bu neden olabilir ve ne yapmamız gerekli
bunu sürekli pc de tutmamızmı gerekli
lütfen yardımcı olun kafayı yicem
Harici 5v ile çalışmaması için normalde bir sebep yok. Sorununuzu video olarak bana ulaştırırsanız çözüm bulmamız daha kolay olur.
hocam esp8266-01 de deniyorum yazılımı yükledim internet sayfası da browserda açılıyor fakat yak/sondür linklerine tıklıyorum fakat led’i yakamadım
MErhaba.
Esp8266-01 ile ledi yakamamanız normal. GPIO pinlerini ESP-01 ile kullanmak çok zahmetli. Nodemcu tavsiye ederim.
herkese selamlar
esp 12 e ile dıs agadan 1 den fazla cihaz kontrolu nasıl yapılıyor orneklerle acıklayabilirmisiniz.