Blok Tabanlı Arduino Programlama ve Fazlası
Teknolojinin büyük bir hızla arttığı dünyamızda teknolojiden yoksun olarak var olmak ne yazık ki mümkün değil. Aksine teknoloji ve bilgisayardan uzak olarak gördüğümüz makine Mühendisliği, Endüstri Mühendisliği ve hatta sosyal bilim alanlarında yapılan çalışmaların pek çoğu bilgisayarsız anlamını yitirmek üzere.
Sosyal bilimlerde topladığınız verileri çeşitli bilgisayar programlarında analiz edip raporlamanız gerekiyor.
Endüstri 4.0’ın konuşulduğu dünyamızda bir makineyi tamir etmek için, problemini anlamak için pek çok elektronik bileşeni ayırmalı ve elektronik bileşenler ile olan etkileşimine hakim olmalıyız.
Makina tasarımı yaparken hangi sensörün kullanılacağını, hangi özellikleri ve sınırları olduğunu, hatta nasıl programlanabileceğini bilmemiz gerekiyor.
Metal saç kesen bir işletmeci CNC Lazer cihazında parçayı işleyebilmesi için AutoCAD ve benzeri bir tasarım programında ölçülere hakim olmalı, kullanabilmeli, sonrasında kullandığı makinenin anlayacağı dilde (GCODE) komutları çıkarabilmeli veya bunu yapan bir programa hakim olmalı.
Yapısal analiz yapan bir Analiz Mühendisi yapılara dinamik mesh atabilmek için Python veya C++ ile sccript yazarak programın problemi göre özelleştirmesi gerekiyor.
Aksi durumda ne yazık ki çocuklarımız kendi mesleklerinde tercih edilebilir seviyede olmayacaktır. Tüm dünyanın dijitalleştiği günümüzde çocuklarımızı oyunlardan uzak tutup gelecekte ne mesleğe sahip olmak isterlerse istesinler programlama ile tanıştırmamız gerektiğini düşünüyorum.
Özel sektörde bulunduğum 3 yıllık süreç ve Üniversitede Öğretim Görevlisi olarak geçirdiğim 5 yılın ardından ne yazık ki mevcut eğitim sistemimizin teknolojinin hızına yetişmesinin çok mümkün olmadığını düşünüyorum. Bu nedenle bu konuda bizlere çok büyük yükler düştüğünü söyleyebilirim.
2005 yılında İtalyan bir üniversite öğrenci grubunun açık mimari sistemlere olan yaklaşımlarının, yıllar sonra pek çok kişinin hayatına dokunacağı, hatta yetişmekte olan çocuklarımızın en yakın arkadaşı olacağı kimin aklına gelirdi ki ?
Arduino, İtalyanca da “güvenilir arkadaş, dost” anlamına gelmesi belki de bu günlerin hayallerinde yaşattıkları bir zaman dilimi olduklarının bir göstergesidir.
Arduino firması kart tasarımları ve yazılımları dahil sahip oldukları bir çok çalışmayı ücretsiz olarak sitesinde (www.arduino.cc) paylaşmakta. Bu durum arduino’nun gelişmesi ve yaygınlaşmasında en büyük etken gibi görülüyor. Yine de Arduino kartların özellikle elektronik ve programlama konusunda uzman olmayan benim gibi robotik meraklılarının en büyük problemi olan kullanım kolaylığı ve geniş kütüphane yapısı kendi içinde oldukça tutarlı.
Bizleri robotik ile buluşturdukları için Arduino Ekibine teşekkür etmek isterim.
Arduino, temel olarak kolay bir şekilde çevresiyle etkileşime girebilen sistemler tasarlayabileceğiniz açık kaynaklı bir geliştirme platformu, bir mikrodenetleyici üzerinde programlanabilir bir çipin vasıtası ile çevre bileşenlerden gelen veriler java tabanlı bir programlama dili ile kolayca yönetilebilmektedir.
Scratch programlama dilinin MEB müfredatına girdiğini düşündüğümüzde bundan sonraki adım olarak Arduino ve Robotik konularının MEB müfredatında yer alması çok uzun sürmeyecektir. Bu konuda verilen eğitimleri heyecanla takip ediyorum. Ancak eğitim materyali olarak Arduino İDE nin kullanılması ne yazık ki beni çok üzüyor.
Arduino İDE veya processing gibi biz mühendislik tabanlı kullanıcılar için bile kullanımı oldukça zor iken, SYNTAX (Yazım) hataları ile çocukları boğmanın nedenini anlayabilmiş değilim. Eğitimlere katılan öğretmenlerden öğrendiğim kadarı ile arduino İDE nin tercih edilme nedeni ileri ki uygulamalarda çalışmaların kısıtlanması ve yeterli olmaması en büyük nedenlerden olarak gösteriliyor. Ne yazık ki özellikle ortaokul seviyesi okullarda bu işleri üstlenen öğretmenlerin bile anlamakta zorlandığı ARDUİNO İDE dili, çocukların Arduino programlaması için çok yorucu ve zahmetli bir tercih. Bunun yerine Blok tabanlı programlamalara yönelinmesi ve ülkemize ait programlama materyallerinin geliştirilmesi gerekiyor.
Okulda Ders olarak SCRATCH programını gören çocuklarımızın robotik sistemlere alışması ve kendi başlarına çalışmalar yapabilmesi için en doğru seçeneğin Blok Tabanlı programlama dilleri, hatta Scratch ve Snap dillerinden türetilen programlar olduğunu düşünüyorum.
Arduino kartını 2 farklı şekilde kullanmamız mümkün;
1- Arduino kodunu blok tabanlı veya Metin tabanlı bir program vasıtası ile arduino kartına hazırladığımız kodu yükleyerek kendi başına çalışmasını sağlayabiliriz. Bu şekilde otonom robotlar, kendi başına çalışan otomasyon sistemleri ve benzeri uygulamalar yapılabilir. Nitekim pek çok çocuğun hayali olan robotlar bu şekilde çalışmaktadır. Bu tür uygulamalar için “Gömülü Yazılım” ifadesi de kullanılmakta. İleri seviye uygulamalar için vazgeçilmez bir yöntemdir.
Ancak zorlukları da yok değil,
yüklediğiniz kod arduino içerisinde çalışır ve hata tespiti zordur. Hata analizi işkenceye dönebilir.
Yazılan kodun çalışması gözlemlenemez, bütün olarka düşünmek gereklidir, bu da özellikle yeni başlayanlar için çok zordur.
Tüm sistem tek bir döngü şeklinde tasarlanır ve gruplara ayırarak işlem yapmak zorlaşır.
Bilgisayar ve Mobile cihaz bağlantısı yapmak için ek kodlara ihtiyaç duyulur.
ARDUİNO.İDE, mBlock, Ardublockly programları bu şekilde programlara örnek verilebilir.
2- Arduino kartını önceden yükleyeceğiniz “firmata.ino” dosyası vasıtası ile seriport üzerinden (kablolu veya kablosuz) olarak arduino kartınızın pinlerini eş zamanlı/Gerçek zamanlı olarak kontrol ederek yazdığınız kodu arduino programına yüklemeden arduino yu çalıştırabilirsiniz. Bu işlemin en büyük özelliği tüm kodların bilgisayar üzerinde yazılıyor olması ve kod üzerinde yapılan değişikliklerin karta yükleme gereksinimi olmadan hızlıca değiştirilerek sonuçlarının gözlemlenmesidir. Bu şekilde kullanıcı adım adım kodun çalışmasını takip edebilir ve oluşan hataları görmek kolay olur. Ayrıca kodun parçalı olarak oluşturulması ve aynı zamanda bilgisayarda görsel programlama yapabiliyor olmamız çok büyük bir avantajdır.
Kullanımı çok kolay ve basit olmasının yanında elbette bazı sıkıntıları var. Bu sıkıntıların başında kartın bir şekilde (Kablolu veya kablosuz) olarak bilgisayara bağlı olması geliyor. Her hangi bir şekilde bilgisayar ile bağlantısını kestiğinizde kart çalışmayacaktır. Bluetotth modülü ve Wifi modülleri kullanarak kolayca bilgisayardan bağımsız çalıştırabildiğinizi eklemek gerek.
Snap4Arduino, S4A ve ScratchX programlarını bu şekilde program yazmak için kullanabilirsiniz.
Bizler 3DRoboLab olarka Arduino programlamayı 3 seviyede inceliyoruz.
1- Elektronik bileşenlerle tanışma (Başlangıç Seviyesi)
Çocuklarımızın bilgisayar programlamayı ve bilgisayar ile Arduino gibi elektronik cihazların çalışmalarına ilişkin bilgi sahibi oldukları başlangıç seviyesi. Bu seviyede çocuklarımızın en çok ihtiyacı olan şey sanal ortamda yazdıkları kodları gerçek dünyada hızlı ve kolay bir şekilde gözlemlemeli, Elektronik parçaların özelliklerini tanıdıkları gibi devre elemanı olarak kullanarak sonuçlarını ön görebilmelidir. Uygulamalar basit, kolay montaj edilebilir olması ve anlık olarak değişimlerin algılanabilmeli.
Bu aşamada
LED yakıp söndürme, Sıralı led yakma, Polis sireni
PWM çıkışlar ve led uygulamaları
Buton çalışması ve Dijital veri girişi, Butonun farklı uygulama alanları, Pull-Up, Pull-Down bağlantı
Butonlar ile led uygulamaları, açma kapatma, tek buton farklı led kontrolü
Potansiyometre ile analog veri girişi nasıl çalışır değerlerin değişimi,
Sıcaklık okuma ve sıcaklık alarmı, Sıcaklık seviyesinin LED ile gösterimi
Buzzer ile ses işlemleri, nota ile müzik oluşturulması
Mesafe ölçümü ve park uygulaması
Servomotor ve DC motor çalışması
LCD kontrolü,
Nem sensörü veya Gyro sensörü
Radar uygulaması
Uzaktan kumandalı araba yapımı
Robot kol yapımı
Arduino ile ekranda oyun yapımı
Gibi pek çok uygulama sadece bilgisayar üzerinden yazılan Blok tabanlı programlar ile yapılabilmekte. Biz uygulamalarımızda Snap4Arduino programını tercih ediyoruz. Bununla birlikte kendi geliştirdiğimiz Türkçe Snap4Arduino Kütüphanelerini kullanıyoruz.
Neden S4A veya ScratchX değil ? derseniz S4A nın gelişmiş uygulamalarda yetersiz kaldığını düşünüyorum. Snap4Arduino Kütüphane geliştirme olanağına sahip ve kendi bloklarınızı yaratabileceğiniz bir ortam. Dilerseniz kendi dersleriniz için özel vloklar yaratabilir ve blok kullanımlarını bizim gibi basitleştirebilirsiniz.
ScratchX programı online çalışan bir platform olması nedeni ile özellikle ilk başlarda epey bir sorun yaşanabiliyor. Ayrıca tarayıcının bazı durumlarda hata vermesi ve tarayıcı üzerinden bağlantının kopması kullandığım önemlerde beni çok zorlamıştı. Çok stabil olduğunu düşünmüyorum.
S4A programında Blokların diğer bloklar içerisinde dağılmış olası ve pin numaralarının sabit tutulmuş olması benim hoşuma gitmeyen özelliklerdir. Snap4Arduino da bulunan esnek yapı ve son güncelleme ile gelen adım adım program takibi özelliği bu programı tercih etme nedenlerimizdendir.
ScratchX, S4A veya Snap4Arduino programlarından hangisini kullanırsanız kullanın Scratch programından sonra çocuklarınız çok eğlenecek. Özellikle Ortaokul ve öncesinde okumakta olan öğrenciler için uygun olduğunu düşünüyorum.
2- Gömülü yazılım (Orta Seviye)
Bu aşama çocukların Arduino ve Arduino ile birlikte kullanılan çevre bileşenlerine hakim olduğu, blok tabanlı programlama ve Algoritma çıkarma da sorun yaşamaması gerekir. Artık Arduinoları bilgisayardan koparıp kendi başına robotik uygulamaların yapıldığı, özgün projelerin oluşturulduğu aşama olmalıdır. Çocuklar Snap4Arduino programında geliştirdikleri projeleri arduino üzerine program yaparak Bileşenlerin düzenli çalışmasına hakim olabilirler.
Başlangıçta bilgisayar üzerinden yaptıkları robotları otonom olarak nasıl çalıştıracaklar ?
Sensörler kendi başına nasıl çalışır ?
Çizgi nasıl takip edilecek ?
Bir robot kendi başına nasıl hareket eder ?
Cisimleri algılamak ne de demek ? Cisim nasıl algılanır ?
Renklerin algılanması ve uygulamaları
Arduino bileşenlerinin bir arada kullanılması, otomasyon uygulamaları
Endüstriyel uygulamalar
Uzaktan cihaz kontrolü,
Mobile Cihaz kontrolü,
Farklı cihazların bir biri ile haberleşmesi
Çocukların bu aşamada yazım hataları gibi sorunlarla uğraşmak yerine programlamaya ve sistemin çalışmaya odaklanması en çok ihtiyaçları olacakları şeydir.
Bizler bu aşama için mBlock programını kullanıyoruz. mblock programının bir kısmı türkçe olmasına karşın mbot veya özel kartlar kullanmıyorsanız arduino uygulaması yapabileceğiniz türkçe bloklara ulaşmak zor. Ancak Snap4Arduino da olduğu gibi mblock programı da geliştirmelere açık bir programdır. Bu nedenle gelişmiş arduino uygulamaları için 3DRoboLab olarka hazırladığımız mBlock Geliştirici Kütüphanesi’ni kullanmaktayız.
ArduBlockly ile ilgili son zamanlarda çok fazla çalışmam olmadı ancak Scratch ile devam eden eğitimin benzer bir blok yapısı ile devam etmesi en büyük tercih nedenimiz olduğunu söylemeliyim. Belki ilerleyen zamanlarda onunla ilgili faaliyetlerde de bulunup sizlerle paylaşma fırsatım olur.
Bu aşamadaki uygulamaları ve mBlock programını Lise ve Uzmanlık alanı elektronik & Programlama olmayan lisans ve Ön lisans öğrencileri için önerebilirim. Hali hazırda pek çok ders ile boğuşan öğrencilerimiz için Arduino ile uygulama yapmak kolay ve hızlı olacaktır.
Ayrıca çocukların elektronik cihazların yanı sıra Mekanik olarak sistemleri kurmaya ilişkin bilgi sahibi olması ve bu konularda çalışma yapmaları uygulamaların özgünlüğünü arttıracağı gibi kendilerine olan güvenlerinin oturduğunu göreceksiniz. Mekanik uygulamalar için thingiverse sitesini ve STL dosyalarının düzenlenmesi içib TINKERCAD programı kullanılabilir. İleri düzey çizimler için FreeCAD veya Sketchup programı kullanılabilir.
3- Robotik (İleri seviye)
Bu aşama çocukların kod bloklarına, elektronik bileşenlere ve tasarımlara hakim olduklarında tamamen özgün projeler yaratacağı aşamadır. Programlamada gerçek robotik sistemlere alışmak ve yüksek öğrenimde kullanılan arayüzleri ve sistemleri kontrol etmek için alt yapı geliştirmek için bulunmaz bir aşama. Üniversite öğrencilerinin mühendislik öğrencileri ve Bazı özel robotik sistemlerle uğraşanların mecburi olarak bulunması gereken seviyedir.
Üniversiteler arası robot yarışlarında ve özgün robot oluşturmada kullanabileceğiniz karmaşık kodları oluşturma aşamasıdır. Bu aşamada pek çok farklı disiplinin (Mekanik, programlama, elektronik) bilgi ve beceriye ihtiyaç duyulduğundan genellikle gruplar halinde çalışılarak ortaya çıkan projeleri kapsadığını düşünüyorum.
Bu aşamada
Kablosuz haberleşme yöntemleri ve bileşenleri
RF sistemler ve özellikleri
Bluetooth özellikleri ve haberleşme protokolleri
İvme algılama ve denge çalışmaları
PD, PID ve Mantıksal kontrolcü kavramları,
Yapay zeka ve derin öğrenme algoritmaları,
Denge robotu,
Drone,
Deniz altı
3 eksen robot konrolü,
Otonom araçların tasarlanması gibi kavramları benimseyerek ileri düzey uygulama yapabileceklerini düşünüyorum. Bu aşamada Arduino kartını kontrol etmek için pek çok hazır kütüphaneden aynı anda faydalanmanız gerekecek ve blok yapıları ile yazacağınız uygulamalar size kodların yapısı hakkında bilgi vermeye yetmeyecektir. O nedenle Arduino IDE programı ve gerekli durumlarda Android Stüdyo, Processing, C++ veya C# gibi dillere başvurmanız gerekecek.
Daha ileri uygulamalar için RasberryPi kullanarak Görüntü işleme çalışmalarına giriş yapılabilir.
Yaptığımız çalışmaların tümü çocuklarımızın kendini geliştirmesi içindir. Web sitemizde yer alan tüm çalışmaları okullarınızda kullanabilir, Bu konularda bize danışabilirsiniz. Elimizden geldiğince yardımcı olmaya çalışacağız. Ayrıca geliştirdiğimiz kütüphaneleri kullanıp hata alıyorsanız veya şuda olsaydı dediğiniz birşey var ise bizimle paylaşırsanız sizler için eklemekten mutluluk duyarız.
Hüseyin YILDIZ
Comments
Comments are closed.