Arduino’nun geliştirilmesini ne tetikledi?
Teknoloji uzmanı olmayanlara, bizim fiziksel hesaplama adını verdiğimiz bir yöntemle mikrodenetleyici öğreten birkaç okul vardı. Hepimizin, mevcut mühendislik araçlarından daha basit olan öğretim araçlarına ihtiyacı vardı. Basic Stamp ve daha sonra NetMedia’dan BX-24 fena değildi, ancak programlama öğretmek için kullandığımız araçlarla (HyperCard, Director ve daha sonra Processing) gerçekten örtüşmüyordu. Ardından 2002’de Ivrea’da bu konuda bir şeyler yapmaya başladılar. Programa2003’ü, sonra Wiring’i, sonra da Arduino’yu geliştirdiler.
Arduino geliştirici ekibi Massimo Banzi, David Cuartielles, Gianluca Martino, David Mellis, Nicholas Zambetti — yani öncüler — ve sizden oluşuyordu. Kim hangi rolleri üstlendi?
Massimo, PIC için Programa2003 ortamını geliştirdi. Bu, Mac üzerinde çalışan basit bir PIC programlama aracıydı (Ivrea’daki öğrencilerin çoğu Mac kullanıcısıydı). Dersini öğretmeyi kolaylaştırıyordu. Bu, Processing IDE ile birleşerek Hernando Barragán’ın Wiring kartını ve ortamını geliştirmesine örnek oldu. Kısa bir süre sonra Massimo (Ivrea’da öğretim üyesi), David Cuartielles (Ivrea’da araştırmacı) ve Gianluca Martino (öğrenci projeleri için donanım geliştirmek üzere işe alınan yerel bir mühendis), daha küçük ve daha ucuz bir kart olan Arduino kartını geliştirdiler.
Mellis ve Zambetti (o dönemde Ivrea’da öğrenciydiler) ile birlikte çalışarak Wiring modelini geliştirdiler ve dış dünyada kullanılabilecek bir kart ve bir IDE ortaya koydular. 2005’te ben de onlara katıldım; başka bir okulla (ITP’nin öğrenci sayısı Ivrea’ya kıyasla oldukça fazladır, dolayısıyla daha büyük bir test yapabildik) beta testlerine yardımcı oldum ve daha sonra dokümantasyonun geliştirilmesine katkı sağladım. Ayrıca, burada Avrupa’nın yanı sıra ABD’de de bir pazar oluşturabilmemiz için ekibi bazı erken dönem ABD distribütörleriyle tanıştırdım.
Günümüzde donanım tasarımının büyük kısmını Gianluca ve Massimo yapıyor, Dave Mellis yazılımın çoğunu koordine ediyor ya da yazıyor, David Cuartielles yazılım üzerinde çalışmanın yanı sıra Linux’ta test yapıyor ve web sitesini sürdürüyor, ben ise daha sınırlı ölçüde olmak üzere dokümantasyon ve testlerle ilgileniyorum. Hepimiz projenin yönü, üreticilerle ilişkiler ve yeni geliştirmeler konusunda birlikte çalışıyoruz. Gianluca tüm distribütörleri yönetiyor ve şirketi Smart Projects ana donanım üreticisi konumunda. Zambetti çekirdek ekipten ayrıldı, ancak profesyonel hayatı izin verdiğinde hâlâ ara sıra katkıda bulunuyor.
Belirli bir problemi çözmeye mi çalışıyordunuz?
Öğrettiğimiz sanatçılar ve tasarımcılar için, özellikle mikrodenetleyici programlamayı kapsayan fiziksel hesaplamayı öğretmeye yönelik bir araç istiyorduk. Bilgisayar bilimi (CS) ya da elektrik mühendisliği (EE) dışındaki bir geçmişten gelenlerin varsayımları oldukça farklı ve bu varsayımlarla örtüşen araçlar istiyorduk.
Arduino adı nereden geliyor?
Arduino, Ivrea’nın bulunduğu bölgenin ilk kralıydı. Aynı zamanda Ivrea’daki öğrencilerin ve öğretim üyelerinin bir araya geldiği yerel bir barın adıydı.
Arduino’nun geliştirilmesi sırasında aşmanız gereken özellikle zor ya da sinir bozucu problemler oldu mu?
En büyük zorluk aslında teknik olmaktan ziyade kültürel oldu. Tanıdığım çoğu CS/EE insanının mikrodenetleyicileri nasıl öğrendiğinize dair bir varsayımı var: Önce Ohm Yasası’nı ve Thevenin Yasası’nı vb. öğrenirsiniz. Sonra transistör devrelerini ve işlem yükselteçlerini, ardından ayrık tümleşik devreleri (IC) öğrenirsiniz. Bu arada bir yerde osiloskop kullanmayı öğrenirsiniz, gerekirse multimetre de kullanırsınız ama osiloskop daha iyidir. Sonra mikrodenetleyicilerle tanışırsınız; iç yapı ve bellek yazmaçlarıyla başlayarak. Ardından assembly dilini öğrenirsiniz ve o noktada, “elbette” C’yi ve komut satırı ortamını bildiğiniz varsayılır; dolayısıyla örneğin PIC üzerinde CCS C ya da AVR Studio için hazırsınızdır. Ve bunun yüzde 90’ı Windows üzerinde yapılır, çünkü dünyanın yüzde 90’ı Windows çalıştırır; dolayısıyla orada geliştirmek mantıklıdır.
Günümüzde koda ve mikrodenetleyicilere yönelen pek çok insan bu geçmişten gelmiyor. Bilgisayarın GUI’sinin birincil arayüz olduğu varsayımıyla büyüdüler. Tarayıcıdaki “kaynağı görüntüle” özelliğinin sağladığı imkânlar nedeniyle, kodu kopyalayıp değiştirerek öğrenebileceğinizi varsayıyorlar. Çoğu aslında programcı olmak istemiyor; sadece işleri halletmek için programlamayı ve devreleri kullanmak istiyor. Bu, bir sanat eseri yapmak, otomatik bir kedi besleyici yapmak ya da yeni bir mesleki terapi cihazı geliştirmek anlamına gelebilir. Bu insanlar resmî olarak eğitilmiş mühendisler değil, ama bir şeyler inşa etmek istiyorlar. Bizim öğrettiğimiz öğrenciler bunlar. Arduino’yu, onların düşünme biçimine göre tasarladık.
Fırsatınız olsaydı Arduino’nun geliştirilmesinde farklı yapacağınız bir şey olur muydu?
Sanırım yapabileceğimiz en büyük değişiklik, 7 ve 8 numaralı pinler arasındaki aralığı standartlaştırmak olurdu! Bu hata yüzünden çok eleştiri aldık, ancak kartların geriye dönük uyumluluğunu korumak için standart dışı aralığı sürdürdük.
Genel olarak ise, “neyi farklı yapardınız” sorusunun bir cevabı olduğunu düşünmüyorum; çünkü farklı yapacağımız bir şeyle karşılaştığımızda zaten bir değişiklik yapıyoruz. Desteklememiz gereken daha büyük bir kullanıcı tabanı olduğu için değişiklikler artık daha yavaş, ama hâlâ mümkün.
Arduino’nun programlama dili ve ortamı için neden “Wiring” ve “Processing” temel olarak seçildi?
Çünkü o dönemde Ivrea’da (ve ITP’de) kullanılan araçlar bunlardı ve o sırada mevcut olan alternatiflere kıyasla öğrencilerimize öğretmek için daha iyi çalışıyorlardı. Özellikle Processing, programlama öğreten sanat ve tasarım okulları için büyük bir değişim sağladı, çünkü öğrenciler onu “kavradı”. Buna dayalı bir donanım geliştirme ortamı yapmak mantıklıydı. Daha spesifik olarak, Processing o dönemde Ivrea ve ITP’de kullanılıyordu. Programa2003, Wiring ve Arduino, Processing’in köklerinden kısa aralıklarla gelişti.
Arduino, BASIC Stamp, PIC’ler vb. ile karşılaştırıldığında nasıldır? Onu daha iyi bir seçenek yapan nedir?
Geliştirmeye çalıştığımız birkaç nokta var.
- Arduino dili, yeni başlayanlar için anlamayı kolaylaştıran, C/C++ içindeki bir dizi yöntemden oluşur. Stamp’in PBASIC’inden farklı olarak, C’nin tüm güçlü işlevlerine (parametre geçirme, yerel değişkenler vb.) sahiptir; bunlar okunabilir bir sözdizimi içinde sunulur. PBASIC okunaklı ve yeni başlayanlar için kolaydı, ancak o kadar sınırlıydı ki, yeni başlayanlar bile çok hızlı bir şekilde yapabileceklerinin sınırlarına ulaşıyordu.
- Arduino’nun kullanıcı deneyimi, tüketici sınıfı bir deneyime daha yakındır. Bir donanım programlayıcıyı öğrenmeye gerek yoktur (PIC ortamlarının aksine); USB’ye takılır (Stamp’in aksine). Denetleyicinize yeni kodu derlemek ve yüklemek tek tıklamadır. Yöntem adları uzundur ve C, assembly ya da daha alt seviye dillere kıyasla gündelik dile ruhen daha yakındır. İdeal olarak, tüm kullanıcı deneyimi, alttaki bileşenlerin gücünü ve esnekliğini mümkün olduğunca korurken, fikirden çalışan bir cihaza giden süreyi en aza indirecek şekilde tasarlanmıştır.
- Cam kutu kapsülleme. Arduino, benim “cam kutu kapsülleme” dediğim yaklaşımı somutlaştırır. Bu, isterseniz kütüphaneleri oluşturan daha alt seviye koda bakmak zorunda olmadığınız, ama seçerseniz bakabileceğiniz anlamına gelir. Kütüphaneler yalnızca nihai taslağınızı (sketch) derlediğinizde derlenir. Dolayısıyla onları değiştirmek isterseniz, yapabilirsiniz. Kodunuza Arduino tarzı olmayan C eklemek isterseniz, yapabilirsiniz. Ham assembler kodu eklemek isterseniz, yapabilirsiniz. Kapsülleme kutusu hâlâ oradadır, ama isterseniz içini görebilirsiniz. Stamp gibi daha üst seviye denetleyiciler bunu içermez ve daha alt seviye ortamlar da bizim yaptığımız düzeyde soyutlama sağlamaz.
- Entegre donanım tasarımı. Kart, denetleyici üzerinde bir seri önyükleyici ve bir USB’den seri dönüştürücü çip içerir; dolayısıyla bilgisayardan denetleyiciye giden destek devresi hakkında düşünmek zorunda kalmazsınız. Ayrıca, USB’den harici güce otomatik olarak geçen bir düzenleyici devreye sahip yerleşik bir güç jakı da vardır; bu da bilgisayara bağlı durumdan bağımsız kullanıma geçişi basitleştirir.
- Maliyet ve erişilebilirlik. Kartın fiyat etiketi makuldür (Stamp kartından daha ucuzdur) ve yazılım ücretsizdir. İnsanların, denetleyicilerini kopyalamaya gücü yetmeyen tekil bir birim olarak görmek yerine, hesaplama hakkında düşünmelerini istiyoruz.
- Açık kaynak. Her şey açık kaynaktır; dolayısıyla isterseniz kendi sürümünüzü yapabilirsiniz. Klonların sayısı, bunun bazı kullanıcılarımız için faydalı olduğunu gösteriyor; resmî kartın devam eden satışları ise başkaları için sağladığı kullanım kolaylığının da bir değeri olduğunu gösteriyor.
- Çapraz platform yazılım. Yazılım en başından beri çapraz platformdu. Öğrencilerin yüzde 90’ının Mac kullandığı okullarda ders vermek bizim için çok büyük bir iyileştirme. ITP’de, PIC için kullandığımız yalnızca Windows’ta çalışan, tescilli yazılımı destekleyen PC’lere artık ihtiyaç duymadığımız için bütün bir laboratuvarı serbest bırakabildik. Öğrenciler, aşina oldukları işletim sistemi üzerinde araçları kullanabilmeyi seviyor.
Arduino’nun donanım tasarımlarını neden açık kaynak yapmaya karar verdiniz? Bu kararın nasıl bir etkisi olduğunu düşünüyorsunuz?
Açıklığın yeniliğe fayda sağladığına inanıyoruz. Açık kaynak doğasının yayılmasında çok büyük bir etkisi olduğunu düşünüyorum. Ortalıkta tonlarca klon var. Birçoğu, arkadaşları, öğrencileri vb. dışında bir müşteri tabanı bile hedeflemiyor. Ancak kullandığınız bir aracın kendi sürümünü yapmak büyük bir öğrenme değeri taşıyor. Bence pek çok insan, sırf yapabildikleri ve bunun eğlenceli olacağını düşündükleri için bir klon yapıyor. Bu süreçte bir şeyler öğreniyorlar ve daha fazlasını öğrenmeye bağlanıyorlar. Platform kapalı olsaydı bu gerçekleşmezdi.
Geliştiricilerin, “Arduino” adının (ya da türevlerinin) resmî ürüne özgü olmasını ve izinsiz türev çalışmalarda kullanılmamasını istediklerini duyduk — bu doğru mu ve öyleyse neden böyle bir önlem aldınız?
Bu doğru; markayı tescil ettirdik. Açık kaynakta bunu yapmak oldukça yaygındır. Örneğin Linux, MySQL, Apache ya da Ubuntu’ya bakarsanız, açık kaynak olmalarına rağmen hepsi markalıdır. Dolayısıyla bunlar bizim modellerimizdi. Bunu seçmemizin birkaç nedeni var.
Öncelikle, isimler sorumluluk taşır. Tasarım dosyalarını ya da ürettiğimiz kodu kullanmalarından memnun olsak da, isimlendirmenin benzersiz kalması gereken bir şey olduğunu düşünüyoruz. Bir kişi bir Arduino kartı satın aldığında, üreticinin onun arkasında duracağına güvenebilmelidir. Lisans verdiğimiz üreticiler için bunu yapıyoruz, çünkü gurur duyduğumuz bir kalite ve kullanım kolaylığı standardını sağlamak üzere onlarla yakın çalışıyoruz. Öte yandan, hiç temasımız olmayan bir üreticiden Arduino adlı bir kart satın alıp sonra onu onarım ya da değişim için bize ya da üreticilerimizden birine gönderen biri olursa, bizim (ya da onların) buna hizmet vermesi beklenemez. Birlikte çalışmadığımız biriyle kalite düzeyini garanti edemeyiz.
İkinci olarak, ürün adları kişisel adlara çok benzer şekilde çalışır: Bir makale yazıp Trevor Clarke’tan alıntı yapsaydım, muhtemelen sorun etmezdiniz; ama makaleyi Trevor Clarke adıyla yazsaydım, muhtemelen ederdiniz. Makalenin olgusal olarak doğru olduğunu ya da görüşlerinizi yansıttığını güvence altına almanın bir yolu olmazdı. Ama üzerinde sizin adınız olurdu. Kartlar ve yazılımlar konusunda da aynı şekilde düşünüyoruz. Arduino tasarımlarını ya da kaynak kodunu kullanarak kendi kartınızı yapmak isterseniz (temelde projeden alıntı yapmak), bu harika. Ona Arduino uyumlu demek isterseniz (alıntıyı belirtmek), bu da sorun değil. Ama kendi kartınıza kendi adını vermenizi tercih ederiz.
Son olarak, markayı elde tutmamızın pratik bir nedeni var. İşin donanım tarafı ticari olarak kendi kendini sürdürüyor, ancak yazılım kendini finanse etmiyor. Lisanslı üreticilerden sattıkları her kart için bir lisans ücreti alıyoruz. Bu para, yazılımın ve web sitesinin bakımını ve geliştirilmesini finanse etmek için kullanılıyor. Bu da her birimizin, kendi kendini finanse etmeyen Arduino sisteminin bölümlerini sürdürmek için diğer işlerimizden haftada birkaç saat ayırabilmemizi sağlıyor.
İzinsiz türev çalışmalar yapabilirsiniz; markalı olan sadece isimdir. Klonların çoğu bizden izin istemedi ve istemeleri de gerekmez, yeter ki Arduino olarak adlandırılmasınlar. Ortalıkta pek çok *duino var ve İtalyanca dilini bozuyor olmaları dışında gayet iyiler. Ama öte yandan, Starbucks da aynı şeyi yapıyor.
Arduino’yu kendiniz hangi projelerde kullandınız?
Onu sürekli kullanıyorum. İlk kullanımım, ekibin geri kalanıyla birlikte İtalya’daki bir aydınlatma şirketi için prototipler geliştirmekti. O proje, bunun ne kadar faydalı bir platform olduğunu görmemi sağladı. Ayrıca öğretimde de kullanıyorum. Yeni başlayanlara öğretirken de, profesyonel işlerimde de kullanabildiğimi hissettiğim ilk donanım platformu bu.
Kişisel projelere gelince: Arduino kullanarak e-posta saatimin (alınan her yeni e-posta için ileri giden bir saat) yeni bir sürümünü geliştirdim. Üzerine bir kedi fotoğrafı çekildiğinde bana e-posta gönderen bir kedi yatağı; bir hava kalitesi ölçer; en sevdiğim roller derby takımı için yanıp sönen bir fan tabelası; ve daha fazlasını yaptım. Sınıfta neredeyse her gün kullanıyorum.
Arduino’nun, onu asla kullanılmasını amaçlamadığınız bir şekilde kullanıldığını hiç gördünüz mü?
Aslında, çok çeşitli şekillerde kullanılmak üzere devreye alınması amaçlanmıştı, bu yüzden pek sayılmaz. Benim açımdan, onun asla kullanılmasını istemediğim tek şey insanlara zarar vermek ya da hasar vermek; bu yüzden umarım bunu o amaçla kullanıldığını hiç görmem.
Donanım hacker’ı olmaya yeni başlayanlar için herhangi bir tavsiyeniz var mı?
Sabır. Azim. Ve sık sık duş almak. En iyi problem çözme anlarımı duşta yaşıyorum.
Son olarak, eklemek istediğiniz başka bir şey var mı?
Arduino’yu kullanan herkese teşekkürler! Üzerinde çalışırken harika zaman geçirdik ve bizim yaptığımız bir şey sayesinde insanların mümkün olduğunu düşünmedikleri şeyleri gerçekleştirdiklerini görmek inanılmaz derecede tatmin edici.