ESP8266 NodeMCU ADC – Analog Pinden Veri Okuma
Hem ESP8266-12E hem de ESP8266-07 üzerinde 1 adet ADC yani analog veri okuma pini bulunmaktadır. Bu ADC pini sayesinde analog sinyalleri okunabilmektedir. Bu yazımda sizlere Arduino IDE ile ESP8266 üzerinden analog sinyalleri nasıl okuyabileceğimizi bir örnekle anlatmaya çalışacağım. Örneğimizde bir potansiyometre’nin anlık değerini analog pin üzerinden okuyacağız.
Yazımda ESP8266 ADC pininden bahsederken aşağıdaki terimleri sıklıkla kullanıyor olacağım. Bütün bu terimler ESP8266‘nın aynı pinini ifade etmektedir.
- ADC (Analog Dijital Çevirici)
- TOUT
- Pin6
- A0
- Analog Pin 0
ADC pininin 10-bit desteği olduğu için, bu pinden 0 ile 1023 arasında değer okunabilir. ESP-07 veya ESP-12E gibi ESP8266 yongasını geliştirme kartı olmadan kullanıyorsanız ADC pinin giriş voltaj aralığı 0V-1V aralığındadır. NodeMCU yada Wemos D1 Mini gibi bir geliştirme kartı kullanıyorsanız, bu kartlarda dahili voltaj bölücü bulunduğundan voltaj aralığı 0V-3.3V arasındadır.
ESP8266-12E NodeMCU gibi bir geliştirme kartı kullanıyorsanız, kart üzerinde pinler hazır olduğu için A0 pinini kullanabilmek için A0 pinine bir ucu dişi diğer ucu erkek olan kablolardan takmanız yeterli olacaktır. A0 pinini aşağıdaki resimde görebilirsiniz.
ESP8266-07 gibi bir ESP yongasını kullanacaksanız, kabloyu yonga üzerine lehimlemeniz gerekecektir. A0 pinini aşağıdaki resimde görebilirsiniz.
Gelelim analog pinden potansiyometrenin değerini okumak için bize lazım olacak malzemelere:
- 1 adet ESP8266 12E NodeMCU Kit (alternatif olarak 1 adet ESP8266-07 veya ESP8266-12E yongası ve FTDI programlayıcı)
- 1 adet 100 Ohm direnç (ESP8266 yonga kullanıyorsanız gerekecek)
- 1 adet 220 Ohm direnç (ESP8266 yonga kullanıyorsanız gerekecek)
- 1 adet 1K Ohm potansiyometre
- 1 x Breadboard
- Jumper Kablo
ESP8266-12E NodeMCU geliştirme kartı kullanıyorsanız aşağıdaki bağlantı şemasına göre breadboard üzerine kurulum yapmalısınız.
Giriş voltajı 0V-1V arasında olan ESP8266 yongası kullanıyorsanız, yonganın zarar görmemesi ve doğru değer okuyabilmek için A0 pini üzerindeki voltajın 1V aşmaması gerekiyor. O yüzden bir voltaj bölücü devre de kullanmalıyız. Aşağıdaki şemada bulunan voltaj bölücü devreyi kullanarak ESP8266 yongaya bağlantı yapabilirsiniz.
Giriş voltajı olarak 3.3V kullanacağımız için 1 adet 100 Ohm ve 220 Ohm direnç kullanarak ESP8266 yongasının A0 pinine uygulanacak voltajı 1V’a düşürmüş olacağız. Farklı voltaj için aşağıdaki formülü kullanarak hesaplama yapabilirsiniz.
Gerekli olan malzemelerimizi aldık, breadboard üzerine devremizi yerleştirdik, şimdi sıra geldi kodumuzu NodeMCU kitimize yüklemeye. Bilgisayarımızda Arduino IDE yazılımı yüklü değilse öncelikle onu yüklememiz gerekiyor. Güncel Arduino IDE yazılımını buradan indirebilirsiniz. Daha sonra ESP8266 kartımızı Arduino IDE yazılımına tanıtmamız gerekiyor, nasıl kurulacağını bilmiyorsanız buradan okuyarak kurulumu yapabilirsiniz.
ESP8266 kartını tanıttıktan sonra yeni bir proje açarak aşağıdaki kodumuzu kopyalayarak Arduino IDE ye yapıştırıyoruz.
const int analogGirisPini = A0; // ESP8266 Analog Pinini tanimliyoruz
int sensorDegeri = 0; // potansiyometreden okunacak degeri saklamak icin
int cikisDegeri = 0; // PWM pinine atanacak degeri saklamak icin
void setup() {
// seri haberlesme hizini 115200 olarak ayarliyoruz
Serial.begin(115200);
}
void loop() {
// analogRead() fonksiyonu ile analog pinden anlik degeri okuyoruz
sensorDegeri = analogRead();
// PWM cikis araligina map ediyoruz
cikisDegeri = map(sensorDegeri, 0, 1023, 0, 255);
// okudugumuz ve cikis degerini Serial Monitor uzerine yazdiriyoruz
Serial.print("sensor = ");
Serial.print(sensorDegeri);
Serial.print("\t cikis = ");
Serial.println(cikisDegeri);
delay(1000);
}
Kodumuzu Arduino IDE’ye yapıştırdıktan sonra kodumuza bir göz atalım:
Önce ESP8266 analog pinini analogGirisPini
değişkenine atıyoruz:
const int analogInPin = A0; // ESP8266 Analog Pinini tanimliyoruz ADC0 = A0
Potansiyometreden okuyacağımız değeri sensorDegeri
değişkenine atayacağız:
int sensorValue = 0; // potansiyometreden okunacak degeri saklamak icin
setup()
fonksiyonu içinde bağlantı hızını veriyoruz. Böylelikle Serial Monitor üzerinden kontrol amaçlı görüntüleme yapabiliriz:
void setup(){
// seri haberlesme hizini 115200 olarak ayarliyoruz
Serial.begin(115200);
}
loop()
fonksiyonu içinde, analog pin üzerindeki değeri analogRead()
fonkiyonu ile okuyoruz. Fonksiyonda pin numarasını analogGirisPini
değişkeni ile belirtiyoruz. Daha sonra okuduğumuz değeri sensorDegeri
değişkenine atıyoruz:
sensorDegeri = analogRead(analogGirisPini);
Sonuç olarak, Serial Monitor üzerine okuğumuz değerleri yazdırarak kodumuzun verdiği sonuçları görebiliyoruz.
Serial.print(sensorDegeri);
ADC pininin giriş voltajına göre alacağımız PWM sinyalini görmek istiyorsak, ADC değerini map()
fonksiyonunu kullanarak 0 ile 255 arasında bir değere dönüştürmemiz gerekiyor. Aksi durumda PWM sinyali 8 bit çözünürlüğe sahip olduğu için bir anlam ifade etmeyecektir.
cikisDegeri = map(sensorDegeri, 0, 1023, 0, 255);
Kodumuzu inceledikten sonra sıra geldi kodumuzu ESP8266-12E NodeMCU kitimize yüklemeye. Arduino IDE üzerinde yeni bir proje açıp yukarıdan kopyaladığımız kodumuzu yapıştırmıştık. Yükleme yapacağımız geliştirme kartını seçmek için Araçlar – Kart : “NodeMCU 1.0 (ESP-12E Modülü)” (Tools-Board: “NodeMCU 1.0 (ESP-12E Modülü)”) adımlarını takip ediyoruz.
Geliştirme kartımızı NodeMCU olarak seçtikten sonra bağlı olduğu portu seçmemiz gerekiyor, onu da Araçlar – Port (Tools-Port) adımlarını takip ederek yapıyoruz. Port seçimini yaptıktan sonra Arduino IDE üzerindeki Yükle (Upload) butonuna basarak kodumuzu NodeMCU üzerine yüklüyoruz.
Yükleme tamamlandıktan sonra Arduino IDE üzerindeki Seri Monitörü 115200Bps olarak ayarlayıp açıyoruz. Potansiyometrenin ayarını değiştirdikçe kodumuzda analog pin üzerinden okuduğumuz değerleri Seri Monitör üzerinde görüyor olacağız. Ekran görüntüsü aşağıdaki gibi olacaktır.
ESP8266 üzerindeki analog pinden nasıl veri okunabileceğini detaylı ve anlaşılabilir şekilde yazmaya çalıştım. Umarım başarılı olabilmişimdir.
anlatımınız için teşekkürler elimde 2 adet analog sensör var. bu sensörleri kullanarak akım ve gerilim ölçmek istiyorum. esp8266nodemcu da ise bir tane anolog pin mevcut. esp ye ikinci analog sensörü nasıl bağlayabilirim.
Merhabalar, birden fazla analog sensör kullanabilmeniz için analog/dijital çeviriciye ihtiyacınız var, ADS1115 gibi bir çevirici kullanırsanız sorununuz çözülecektir.