18 Ağustos 2023, 20:49 tarihinde eklendi

NodeMCU V3 ESP8266 ESP-12E ile Buton LED Kontrolü Uygulaması

NodeMCU V3 ESP8266 ESP-12E ile Buton LED Kontrolü Uygulaması

Push buton devrede on/off (açık/kapalı) kontrolü için kullanılır. Butona basıldığında on (açık) durumuna geçerken buton bırakıldığında off (kapalı) durumuna geçer. Tactile (dokunsal) buton olarak da adlandırılır.

Butonun bağlandığı pin, Arduino IDE ile kodlama yapılırken pinMode(buton, INPUT) şeklinde giriş olarak yönlendirilir. Buton Arduino UNO, NodeMCU V3, Deneyap vb. geliştirme kartlarıyla birlikte kullanılırken iki şekilde bağlantı yapılır:

  • Pull-down bağlantı
  • Pull-up bağlantı

Görsel 1.1: Pull-up ve pull-down bağlantı

Pull-down veya pull-up direnci olarak 10kΩ değerinde direnç kullanımı uygundur. Pull-down veya pull-up direnci dijital pin giriş olarak kullanıldığında sinyalin bozulmamasını sağlar. Pull-down bağlantıda butona basılmadığında mikrodenetleyici pini, direnç üzerinden LOW (0V) seviyesinde bulunur. Butona basıldığında mikrodenetleyici pini, buton üzerinden HIGH (5V) seviyesinde bulunur. Bu durum pull-up bağlantıda tam tersi şeklindedir.   

NodeMCU V3 geliştirme kartı üzerinde bulunan mikrodenetleyici ESP8266 içerisinde dahili pull-up dirençleri vardır. Dahili pull-up dirençleri sayesinde buton kullanırken ayrıca direnç kullanılmasına gerek kalmaz. ESP8266 mikrodenetleyicisinin tüm pinlerinin dahili pull-up özelliği vardır. Sadece GPIO16 (D0) pininin dahili pull-down özelliği vardır. NodeMCU V3 geliştirme kartıyla Arduino IDE yazılımında kodlama yapılırken dijital giriş/çıkış pinlerinin ayarlamaları pinMode() fonksiyonuyla yapılır. Dijital pinler giriş (INPUT), çıkış (OUTPUT) ve dahili pull-up direnci aktif şekilde giriş (INPUT_PULLUP) şeklinde ayarlanabilir. GPIO16 (D0) pini ayrıca dahili pull-down direnci aktif şekilde giriş (INPUT_PULLDOWN_16) şeklinde ayarlanabilir.

pinMode (buton, INPUT);

//buton olarak isimlendirilmiş pini giriş olarak yönlendir.

pinMode (buton, INPUT_PULLUP); 

//buton olarak isimlendirilmiş pini dahili pull-up direnci aktif giriş olarak yönlendir.

pinMode (D0, INPUT_PULLDOWN_16); 

//D0 pinini dahili pull-down direnci aktif giriş olarak yönlendir.

NodeMCU V3 kartı üzerinde mavi renk ışık veren yerleşik bir LED diyot bulunur. Bu LED diyot D0 pinine pull-up şeklinde bağlıdır. D0 pinine LED diyodun katot ucu bağlıdır. Bu sebeple LED diyodun ışık verebilmesi için D0 pinine LOW (lojik 0) seviyede gerilim uygulanmalıdır. LED diyodun anodu direnç üzerinden 3,3 V'a bağlıdır (Görsel 1.2).

NodeMCU V3 kartı üzerindeki mikrodenetleyici ESP8266'nın GPIO15 (D8) pini 12k değerli bir direnç üzerinden GND seviyesindedir. Başka bir deyişle pull-down bağlantısı vardır. Bunun nedeni GPIO15 (D8) pininin ESP8266 mikrodenetleyicisinin boot modları için kullanılmasıdır. Boot işleminin nasıl olacağını belirlemek için GPIO0, GPIO2 ve GPIO15 pinleri kullanılır. ESP8266, bu pinlerin durumuna göre nasıl boot edeceğini belirler (Görsel 1.2).

Görsel 1.2: NodeMCU V3 kartı üzerinde bulunan yerleşik LED ve D8 pini pull-down bağlantısı

Buton ve anahtar uygulamalarında buton/anahtar kontaklarının istenilen konuma gelmesi sırasında kontaklar arasında oluşan arkın mutlaka göz önünde bulundurulması gerekir. Kontaklar çok kısa sürede istenilen konuma gelir. Bu kısa süre içerisinde ark oluşur. Bu arkı insanın algılaması zordur. Bu olaya buton arkı ya da buton sıçraması (bounce) adı verilir. Lojik 1 seviyesinden lojik 0 seviyesine geçiş hemen olmaz. Çok kısa bir süreliğine ark oluşur. Oluşan bu arkları mikrodenetleyici fark eder ve yanılır. Sinyalin ark kısımlarında birkaç tane 1-0-1-0-1 geçişler yaşanır. Mikrodenetleyici bu durumları butona basıldı olarak algılayarak ona göre tepki verir. Yaptığı işlem hatalı olur (Görsel 1.3).

Görsel 1.3: Buton sıçraması

Ark istenmeyen bir sinyaldir. Elektronik devrelerde istenmeyen sinyaller donanımsal olarak filtrelemeyle bastırılır. Butona basma anında oluşan arkları önlemek (debounce) için butona paralel 100nF değerinde bir kondansatör bağlanarak donanımsal çözüm bulunabilir. Buton uçlarına paralel kondansatör bağlamak en basit çözümdür. Kondansatör, butona basma anında oluşacak istenmeyen durum değişikliklerini (parazitleri) filtreler. Lojik 1 seviyesinden lojik 0 seviyesine daha keskin bir geçiş için schmitt trigger buffer (tampon) kapısı kullanılmalıdır. Schmitt trigger buffer, lojik seviye geçişlerini daha hızlı bir hale getirerek istenmeyen sinyalleri engeller.

Buton arkı sorununun yazılım çözümü de vardır. Bunun en basit yolu buton kontrolünden sonra bir süre gecikme sağlamaktır. Hassasiyetin ve algılama hızının önemsenmediği uygulamalarda yazılımsal çözümlerin kullanılması önerilir.

Bu uygulamada NodeMCU V3 kart üzerinde bulunan yerleşik mavi LED, butonla kontrol edilecektir. Butonun durumu LED diyoda aktarılmıştır. Arduino IDE yazılımında kodlama yapılmıştır.

Uygulamaya Ait Şema, Bağlantı Şekli ve Görseller

Görsel 1.4: LED diyot pin yapısı

Görsel 1.5: NodeMCU V3 ESP8266 ESP-12E ile buton LED kontrolü uygulaması devre şeması

Görsel 1.6: NodeMCU V3 ESP8266 ESP-12E ile buton LED kontrolü uygulaması devre şeması (KiCad 7.06 ile çizilmiştir)

Görsel 1.7: NodeMCU V3 ESP8266 ESP-12E ile buton LED kontrolü uygulaması breadboard bağlantısı

Malzeme Listesi

Sıra No

Adı

Özelliği

Miktarı

1

NodeMCU V3

ESP8266 ESP-12E

1 Adet

2

Buton

Push buton

1 Adet

3

Kondansatör

100nF

1 Adet

4

Breadboard

830 pin

1 Adet

5

Jumper kablo

Erkek-erkek

-

 

Uygulamaya Ait Kod

NodeMCU V3 ESP8266 ESP-12E ile buton LED kontrolü uygulamasının fiziksel çıktısına ait videoyu izlemek için tıklayınız.

Bu internet sitesi içeriğinde yer alan tüm eserler (yazı, resim, görüntü, fotoğraf, video, müzik vb.) İlhan DEMİR'e ait olup, 5846 sayılı Fikir ve Sanat Eserleri Kanunu ve 5237 sayılı Türk Ceza Kanunu kapsamında korunmaktadır. Bu hakları ihlal eden kişiler, 5846 sayılı Fikir ve Sanat eserleri Kanunu ve 5237 sayılı Türk Ceza Kanununda yer alan hukuki ve cezai yaptırımlara tabi olurlar. İlhan DEMİR, yasal işlem başlatma hakkına sahiptir.

BİR CEVAP YAZ

E-posta hesabınız yayımlanmayacak. Doldurulması zorunlu alanlar işaretlendi *