(Mühendislik öğrencileri) Neden (sadece) Arduino kullanmamalısınız?

Son dönemde Arduino konusunda bir kitap yazmış olmam hem de bu konuda arkadaşlarımızla beraber yaptığımız çalışmalar nedeniyle Arduino konusunda anılan kişilerden birisi oldum. Yaptığım paylaşımlarda da sık sık Arduino’ya yer veriyorum. Gözlemlediğim bazı şeyler sonucu bu yazıyı yazmaya karar verdim. Başlık biraz şaşırtıcı olabilir ama özellikle mühendislik bölümlerinde okuyan arkadaşları bazı konularda uyarmam gerekiyor.

Gömülü sistemler genel olarak çok geniş bir alan. Daha önce bu konuda yazılarım da var, onları inceleyebilirsiniz. Arduino ise bu geniş alanda kolayca oynanabilecek güzel bir “oyuncak”.  Burada oyuncak kelimesini küçümseme amacıyla değil birçok projeyi kolay ve eğlenceli şekilde gerçekleştirmenizi sağlayan bir araç olarak kullanıyorum. Dolayısıyla Arduino ile projeler yapan arkadaşlar bu işlerin ne kadar “kolay” ve “zahmetsiz ” olduğunu düşünmeye başlayabilirler.

 

Arduino’nun tam olarak ne olduğunu biraz daha açalım: Arduino kartları üzerinde Atmel firmasının üretmiş olduğu Atmega serisi 8 bit mikrodenetleyiciler bulunuyor. PIC mikrodenetleyicilerle uğraşmış olan arkadaşlara, bu mikrodenetleyicilerin de PIC’ler ile aynı kategoride olduğunu söyleyebilirim. Bunun dışında Arduino donanımlarında başka özel bir komponent bulunmuyor. Kartlara göre farklılık göstermekle beraber bir başka 8 bit mikrodenetleyici de Arduino ile bilgisayar arasındaki USB iletişimi için kullanılıyor.

Arduino’yu bu kadar popüler kılan özelliklerinden “kolay kulanımı” oluşturan en büyük etken geliştirme ortamı. Geliştirme ortamı Processing Programlama dili/ortamına dayanıyor. Arka planda Atmega mikrodenetleyicileri için kullanılan GNU GCC derleyicisi ve derlenen programların mikrodenetleyiciye yüklenmesinde kullanılan AVR-Dude yazılımı bulunuyor. Geliştirme ortamı kodları derleyip kolayca mikrodenetleyiciye yüklemenizi sağlıyor. Arduino kütüphaneleri birçok işlemi donanım seviyesine inmeden yani mikrodenetleyicinin kaydedicileri üzerinde işlemler yapmaya gerek olmadan yapmanızı sağlıyor.

Buraya kadar Arduino’nun güzel yönlerinden bahsettik. Şimdi de bazı acı gerçeklere dönelim:

  • Arduino kütüphaneleri kullanarak yaptığınız işlemler doğrudan mikrodenetleyicinin kaydedicileri üzerinden yapacağını işlemlere göre çok daha yavaş olacaktır.
  • Birçok işlem kütüphane fonksiyonları ile “gizlendiğinden” işlerin arkasında dönenleri tam olarak göremezsiniz.
  • Mühendislik seviyesinde işler yapacaksanız olayların ayrıntılarına da hakim olmalısınız.
  • Kesmeler mikrodenetleyici programlamada en önemli konulardan olmakla beraber Arduino dünyasında çok az anılırlar. Bu konuyu iyice öğrenmelisiniz.
  • Arduino’nun kolaylığı sayesinde kısa sürede proje geliştirip “tamam ben gömülü sistemci oldum” hissine kapılabilirsiniz. Bu aldatıcı bir histir. İşin ayrıntılarını araştırdığınızda bu alanın “deniz derya” olduğunu göreceksiniz.

Son dönemde Arduino konusunda artan ilgiye karşı kendimi bu gerçekleri de paylaşmak zorunda hissettim. Özellikle elektronik mühendisliğinde okuyan arkadaşlar Arduino’nun “güzelliği”ne karşı dikkatli olmalılar. Eğer okulunuzda assembly diliyle işlemci mimarisi gibi dersler görüyorsanız sakın ola “neden bize bunları öğretiyorlar, ne gerek var?” diye düşünmeyin. Assembly ile gördükleriniz size temel mimari bilgileri daha iyi öğrenmenizi sağlayacaktır. İleride assembly dilini doğrudan kullanmasanız da temel açısından bu çok önemlidir.

Gömülü sistemlere Arduino ile giriş yapmış olabilirsiniz. Daha geniş bilgi sahibi olmak için lütfen aşağıdaki yazılarımı da okuyun. Beğendiğiniz yazılarımı da daha çok insana ulaşabilmesi için lütfen sosyal medya hesaplarınız üzerinden paylaşın.

Arduino Hakkında görüşlerimi paylaştığım videom:

1 ve 0’lardan Arduino’ya: Buraya nasıl geldik?
Gömülü yazılımlarda Assembly ve C dilleri, Sürücüler ve Kütüphaneler
Donanım soyutlama katmanı nedir?

58 thoughts on “(Mühendislik öğrencileri) Neden (sadece) Arduino kullanmamalısınız?

  1. Hocam dedikleriniz çok doğru, daha önce pic ile uğraştım ve şimdi sayenizde arduino’ya başladım ama picle günlerce uğraştığım o devreleri arduino ile bir günde yapabildim. Tmm bu güzel bi özellik ama tekrar dediğiniz gibi bu bizi(mühendislik Öğrencilerini) rehavete düşürmemeli.

  2. Ben elektronik okumuyorum.Elektrik Mühendisliği(Y.T.Ü) öğrencisiyim. Arduino ile edineceğim gömülü sistem bilgisi benim için de mi yetersiz kalır?

  3. Her mühendis projelerinde sıfırdan tekeri icad ederek başlasaydı bugün
    Bugatti Veyron olmazdı.
    Mühendis zeki adamdır işleri kolaylaştırmak için vardır. Arduino
    platforumunun sonuna kadar destekçisiyim. Şu an GNU GCC ve AVR DUDE bir
    IDE altında birleşmiş ve sıkıntısız çalışıyorsa bundan on sene sonra
    emin olun şu an piyasayı sallayan herkesin cebinde taşıdığı, evinde
    izlediği, işe giderken yolunu bulduğu bu cihazların beyni olan ARM’ın da
    Arduino IDE gibi basitleştirilip kolay kullanım için hazırlanmış,
    mühendisin angarya ile değil asıl yapması gereken iş olan algoritmayla
    uğraşmasını sağlayacak IDEler çıkacak. Mühendisler sadece teknolojiyi
    geliştirmiyorlar kendi işlerini de kolaylaştıryorlar. Yoksa bugün hala
    assembly ile uğraşırdınız. Özetle; çalışmalarınızı takdir ediyorken ve herkes için çıkardığınız kitabınızın önsözündeki teknolojik gelişimimiz için söylediğiniz her kelimeye katılıyorken şu an arduinonun üzerine koca bir çarpı atıp bu konuyu bu başlık altında bu şekilde dile getirmenizden şahsen hiç hoşlanmadım.

    • Değerli yorumunuza kesinlikle katılıyorum, bir amatör olarak ustalardan aldığım yorumlar da bu yönde. Coşkun Bey’in bu yazısına çok şaşırdım, ego ile dolu bir yazı olmuş kişisel fikrimce. Zaten Coşkun Bey’in kitabı giriş seviyesinde, kimse tam “Gömülü Sistemci” oldum demiyor. Yabancılar tarafından yazılmış çok daha kapsamlı kaynaklar var.

      • Yazımı ego dolu bulmanıza şaşırdım doğrusu. Kitabımın giriş seviyesinde olduğu doğru, zaten Arduino hakkında olan ve sıfırdan anlatan bir kitap, kesinlikte “gömülü sistemlere giriş” kitabı değil zaten. Herkes istediği aracı kullanmakta özgür, sadece öğrenci arkadaşları bazı konularda uyarmak istedim.

        • Zannediyorum size gelen birkaç “ben çözdüm bu olayı artık gömülü sistemciyim” tadında mail sinirlendirmiş. Bir yönde haklısınız, Türkiye’de bu tatta çok insan var. Bazen sinir bozucu olabiliyor. Lakin bir mühendis adayı olarak bizlerin transistörü, ardından entegreyi icat etmesi -siz de hak verirsiniz ki- saçma olacaktır. Mühendislik düzeyinde çalışmaların ne kadar detaylı olduğunu zaten gömülü sistem ile ilişkili derslerde görüyoruz. Bilişim o kadar deniz derya ki, kimsenin -ama kimsenin- tamam ben oldum diyemeyeceğini de herkes biliyor. Arduino kullanıp “ben gömülü sistemciyim” diyen birisini , WordPress veya CogeIgniter kullanıp “tamam ben Web geliştiricisi oldum”, veya PhoneGap kullanıp “tamam ben Androidci oldum” diyen birisine benzetiyorum. Ayrıca sizin, işin temelini, en azından teorik olarak bilmemiz gerektiği savınıza da katılıyoruz. Şahsen hoşuma gitmeyen nokta, dr.mod’un da dediği gibi alet üzerine bir çarpı atıp mühendisler bunu kullanamaz yazmanız, kitap önsözündeki teşvik edici sözlerinize rağmen. Neden gömülü sistemleri deli gibi çalışıp, Arduino’da da proje manyağı olmayalım ki? — Madem ki bu görüştesiniz, kitap önüne Mühendislik Öğrencileri Almasın! diye uyarı koysaydınız. Tahmin ediyorum ki, en çok alanlar da mühendislik öğrencileridir.

          • Başlığın biraz sert olduğuna katılıyorum ve bunu da bilerek yaptım. Ama mühendislik öğrencilerine sadece bir uyarı yapmak amacıyla bunu yaptım. Arduino güzel bir araç elbette kullanılmalı ama temel bilgilerin yerine geçmemeli benim demek istediğim. Bu biraz JAVA ve C dili arasındaki konuya benziyor. Yurtdışında da en çok okulda JAVA öğrenerek mezun olan bilgisayar bilimleri / mühendisliği bölümü öğrencilierinin temel kavramları çok bilmemelerinden yakınılıyor. Kısacası isteyen istediği şeyi kullanmakta özgür, benim yaptığım bazı gerçekleri biraz “sert bir biçimde” söylemekten ibaret…

            Umarım iş hayatınızda gömülü sistemler üzerine çalışma şansı bulursunuz. O zaman söylediklerim daha rahat anlaşılacaktır…

            Hem Arduino kitabı yazarı olup hem de böyle bir yazı yazmam çelişki olarak görülmesin. Arduino bu işleri öğrenmek için güzel bir araç buna hala katılıyorum.

    • Ben coşkun bey’e katılıyorum. Basit bir örnek : Derleyici kütüphanelerinde hazır kodlarla yapılan işlemler saniyelerle ifade edilirken, assembly yle yazılan kendi kodlarınızla milisaniye ve hatta mikrosaniyelerde gerçekleştirebilir, mikroişlemciye tamamen hakim olabilir, eğer varsa hataların hangi noktada oluştuğunu adım adım görebilir ve kusursuz bir program yapma imkanına sahip olursunuz. Yani assembly yle her şey size özgün olur. Malum, zaman hız zamanı.

    • dr.mod kardeşim düşüncene saygı duyuyorum bazı söylemlerine katılıyorum ancak atladığın çok büyük bir ayrıntı var. “mühendisin angarya ile değil asıl yapması gereken iş olan algoritmayla uğraşmasını sağlayacak IDEler çıkacak” demişsin peki sana soruyorum bu IDE’leri kim yapçak yine biz mühendisler.Ve ayrıca şunada değinmek istiyorum hobi olarak yapılcaksa arduino yu tabikide dediğin gibi angarya işlere girmeden kullanabilirsin ancak sen bu işte ilerlemek istiyorsan bu işin angaryasını girmek zorundasın arka planda neler dönüyor bunların hepsini bilmelisin.Yine senin verdiğin bugatti örneğiyle bitircem, sen mühendis olarak motorun iç yapısını nasıl yapıldığını piston hareketlerinin dinamik yapısı aktarım organların ne işe yaradığını bilmediğin sürece bugatti veyron değil 2 tekerli motor bile yapamazsın.Sen arduino kullanarak şu anda bugatti veyronunu yapmış olmuyorsun yapılmış bir bugattiyi modifiye ediyorsun,ne zaman ki bu işin derinine inersin arka planda neler olup bittiğini bilirsin o zaman işte bugattini sen yapmış olursun.

  4. bence arduino kullanmalılar ama ilk adım olarak değil. mikrodenetleyici programlamaya başlamada en doğru yol bence de assembly dili. ama sonrasında arduino kullanılabilir diye düşünüyorum…

  5. katılmıyorum bu yazıya. O zaman Fortran öğrenelim. İlkokulda bile öğrenciler artık okumayı fişlerle değil harf harf öğreniyorlar…

      • fişle öğrenim eski sistem harf harf öğrenim yeni sistem. yeni sisteme geçmişler diyor yani biz niye geçmeyelim diyor 🙂 arkadaş .Ayrıca hocam haklı bir işi yapıyosan temelini öğrenmelisin .Başkalarının bilgilerinin üzerine inşa edilen işler eğer temelde nasıl oldugu araştırılmıyorsa başkalarına bağımlılıgı getirir. Onlar durusa sizde durusunuz. Bu yazdıklarım gerçek mühendislere hitaben dir. Arduinoya karşı değilim fakat onu elinize aldıgınızda onun size değil sizin ona hükmedeceğinizi hissetmeniz ona gıptayla değilde oyuncak bu gözüyle bakabilmenizin özgüveninin verdiği tad hiç birşeyde yoktur. “neden biz bir arduino yapamıyoruz”. Bu sorunun cevabı en doğru sonuca götürecektir sanıyorum…

        • Aynen bizim nesil fişle öğrendi 🙂 güzel örnek. Bence yazı yerinde ama başlık biraz sert, ondan dolayı kutuplaştırma oluşturuyor. Şair burada zaten yine kullanın demiş, sadece gaza gelmeyin ben gömülü sistem programcısı oldum diye de eklemiş. Basit bir sıcaklık sensörü okumak misal gerçekten tek seferde sindireceğiniz kadar kod ile yapılabiliyor. Teknik insanları hızlandıracak her şey bence de iyidir. Detaya girmek isteyen ya da girmek zorunda kalan zaten girecektir. Zaman çok kıymetli.

    • Lan salak mısın arkadaş sen? Sen mühendis bile değilsin belli ki. Ne alaka fortran. Eğer işlerini fortranla halletmen gerekiyosa fortran öğrenirsin. Yok başka dil gerekiyosa onu öğrenirsin. Bugün fortrandan tutta cobol’a kadar bir çok dil hala kullanılıyor zaten.

  6. Gömülü sistem tasarımı sadece kod yazmaktan oluşmuyor. Elektronik mühendisi demek hazıra konan demek değildir. Elektronik mühendisliği tasarımı gerektirir. Ülkemizin teknoloji üretememesinin de temel sebebi budur zaten. İşin mantığını anlamayız, hesap yapmayız, okulda gördüğümüz derslerin gereksiz olduğunu düşünürüz. Silikon vadisine özeniriz ama aslında orada çalışanların da okulda bizimle neredeyse aynı olan gereksiz dediğimiz dersleri aldığını göz ardı ederiz. Neden onlar farklı? Onlar dersi geçmek istemiyor, onlar dersi öğreniyor. Onlar mühendislik nedir bunu biliyor. Mühendislik üretmektir, tasarlamaktır, probleme çözüm bulmak, hesaplama yapmaktır. Bu yazıyı eleştirenlerin zoruna giden kısım da bu olmuştur eminim. Çünkü onlar bu yazıda gerçekten mühendislik yapmadıklarını farkettiler. Coşkun Bey size kullanmayın demiyor, kullansanız da dikkatli olun diyor. Siz arduino’nun yapısını, işleyişi bilmezseniz sadece kullanırsanız yabancıların ürettiklerini kullanmaya devam edersiniz. Onu tasarlayanlardan olmamaya devam edersiniz. Bu sizin seçiminiz, küçük mühendis olmayı seçebilirsiniz bu beni ilgilendirmez. Coşkun Beyin yazısı gerçek mühendis olmak isteyenlere yönelik. Python’u yazan adam inanın C’yi herkesten iyi biliyordur ve bunu bildiği için zaten Python’u üretmiştir. Bunlar üretime hız kazandırmak için yapılan yeniliklerdir. Bu yeniliği kullanmak güzel ama üretmek lazım. Assembly’ye gereksiz diyen arkadaşlar krtik projelerde bulunmamışlar heralde. Assemly işlemci mimarisine ne kadar yakındır biliyorsunuzdur umarım, onunla yapabildiklerinizi C ya da başka bir dil ile yapamazsınız. C’nin yaptığı da zaten kodu assembly ile yazılan şekle çevirmektir ama bunu en yüksek performansta yapamaz. Elektronik mühendisliği nedir unutmayın. Siz basit mühendis olmaya devam etmek isteyebilirsiniz ama bu yazıyı böyle acımasızca eleştirerek gerçekten mühendis olmak isteyen arkadaşların kafasını bulandırmamalısınız. Türkiye’de acaba neden mühendisler işsiz? Mühendisliğin gerçek anlamda ne olduğunu bilmediğimiz için olabilir mi? Herkese iyi çalışmalar.

    • Sanırım sinirlilikle biraz sert bir yazı yazmışım. Burdaki yorum yapanları kastetmek istememiştim yazımda, genel olarak bir sorunu dile getirmiştim ama şimdi tekrar okuyunca sanki yorum yapanları kastediyormuşum gibi bir anlama gelmiş. Özür dilerim herkesten, böyle bir amacım yoktu.

      • Melih hocam gayet guzel açıklamışsin sert olmasida ayrica guzel olmus insanlara artik tatli dille bi sey anlatilmiyo gerci sert te olsa bi sey anlamakta gucluk çekiyorlar. Her konuda yazinda hak verdim. Bende mekatronik muh. Ogrencisiyim ve bi cok yerde assembly mikro denetliyicileri ve mikroislemcileri neredeyse tam performans ta kullandigini soyluyolar. Alt seviye bi dil olmasi beraberinde zorluguda getiriyor evet. Bunu ogrenmek de gerekiyor. Belki ilerde bizim muhendislerimiz prosesleri yuksek performansta kullanan yuksek seviyeli bir dil gelistirme cabasina girerlerde dunyada yepyeni bi atılım yapip assembly tarihe gomeriz umarim 😉 icimde boyle bi inanc var ama. Temelleri ve mimariyi bilmek ne yapacagini bilmektir. hazir fonksoyonlarla sadece ureticjlerin sana sundugu sinirlarda yasarsin Ve uretirsin. Muhendislik sınırları zorlamak limitleri asmaktir Kanaatimce.

  7. Herkesin bu başlığa giydirmesini hoş karşılamadım. Bence oldukça mantıklı bir yaklaşımda bulunulmuş. Ben mühendis değilim ve konu hakkında bilgim var. Üzerine düşüldüğü zaman mühendis olmayan birinin bile güzel işler yapabilmesi mümkün. Burada bahsedilen işin temelinin öğrenilmesi bana kalırsa. Günümüzde de herkes bilgisayar teknik servis ancak bir DDR Ram’in çalışma mantığını bilmiyor. İş alaylı ve eğitimli konusuna dönüşüyor. Ben şahsen mühendis olup , bir konu hakkında bilgi sahibi olamazsan ve bir gün o konu hakkında bana soru gelse , cevaplayamadığım için kendimi çok kötü hissederdim. Arduino ile iş bitiriyor olabilir herkes ancak her yerde Arduino yemeyebilir. Yazıdan kendimce çıkarttığım sonuç bu. Eline sağlık.

  8. Pingback: Can sıkıntısı | COŞKUN TAŞDEMİR

  9. Bugatti üretebilmek için Arduino nun nasıl üretildiğinide bilmen lazım. Eğer her mühendis sizin gibi zeki olup Assembly öğrenmezse Bugatti yi onlar Hacı Muratıda biz üretebiliriz ancak. Bakkal memet amca hesabını makineyle yapabilir. Ama sen makine var diye matematik bilmeyeceksen diyeceğim yok. Yazarın yazdıklarınında ne anlama geldiğini anlamak için Mühendis olmaya bile gerek yok ama işte nasıl olacaksa veya olduysa..

  10. Bence yazı da çarpı da güzel olmuş. Şu sebepten ! Arduino ile çok şey öğrenebilirsiniz ama mevzunun kendisini öğrenemezsiniz. Bu tür ürünler üzerinde dünya çapında bir pazar oluşmaya başladı. Bu ürünler yalnız donanımsal değil yazılım olarak ta pazara sürülmektedir. Bunda amaç bu işin ilmini tam öğrenememiş daha büyük orandaki dilimi çekebilmek. Daha ucuz bir değerle daha fazla kitleye ulaşmak ve yeni bir pazar oluşturmak. Peki bu bir tuzak mı? İşte bu size bağlı. Bu konuyu mühendislik gibi bir düzeyde kariyerinizin kendisi olarak görecekseniz , harcanan insan olursunuz; fakat ön bilgi , ilk deneysel çalışmalar için ön çalışma veya konudan haberdar olma gibi yaklaşırsanız o zaman başka. Bir yerden başlamak için Arduino bence de güzel , faydalıda ; Ama bir yere kadar ! Zaten Böyle cazip yönleri olmasa adamlar piyasaya sürer mi veya destekler mi ? Kendi mikrodenetleyicilerinin tanıtımı ve reklamını da yapmış oluyorlar, tabii buda onların hakkı ve doğal bir şey . Ben Elektronik teknikerim Mühendis değilim; ama girişimcilik olsun , mesleğim olsun artık yaşım ve tecrübem gereği belirli bir seviyede olduğum için sizlere yazıyorum. Coşkun beyin yazısı da çarpısı da bence konuya olan samimiyetinden ve iyi niyetinden olmuş olarak yorumluyorum. Yanlış anlaşılmasın. Herkese iyi günler.

  11. Kesinlikle katılıyorum yazınıza. Elektronik ve Haberleşme Mühendisliği 3. sınıf öğrencisiyim. 2 senedir PIC ile uğraşıyorum, projeler yapıyorum. İnatla Arduino’ya geçmedim fakat 1 ay önce yurtdışında çok uygun fiyata denk geldi ve bulunsun diye aldım. Kullanmaya başlayınca ilk düüşüncem “PIC ile işin angaryasını yapmışım, 3 4 saat uğraştığım kodu Arduino ile 10 dakikada yazdım” demek oldu. Fakat bu konuyu daha esaslı düşünmeye kalktığımda, dediğiniz gibi yazılımda bir çok olayın arka planda döndüğünü ve çok basitleştirilmiş kütüphaneler ile olayın arka yüzünü bilmeden bir yerde tıkanacağımı gördüm. Transistörün ne olduğunu, çalışma mantığını bilmeden entegre ile motor sürmek ne kadar ezberciyse, mikrodenetleyici mimarisini bilmeden, esas kodları bilmeden Arduino kullanmak da odur. Ben yine Arduino ile kendimi geliştirebildiğim kadar geliştireceğim, zamandan kazanmak istediğim projelerde elbette kullanacağım, fakat PIC miklrodenetleyicisini de yalayıp yutarak bilgimi ve tecrübemi had safhada tutacağım. Yazınız için teşekkürler.

    İyi çalışmalar.

  12. Yazınıza tamamen katılıyorum.Özellikle dr.mod’un yorumuna kesinlikle katılmıyorum.Kendisi mühendislik öğrencisi olmasına rağmen bilimin nasıl işlediğini anlamamış.Ülkemizde maalesef teknisyenlik ile mühendislik arasındaki ayrım yapılamıyor.Bilimin işleyişi budur; en derine inersiniz, oradaki işleyişi öğrenirsiniz ve oradan yola çıkarak sistemler geliştirirsiniz ki her basamakta çıkabilecek hataları ayıklamanız ve daha sonra sisteminizi geliştirmeniz kolay olsun. Bugatti örneği güzel olmuş.Dünyanın en iyi arabası olmasına karşın oda bir arabadır ve metod aynıdır,piston motor şanzıman vs…Mühendislik eğitiminde temel bilgiler öğretilir.Adı üzerinde temel bilgi.Ar-ge dediğimiz olay ise bu temelin üstüne kurulmuştur.Mühendislik öğrencilerine ilk önce bilim metodolojisi dersi verilmesi gerekir sanırım.Makine mühendisliği öğrencisi olmama karşın liseden beri pic ile ilgileniyorum.Uzun süredir arduino almayı düşünüyordum fakat bu işin temelinde(mühendisliğinde) kalmak daha keyifli sanırım.Pic e devam.İyi çalışmalar.

  13. ben mechatronic mühendiliğinde okumakta olan bir öğrenciyim – bu eylül ayında 3.sınıf oluyorum. C++ dersini aldım (cs 201) geçen dönem ;ama bir mechatronic çi olarak robotlarla uğraşacağım için ( tasarlayacağım ve de code layacağım için ) kendimi bu konuda geliştirmek istiyorum. Ünivertsite de kimse gelip de size bu işin püf noktası nedir -nasıl yapılır gibi ayrıntıları anlatmıyor ya da göstermiyor yeteri kadar açıkçası. Ben programlama(code lama) üstüme master ımı yapacağım ;çünkü code/program lama bir robotun ruhu ve en önemli kısmı – o olmadan hiçbir şey çalışmaz işin kısacası.

    3.sınıf başladığımda aşağıda bahsettiğim gibi dersleri almaya başlayacağım :
    “Robot bilimine giriş – engel algılayıcılar -sensör ler gibi derslerim olacak,yani daha bir ayrıntısına girmeye başlayacağım ; bu tür aletlerin nasıl programlandığını/ code landığını vs. ”

    3.sınıfa geçtiğimizde mechatronic çiler olarak – bizlere ,1.dönemden başlayarak ve de 2. dönemin sonuna kadar verilen bir mühdet ile , kendi başımıza ya da en fazla 2 tane daha arkadaş alarak robot projeleri yaptırıryorlar.

    Bu yüzden kendimi geliştirmek için ne yapmalıyım ? Coşkum Taşdemir hocamızın arduino kitabını aldım ve de çok hoşuma gitti ( bazı yerlerde takılsam da ). Kısaca söylemek istediğim bir karta sensör ler bağladığımızda ( ultra sonic olsun -engel algılayıcı olsun – mesafe sensörü vs. olsun ) üstüne kamera taktığımızda ; ya da wireless ile kontrol edebilme gibi şeyleri bilgisayar üstünde nasıl code lanacağını / programlanacağını iyi bir şekilde öğretecebilecek / gösterebilecek / ya da eğitici/eğitim amaçlı güzel kaynaklar – kitaplar önerebilecek birisi varsa çok memnun olurum. Yaz tatilindeyken – okulda dersleri almadan ve de robot projesine başlamadan kendimi geliştirmek istiyorum. Lütfen bana bu konuda en kısa sürede yardımcı olursanız çok sevinirim Coşkun Taşdemir hocam ya da başka bir değerli bu konularda bilgisi olan mühendis bir arkadaşımız.

    İstanbul da yaşamaktayım. Bana a_mekaci@hotmail.com dan ya da skype nickname inizi verek ulaşabilirsiniz.

    ( Bana bu programlama/code lama konusunda yardımcı olabilecek birileri var mı ? )

    • Robotun ruhu kod degildir. Her olayin ozu kontrol algoritmasidir. Mikroislemci sadece bir aractir. Algoritmani yazarsin, o da uygular. Onemli olan koddaki algoritmadir. Ayni islemci ile kotu ve teorisi yetersiz bir muhendis basir bir urun cikarirken, master doktora yapip uzmanlasmis derinlesmis bir muhendis dunya ayarinda urun yapabilir. Kisaca onemli olan algoritma.

      Mesela motor suruculeri dusun. Cahil biri gelir V/f kontrol yapabilir ancak. Biraz daha iyisi gelir vektor kontrol yapar, daha da iyisi gelir sensorless kontrol yapar. Olay teorilerin yazilima dokulmesi, islemcinin bir arac olarak kullanilmasi.

      Yani cizgi okuyan robot, termometre, saat, led tabela v.s bunlar DIY denilen hobi isleri, muhendis isi degil.

  14. Şimdi burada Çoşkun Taşdemir’in yazısına laf atan arkadaşlara işin içinden biri olarak bazı hayati gerçekleri hatırlatmam gerekiyor.

    Mezun olduktan sonra bir işe “Gömülü sistem geliştirici.” olarak başvurduğunuzda hiç bir şirket sizin elinize bir Arduino vb. bir araç verip “Al bunda uygulama yaz.” demeyecek.
    İşin sırrı “Gömülü Sistem.” deki “Sistem” de yatıyor.

    Elektronik mezunu iseniz sizden devre kartını, motor sürücü devrelerini, sensörlerini, güç katmanını vs. tasarlamanız istenecek.
    Bilgisayar mezunu olanlar “Ben kodu yazarım” diyecektir. O zaman sizin önünüze Elektronik mühendisi arkadaşın tasarladığı kart gelecek ve size “2KB Program Belleğin, 128Byte RAM ‘ın var. Kodunu buna göre yaz.” denilecek. Bu durumda ne yapacaksınız? “Ben Arduino kullanabiliyorum sadece.” mi diyeceksiniz?

    Arduino çok güzel bir cihaz. Ve Prototipleme için de biçilmiş kaftan. Ama bakın ne diyor “Prototip”. Yani gerçek ürün değil.

    Bu gün pek çok cihazda Arduino da kullanılan ATmega328 işlemci kullanılıyor. Ama hiç birinde bu işlemciyi bir Arduino bordu üzerinde göremezsiniz.

    Kısacası gerçek hayatta ellerinde Arduino ile sizleri bekleyen birileri yok. Ve de hiç var olmayacaklar. Piyasa şartları sizlere uymadığında mecburen siz o şartlara uymak zorunda kalacaksınız. Ve de bunun önlemini nekadar erken alırsanız sizin için o kadar iyi olacaktır.

  15. Pingback: Ucuz Etin Yahnisi | Mikrodevre.com

  16. Haklısınız. Ülkemizde hazırcılık her alanda var. Ardunio gibi bir programı üretmek için çok temel bilgileri bilmek gerekiyor. Önemli olan sadece o programla bir şey yapmak değil. O programları üretecek kapasitede gelişmek. Bizim eğitimcilerimiz dahil hiç kimsede bu düşünce yok. Bu yüzden hep dışarının ürettiklerini kullanıyoruz. Hazırı var, yapalım bitsin. Oysa bence önemli olan daha ileri olmak. Tamam programı kullanmalıyız ama öncesini bilip daha iyi program üretmeyi de düşünmeliyiz.Yoksa onu kullan bunu kullanma tartışması gereksiz.

  17. Katilmiyorum yaziniza… Arduino bir gelistirme kartidir. Diy icin uretilmis fakat giris seviyesi kullanicilara hitab eder. Mesala giris seviyesi bilgisi olan biri nasil bir pic ile ugrasabilr? Ayni pic gelistirme karti gibidir hani su ekranli falan varya buda atmega sisteminin baslangic kartidir ayrica arduino da okadar kolay gorunebilir ama oyle projeler var ki arduinoda bile zorlaniyorsunuz. Ayrica tum ogrenci milleti o kadar zengin degil. Her projede bir islemci bir ekrani kullanamiyor. Arduino o acidan para dostu bir tane aliyorsunuz ekranidir falan lehime gerek kalmadan cok sefer breadboardda islem yapabiliyorsunuz. Ayrica library ler acik kaynaklidir. Duzenleyebilirsiniz. Sadece kod parcasidir . compile edilirken parcalanip yazilir. Amaci projelerde kalabalikligin olmamasdir

  18. Öncelikle Coşkun Beye yazdığı bu kitap ve bilgilendirmeler için teşekkür ediyorum. Bende Coşkun Bey’e katılıyorum. Evet arduino çok kullanışlı ve piyasada işlerin %50 sini yapabilecek seviyede kapasiteye sahip. Ama Piyasadaki tüm işleri yapmak istiyor yada en azından yorum yapabilmek istiyorsanız Diğerleri hakkında da bilgi sahibi olmalısınız. Bu şuna benziyor bisiklet kullanmak ve öncesinde yardımcı tekerlekler gibi. Sonra onları sökersen daha hızlı gidebilirsin…

  19. Çok gereksiz bir yazı olmuş. Herkes her şeyi bilmek zorunda değil. Buna ne vakit yeter ne de ömür. Senin ihtiyaçlarını ne karşılıyorsa onu kullanırsın. Gpu/Cpu mimarisini kaç kişi yazıyor dünyada? Zaten o mühendislerinde en kötü doktorası var, akademisyen. Bir şeyler ezberleyerek bir yere varılmaz. Kullanmadığın bir şeyi de unutursun. Eğer akademisyen olunacaksa dedikleriniz doğru ama mühendisliğin pratiklik gerektiren bir meslek olduğunu düşünürsek talihsiz bir yazı olmuş. Arduino’nun avantajları-dezavantajları deseydiniz daha yerinde olurdu. En azından gereksiz tartışmaları önlemiş olurdunuz.

    Öğrencilerin sıkıntısı assembly öğretilmesi değil. Derslerin pratikten ziyade teoriye dayalı olması ve akademisyen olma seviyesinde öğretilmeye çalışılması. Zaten o konuda çalışacak öğrenci gereğini yapar.

    • Bence sikinti derslerde uygulamanin olmamasi.

      Mesele digital signal processing dersi vardi bizde. Onu alirken dogru durust anlamamistim. Birkac yil gecti, gercek muhendislik problemleriyle ugrasinca kafaya oturdu. Ayni sey probability & random processes dersi icin de gecerli.

      Yani hocalarin dersi matematik dersi gibi degil de muhendislik problemlerini cozmek icin matematiksel yontemler ogreniyoruz havasinda islemeli.

      Ancak hocalar bile uzmanlik alaninin uygulamasina cok hakim olamayabilir. Ozellikle iyi okullar disinda…

  20. Pingback: Arduino Marduino | COŞKUN TAŞDEMİR

  21. Herkes işe elektronik kısmından ve programlama kısmından bakmış.

    Yazarın örneklemesini bir de şöyle yorumlayın.

    Geçmişte DOS/Linux/IbmOS/U&X gibi komut satırından işletim sistemine hükmedemediğinizi ve bilgisayarınız ile ilk defa Windows 7 ile birlikte en kapsamlı en güncel en pahalı ve en popüler antivirüs yüklenmiş şekilde karşılaştığınızı varsayıyorum.

    Bilgisayarınıza, güncel antivirüs programlarının tanımadığı veya haberdar bile olmadığı bir virüs bulaştı. Ve artık bilgisayarınız normal olarak çalışmıyor. O zaman ne yapıyorsunuz?

    Seçenekler:
    1. Format atıp her şeyi yeniden yüklüyorsunuz. (Zaman Kaybı, Veri Kaybı)
    2. Geçmiş dönem yedeğine dönüyorsunuz (Zaman Kaybı, Veri Kaybı)
    3. Komut satırından anlayan ve bu virüse karşı çözüm üreten birini buluyorsunuz. Sizin adınıza bilgisayarınızı onarıyor. (Zaman, Veri, Para, Kariyer Kaybı)

    Mühendislik o komut satırı ile işletim sistemine hükmedebilmektir. Eğer arızaları kendiniz gideremezseniz mühendis olamamışsınız demektir.

    Bunu C# ile Telerik veya Dev Express komponentleri yazılım geliştirirken de yaşarsınız. Bir yazılım geliştirirsiniz ve müşterinize bu yazılımı satarsınız. Sonra bir gün.. Müşteri sizden Dev Express gridi üzerinde mevcut olmayan sıradışı bir şey istedi.

    Ya oturup grid yazarsınız, veya başka bir component bulmaya çalışırsınız veya, yapamazsınız.

    Küçücük bir sorun, DAĞ gibi büyük bir problem olabilir.

    Arduino kullanmayın demek gaddarlık olabilir. Ama bu görecelidir. Projelerinizde herhangi giderilemez bir sorun yaşadığınızda yazarı da anlarsınız 🙂

    • Hatta milisaniye’den kısa bir zaman dilimi içerisinde sonuç almanız gereken bir eksen programlamışsınızdır. O da ne. Arduino saniyeden daha önce sonuç dönderemiyor.

      Oturup Ardunio benzeri bir devre yapmanız gerekirse, o zaman da yazarı ve yazdıklarını daha iyi anlarsınız.

  22. İki motor, iki led sürerek mühendis olduğunuzu düşünüyorsanız o zaman bende mühendisim? Türkiye de ki mühendislerin dünya piyasasında yerinin olduğunu düşünmüyorum. Bırakın Dünya piyasasını daha Türkiye deki üniversitelerin mühendislik bölümünden mezun olan öğrencileri mühendis kabul etmeyen kurumlar var, hangi kurumdan bahsettiğimi biliyorsunuz. Birincisi yazılım mühendisliği ile yazılım yazmak bambaşka şeylerdir. Tam olmasa da Gitar üreten bir ustanın gitar çalmayı bilmemesine benzetilebilir. Gitarı üreten usta gitarın tüm notalarını bilir hatta öyle iyi bilir ki yıllarca gitar çalan bir insandan daha iyi ton yakalar ama o gitarı yine de çalamaz. Ben okumadım ama gitar çalmayı biliyorum, peki bu gitarı kim üretiyor? Türkiye deki mühendisler mi? Siz mesafe ölçer yapmaya devam edin. Bakalım nereye varacaksınız?

  23. Ne mühendis nede teknisyenim ,Deneyimli bir amatörüm.İlk once asm kendi kendime öğrendim,sonra kursa gittim ,kurs ta işin kolayına kaçıp basic tarzı bişeyler öğrettiler.Daha sonar C öğrendim.Yakın zamanda Arduino kitabını okudum ,kafama oldukça yattı.
    Şu an her istediğimi istediğim şekilde yapabiliyorum ,hangi dil ile yazdığım çok farketmiyor.Bit ile işlem yapılabilen herhangi bir dil ile mikrodenetleyici datasheet ini kullanarak gerek basic,gerekC ve benzeri diller ile istediğiniz gibi çalışabilirsiniz.
    Ben Asm yi gerektiği zaman ,müdahalede bulunmak için kullanıyorum ,işin angaryasını üst seviye dil ile yapıyorum.
    Sonuç;ASM öğrenmemiş olsaydım üst seviye dil ile hiç bi s ….m yapamayacaktım.
    ASM ile başlayın,sonra diğerlerinide öğrenin ,üst seviye dili gerektiğinde asm gibi kullanıp işinizi çözebilirsiniz.Ama datasheet kullanmak da çok önemli.

  24. Merhabalar,
    Bilmediğim için soruyorum.
    Acaba arduino programlarken kolaya kaçmamak amacıyla arduino kütüphanelerini kullanmadan komut yazmak mümkün müdür?
    Eğer mümkünse arduino kendi programlayıcısı olan, mikro işlemcinin çalışması için gereken kristal vs. barındıran atmel çipinden başka bir şey değildir. Ve kullanılırken de kolaya kaçmaktan ziyade daha çok vakitten tasarruf sağlayan bir araca dönüşür.

    Devreyi çoğaltmak istersek aynı model atmel mikroişlemcisi + aynı kod + mikroişlemci için yardımcı elemanları(kristal, vs) bir araya getirmemiz yeterli olur bu durumda değil mi?

    Not: Hobi olarak elektronikle uğraşıyorum.
    Cevabınız için şimdiden teşekkürler.

  25. Tartışma çok eksende devam ediyor.. Ama ben farklı bir bakış açısı getirmek istiyorum.. Arduino konseptini eskiden şöyle bir bakmış olmama rağmen, yeni incelemeye başlıyorum.. Bu konsepti PLC programlama konsepti ile karşılaştırma eğilimindeyim..Ama daha amatör olarak tabiki.. Devre tasarımı ve üzerine kod yazmak ile PLC programlamak arasında bir yerde olduğunu düşünüyorum… Bu arduino konseptinin, klasik kart tasarımı konseptine değil, PLC cihazlara rakip olacağını düşünüyorum ilerde… öngürüm budur..

  26. burada çok tartışmalar dönmüş. ben şu kadarını söyleyeceğim. ardunio ile her projeninin altından kalkabileceğinizi sanıyorsanız, buyurun kullanın. maalesef arduino performans gerektiren projelerde çok yetersiz. ama yanlış anlaşılmasın. işinizi çözüyorsa tabiki kullanın.

  27. Pingback: Mekatronik Mühendisliği’nde Programlama | Mekatronik Mühendisliği

  28. işte matbaayada, arabayada kqrşıçıkan zihniyet bu zihniyet. o zaman windows ta kullanmayalım dos daha iyi dokunmatik ekranlı telefonlarda iyi degil herhalde ilk çıktığı zamansiemens s 700 lerede birileri böyle demiştir normal bu memlekette bogaz köbrüsüne nükleer santrale karşı çıkan zihniyet bu.

  29. Yazıyı yersiz görenlere hiçbirşey söylemeyin. Yarın birgün bir ortamda gerçek hayatta neye uğradıklarını şaşıracaklar. Hatta onlara etraftan şaşkın şakın bakılacak vakit gelip. Ben ne sistem mühendisiyim nede gömülü sistem. İşin aslı mühendis değilim. Her halde olmamda. BTP (yani programcılık mezunuyum) Ancak işim gereği değil hobi olarak arduino ile uğraşıyorum. Karbonmonoksit gazını ölçen ve uyarı veren hatta hassasiyetini potansiyometre ile ayarladığım küçük bir devere yapabiliyorum. Aynısı internette yoktur heralde. Olabilirde bakmadım. Arduino nun sadece kolaylık sağladığını dolayısı ile gömülü sistem mühendisliğine adım attıklarını hatta daha kötüsü mühendis olduklarını hep arduino ile yola devem etmenin pek sakıncası olmadığını düşünenlerin ve başlıktaki yazıyı kötüleyenlerin şu soruyu cevaplamaları gerekir. ” O halde sizin bu işi sadece hobi olarak yapan bizlerden ne farkınız var ? “

  30. Makine dili gereksiz bence. yani o makine leri üretecek adama lazım kullanıp ta başka bir ürün üretecek olan mühendisin hiç bi işine yaramaz.mesela office programı kullanan birinin office programı yazmasına gerek var mı. Olsaydı zulüm olurdu ayrıca bi tablo yapacak zamanı olmayacaktı.arduino ile koltasarımı veya başka başka şeyler yapan bir arkadaşın illa assembly diliyle bişeyler yazmasına gerek yok o kola avucunu aç demesi yeterli..zaman içerisinde arduino gelişecek tabiki böyle kötüleyerek treni kaçırtmayın lütfen..

    • Makina dili gereksiz değil. Kesinlikle değil. “Kullanıpta başka ürün üretecek olan mühendisin hiçbir işene yaramaz” demişsin. Teknip açıdan böyle bişey zaten mümkün değil. Ki böyle bi yorumda bulunan kişiye tutupta bunu açıklamaya çalışmak belkide anlamsız olur. Zira anlayabileceğinizi sanmıyorum. ” Ofis programı kullanan birisinin ofis programı yazmasına gerek var mı ? ” Demişsiniz son derece anlamsız ve alakasız bir örnek. Ancak yinede belirteyim. Ofis programı kullanan bir bir programcının ofis progrmamı yazabilmesi gerekir. Bunun dışında onu kullanan kişi bu işten sadece hizmet alan ve bu alanla ilgisi olmayan kişidir. Dolayısıyla konumuzla alakası yok ve bu açıdan bir örnek teşkil etmez bu kişi. Bir sonraki örneğinizden de bi anlam çıkaramadım açıkcası. Tabi siz bu yazıyı görürseniz benim zekama verirsiniz bunu kendi anlatımınızdan ziyade. Son olarak ise arduino nun kötülenmesi gibi bir durum söz konusu değil. Keşke sadece başlığı okuyup cevap yazmak yerine konuyuda okusaydınız. Ve yine ekliyim, mühendis o makinaları üretecek olan kişidir sadece kullanacak olan kişi değil. Sadece hazırlanmış boardları kullanarak mühendis olunacağını düşünmek akıllara zarar bir durum. Bukadar zahmet edip yazmamın nedeni ise kimseyle takışmak değil. Bu alana yönelmek isteyen genç arkadaşlarımız varsa onların doğruları görmesini sağlamak.

    • C’den Assembly diline cevrilmis halini debug yaparken kullanabilirisin. Cunku derleyici optimizer falan filan kullaniyor. Ayrica integer islem yapan islemcide floating point islem yaptirirsin 1000 cycle tutar sonra, RAM, Flash doluverir is yapamazsin. Onlari, C derleyicisinin urettigi assembly halinden incelersin.

  31. Ben mühendis değilim, elektronik den çok fazla anlamam. ama profesyonel bir yazılımcıyım. daha çok masaüstü uygulamaları geliştiriyorum. arduino için program yazarken kendimi evimde hissediyorum. bir step motor süreceğim diye lehim yapmam gerekmiyor. prototipimi oluşturuyorum sonra işi ehline veriyorum. onlar baskı devresini hazırlıyor. ama şu da bir gerçek. her ne kadar kullanmasam da asm bilmek şart. eğer mikro işlemci mimarisini bilmeseydim. bir tarafta joistik okuyup, diğer tarafta LCD sürerken aynı zamanda hata payı sıfır olan bir Steep motor süremezdim. led yakarken delay komutu ne kadar kullanışlı değil mi. ancak aynı anda eş zamanlı bir den fazla iş yaptırmanız gerektiğinde delay komutunu kullanamazsınız. bazı işlerin altında kalkabilmek için algoritmanın önemi çok büyük. diyelim ki 3 tane led var. birinci led 1 saniyede bir yansın ikinci len 2 saniyede bir yansın. üçüncü led 3 saniyede bir yansın şeklindeki bir problemi kaç kişi 10 dakika içinde çözebilir

  32. Pingback: Mekatronik Mühendisliği Programlama Rehberi – Fahri Yasin AYAS | Kişisel Blog

  33. iyi çalışmalar ben arduino da yeni sayılırım encoder okumayı yapıyorum. değerleri seri porta yazıyorum fakat seri porttaki değerleri matlabla çağırdığımda yani fscanf komutunu kullandığımda seri port meşgul diye uyarı veriyor bunu nasıl yapabilirim. portu kapatınca da değerler gidiyor.

    • Merhaba, MATLAB tarafı için birşey diyemiyorum maalesef, seri portun açılması ile ilgili bir problem olabilir. Daha önceden açık kaldığı için böyle bir hata verebiliyor genelde yazılımlar.

  34. arduino kesme kullanımında yeterli çalışma kabiliyetine sahip olmadığı nettir. özellikle ileri mikrodenetleyici çalışmalarında arduino yeterli değil olduğunu şu an uygulamalı bir şekilde görmekteyim. arduino ile her birisinin farklı görevleri olan 5 farklı butonun diğer kodlar çalışırken herhangi bir anda devreye girmesi sonrasında geri kaldığı yerden devam etmesi isteniyor. Ve bu uygulama atmega8 hafızasında gerçekleştirilecek. Bu uygulamayı arduino ile kodlayınca kesmelerde ve hafıza konusunda (7168 bayt alanın %100’ünü kullanınca sistem absürt çalışıyor, bu noktada%75 öneriliyor)sorun yaşıyorum. Atmel studio ile gcc c ile programlamak mı iyi olacaktır.

Bir Cevap Yazın

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