blog

Arduino Bisiklet Işığı Bölüm 9: Hangi Arduino Modeli?

8 Ocak 2015

Bu ışık için karar vermemiz gereken iki şey var: boyutu ve pili. Eh, en önemli özelliği de bu zaten. Bu işe Arduino ile başadık ve Arduino ile devam edeceğiz şimdilik. İlk bölümlerde bahsettiğim üzere, Arduino’nun bu kadar popülerleşmesinin sebepleri, kolay kullanılan dili, bilgisayara direkt olarak bağlanıp programlanabilmesi ve kendi gerilim düzenleyicisi (a.k.a voltaj regülatörü, hangisi doğru bilmiyorum?) bulunması. Bunların hepsi güzel özellikler ancak projemiz sonlandığında bize boyut ve karmaşıklık olarak geri dönüyorlar. Yani bir geliştirme ve prototipleme kartını, günlük hayatta kullanacağımız son üründe kullanmaya çalışıyoruz. Bu biraz garip bir şey ama yine de işimize yarayacak Arduino türleri var.

Arduino Nano

Nano, işlevsel olarak tamamen Uno ile aynı diyebiliriz. Kendi USB-Serial dönüştürücüsü, USB girişi, voltaj regülatörü ve ATmega328P mikrodenetleyicisi var. Ancak tamamen aynı olmasının yanında, Arduino Uno’dan 2 veya 3 kat daha ufak ve hafif. Zaten Uno’nun o standart boyutunda olmasının sebeplerinden bir tanesi, gelişmiş shield desteğinin devam edebilmesi. Shield ekleme gibi derdiniz yoksa normal Nano kullanmanın bir dezavantajı yok. Kendi gerilim güzenleyicisi Uno’ya kıyasla daha dar bir aralıkta çalışıyor olmasına rağmen mevcut. Uno 12 volta kadar çalışabilirken Nano için bu değer 9V. Ebay veya banggood.com gibi sitelerden inanılmaz ucuz fiyatlara kendinize nano getirtebilirsiniz. Dikkat edilmesi gereken tek nokta, USB-Serial dönüştürücüsü olarak hangi çipi kullandığı. Bu çiplerin en yaygın olanı FTDI, orijinal Arduino Nano’da kullanılan çip. Ancak bu çipi üreten firmanın geçen aylarda yayınladığı bir Windows güncellemesiyle beraber sahte FTDI’lar (yani eBay ve Banggood gibi sitelerde satılan Arduino’ların kullandıkları) kullanılamaz hale geliyor. Her ne kadar aşırı tepkiler nedeniyle o güncelleme geri çekildiyse de, ben Nano’mu bağladığımda bazen sürücüleri tekrar elle yüklemek zorunda kalabiliyorum. Garip bir durum. Çözümü şudur, güncellemenin olayları karıştırmasından sonra, zaten pahalı olan FTDI çiplerinin alternatifleri eBay’i doldurmaya başladı bile. Artık Arduino Nano klonlarında daha ucuz, sürücü sorunu olmayan CH340G çipleri yaygınlıkla kullanılıyor. Onlardan tercih etmeniz kafanızı rahatlatacaktır.

Arduino Pro Mini

Düşününce şu geliyor akla. USB-Serial dönüştürücüler Arduino’yu programlamak için kullanılıyor ancak biz yapacağımız şeyi tamamladıktan ve kullanmaya başladıktan sonra tekrar Arduino’yu programlamaya sık sık ihtiyaç duymayacağız. O nedenle, bir kere kod tamamlandıktan sonra bu dönüştürücü çipe çok ihtiyacımız yok. Hem Arduino’nun ücretini yükseltiyor, hem bi şey yapmasa ile güç tüketiyor hem de Arduino’nun boyutunu büyütüyor. İşte bu sebeple üzerinde USB-Serial dönüştürücüsü bulunmayan Pro Mini biçilmiş kaftan. Hem Uno ile aynı mikrodenetleyiciye sahip, hem üzerinde voltaj regülatörü var ancak dediğim gibi USB-Serial dönüştürücüsü yok. Bu bir dezavantaj değil. Pro Mini’ye dışarıdan takacağımız USB-Serial dönüştürücüsü ile kolayca kodlarımızı atabiliriz. Bu sayede hem kolayca programlama yaparız hem de gereksiz bir çipe tekrar tekrar para vermek zorunda kalmayız. USB-Serial dönüştürücüler ayrı olarak satılıyor ve fiyatları 1-1.5 dolar civarında. Hatta Türkiye’de Gittigidiyor’dan bile 8-10 liraya kolayca bulabilirsiniz. Arduino Pro Mini’ler ise Nano’lardan bile ucuz. Bir sürü Arduino Pro Mini alıp sadece tek bir USB-Serial dönüştürücüsüyle tek tek programlayabilirsiniz. Böyle düşününce, bir daha Uno almaya bile gerek yok. Pro Mini bu sebeple benim tercihim. Ancak şuna dikkat etmekte fayda var, Pro Mini’ler ya 3.3V ya da 5V olarak satılıyor. Arduino Uno veya Nano gibi tek kartta iki farklı gerilim seviyesini barındırmıyor. Aynı şekilde çalıştığı gerilim aralığına göre mikrodenetleyicinin saat hızı da değişiyor. 3.3V 8 mHz’de, 5V ise 16 mHz’de çalışıyor (ya da ben böyle biliyorum). O nedenle bu değerleri kontrol edin ve ona göre satın alın.

Üstte Uno, sol altta Nano ve sağ altta Pro Mini. En sağlarında ise 1 lira. Adafruit, Sparkfun para ile boyut belirtiyor, neden biz de öyle yapmayalım?

Çipi çıkarın ve öylece kullanın

Arduino Uno’nun bu kadar büyük olmasının sebeplerinden biri de çıkarılabilir bir ATmega328P barındırması. Mikrodenetleyicinin bu şekil formatı, dip türü olarak adlandırılıyor ve SMD parçalara göre çok daha büyükler. Tahmin edeceğiniz üzere, programlamanızı yaptıktan sonra bu ATmega328P’yi çıkarabilir ve Uno kartından bağımsız olarak kullanabilirsiniz. Yapılması gereken tek şey, ATmega328P’nin uygun çalışma aralığında güç sağlamak ve yine ATmega’nın çalışması için gerekli kristali uygun pinlere bağlamak. Bu sayede programladığınız şekilde bu çipi bağımsız olarak kullanabilirsiniz. Ancak çipi çıkardıktan sonra internetten veya elektronikçiden alacağınız diğer ATmega328P’yi Arduino Uno’ya takıp programlayamazsınız. Bunun için çipin önce bootloader ile programlanması gerekiyor. Bense bunun nasıl yapılacağını bilmiyorum ve açıkçası pek de merak etmiyorum. Hatta şu anda sıkıldım baya. İşin komik yanlarından birisi, Türkiye’den edineceğiniz yalın ATmega328P’nin Çin’den edineceğiniz Pro Mini’den pahalı olması. WTF.

AVR Programlama

Hep konuştuk Arduino’ya güç veren Atmega328P mikrodenetleyicisinden. Aslında bu ufak bir bisiklet ışığı için çok büyük ve güçlü bir çip. Hem boyut olarak fazla büyük, hem de fazla güç tüketiyor. Ancak Arduino geliştirme platformunda daha ufak ve daha az güç gerektiren çipler kullanılmıyor. Zira bu çiplerin hafızaları Arduino Bootloader’ı için yeterince büyük değil ve bazıları çok işlemci gücüne sahip değil. Bu sebeple projenin ilerleyen aşamalarında Arduino geliştirme platformunu tamamen bırakıp, hazır olan kodumuzu AVR çipleri direkt olarak kodlayabilecek şekilde geliştirebiliriz. Bu iş için uygun olanlar Attiny serisi 13/45/85 olabilir. Bu ufak AVR’lerin nasıl programlanabilecğeine dair bazı şeyleri de ileride paylaşmayı planlıyorum. Belki birilerinin işine yarar. Neyse, projeye güç verme aşamasına geçelim. Güç kaynaklarının oldukça karmaşık dünyasında kaybolmadan, Arduino’nun üzerine bulunan voltaj regülatörüyle güzel güzel projemizi tamamlayabiliriz. Kullanacağınız Arduino türüne göre farklılıklar oluşabilir ama genel olarak ana hatları aynı. Nano ve Uno’da VIN (Voltage In) pinine, Pro Mini’de ise RAW (bak bunun açılımı bilemedim) pinine güç kaynağınızı bağlayabilirsiniz. Ancak bunun da bir sınırı var. 5 volt bağlayıp 5 voltta çalışmasını bekleyemezsiniz. Çünkü voltaj regülatörü çok verimli çalışamıyor. Hatta linear voltaj regülatörü olduğu için baya verimsiz çalışıyor diyebiliriz bile. Neyse, işimizi kolaylaştıracağı için görmezden gelelim ve sınırlı değerleri verelim: Uno ve Nano için:

Giriş Voltajı (önerilen): 7-12 V

Giriş Voltajı (sınırlar): 6-20 V

Pro Mini (5V versiyon için)

Giriş Voltajı: 5-12 V

Bu sonuç beni de şaşırttı. Demek Pro Mini’de kullanılan voltaj regülatörü 5V’a kadar inebiliyor. Büyük ihtimalle, diğerlerinden farklı olarak Low-Drop out bir linear voltaj regülatörü kullanılmış. Bu avantaj olabilir. Ancak şunu unutmayalım, bu orijinal ürünün çalışma aralığı. Çinden gelen klonlar, bu birazcık daha pahalı olabilen low dropout voltaj regülatörü kullanmıyor olabilir. Deneyip görmek lazım. Teorik olarak hem 4 tane AAA/AA pil veya 9 Voltluk dikdörtgen prizma pil ile Pro Mini’yi çalıştırabilirsiniz. Pro Mini’ye güç vermek kolay da, sonra LED’leri nasıl yakacağımızı bulmamız gerek. Projenin başından beri onları direkt olarak Arduino pinlerinden çalıştırdık. Bunu değiştirmeyeceğim ama dezavantajlarından biraz bahsetmek gerek. Atmega328P, her pine 40 mA akım, toplamda ise 200 mA akım sağlayabilir. Ancak bunu yapabiliyor olması, bize bu özgürlüğü tanımıyor. Zira bir mikrodenetleyici ile bir şeylere direkt güç vermek her zaman mantıklı değil. Her ne kadar 5V seviyesinde çalışan bir Arduino’un pinlerinden 5V sağlayabileceğinizi düşünseniz de, pinden çekilen akım arttıkça pindeki voltaj seviyesi düşmeye başlayacaktır. Bunun sebebi, mikrodenetleyicinin içinde bulunan direnci, yani empedansı. Bu direnç, akım arttıkça Ohm yasasına bağlı olarak daha fazla gerilimin kaybedilmesine sebep olacak. Güvenli sınırlarda 2 LED için pin başına 20 mA akım çeksek de bu durum ortaya çıkacak ve bizim hesaplarımızı karıştıracak. Eğer LED’leri gerçek bir voltaj regülatöründen çalıştırsaydık böyle bir sorun olmayacaktı (elbette kaynağın sınırlarına bağlı kalma şartıyla).

Bu problemin yanısıra, linear voltaj regülatörleri inanılmaz verimsizler ve sağladıkları enerji kadarını ısı olarak çarçur edebiliyorlar. Bunun yanında, çalışmaları için gerekli gerilimi sağlamak için ya 4 tane AA/AAA pil ya da 9V’luk pil gerekiyor. Bunlar büyük ve ağır seçenekler. Bisiklet ışığı için uygun olmayabilirler. Üstüne üstlük 9V’luk pillerin kapasitesi oldukça düşük olduğundan (400 mAh civarı) inanılmaz hızlı bir şekilde pil bitecektir. Yani prototipin mobil olarak kullanılabilmesi büyük sorunlar içeriyor.

Elbette buna da bir çözüm var ama bu kısa serinin amacını aşacak. Bi iki güç içerisinde daha ufak boyutlu bir çiple yaptığım versiyonu açıklamaya çalışacağım buradan. Hem voltaj regülatörünü, hem büyük pilleri, hem de daha güçlü bir LED’i barındıran basit bir çözüm olacak.