Esp8266 Programlama (Arduinoyla)

Bu yazımda yakın zamanda kullanma ve programlama tecrübesi edindiğim  esp8266 isimli Wifi modülünün programlamlanmasından bahsedeceğim.

http://benlo.com/esp8266/ESP8266-ESP01.jpg

Çipler ya tek sefer programlanabilr özelliktedir yada tekrara tekrara programlanabilirler. Esp8266 çok gez programlanabilri çiplerden yani bir flash belleğe sahip. Tıpkı bir Arduino- Waspmote kartı özünde mikrodenetleyiciler hepsi gibi programlamak mümkün.

Örenk iki senaryo üzerinden anlatayım :

  1. Bir arduinoya yazdığınız program Seri haberleşme sonucu aldığı komutu icrada edebilir. Mesela “{Yak,Led1}”, “{Sondur,Led1}” , {Ölç, SIcaklık} şeklinde örneklendirlecilecek bir programda tasarlanabilir.
  2.  Sadce led yakacaksanız Bu kadar komut içeren bir sistemi kullanmak yerine daha basit, özelleştirilmiş ve kullanışlı bir sistem geliştirmek mükündür. Bu senaryodada ona bir örnek verelim. Ledleri digital çıkışlara bağladığınızı düşünürrsek “{PinNo, Durum}” şeklinde basit bir komut sistemi oluşturabiliriz. Bunu ebnf ile ifade edersek uno için {  (1|2|3|4|5|6|7|8|9|10|11|12|13 , (0|1)  } şeklinde olabilir. Örn: {1,1} Digital 1 pinindeki ledi yakacaktır.

Senryo 1 de örnekleri verilmiş olan komutlar arttırlılarak tüm sistemin yönetilmesi mümkündür. Fakat ihtiyacınız özelse bu komplexlikten kurtamak anlamlı labilir sistemi. Bunuda senaryo 2 ile örneklemeye çalıştım.

Gelelim esp8266ya. Esp8266 satın alındığında genelde her donanımın yönetilmesinde ve yapılandırılmasında kullanılan AT komutlarıyla kontrol edilebilecek bir şekilde programlanmış olarak geliyor. Ve standart RX-TX bağlantısını yaparak At komutları üzerinden çalıştırabiliyorsunuz. Bu genel ve komplex kullanımdan kurtulmak isteyenler ise modülle At komutları üzerinden konuşmaktansa direk programlamayı tercih ediyorlar

Esp8266 modülü ve en popiler kütüphanenin kullanımı gitbook.com da krzychb takma adlı kullanıcı tarafından hazırlanmış kılavuz da anlatılmış. Bizde bu yazıda aynı projenin (Github da barınıdırılan esp8266/Arduino projesin) derlenmesinden ve kullanılmasından bahsedeceğiz.

  1. Derleme ve yazılım geliştirme ortamının hazırlanması,
  2. Programlama için donanımsal hazırlıkların yapılması,
  3. Geliştirilen yazılımın yüklenmesi

şeklinde 3 ana başlıkta açıklanacaktır.

Derleme ve yazılım geliştirme ortamının hazırlanması

Programlama için Arduino IDEsinin kullanımı tercih edilmiş ve uygun geliştirmeler yapılmış o yzüden bizde arduino idesi üzerinden ilerleyeceğiz. IDE’nin Son sürümünü buradan indirebilirsiniz. Son sürümle denemeniz tavsiye olunur. Sürüm değiştikçe geliştirmeler yapıldığı için eski sürüm kullandığınızda uyum problemi yaşayabilirisiniz.

IDE’ ye esp8266 yı programlamak için gerekli kart ve kütüphane tanımlamalrının yapılması gerekiyor. Fakat bu iş gerçekten kolaylaştırılmış.

IDE’yi açıp Dosya-> Tercihlere tıklayıp Ek devre kartları Yöneticisi URL’leri yazan kısıma projenin README.md sinde yazan Boards Menager linkini: http://arduino.esp8266.com/stable/package_esp8266com_index.json kopyalayıp yapıştırıyoruz. Tamam diyerek seçeneklerden çıkıyoruz.

Yine Araçlar-> Kart -> Kart Yöneticisi ne tıklayarak açılan listeden esp8266 by ESP8266 Comunity yazan kart setini bulup Kur butonuna basarak yüklüyoruz.

Programlama için donanımsal hazırlıkların yapılması

Genel olarak modüller farklı modlarla başlatılmak istendiğinde (buna farklı yetkiler veya programlama modu örnek verilebilir) donanımsal olarak bazı pinlere farklı gerilim bağlantıları yaparak başlatılması gerekir.

Esp8266 da ise programlama moduna geçebilmek için donanımsal ololarak yapılması gerekenler:

  1. 3.3 V u arduinoda 3.3 volta bağlayın
  2. RX ‘i RX e
  3. TX i TX e
  4. Gnd yi Gnd ye
  5. Ch_PD yi 5 Volta
  6. GPIO_0’ı GND ye
  7. Arduinonun üzerindeki (esp8266’nın reseti değil) reset bacağı gnd ye bağlanmalı (bu sayede arduino devre dışı kalır. Wifi programlanır).

Bağlamanız gerekli. Tüm bağlantıları yaptıktan sonra 3.3 volt gücü çekip tekrar takarsanız modül programlama modunda çalışacaktır. Ve arduinodan program yükleyebileceksiniz. Program yüklendikten sonra direk çalışmaya başlayacaktır. Programlama yapmadan çalıştırmak isterseniz GPIO_0’i gnd bacağından çıkartmalısınız.

alıntı : http://www.electroschematics.com/11276/esp8266-datasheet/

Esp8266 pin Diyagramı

Geliştirilen yazılımın yüklenmesi

Yükleme için donanımsal atarlamlaır yaptığınızı var sayarak devam ediyorum.

  • Araçlar-> Kart -> Sekmesinden Generic ESP8266 Modüle kart olarak seçilmelidir.
  • Port kımında ise arduino ile programlayacağımız kullancağımız arduinonun ilişkili olduğu com port seçilmelidir.

Klavuzdaki örnek program veya Blink.ino örneği yüklenebilir. Yükleme aynen arduinoya yüklermiş gibi derle ve yükle butonuna basılarak yapılmaktadır.

 

 

Esp8266 Programlama (Arduinoyla)” üzerine 10 düşünce

  1. Öncelikle paylaşımınız için teşekkürler. Modülün güncellemesini yapabiliyorum. Ayrıca kod da yükleyebiliyorum (her ikisi de arduino uno üzerinden) ancak modül bir türlü AT komutlarına cevap vermiyor. Bunun sebebi ne olabilir acaba ?
    Teşekkürler..

    • Eğer kod yüklüyorsanız, At komutlarıyla çalışmayacak hale getiriyorsunuz demektir. Cihazı at komutları ile kullanmak yerine direk programlamak için ESP kütüphanesi.
      Eğer At komutlarıyla kullanmak istiyorsanız varsayılan firmwareyi yüklemelisiniz. Esp nin standart at ile çalışan programını indirip esp ye tekrardan yazın, bu şekilde esp yi at ile kullanabilirsiniz.

  2. hocam ben lcd ekrana internetten aldığım saati yazmak istiyorum. Saat blgisini almayı başardım. Şu anda esp yi programlamdım anladığım kadarıyla. Peki esp den bu saat bilgisini arduinoya yani glcd ekrana nasıl yazıcam. ?

    • Eğer saat bilgisini alabildiyseniz (debug yapmadığınızı kabul ederek) uart tan yani Serial.Println le yazdırıyorsunuz demektir. Uarttan arduino ya oradanda lcd ekrana göndermeniz lazım.

      Wifi deki program
      {
      saat = get saat()
      Serial Print ln (saat)
      }

      Arduinodaki program
      {
      if (Serial.available)
      char a = Serial read() // tanımlama yukarıda olsun
      Lcd. write (a);
      }

      gibi birşey olacak .

  3. Selam ellerinize sağlık çok güzel bir çalışma.
    arduino nano kullanıyorum. uno ile aynı pinlere denk gelecek şekilde bağlantıları yaptım. video da 15: 38 e kadar herşey aynı ama blink yüklemesini yapınca yani yükleme %100 olunca arduinonun kırmızı ledi yanmaya devam ediyor ama esp8622 nin gücü kesilmiş gibi oluyor kırmızı led sönüyor ve mavi led yanıp sönmüyor. arduino ide deki port menusü pasif hale geliyor. yardımcı olabilirseniz sevinirim. teşekkürler.

    • Gücü kesilmiş gibi oluyorsa ki portun gözükmüyor olması da buna bir işaret . Bir yerlerde kısa devre oluyor olabilir mi ?

      Esp de güç haricinde sorun olsa bile uno orada bir TTL dönüştürücü olarak kullanıldığından dolayı portun gözükmesini engellememeli (yani port bağlantısının kapamasını sağlamamalı).

  4. hocam merhabalar yükleme işlemine kadar başarılı bir şekilde yaptım .Ama 100% olmasına rağmen mavi led yanıp sönmüyor.Yani sonuçta kod espye yüklenmiştir değilmi?
    2.sorumda , herşey tamam peki arduino yokken pen esp yi nasıl ve hangi pinlerden beslemeliyim?
    Bu ara arduino mega kullanıyorum (klon);
    YAZINIZ GÜZEL OLMUŞ HOCAM ELİNİZE SAĞLIK!…

    • Merhaba Burhan,
      100 % ise yüklenmiş olmalı.
      Esp nin çalışması için aşağıdaki bacakların bağlanmış bağlanmış olması gerekiyor.
      3.3 V u arduinoda 3.3 volta bağlayın
      Gnd yi Gnd ye
      Ch_PD yi 5 Volta

      Haberleşme için ise
      RX ‘i RX e
      TX’i TX e

      NOT : 5volt yerine 3.3 volt kullanilabilirmi bilemiyorum şuan incelemek lazım dokümanları.

      Allah c.c. den ümmete hayırlı ve faydalı ilimler dilerim.

  5. Merhabalar, kod %100 yükleniyor fakat daha sonra led yanıp sönmüyor. Yükleme tamamlandıktan sonra bilgisayardan cihazı çıkarmışım gibi bir ses geliyor. Neden olabilir acaba?

    • Merhaba, çıkmış gibi sesin gelmesi normal. Işık hiçbir zaman yanıp sönmüyor mu ? Başka kod yüklemeyi denediniz mi ?

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir