Gömülü Sistem Rehberi -7- Arduino’dan İlerisine Geçiş

Arduino ile başlayan birinin bir ömür boyu Arduino üzerinde çalışması ancak keyif amaçlı uğraşıyorsa kabul edilebilir bir durumdur. Türkiye’de ise pek kimse sırf keyfi için yüzlerce dolar elektronik malzemeye para ayırmadığı ve çoğunun bundan para kazanma hedefinde olduğu için biz son zamanlarda artık işin hobi tarafını görmezden geliyoruz. Hatta bu internet sayfamızda hobicilere yönelik bir makale bile yazılmamıştır diyebiliriz. Bazıları pahalı elektronik oyuncak olarak bile görse de bizim bu görüşte olanlarla işimiz yoktur. Amatör veya profesyonel olsun öğrenmek, çalışmak ve ortaya bir ürün koyma peşinde olanlara yönelik içerik hazırlamaktayız.

Arduino’dan daha ilerisine geçiş çoğu zaman çok sancılı bir süreç olmaktadır. Öncelikle Arduino kitlesinden kendinizi koparmanız ve yalnız kalmanız gereklidir. Arduino kitlesinden kopmasanız bile zamanla ilerledikçe kendiliğinden kopmaya başlarsınız. Bu durumda yeni kaynaklar, yeni platformlar ve yeni topluluklar ile tanışmanız gereklidir. Örneğin Arduino foruımunda takılmayı bırakıp Avrfreaks’e geçiş yapmanız gerekecektir. Çünkü bir noktadan sonra Arduino kitlesinin büyük çoğunluğu sizin seviyenizde olmayacak, sizin dilinizde konuşmayacak ve sizin dediğinizi de anlamayacaktır. Örneğin ben burada gömülü sistemler alanında çoğu zaman çok kıymetli bilgilerden bahsetsem de Arduino kitlesinin çoğunun dikkatini bile çekmemektedir. Ayrıca Arduino’dan ayrılırken hazır fonksiyonları, kütüphaneler, desteği ve projeleri bir kenarda bırakmanız ve yapacağınız projelere daha fazla zaman ve emek ayırmanız gerekecektir. Bu durumda işin sıkıntılı tarafı ile tanışacaksınız ve yazdığınız çoğu kod Arduino’daki gibi bir basitlikte olmayacaktır. Bu durumda şevkiniz kırılabilir ve tekrar Arduino’ya dönmek isteyebilirsiniz. Çünkü Arduino az bir bilgi ile kolayca proje yapma imkanı sunarken aynı işleri Arduino’suz çok daha zor yaptığınızın farkına varırsınız.

Bu durumda Arduino’yı bırakmak için Arduino’nun kötü yanlarını gerçekten görmeniz lazımdır. Örneğin Arduino ile bir frekans üretici ya da frekans sayıcı yapamamak ve bunun için AVR kodlarını kullanmak bu sebeplerden biri olabilir. Fakat siz işinizde frekans üretici ya da sayıcı kullanmak zorunda kalmıyorsanız, Arduino’nun kararsızlığını ve yavaşlığını hissedemiyorsanız veya Arduino kütüphaneleri yetersiz kalmıyorsa bunu yaşayarak tecrübe etmeniz de mümkün olmayacaktır. Arduino’dan ilerisini öğrenme zorunluluğunu hissettirecek en büyük sebep bu olduğu için Arduino ile yapılamayacak şeyleri yapmaya çalışmanız çok önemlidir. Örneğin PORT işlemlerine olan ihtiyacınız bile Arduino’nun eksik olduğunu ve ilerisine geçilmesi gerektiğine ikna etmeye yetecektir. Bu da temel bilgileri öğrenmeniz ve yaptığınız uygumaların oyuncaklıktan çıkıp gerçek uygulamalara doğru ilerlemesi ile olur.

Bunu yaşayarak tecrübe etmeniz şart değildir çünkü uzmanlar bu konuda bizim dediklerimizden çok farklısını dememektedir. Hiçbir uzman size “Arduino ile yapabilecekleriniz hayal gücünüzle sınırlı, başka birşey öğrenmenize gerek yok.” diyemez. Bunu diyen pazarlamacılıkla eğitimciliği, şovmenlikle uzmanlığı karıştırmış birisidir. Benim Arduino’yu terk edip daha ilerine yönelme sebebim öğrenme isteğinden çok ihtiyaçtan dolayı oldu. Şu an ihtiyaç hissetmediğim durumlarda kısa zamanda deneme yapmak için yine Arduino’yu kullanmaktayım. Fakat bilgim Arduino bilgisinden ibaret olmadığı için tekrar Arduino kullansam da kütüphaneler yazabilmekte, donanımsal özellikleri kullanabilmekte ve Arduino’yu tam anlamıyla kontrol edebilmekteyim. Arduino’nun fonksiyonları ve kütüphaneleri içinde hapsolmuş değilim. Bu şekilde Arduino kullanabilmek bile Arduino ile mümkün olamamaktadır.

Örneğin sürekli kartlarını ve modüllerini aldığınız birkaç firma var. Bunlar dünya geneline bu modülleri satıyor ve siz de bunların modülüne para vererek yazdıkları kütüphane üzerinden Arduino ile modül kullanabiliyorsunuz. Bunların yaptığı on binlerce modülü kullansanız bile kendinize ait bir modül yapabilir misiniz? Yüzlerce kütüphane kullanan birisi kendi kütüphanesini yazabilir mi? Elbette bunları yapamaz o yüzden mesele kütüphane ya da modül kullanıp kullanmamak değil bir noktada takılıp kalmaktır. Daha ilerisine gidemediğiniz sürece eliniz kolunuz bağlı olur. O durumda “Keşke şunun modülünü yapsalar, kütüphanesini yazsalar da kullansam.” diye bekler durursunuz. Kendi kartınızı yapabildiğiniz, modülünüzü üretebildiğiniz ve kütüphanenizi yazabildiğiniz durumda çoğu zaman onların ürünlerine de ihtiyacınız kalmayacaktır. Siz bir üretici ve geliştirici olarak bu aşamaları aşmanız gereklidir. Eğer tüketici ve kullanıcı olmakta ısrar ediyorsanız lütfen kendinize üretici ve geliştirici demeyin.

Daha iyisini yapmak, ortaya ciddi bir ürün koymak, özgün olmak ve kendinizi ifade edebilmek için Arduino’dan kurtulmanız gerektiğini kabul ettiniz. Bu noktada öğrenci olup işin başında olsanız da Arduino ile zaman kaybederek bunu öğrenmek istemiyorsunuz ve hemen daha ilerisine geçmek istiyorsunuz. Eğer bu durumda gerçekten nereden başlayacağınızı bilemezseniz aylarca zaman kaybedebilirsiniz.  Örneğin Youtube’da bir üniversite öğrencisinin videosundan öğrenmekle yeterli seviyeye gelemezsiniz. Aldığınız Türkçe kitapların ciddi bir kısmı sizi ileri seviyeyi getirmeyi bırakın ilerletecek nitelikte olmaktan bile yoksundur. Bilgisini saklayan insanların kitap yazdığını, Youtube videosu çektiğini görebilirsiniz. Hem bilgilerini saklayıp hem de itibar kazanmak için eğitimcilik yapmanın ironisini gözlemlemekteyiz. Eğer bilgisini saklamayan ve gerçekten öğretme arzusu ile içerik hazırlayan bir eğitimci bulabilirseniz derhal ürettiği içerikleri takip etmelisiniz. Lojikprob sitesinin tamamen bu niyetle, olan bilginin aktarıldığı ve kar amacı gütmeden hazırlandığını çok rahat söyleyebiliriz.

Doğru kaynağı ve içeriği bulmak da sizin bakış açınızla mümkün olmaktadır. Örneğin ben yazar ve eğitimci adayı olarak hangi kitabın ve içeriğin kaliteli ve hangisinin kalitesiz ve iş görmez olduğunu bir okumada anlayabiliyorum. Fakat sizin bunu başlarda tecrübe ederek öğrenmeniz gereklidir. Bu tecrübe etme sürecinde ben zaman kaybetsem de sizin zaman kaybetmemeniz açısından Facebook grubumuzda kaynak paylaşımlarını yapmaktayım. Burada bir örnek vermemiz gerekirse tecrübe ettiğimiz bir durumu size aktaralım. Ben iletişim protokollerinin (SPI, I2C, UART) temellerini bilmiyordum ve kaynak araştırması yaparak bunu öğrenmeye çalışıyordum. Çoğu Arduino kaynağında işin ayrıntısı ve mantığı anlatılmadığı için anlamış gibi oluyordum fakat anlamıyordum. Açıkcası SPI iletişim demek üç kablo bağlayıp iki Arduino fonksiyonu yazmaktan ibaret görünüyordu çoğu kaynakta. Üstelik bunun mantığını anlatmak üzere teorik bilgiyi verenlerin çoğu da yeterli anlatımda bulunmadığı için karanlık kalan noktalar çok oluyordu ve yine anlamıyordum. Sonrasında Gammon Forum’daki makaleleri keşfettim ve çok kısa sürede protokolleri ve iletişimin mantığını anladım. Daha sonrasında kitabıma ve eğitimlere de kaynak olan bu makalelere denk gelmem bu kadar bilgi kirliliği arasında çok uzun sürmüştü. O yüzden farklı bir çalışma ortaya koyamadıkça bilgi kirliliğine katkıda bulunmaktan pek de öte gidilemiyor. SEO’yu ve tık almayı dert edenler için bu pek sorun değildir. Böylelerinden de öğrenilir mi bunu siz sorgulayın.

Bunlar benim öğrenim sürecinde karşılaştığım zorluklar olsa da kimsenin bir daha bunlarla uğraşmaması için eğitim alanında faaliyet göstermek zorunda kaldım. Çünkü bu alandaki eğitimlerin çoğu eğitmemeye yönelik yapılmaktadır. Yurtdışında durum farklı olsa da ülkemizde genel olarak böyledir.

AVR mikrodenetleyicileri öğrenmeye başlarken öncelikle İngilizcemi ilerletmek zorunda kaldım. Çünkü hakkında Türkçe kaynak olmayan bir alanda ilerlemenin tek yolu buydu. Bu konular hakkında Türkçe kaynak olsa bile kaynakların çoğununun üniversite öğrencilerinin ben biliyorum demek için çektiği videolar ve SEO amaçlı yazılan tık alma peşindeki ucuz makalelerden öte gidemeyeceğini biliyordum. Bu konuda İngilizce blog yazıları ve kaynakların bile birinin yeterli olmadığını gördüm. Örneğin bir tutorial yazısında PORT işlemleri bitwise operatörler ile anlatılmıyor ve BV_() makrosu kullanılıyor ötekinde ise bitwise operatörler ile yapılıyordu. Bazı noktalarda eksik kısımlar vardı ve mantığını kavramak için aynı konudaki 5-6 blog yazısını bir araya getirmek zorundaydınız. Üstelik buna rağmen datasheet okumuş kadar bilgiye sahip olamıyordunuz. AVR hakkında pek çok İngilizce kitap bulsam da bunların arasında 2-3 tanesini gerçekten faydalı buldum. Bazı kitaplar “Çöp kitap” olarak nitelendirilebilecek seviyede zaman kaybı olabiliyor. İngilizce kaynakların kalitesini öğrenmek istiyorsanız üniversitelerde ders kitabı olarak okutulup okutulmadığını araştırmanız gereklidir. Benim kaliteli bulduğum ve bana faydası olan kitapların yurtdışında mikrodenetleyiciler dersinde ders kitabı olarak kullanıldığını gördüm. AVR mikrodenetleyici derslerini yazarken bu yüzden kullandığım kaynak datasheet olmuştur. Çünkü diğer kaynaklardaki eksikliklerin farkına varmış ve tam kapsamlı bilgi vermek için bunların kaynak olamayacağını görmüştüm. Bu konuda İngilizce öğrenmenin, araştırma yapmanın ve tek bir kaynağa bağlı kalmamanın önemini kavramanız gereklidir.

Biz Arduino ile başlayıp AVR ile devam etsek de bu süreç bizim için uzun ve zor bir zaman içerisinde oldu. Ben bunun çözümünü bu siteyi açıp kaynak oluşturarak giderdiğime inanıyorum. O yüzden Arduino’dan ilerisine geçmek isteyenlere AVR mikrodenetleyicileri tavsiye etmekte, sitemizden faydalanmasını tavsiye etmekte ve grupta paylaştığım AVR kitaplarını okumayı önermekteyiz.

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...

Bir cevap yazın

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