Gömülü Sistem Rehberi -1- Gömülü Sistemlere Başlamak İçin Neler Gerek?

Lojikprob açıldığından beri belli konularda yazı yazdık fakat gömülü sistemlere ait unsurlar hakkında pek çok yazımız olsa da başlangıca yönelik gömülü sistemleri genel olarak ele alan yazıları yazmayı ihmal ettiğimizi söyleyebiliriz. Bı eksikliği gidermek için “Gömülü Sistem Rehberi” adı altında yol gösterici yazıları yazmaya başlıyoruz. İlk yazımızın konusu ise gömülü sistemler üzerinde çalışmak isteyen herkesin nasıl başlayacağı hususunda olacaktır.

Öncelikle mühendis olup olmamanız fark etmez. Ben şahsen mühendis değilim ve piyasanın ihtiyaçlarına göre kendimi geliştirmiyorum. Malumunuz elektrik-elektronik mühendislerinin neredeyse %90’ı elektriğe yönelmekte ve elektroniği öğrenmeye gerek bile duymamaktadır. Her ne kadar onbinlerce elektrik-elektronik ve bilgisayar mühendisliği okuyan öğrenci olsa da bunların pek azı gömülü sistemlere ilgi duymaktadır. Bunda iş imkanlarının kısıtlılığı, sektörün küçük olması ve en önemlisi zor bir alan olması sebepler arasında sayılabilir. Ayrıca gömülü sistemlere ilgi duyan tekniker, esnaf, teknisyen ve amatörleri de görmekteyiz. Gömülü sistemler üzerinde iş yapmak için illa mühendis olmanıza gerek yoktur. Ben jeofizik ölçüm sistemlerini tasarlama ve geliştirme alanında kendi işimde çalıştığım için bu alanda kendimi geliştirmekteyim. Bu konuda çalışabilmek için elektronik, fizik, gömülü sistemler ve yazılımda bir hayli ileri gitmek gerektiği için sürekli yeni birşeyler öğrenmek zorundayım. Bu yüzden bu rehber yazısını da dersleri geçmek, iş bulmak değil sürekli öğrenmek ve yeni teknolojileri üretmek zorunda olan birinin bakış açısıyla yazacağım.

Gereksinimler

Gömülü sistemlere başlamak isteyenler öncelikle belli gereksinimleri belli bir seviyede karşılamak zorundasınız. Eğer bu gereksinimleri başta veya başlangıçta karşılayamazsanız bu alanda ilerlemeniz yavaşlayabilir, durabilir veya mümkün olmayabilir. O yüzden büyük dikkatle öncelikle bu gereksinimleri öğrenmeniz gereklidir. Bütün gereksinimleri tek tek yazma imkanımız yok fakat bize göre ve aklımıza gelen belli başlı gereksinimleri size açıklayacağız.

Dirayet, Sokaktan geçen herkesin gömülü sistem geliştiricisi olması beklenemez. Belli bir dirayet ve alt yapı şarttır. Bu konuda kimseyi küçümsediğimizi iddia edemeyiz fakat gömülü sistemler ressamlık, futbol, bisiklet sürme gibi herkesin yapabileceği basit bir alan değildir. Hatta üniversitelerde 4 yıllık gömülü sistemler bölümlerinin bile olmadığını görmekteyiz. Bilgisayar ve elektronik mühendisliğinin ortak alt dallarından biri olan gömülü sistemlerin belli bir temel üzerine bina edilmesi şarttır. Bu temeller üzerine bina edilmiş bir konuda da temelsiz birinin ilerleyememesinden doğal bir şey yoktur. O yüzden gömülü sistemlere başlayacak herkesin başlamadan önce veya başlarken bu temeli edinmesi gereklidir. Temelin yanında bu konuya yatkınlık da şarttır. Eğer bu konuda yeteneğiniz olduğunu hissetmiyorsanız kendinizi zorlamanın bir anlamı yoktur çünkü sektör çok para kazanabileceğiniz bir sektör değildir. Yukarı dediğimiz gibi bu yüzden çoğu elektronik mühendisi elektriği seçmektedir. Örneğin, bazıları bir yılda Arduino fonksiyonlarını çözemez bazıları ise bir ayda Arduino’yu öğrenir. Burada kişinin dirayeti yani ince meseleleri kavrama yeteneği büyük fark ettirmektedir. Öncelikle bu alan için yeteneğinizin ve yatkınlığınızın olduğunu keşfetmeniz gereklidir.

Merak, Dirayetten daha önemlisi ise meraktır. Merakınız yoksa boş yere bu alana yönelmeyin. Zor, uğraştırıcı ve pek büyük sektörü olmayan bir alanda merakınız olmadan çalışmak size işkence gibi gelecektir. Bu alanda her zaman öğrenci gibi olmanız ve sürekli yeni şeyleri öğrenmekle beraber gelişen teknolojiyi takip edebilmeniz gereklidir. Çoğu zaman uykunuzdan, tatilinizden, televizyondan ve sair keyiflerden ödün vermeniz gereklidir. Ayrıca merakınız olmadan yazmaçları ve bitleri öğrenmek, işlemci komutlarını anlamak veya boolean aritmetiğinin öğrenmenin bir keyfini alamazsınız. Ancak merak sayesinde bunları öğrenme imkanınız vardır. Unutmayın, çoğu meseleyi dersi geçmek için öğrenmek zorunda kalmayacaksınız. Mühendislik fakültelerinde Arduino bile seçmeli ders olduğu için bu alan hakkında öğreneceğiniz bilgilerin çoğu sizin şahsi çalışmalarınızdan ibaret olacaktır. Mühendis olmanın avantajı ise temel teorik bilgilere ve matematiğe aşina olmaktan ibarettir. Bu alanda ciddi bir eğitimin olmaması aslında meraklı insanların yararına bir durumdur. Çünkü dersi geçmek zorunda olmak bütün merakınızı öldürür ve sizi müfredata hapseder. O yüzden başlamadan önce gerçekten meraklı mıyım yoksa bir anlık heves mi diye kendinizi sorgulayın.

İngilizce, Eğer basit İngilizce cümleleri kuramıyor, keliemeleri anlayamıyor iseniz gömülü sistemlere başlamayın. Lisede “almanız gereken” yani B1-B2 seviyesinde bir İngilizceniz varsa bile başlangıç için yeterli olacaktır. Sonra zamanla İngilizce kaynakları ve dokümanları okudukça bunu geliştirme imkanı bulursunuz. Fakat A1 seviyesinde ya da bunu bile karşılamayacak kadar İngilizce bilgisiyle mezun olan mühendisleri görmekteyiz. Bu mühendisler kendilerini nasıl geliştirebilecektir? Mühendisliği bırakıp birkaç yıl dil öğrenmeleri gerektir artık. Gömülü sistemlerde ilerlerken aynı zamanda İngilizcenizi de ilerletmeniz mümkündür. Fakat dediğim gibi temel bir İngilizce bilgisi şarttır. Bunu ölçmek için en iyi kriterlerden biri İngilizce Wikipedi makaleleridir. Eğer İngilizce Wikipedi makalelerinin çoğunu anlayabiliyorsanız yeterli bir ingilizceye sahipsiniz demektir. Eğer İngilizce blog veya haber yazılarını basit dilde olması kaydıyla anlıyorsanız İngilizceyi geliştirme üzerine düşerek bu alana giriş yapabilirsiniz. Belli bir seviyede İngilizceden sonra İngilizceniz kendiliğinden gelişmeye başlayacaktır fakat hiç bilmeyen birisine gömülü sistemler üzerinde çalışmak İngilizce’yi öğretmez. Türkçe kaynaklardan da faydalanabilirim diyen biri belki yazılmasını istediği bir blog yazısı için yıllarca beklemesi gerekecektir. O blog yazılarının çoğu da İngilizce blog yazılarının ucuz tercümeleri olmaktadır. Hiçbir zaman İngilizce kaynaklardaki ayrıntıyı ve derinliği Türkçe kaynaklarda göremezsiniz. Bu site bir istisna olsa da genel olarak Türkçe kitapların bile İngilizce kaynaklardan fersah fersah geride olduğunu görüyoruz. Biz başlangıçtakilerin zorluk çekmemesi için bu siteyi hazırlasak da bu süreçte ingilizcenizi ilerletmeniz şarttır.

Temel Bilgiler, Temel bilgiler dediğimizde analog elektronik, dijital elektronik ve bilgisayar mimarisi konuları başlıca konulardır. Sizin çok derin fizik ve matematik bilgisine başlangıçta ihtiyacınız olmasa da konuyu anlayabilmek için dijital elektronik ve bilgisayar mimarisini iyi bilmeniz gereklidir. Gömülü sistemleri öğrenmeye çalışırken karşınıza çıkan engellerin çoğu sizin temel bilgiden yoksun olmanızdan kaynaklanır. Örneğin ben STM32 öğrenirken o güne kadar idare eder seviyede olan dijital elektronik bilgimle datasheetteki terimleri ve kavramları rahat rahat anlayamadığımın farkına vardım. 8-bit mikrodenetleyicilerde çok sıkıntı olmasa da 32-bit mikrodenetleyicilerde DMA, CRC gibi kavramları görünce bunları rahatça anlamak için temel bilgiyi ilerletmek gerektiğini anladım ve Morris Mano, Anil K. Naimi, Mark Balch gibi yazarların dijital elektronik ve tasarım kitaplarını okudum. Bu kitapları okuma nedenim datasheet okurken bazı yerlerde anlamamın zorlaşmasıydı, anlayamamak bile değil. Bu kitapları okuduktan sonra tekrar döndüğümde ise meselelerin ne kadar kolay olduğunun farkına vardım. Siz datasheet okuyacak derecede iyi bir İngilizce bilseniz bile temel bilgi olmadan o datasheet size işkence gibi gelecektir. Ana dili İngilizce olan birinin önüne datasheet koysanız o da anlamayacaktır. Çok iyi İngilizce bilseniz dahi temel bilgileri ya öğrenmeden önce ya da öğrenirken öğrenmeniz gereklidir.

C Programlama Dili, Ben burada tek bir programlama dilini öğrenin demiyorum fakat C dilini bilmezseniz neredeyse hiçbirşey yapamazsınız ve ilerleyemezsiniz. C dili olmadan Assembly diliyle program yazılabilse de ana akım C dilini kullanmaktadır ve bir noktadan sonra gelişmiş programları yazmak için C diline ihtiyaç duyacaksınız. C dilini temel olarak bilseniz dahi gömülü sistemlerde kullanımına (Gömülü C) aşina olmanız da gereklidir. Örneğin bitwise operatörler, işaretçiler veya sabit tamsayı tiplerini temel C programlamada pek sık göremezsiniz. C programlama dilini iyi bilmek sadece dile ait döngü, karar, ön işlemci yönergesi, kütüphane fonksiyonları gibi yapıları bilmek değil aynı zamanda bunları etkin bir biçimde kullanabilmek demektir. Bunun için sizin algoritma ve programcılık yeteneğini de öğrenip kazanmanız gereklidir. C programlama dilini anlayarak kullanmadıkça gömülü sistemlerde program yazmanız söz konusu olamaz. Çünkü çoğu programı sıfırdan yazdığınız gibi kütüphaneleri de sıfırdan yazmanız gerekecektir. Bir yazmadığınız şeyin derleyici olması gereklidir. Hazır kodları kopyala-yapıştır ile baka baka yapmak ile gömülü sistem geliştiriciliği olmaz.

Pratik Elektronik, Sizin Arduino kartını kullanıp breadboard üzerinde iki kablo bağlamakla kurduğunuz devre bile size bir pratik kazandıracaktır. Fakat pratik konusunda bununla yetinmemek gereklidir. Tam kapsamlı bir elektronik cihaz üretebilmek ve bunun bütün aşamalarındaki pratiği kavramak gerekir. Örneğin PCB tasarımı, PCB yapımı, lehim ve dizgi, test ve kontrol, kutulama, panel tasarımı, arayüz üretimi, etiket basımı gibi konularda bile pratiği kavramanız gereklidir. Siz bir cihaz yapmak istiyorsanız bilginiz ve yazılımınız ne kadar iyi olsa da işçilik ve malzeme kalitesi iyi olmadıkça o cihazdan pek hayır gelmeyecektir. Sizin bir atölye kurmaya yavaştan başlamanız gereklidir ve bu konuda kendi cebinizden ciddi bir meblağ ayırmanız gerekebilir. Osiloskop, lojik analizör, iyi bir havya, lehim teli, lehim pastası derken maliyet belki binlerce lirayı bulabilir. Arduino kullanıcıları bu konuda pratik yaptığını sanmakta ama yaptıkları pratik hep birbirini tekrarlayan aşamalardan ibaret olmaktadır. Breadboard üzerine yeni bir eleman koyup aralara jumper kablosu takmak pratiğin ilk aşamasıdır. Sizin bu pratiği sürekli ilerletmeniz gereklidir.

Bilgisayar Okur-Yazarlığı,  Pek çoğunun gözünden kaçan bir konu olan bilgisayar okur yazarlığı aslında en önemli konulardan biridir. Bilgisayar kullanmayı bilmemekten dolayı pek çok geliştirici adayı ve mühendis zorluk çekmektedir. Bir mühendisin bilgisayar kullanmayı bilmemesi pek ala mümkündür. Örneğin Aygıt yöneticisini açıp bir cihazı kontrol edemiyorsa, sürücü yükleyemiyorsa, ekran görüntüsü almak yerine telefonun kamerasını yamuk şekilde tutup ekranın fotoğrafını çekiyorsa bilgisayar kullanmayı bilmiyor demektir. Ayrıca bilgisayar okur yazarlığı sadece bilgisayarı ve işletim sistemini kullanmayı değil interneti kullanmayı da kapsamaktadır. Google’dan arama yapmasını bilmeyen, yer imlerini kullanamayan, neyi nerede bulacağını bilmeyen birisi gömülü sistem geliştiriciliğinde büyük zorluk çekecektir. Bilgisayarla ilk defa tanışıyorsanız etkin bir biçimde bilgisayar nasıl kullanılır onu öğrenmekle işe başlayın. Bir derleyici programı yüklemek için bile “Next” tuşuna basılması gerektiğini öğrenmeye muhtaçsanız ciddi bir sorun vardır. Hemen hemen bütün işlerinizi bilgisayarda yaptığınız için bilgisayarı etkin bir biçimde kullanamamak kabul edilemez.

 

Bu yazıda gömülü sistemlere başlamak isteyenlerin karşıması gereken gereksinimlerden bahsettim. Bunların hepsini karşılamadan gömülü sistemlere bulaşmayın demiyorum ama bütün bunların başlangıç seviyesinde karşılanması şarttır. Arduino ile birkaç proje yapayım, çizgi izleyen robot yapayım bana yeter diyenleri muhatap almadığımızı bu noktaya kadar anlamış olmanız gereklidir. Biz bu işte gerçekten ilerlemek, yeni teknoloji ortaya koymak ve sayılı kişilerden biri olmak isteyenlere yönelik bir rehber hazırlamaktayız.

Bizi Facebook grubumuzda takip etmeyi unutmayın. Bilgili ve öğrenmeye hevesli bir topluluk oluşturmak istiyoruz.

https://www.facebook.com/groups/1233336523490761/

UYARI!!

 

 

Gökhan Dökmetaş

"Arduino Eğitim Kitabı" ve "Arduino ve Raspberry PI ile Nesnelerin İnterneti" kitaplarının yazarı. Başkent Teknoloji ve Dedektör Merkezi'nde Ar-ge Sorumlusu. Araştırmacı-Yazar.

You may also like...

1 Response

  1. Alihan dedi ki:

    Gökhan hocam emeğinize sağlık çok güzel bir yazı olmuş. Değindiğiniz Pcb tasarım konusunda, elektronik devre tasarımı mantığını kavrayabilmek için bir kaynak önerebilir misiniz? Veya elektronik devre tasarımı tasarımı konusunda kendimizi geliştirmek için nasıl bir yol izlemeliyiz, bu serinin bir yazısı da bu konu hakkında olursa çok güzel olur.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.