Bir önceki yazımızda robotlardan ve temel parçalarından bahsetmiştik. Bu yazımızda ise robotun kontrol kartı ve sensörlerinden bahsedeceğim.
Robot Kontrol Kartları
Kontrol kartı, robotun temel karar mekanizması için gereken en temel bileşendir. Bu kartlar sayesinde çevredeki sensörlerden bilgiler alınır, işlenir ve motor gibi çıkış birimlerine komut verilir. Temelde bu kontrol kartlarını bir bilgisayar olarak düşünebiliriz. Bu bilgisayar Arduino gibi mikrokontrolcü kartları formunda veya Raspberry Pi tek kart bilgisayarlar şeklinde olabilir.
-
Mikrokontrolcüler:
Mikrokontrolcü kartları (PIC, Arduino, ESP8266, mBed v.b.) ile tek kart bilgisayarların (Raspberry Pi, Orange Pi, BeagleBoard v.b.) en büyük ayrıldıkları nokta şudur: Mikrokontrolcü kartı yalnızca bir programı çalıştırmaları düşünülerek tasarlanırlar. Ayrıca mikroişlemci ile mikrokontrolcü farklı kavramlardır. Mikroişlemci, mikrokontrolcünün aritmetik ve lojik işlemlerinden sorumlu birimidir. Mikrokontrolcüde işlemci biriminin yanı sıra, RAM bellek, ROM bellek, flaş hafıza, haberleşme birimleri (I2C, SPI, UART v.b.) de yer almaktadır. Sadece tek bir programı çalıştırmaları öngörüldüğü için RAM ve ROM bellekleri günlük hayatta kullandığımız bilgisayarlarımızdan çok daha az miktardadır (KB’lar mertebesinde). Sensör bilgisi okumak, motor çalıştırmak, haberleşme birimlerini yönetmek gibi işlemler için bu kapasite genellikle fazlasıyla yeterli olacaktır.
-
Tek Kart Bilgisayarlar:
Tek kart bilgisayarlar ise, isimlerinden de bir miktar anlaşılacağı üzere günlük hayatta kullanmakta olduğumuz bilgisayarlar gibi işlev görebilirler. Bu demektir ki, aynı anda birden fazla programı çalıştırabilecek işlemci birimleri, RAM ve kalıcı belleğe, birden fazla giriş ve çıkış birimine sahiptirler. Daha fazla işlem gücüne sahip olmalarının iyi olduğunu düşünebiliriz, fakat bu bilgisayarlar aynı anda birden çok işi; örneğin web tarayıcı açıkken bir yandan müzik çalmak, bütün bu işlemlerler devam ederken klavye/fare gibi giriş birimlerinden girdi alarak ekran gibi çıktı birimlerini yönetmek gibi yaptıklarından dolayı, bu işlemlerin yanında zaman-kritik uygulamaları yapmakta (örneğin servo motor sürmek) her zaman çok başarılı olamamaktadırlar. Bunun yanında kamera gibi görüntü birimlerini yönetebilecekleri ve çok daha yüksek işlem kapasitesi sunabildiklerinden dolayı örnek olarak bir görüntü işleme uygulamasında bu kartları tercih etmek daha mantıklı bir hareket olacaktır.
Nasıl Tercih Yapmalı?
Kontrol kartı tercih ederken ilk dikkat etmemiz gereken nokta projemizin karmaşıklık seviyesidir. Eğer komutlarımızı takip edecek veya çizgi izleme/engelden kaçma gibi görevleri yapacak basit bir mobil robot tasarlayacaksak mikrokontrolcüler işimizi görecektir. Fakat görüntü işleme, yapay zeka gibi işlem gücüne ihtiyaç duyacak görevlerde tercihimizi tek kart bilgisayarlardan yana kullanabiliriz. Bunun yanı sıra, tek kart bilgisayarın yanına bir mikrokontrolcü ekleyerek birbirleriyle haberleşmesini sağlayarak her iki dünyanın da iyi yanlarından faydalanmamız mümkündür 🙂
İşlem gücünün yanı sıra, elbette bir sonraki önceliğimiz kullanacağımız kontrol kartının giriş/çıkış sayısıdır. Kullanacağınız kontrolcünün robot projenizde kullanacağınız giriş/çıkış birimine yetecek kadar miktarda giriş/çıkışa sahip olması gereklidir. Burada bir diğer dikkat etmek gereken nokta, Arduino gibi kartların farklı modellerinde farklı yeteneklere sahip çeşitli sayıda giriş/çıkış sayısına sahip olmalarıdır. Örneğin, motor sürmede hız kontrolüne ihtiyaç duyacaksanız, kontrolcünüzün motor sayısı kadar PWM çıkışa sahip olması gereklidir.
Kontrol kartı tercih ederken dikkat etmeniz gereken bir diğer nokta ise desteklediği programlama dilleri ve popülaritesidir. Deneyimli kullanıcılar için popülarite çok önemli olmasa da, özellikle yeni başlayacaklar için kartın çeşitli çevre birimleri ile ilgili örnek programlar ve kütüphaneler, yapılmış başka benzer projeler bulunması faydalı olacaktır. Bunun yanı sıra popüler programlama dillerinden olan C/C++ ve Python destekleyen bir kart tercih etmek, yeni başlayanlar için yine daha iyi olacaktır.
Sensörler
Robot projemizde ışık, sıcaklık, mesafe gibi fiziksel büyüklükleri elektrik sinyallerine dönüştürmek ve bu bilgileri işleyecek karar mekanizmaları kurabilmek için sensörleri kullanırız.
Sensörleri temel olarak iki çeşitte inceleyebiliriz: analog ve dijital. Analog sensörler, algıladıkları fiziksel büyüklüğe orantılı olarak değişen bir akım veya gerilim çıktısı verirler. Bu tipte sensörleri dijital çalışan kontrol kartlarımıza bağlayabilmek için analog-dijital çeviriciler (ADC) kullanılır. Analog-dijital çeviriciler mikrokontrolcüler içerisinde de yer alacağı gibi (örn. Arduino analog giriş pinleri), sayısının veya hassasiyetinin yetmemesi durumunda harici olarak da bağlanabilirler. Popüler bir tek kart bilgisayar olan Raspberry Pi ise malesef dahili olarak analog-dijital çeviriciye sahip değildir. Dolayısıyla analog girişe ihtiyaç duyduğumuzda harici bir entegre kullanmamız gerekecektir.
Dijital sensörler ise genellikle I2C, SPI, OneWire v.b. bir haberleşme protokolü aracılığıyla bilgisayar (mikroişlemci) ile konuşurlar. Bunun yanı sıra, çoğu analog sensör bir op-amp ile birlikte kullanılarak belirli bir seviye üzerinde lojik 1 (genellikle 5V veya 3.3V) çıkışı verecek şekilde kullanılabilir. Böylelikle analog çıkışlı sensörler, Raspberry Pi gibi ADC’ye sahip olmayan kontrolcüler ile kullanılabilir.
Bir sonraki yazımızda motor çeşitlerinden ve motor sürücülerden bahsedeceğiz. Takipte kalın 😉