Blogum üzerinden en çok aldığım sorulardan birisi bu: Gömülü sistemlere nereden başlamalıyım? Herşeyde olduğu gibi bu konuda da başlangıç yapmak, daha doğrusu nereden başlayacağını bilmek zor olabiliyor.
En başta söyleyebileceğim şey nereden başlayacağım sorusuna takılmadan herhangi bir platformu kullanarak bir şekilde başlamak.
Başlamak için birçok alternatif platform bulunduğundan haliyle yeni başlamak isteyenlerin de kafası karışıyor? PIC’lerle mi Atmega ile mi, ARM ile mi Rasperry Pi ile mi başlayayım gibi sorular soruluyor haliyle. Burada biraz özetleyerek bir başlangıç noktası vermeyi umuyorum.
Öncelikle amacımızın net olması gerekiyor. Amacımıza göre kullanacağımı araçlar da farklılık gösterebiliyor. Hobi olarak uğraşıyorsak kullanımı çok daha kolay ve hazır çözümleri fazla olan platformlara yönelirken, bu işle profesyonel olarak uğraşmayı düşünüyorsak işlerin temelini de daha iyi öğrenebileceğimiz araçlara yönelmemiz gerekecektir.
Gömülü sistemlerle uğraşmak isteyenler için aşağıdaki maddeleri uygulamalarını tavsiye ediyorum.
1 – İngilizce öğrenin: Evet bu işlerde ciddi iseniz en başta İngilizce konusunu halletmelisiniz. Çünkü bu konularda Türkçe kaynak sayısı yok denecek kadar az… Gömülü sistemler konusunda en fazla birkaç adet Türkçe blog bulunurken, İngilizce onlarca hatta yüzlerce blog bulabilirsiniz. Kitap konusuna hiç girmiyorum bile, henüz doğru düzgün Türkçe elektronik kitabı bile yok denecek kadar az. Teknolojinin hızına baktığımızda da zaten bu konularda yazılan kitapların çabucak eskimesi söz konusu. Kısaca İngilizce bilmek çok önemli…
2 – C programlama dilini öğrenin: Gömülü sistemler denildiğinde en çok kullanılan dil hala C’dir. Bu nedenle C diliini öğrenmeniz gerekiyor. C bilmenin belirli bir derecesi yok, sürekli yeni şeyler öğrenebileceğiniz bir dil. Dolayısıyla tam anlamıyla profesyonel bir C programcısı olmak yıllar alabilir. Ama önemli olan bir yerlerden başlamak.
C dilini öğrenirken açık kaynaklı yazılımlardan faydalanabilirsiniz. Eclipse geliştirme ortamı ve MinGw gibi derleyicileri kullanabilirsiniz. Eclipse ortamını özellikle öğrenmenizi tavsiye ederim. Bugün birçok geliştirme ortamı Eclipse tabanlı olarak tasarlanıyor. Dolayısıyla Eclipse’e aşinalık kazanmanız bu anlamda da faydalı olacaktır.
3 – Birşey öğrenmenin yolu o iş üzerinde pratik yapmaktır: Yeni bir platformu / mikrodenetleyiciyi öğrenmek için en iyi yol o ürünü kullanarak projeler yapmaktır. Bir mikrodenetleyiciyi öğrenirken aşağıdaki uygulamaları yaparak başlayabilirsiniz. Eğer aşağıdaki listedeki terimlerden bilmedikleriniz varsa bunu da öğrenmelisiniz.
Başlamak için hangi mikrodenetleyici ile başlayayım diye düşünerek çok zaman kaybetmeyin. En kolay başlayabileceğiniz bir seri ile başlayın. Zaten birçok konu bütün mikrodenetleyiciler için ortaktır. Temel kavramları öğrenerek değişik ürün aileleri ile çalışacak hale gelebilirsiniz. Zaten çalışacağınız mikrodenetleyiciyi seçme lüksünüz sadece kendi projelerinizi yaparken olacaktır. Bunun dışında eğer bir projeye dahil olduysanız zaten çalışılan bir mikrodenetleyici vardır ve sizin de buna uyum sağlamanız beklenir. Bu nedenle mikrodenetleyici aileleri üzerine yapılan saçma ve fanatizm dolu tartışmalardan uzak kalmanızı tavsiye ederim.
Aşağıda bir mikrodenetleyici ile çalışmaya başlandığında yapılabilecek bazı uygulamaları sıraladım:
Adım adım yapılabilecek uygulamalar
- LED Yakıp söndürme (Her Zaman ilk uygulama bu olmalı 🙂
- Timer kullanarak LED yakıp söndürme. LED’in yanıp sönme süresi timer ile ayarlanarak.
- Seri haberleşme (UART) üzerinden PC’deki bir programa (hyperterminal vs…) karakterler yollama
- PC’den gönderilen karakterleri seri haberleşme üzerinden okuma
- Seri haberleşme kesmelerini kullanma.
- Hem timer hem seri haberleşme kesmelerini kullanarak bir uygulama (Timer ile ayarlanan periyotta PC’ye bilgi gönderme vs…)
- Analog – Dijital Dönüştürücü ile sıcaklık sensörü okuyup bu bilgileri PC’ye yollama
- LCD çalıştırma. Sıcaklık sensörü ile sıcaklık ölçümünü ekranda görüntüleme
- PC’den gönderilen veriler LCD’ye yazdırma
- I2C ve SPI protokollerini kullanarak çeşitli sensörlerle haberleşme uygulamaları
Burada yazdıklarım sadece aklıma gelen temel örnekler. Bütün bu çalışmaları yaptığınızda aslında gömülü sistemlerde kullanılan birçok protokol ve teknik hakkında bilgi sahibi olmuş olacaksınız. Tabii ki öğrenmenin sonu yok. Bundan sonra yapacağınız çalışmaları çalışacağınız alanlar belirleyecektir. Ama en azından burada anlattıklarımı uygulayarak belirli bir temel edinebilirsiniz.
Gömülü sistemlerle ilgili aşağıdaki yazıları da okumanızı tavsiye ediyorum:
Gömülü Sistem Nedir?
Neden Gömülü Sistemler
Gömülü Sistemler ve ANSI C Dili
Çoşkun Bey abim , ben micro c ile pic i proğramlamaya çalışıyorum led yakma, buton ile yakma, sıra ile yani karaşiimşek yaptım şimdi buton ile 7li segment display yapmaya çalışıyorum ama takıldım 1 haftadır problem nedir çözemedim bana bu ufak hatalarımda yardımcı olabilir misiniz .. cevabınızın evet olmasını o kadar çok istiyorum ki .. çünkü önümdeki büyük taşları yıkarak ilk adımı atmış oldum başladım yola çıktım bu seferde ufak tefek taşlar çıkıyor sizin yardımlarınızla bu yolda ilerlemek istiyorum .. bakalım derseniz ben size her türlü ekran görüntüsü gönderirim bir kaç cümle ile hatamı açıklayabilirseniz çok sevibnirim gerçekten … şimdiden çok teşekkür ederim ..
Furkan merhaba,
Bu tür çok fazla soru geliyor ve hepsini cevaplama şansım olmuyor. Sorularını picproje.org forumunda ilgili bölümde sorabilirsin çok daha fazla kişi görecektir.
Merhabalar, bahsettiginiz uygulamalar icin mesela arm islemciye sahip stm32f4 kullanirsak mikroc mi tavsiye edersiniz yoksa keil mı? Bir elekronik muhendisinin mikroc kutuphanesi kullanması kotu bir sey midir? Is hayatinda ozellikle
MikroC kullanmadım, bilgidğim kadarıyla kütüphanelerinin kodları kapalı. Öğrenme aşamasında herşeyi bilmenin faydası var. Keil’in ücretsiz versiyonunu 32 KB sınırlı olarak kullanabilirsin. İş hayatında farklı parametreler devreye giriyor. Zaman kısıtlamasından dolayı en hızlı çözümler tercih sebebi olabiliyor. Öğrenirken Keil diyorum ama iş hayatında duruma göre MikroC de kullanılabilir. Mühim olan kullandığımız şeylerin tam olarak ne olduğunu, avantaj ve dezavantajlarını bilerek kullanmak.
Merhaba makine mühendisliği okuyorum fakat bu alana da ilgi duyuyorum ve ilgilenmek istiyorum fakat makine mühendisliği okuduğum için elektronik dersleri almıyorum sizce sıkıntı yaşarmıyım ? Yada bir makine mühendisinin gömülü sistem mühendisi olması mümkünmü ?
Birçoğumuz yaptığımız işlerin çok azını okuldaki derslerde öğrendik. Yani kısacası mümkün.