Arduino ve Mikrodenetleyici Seçimi

Elektronik devre tasarımı hazırlanacağı süreçte öncelikli olarak mikrodenetleyici seçimi yapılır. Projede kullanabileceğiniz bir çok mikrodenetleyici modeli bulabilirsiniz. Seçim yaparken projenin maliyetini en az tutmaya çalışmanın yanında size geliştirilmesi kolay ve soru veya sorunlarınız olduğunda çözüm yolu bulabileceğiniz çok tutulan modelleri seçmenizi öneririm.

Mikrodenetleyici konusunda karar verdikten sonra proje için gerekli olacak diğer devre elemanları temin edilmelidir. Devre tasarımı ve simülasyonu gibi işlemleri Proteus tarzı yazılımlar ile yapabilirsiniz.

Devre tasarımı yapıldıktan sonra seçtiğimiz denetleyiciye uygun bir programlama dili ile denetleyicinin programlanması gerekmektedir. Kullandığınız denetleyici Atmel AVR ise Atmel Studio‘yu indirip C dilini kullanarak kodlarınızı hazırlayabilirsiniz. Derleyiciyi programlama sürecinde dikkat etmeniz gereken nokta derleyici sonucunda oluşacak HEX dosyasının optimum boyutlarda olmasıdır. Uygun bir derleyici bulup yazdığımız kodları derledikten sonra HEX dosyasının mikrodenetleyiciye aktarılması/yazılması gerekmektedir. Simülasyonu çalıştırıp baskı devresi çıkartıldığı ve mikrodenetleyiciye yazdırdığımız HEX dosyasındaki kodlarda bir hata ya da eksiklik yoksa devre tasarımının ilk defada sorunsuz olarak çalışması gerekmektedir. Görüldüğü gibi elektronik devre tasarımını oluşturup projede kendi yaptığımız devre tasarımının kullanılması uzun ve uğraşlı bir süreçtir. Tabi ki bu yöntem en doğru olan yöntemdir, çünkü kendi tasarladığınız bir devre üzerinde istediğiniz her değişikliği yapabilme şansına sahip olursunuz.

Fakat robotik konusunda kendini geliştirmek isteyen birisi için hazır devreler ile mantığı kavrayıp belirli bir seviyeye gelerek kendi devre tasarımını hazırlaması daha doğru olacaktır. İşte bu yüzden Arduino konusunu düşünebilirsiniz..

Arduino’yu bir projede tercih etmenizin ilk nedeni bu alanda kendini geliştirmek isteyenler için Arduino’yu öğrenmek basittir. Kullanılacak programlama dilinden tutun programlama arayüzüne kadar hepsi Arduino’a önceden hazırdır ve Arduino’yu programlamak bu sebeple daha basit şekilde öğrenilebilir. Arduino kullanımıyla hedefiniz olan proje kısa sürede ayağa kaldırılabilir.

Arduino açık kaynak kodlara sahip bir hazır sistemdir. Ayrıca Arduino’nun temin edilmesi kolaydır ve Arduino modellerinden UNO’nun fiyatı uygundur. Hazır bir kart olan Arduino üzerinde devre tasarlamak projeyi bir an önce bitirebilmek için en kısa yollardan biridir. Hazır bir kart olduğu için sıfırdan üretilen bir tasarıma göre daha kısıtlı bir işlev sunabilse de projeyi hızlandıracağından tercih edilebilir. Ayrıca Arduino kart kullanmak projenin maliyetini de düşürecektir.

Continue Reading

Mikrodenetleyiciler Üzerine

Mikrodenetleyici ismini verdiğimiz donanım, programlanarak kontrol edilebilen elektronik bir parçadır. Aslında işlemci, bellek ve giriş çıkış birimlerine (I/O) sahip bir mini makine ya da bilgisayar olarak da tanımlayabiliriz.

Mikrodenetleyici kullanıcı ile cihazların etkileşimini sağlayan ana birimlerden biridir. Örneğin: uzaktan kumandalı bir televizyon, dijital kamera ya da arabanın kontrol kumandası..

Mikrodenetleyiciler özel amaçlar doğrultusunda üretilirler ve programlandıkları görevleri yapmaktan sorumludurlar. Programlandıklarından farklı şekilde işlem yapamazlar.

Mikrodenetleyiciler yukarıda bahsettiğimiz gibi işlemci, bellek ve giriş çıkış birimleri (I/O) sahip oldukları için gömülü sistem adını almaktadırlar.

Boyutları ufaktır ve fiyatları uygundur. Farklı programlar ile birden çok defa farklı amaçlar doğrultusunda farklı projelerde kullanılabilirler. Mikrodenetleyiciler programlanma şekillerine bağlı olarak günümüzde bir çok alanda kullanılabilirler.

Askeri, Sağlık, Sanayi veya uzay araştırmaları gibi alanlarda programlanmaları doğrultusunda insana göre daha kesin ve hata yapma şansı olmadan görevlerin yürütülmesi için hazırlanmıştırlar.

ATMEL AVR MİKRODENETLEYİCİ

Gömülü sistemlerin en önemlilerinden biri olan mikrodenetleyiciler endüstriyel kontrol ve otomasyon ve tüketici ürünlerinde yer almaktadır. Fiyatları, boyutları göz önüne alındığında üzerinde ram, işlemci, giriş çıkış birimlerinin bulunması mikrodenetleyicilerin bir çok projede ana elaman olmasının temel nedenidir.

AVR, öğrenciler ve gömülü sistemler konusunda kendini geliştirmek isteyenler için ideal bir seçimdir. 8 bitlik [highlight]RISC[/highlight] mimariye sahiptir ve mikrodenetleyicilerin en önemlilerinden biri olarak kabul edilir.

AVR denetleyicilerin işlemcisi üzerinde flash bellek bulunan ilk işlemci çeşididir ve AVR mimarisi denetleyiciyi sistem üzerindeyken defalarca programlamaya izin verir.

AVR ve RISC MİMARİLERİ

AVR denetleyicilerin RISC mimarisiyle üretildiğinden yukarıda bahsetmiştik. Karmaşıklıkların önlenmesi RISC mimarisi ile sağlanmaktadır. RISC, [highlight]CISC[/highlight]’e göre daha fazla komuta sahiptir. ( CISC daha çok komuta sahip olduğundan daha karmaşık bir devre tasarımı kullanılmaktadır. CISC üzerinde microcode denilen bir yazılım kullanılır. CISC fazla komuta sahip olması sebebiyle RISC mimarisine göre daha yavaş çalışmaktadırlar. )

C dili ile geliştirilmek için tasarlanan AVR denetleyiciler, en az kod ile en yüksek hızda çalışabilme amacıyla hazırlanırlar.

Mikrodenetleyici kullanarak hazırlanacak bir projede AVR ya da başka bir seçeneği kullanma kararını en başta vermeniz gerekmektedir. Çünkü seçeceğiniz mikrodenetleyici yapmak istediğiniz çalışmanın maliyetini etkileyen ana etmenlerden biridir. Özelliklerini tam anlamıyla kullanamayacağınız bir mikrodenetleyiciye gereksiz harcama yapmak projenin maliyetini artıracaktır.

Continue Reading

Mikrodenetleyici Nedir?

Teknoloji geliştikçe etrafımızdaki akıllı, elektronik cihazların sayısı da artmaktadır. Hayatımızın her anında bu cihazlara olan ihtiyacımız artmakta olduğundan bu cihazları nasıl kontrol edebileceğimiz ve bu cihazların güvenliğini sağlamak, hareketlerini belirli bir mantığa göre düzenleyip kendilerini kontrollü şekilde hareket etmelerini sağlamak üzerine kafa yormaktayız.

Akıllı cihaz olarak tabir ettiğimiz bu aletleri düzenleyen en önemli parça “mikrodenetleyici” dir. Cep telefonları, notebook, masaüstü bilgisayarlar, phablet bilgisayarlar ve hatta artık bazı evler (Akıllı Ev Teknolojisi) bile mikrodenetleyiciye sahiptir.

Saydığımız cihazlardan hepsi donanımsal yapıdan incelendiğinde standart olarak işlemci birimi, ram bellek(bazı cihazlarda farklı olarak rom bellek, flash bellek’de bulunabilir.) ve giriş, çıkış portları bulunur. Elektronik aletlerde cihazın etrafından gelen tepkilere örneğin akıllı telefonlardaki power tuşuna basıldığında telefonun ekranının açılması ya da kapanması gibi işlemlere yanıt verebilmesi için bu donanımları kontrol eden bir yazılıma (firmware) gerek duyulmaktadır. (Akıllı telefonlardaki yazılımlara ROM denmektedir.)

İşte yukarıda bahsettiğimiz mikrodenetleyici bu yazılımı kontrol edebilmemize yarayan bir yapıdadır ve bu cihazların ana parçasıdır.

Arduino dediğimiz sistem ise hazır bir elektronik karttır. Arduino üzerinde mikrodenetleyici, iletişim portları ve kontrol elemanlarını bağlamak üzere pinler bulunmaktadır.

Özet olarak son noktayı koyacak olursak;

Arduino denilen sistem, mikrodenetleyici kullanımını öğrenmek ve kendini geliştirmek isteyen kullanıcılar için hazırlanmış olan; üzerinde ihtiyaç olan elemanları (işlemci, ram, pin, iletişim portları gibi) barındıran ve uygulamaya hazır bir elektronik devre kartıdır..

Continue Reading

Arduino Trafik Lambası Yapımı

arduino logo

Merhaba, blogumu aktif tutma konusu uzun zamandır kafamda olan bir projeydi fakat ne üzerine paylaşım yapacağım ya da yapacağım şeye nasıl vakit ayıracağımı düşünüyordum. İşte o vakit artık geldi hedefim ARDUINO. Aslında lise yıllarından beri elektronik cihazlara ufakta olsa bi ilgim vardı. Robotlara olan ilgim ise Honda’nın Asimo’su ve Transformers filminden geliyor.( Zamanında söylemiştim Optimus Prime yapacam diye, hala söylüyorum YA-PI-CAM :p ) Fakat bu kadar çok öğrenip bir şeyler yapmak isteyeceğimi sanmıyordum ki Reha ile okuldaki Robotik ve Otomasyon Kulübü (YTÜROK) standında sohbet edene kadar. Kulübün ne iş yaptığını merak etmem ile başlayan bu sohbet ile önce üye oldum sonra robot konusuna ilgim arttı ve şuan amatör olarak elimdeki Arduino kiti ile neler yapabilirim acaba ben? sorusu üzerine yoğunlaştım. Ve bugün oturup ciddi olarak ilk defa kiti kurcaladım. İnternetten gördüğüm basit led yakma videolarından sonra kendimce bir çalışma yaptım.

Arduino Programlama konusunu tam olarak açıkçası bilmiyorum fakat web üzerindeki bilgimden dolayı az çok bir fikir yürütebiliyorum o yüzden kod kısmını size direk veriyorum. Kodları aldığım arkadaş zaten gayet açıklayıcı şekilde ne işe yaradıklarını yazmış.

Bu çalışmayı oluşturabilmek için öncelikle Arduino kartı, breadbord, jumper kablo, led ve kullandığımız led kadar da 10K ohm’luk direnç gerekiyor.

Bazı sitelerde ledlere bir direnç bağlamadan ledler ile ilgili projeler hazırlamışlar ledlerin niçin patlamadığını anlamadım ama iç dirençlerinin dayanabildiği için bir problem yaratmadığını düşünüyorum. Gerçi patlasa ne olur tanesi 10 kuruş gibi rakamlara satılıyor.

Öncelikle arduinoyu bilgisayarımıza bağlıyoruz.  Eğer arduino’yu ilk defa kullanıyorsanız öncelikle kendi sitesinden gerekli Arduino programını kurmanız gerekiyor. Arduino resmi sitesi: (https://arduino.cc/) Download kısmından indirebilirsiniz.

Programı kurduktan sonra açıp aşağıda yazdığım kodları consola yazmanız ve resimlerdeki gibi led, direnç ve jumper ile devreyi hazırlamanız gerekiyor.

 

int led=12; //Ledimizi baglayacagimiz cikisimizi burada atiyoruz.
int led1=13; //Ledimizi baglayacagimiz cikisimizi burada atiyoruz.
int led2=11; //Ledimizi baglayacagimiz cikisimizi burada atiyoruz.
void setup()//Burada led diye atadıgımız degiskenimizi output yani cikis olarak atiyoruz
{
pinMode(led,OUTPUT);
}
void loop() { //Sonsoz dongumuzu baslatiyoruz.
digitalWrite(led2, HIGH);//Bu komut ledimizi yakar
delay(9000);
digitalWrite(led2, LOW);//Bu komut ledimizin sondurulmesini saglar.
delay(100);
digitalWrite(led1, HIGH);//Bu komut ledimizi yakar
delay(1500);
digitalWrite(led1, LOW);//Bu komut ledimizin sondurulmesini saglar.
delay(100);
digitalWrite(led, HIGH);//Bu komut ledimizi yakar
delay(9000);
digitalWrite(led, LOW);//Bu komut ledimizin sondurulmesini saglar.
delay(100);

}

 

arduino-led-projesi arduino-trafik-lamba

 

Eğer sizde yukarıda verdiğim işlemleri doğru yaptıysanız aşağıdaki videoda göründüğü gibi ledlerimiz sıralı bir şekilde yanacaktır. :)

Continue Reading