Yeni başlayanlar için Arduino
Merhaba Yeni başlayanlar için Arduino‘yu şimdilik 2 başlık altında inceleyeceğiz. Bunlar;
1- Arduino nedir ?
2- Arduino ile kullanabileceğim sensörler ve yapabileceklerim.
Şimdi bu konulara bi göz atalım. . .
Arduino nedir ?
Genel olarak Arduino 10 bit’lik işlemciye sahip bir programlama kartıdır önce kartımızı bi tanıyalım.
Arduino R3 ile başlayalım ;
– Mikrodenetleyici : ATmega 328
– Çalışma gerilimi : 5 VDC
– Tavsiye edilen besleme gerilimi : 4.5 – 9 VDC
– Besleme gerilimi limitleri : 6 – 20 VDC
– Dijital giriş / çıkış pinleri : 14 tane (6 tanesi PWM çıkışını destekler)
– Analog giriş pinleri : 6 tane
– Giriş / Çıkış pini başına düşen DC akım : 40 mA
– 3.3 V pini için akım : 50 mA
– Flash hafıza : 32 KB (0.5 KB bootloader için kullanılır)
– EEPROM : 1 KB
– Saat frekansı : 16 MHz
-Güç
Arduino Uno bir USB kablosu ile bilgisayar bağlanarak çalıştırılabilir ya da harici bir güç kaynağından beslenebilir. Harici güç kaynağı bir AC-DC adaptör ya da bir pil / batarya olabilir. Adaptörün 2.1 mm jaklı ucunun merkezi pozitif olmalıdır ve Arduino Uno ‘nun power girişine takılmalıdır. Pil veya bataryanın uçları ise power konnektörünün GND ve Vin pinlerine bağlanmalıdır.
– VIN : Arduino Uno kartına harici bir güç kaynağı bağlandığında kullanılan voltaj girişidir.
– 5V : Bu pin Arduino kartındaki regülatörden 5 V çıkış sağlar. Kart DC power jakından (2 numaralı kısım) 7-12 V adaptör ile, USB jakından (1 numaralı kısım) 5 V ile ya da VIN pininden 7-12 V ile beslenebilir. 5V ve 3.3V pininden voltaj beslemesi regülatörü bertaraf eder ve karta zarar verir.
– 3.3V : Arduino kart üzerindeki regülatörden sağlanan 3,3V çıkışıdır. Maksimum 50 mA dir.
– GND : Toprak pinidir.
– IOREF : Arduino kartlar üzerindeki bu pin, mikrodenetleyicinin çalıştığı voltaj referansını sağlar. Uygun yapılandırılmış bir shield IOREF pin voltajını okuyabilir ve uygun güç kaynaklarını seçebilir ya da 3.3 V ve 5 V ile çalışmak için çıkışlarında gerilim dönüştürücülerini etkinleştirebilir.
-İNPUT & OUTPUT
Arduino Uno ‘da bulunan 14 tane dijital giriş / çıkış pininin tamamı, pinMode(), digitalWrite() ve digitalRead() fonksiyonları ile giriş ya da çıkış olarak kullanılabilir. Bu pinler 5 V ile çalışır. Her pin maksimum 40 mA çekebilir ya da sağlayabilir ve 20-50 KOhm dahili pull – up dirençleri vardır. Ayrıca bazı pinlerin özel fonksiyonları vardır:
– Serial 0 (RX) ve 1 (TX) : Bu pinler TTL seri data almak (receive – RX) ve yaymak (transmit – TX) içindir.
– Harici kesmeler (2 ve 3) : Bu pinler bir kesmeyi tetiklemek için kullanılabilir.
– PWM: 3, 5, 6, 9, 10, ve 11 : Bu pinler analogWrite () fonksiyonu ile 8-bit PWM sinyali sağlar.
– SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) : Bu pinler SPI kütüphanesi ile SPI haberleşmeyi sağlar.
– LED 13 : Dijital pin 13 e bağlı bir leddir. Pinin değeri High olduğunda yanar, Low olduğunda söner.
Arduino Uno ‘nun A0 dan A5 e kadar etiketlenmiş 6 adet analog girişi bulnur, her biri 10 bitlik çözünürlük destekler. Varsayılan ayarlarda topraktan 5 V a kadar ölçerler. Ancak, AREF pini ve analogReference() fonksiyonu kullanılarak üst limit ayarlanabilir.
– TWI : A4 ya da SDA pini ve A5 ya da SCL pini Wire kütüphanesini kullanarak TWI haberleşmesini destekler.
– AREF : Analog girişler için referans voltajıdır. analogReference() fonksiyonu ile kullanılır.
– RESET : Mikrodenetleyiciyi resetlemek içindir. Genellikle shield üzerine reset butonu eklemek için kullanılır.
– HABERLEŞME
Arduino Uno bir bilgisayar ile, başka bir Arduino ile ya da diğer mikrodenetleyiciler ile haberleşme için çeşitli imkanlar sunar. ATmega328 mikrodenetleyici, RX ve TX pinlerinden erişilebilen UART TTL (5V) seri haberleşmeyi destekler. Kart üzerindeki bir ATmega16U2 seri haberleşmeyi USB üzerinden kanalize eder ve bilgisayardaki yazılıma sanal bir com portu olarak görünür. 16U2 standart USB com sürücülerini kullanır ve harici sürücü gerektirmez. Ancak, Windows ‘ta bir .inf dosyası gereklidir. Kart üzerindeki RX ve TX ledleri USB den seri çipe ve USB den bilgisayara veri giderken yanıp söner.
SoftwareSerial kütüphanesi Arduino Uno ‘nun digital pinlerinden herhangi biri üzerinden seri haberleşmeye imkan sağlar. Ayrıca ATmega328 I2C (TWI) ve SPI haberleşmelerini de destekler.
Arduino ile kullanabileceğim sensörler ve yapabileceklerim
Arduino ile hemen hemen tüm sensörleri kolaylıkla kullanabilirsiniz çünkü hazır libary ( kütüphane ) ler var.
İsterseniz şu sensörlerin yapısını ve çalışma mantıklarını bi anlayalım bunları şimdilik 2 konu altında inceleyelim.
-Analog sensörler :
Analog sensörler devreye 0 V – 5 V arasında ya da 4 mA – 20 mA arasındaki değerleri algılayacak şekilde bağlanabilir ve bu durumda bu iki değer arasındaki tüm değerler okunabilir. Yani analog sinyal belli iki değer arasında her hangi bir değerdir. Analog sensörler kullanıldığında bunları mikrodenetleyicilere yönlendirmeden önce ( A / D) analog – digital konvertör kullanılarak analog sinyaller digital sinyallere çevirilmelidir. Bu analog sensörleri 2 ve 3 pin olmak üzere inceleyelim şimdi..
2 pin analog sensörler :
Bu sensörlerde 2 pin bulunur bu pinlerin birtanesi VCC veya GND diğer pin ise SİNYAL’dir.
Mesela 2 pin sensörlere en güzel örnek NTC ve PTC dir, NTC ortam sıcaklığına göre direnci düşen
PTC ise ortam sıcaklığına göre direnci yükselen sensörlerdir. Arduino ile beraber şöyle bi örnek yapalım.
Önce sensörümüzü nasıl bağlamalıyız : NTC nin bir pinini direk olarak Arduino üzerideki 5V pinine bağlıyoruz diğer pinimizi ise Arduino üzerindeki Analog 0 pinine giriyoruz ardından 10kohm luk direnç ile GND ve SİNYAL (A0) pini arasına bi köprü yapıyoruz.
#include <math.h> void setup() { Serial.begin(9600); } double Termistor(int analogOkuma) { double sicaklik; sicaklik = log(((10240000 / analogOkuma) - 10000)); sicaklik = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * sicaklik * sicaklik )) * sicaklik ); sicaklik = sicaklik - 273.15; return sicaklik; } void loop() { int deger; double sicaklik; deger = analogRead(A0); sicaklik = Termistor(deger); Serial.println(sicaklik); delay(500); }
Yukarıdaki Arduino kodumuzda önce gerekli matematiksel işlemleri yapabilmek için <math.h> kütüphanemizi ekledik, ( bu kütüphane Arduinonun kendi kütüphaneleri arasında mevcut.. ) sonra serial ekranımızı belirledik ardından sensörümüzün çalışması ve Celcius cinsinden yazması için gerekli işlemleri yaptık sonrasında sensörümüzün Arduinoya girdiği pini belirledik (A0) ardından serial ekranımıza yazdırdık. Bu koda istenirse LCD,OLED,NEXTİON gibi ekranlar bağlanabilir, LED ve BUZZER ile görsel ve işitsel alarmlar verdirebilirsiniz bu tamamen size kalmış işte buda Arduino ile neler yapabilirim kısmına bi örnek..
3 pin analog sensörler :
Bu sensörlerde toplam 3 adet pin vardır bunlar VCC,GND ve SİNYAL’dir. 3pin analog sensöre en güzel örnek LM35 sıcaklık sensörüdür. Bu sensör ortam sıcaklığına göre bize bi analog değer verir ve bizde bunu kullanarak yapmak istediğimiz şeyleri yapabiliriz.. Şimdi gelin LM35 ile bi örnek yapalım, sensörümüzün GND’sini Arduino üzerindeki GND’ye , VCC’yi Arduino üzerindeki 5V’a ve son olarak SİNYAL ucunuda direk Analog 0 pinine giriş yapıyoruz. Şimdi gelin kodumuza bi göz atalım ;
int val; int tempPin = 0; void setup() { Serial.begin(9600); } void loop() { val = analogRead(tempPin); float mv = ( val/1024.0)*5000; float cel = mv/10; float farh = (cel*9)/5 + 32; Serial.print("TEMPRATURE = "); Serial.print(cel); Serial.print("*C"); Serial.println(); delay(1000); }
Yukarıdaki Arduino kodumuzda önce sensörümüzün sinyal ucunu bağladığımız pini belirledik, ardından serial ekranımızı kullanacağımızı söyledik ve sensörümüzü çalıştırmak için gerekli matematiksel işlemleri yaptık. Son olarak sıcaklık değerimizi Celcius cinsinden yazdırdık, kodumuzun en sonuna 1 saniyelik bi bekleme koyduk bu bize değerlerimizi düzgün okuyabilmemiz içindi çok seri değer görmek isterseniz delay(1000); komutunu yaz azaltabilirsiniz yada tamamen silebilirsiniz. Genel olarak kodumuz bu şekilde çalışıyor buna çeşitli ekranlar ekleyerek kendi isteğinize göre baştan programlayabiliriniz..
-Dijital sensörler :
Digital sensörler ayrık sinyaller üretirler. Digital sensörden alacağımız bilgiler belli adımlarla yükselen değerlere sahiptir. Örneğin; bir digital pusula 0 ile 359 derece aralığını kapsayan 9 bit’lik sinyal gönderebilir. Dijital sensörlerde genel olarak 3pin bulunur bunlar GND,VCC,SİNYAL dir. Dijital sensöre örnek verecek olursak şüphesiz DS18B20 derdim. Bu dijital ve kararlı bi sensördür verdiği değerler gayet stabil ve doğrudur gelin bu sensörü bi çalıştıralım.. Sensörümüzün yine GND’yi Arduino üzerindeki GND’ye, VCC’yi Arduino üzerindeki 5V’ a son olarakta SİNYAL ucumuzu Arduino üzerindeki herhangi dijital pine bağlıyoruz. Şimdi kodumuza bi bakalım;
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup(void)
{
Serial.begin(9600);
sensors.begin();
}
void loop(void)
{
Serial.print(" Requesting temperatures...");
sensors.requestTemperatures();
Serial.print("Temperature is: ");
Serial.print(sensors.getTempCByIndex(0));
delay(1000);
}
Yukarıdaki kodumuzda ilk karşılaştığımız şey #include <OneWire.h> ve #include <DallasTemperature.h>
bu iki kütüphane Arduinonun kendisinde yok bunlar DS18B20 ye ait özel kütüphanelerdir bunları google.com dan edinebilirsiniz. Ardından sensörümüzün hangi pinde olduğunu tanımlıyoruz ( dijital 2. pin ) ardından serial portumuzu belirliyoruz ardından sensörümüzü serial ekrana yazdırıyoruz..
Unutmayın herhangi bi proje yapmak veya geliştirmek tamamen sizin ilginize ve hırsınıza kalmış birşeydir araştırmaktan vazgeçmeyin kolay gelsin 🙂
Yazar;