EBA Kodlama


Blok Tabanlı 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 hâkim 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 hâkim olmalı, kullanabilmeli, sonrasında kullandığı makinenin anlayacağı dilde (GCODE) komutları çıkarabilmeli veya bunu yapan bir programa hâkim olmalı.

Yapısal analiz yapan bir Analiz Mühendisi yapılara dinamik mesh atabilmek için Python veya C++ ile script 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 hangi mesleğe sahip olmak isterlerse istesinler programlama ile tanıştırılmalılar.


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’nun İ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 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 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ı.

Arduino, temel olarak kolay bir şekilde çevresiyle etkileşime girebilen sistemler tasarlayabileceğiniz açık kaynaklı bir geliştirme platformudur. Bir mikrodenetleyici üzerinde programlanabilir bir çipin vasıtası ile çevre bileşenlerden gelen veriler java tabanlı bir programlama dili ile kolayca yönetilebilmektedir.

Arduino IDE’nin mühendislik tabanlı kullanıcılar için bile kullanımı oldukça zor olduğu için, 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çenek Blok Tabanlı programlama dilleri, hatta Scratch ve Snap dillerinden türetilen programlardır.

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 olarak 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 mobil cihaz bağlantısı yapmak için ek kodlara ihtiyaç duyulur.

ARDUINO.IDE, mBlock, Ardublockly programları bu şekildeki 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. Herhangi bir şekilde bilgisayar ile bağlantısını kestiğinizde kart çalışmayacaktır. Bluetooth modülü ve wi-fi 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.

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özlemlemek, elektronik parçaların özelliklerini tanıdıkları gibi devre elemanı olarak kullanarak sonuçlarını ön görebilmek. Uygulamalar basit, kolay montaj edilebilir olmalı ve anlık olarak değişimler algılanabilmeli.

Bu aşamada aşağıda sıralandığı gibi pek çok uygulama sadece bilgisayar üzerinden yazılan blok tabanlı programlar ile yapılabilmekte:

  • 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ı

Yukarıda sayılan uygulamalar için Snap4Arduino programı tercih edilebilir.

Neden S4A veya ScratchX değil? S4A gelişmiş uygulamalarda yetersiz kalabilir. Snap4Arduino Kütüphane geliştirme olanağına sahip ve kendi bloklarınızı yaratabileceğiniz bir ortam. Dilerseniz kendi dersleriniz için özel bloklar yaratabilir ve blok kullanımlarını 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ı kullanıcıyı zorlayabilir.

S4A programında blokların diğer bloklar içerisinde dağılmış olası ve pin numaralarının sabit tutulmuş olması bazı kullanıcıların hoşuna gitmeyebilir. Snap4Arduino’da bulunan esnek yapı ve son güncelleme ile gelen adım adım program takibi özelliği bu programın tercih edilme nedenlerindendir.

ScratchX, S4A veya Snap4Arduino programlarından hangisini kullanırsanız kullanın Scratch programından sonra çocuklarınız çok eğlenecek. Bu uygulamalar özellikle ortaokul ve öncesinde okumakta olan öğrenciler için uygun.

2- Gömülü yazılım (Orta Seviye)

Bu aşamada çocukların Arduino ve Arduino ile birlikte kullanılan çevre bileşenlerine hâkim olduğu düşünülür ve blok tabanlı programlama ve Algoritma çıkarmada sorun yaşamaması gerekir. Bu aşama artık Arduino’ları 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 hâkim 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.

Bu aşamada mBlock programı kullanılabilir.

Bu aşamadaki uygulamaları ve mBlock programını lise ve uzmanlık alanı elektronik & programlama olmayan lisans ve ön lisans öğrencileri için önerebiliriz. 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üveni de artıracaktır. Mekanik uygulamalar için thingiverse sitesi ve STL dosyalarının düzenlenmesi için TINKERCAD programı kullanılabilir. İleri düzey çizimler için FreeCAD 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 becerisine ihtiyaç duyulduğundan genellikle gruplar halinde çalışılarak ortaya çıkan projeleri kapsar.

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 kontrolü

gibi otonom araçların tasarlanması gibi kavramları benimseyerek ileri düzey uygulamalar yapılabilir. 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 Processing, C++ veya C# gibi dillere başvurmanız gerekecek.

Kaynak: 3drobolab

Snap4Arduino


Snap4Arduino, Snap görsel programlama dilinden (visual programming language) geliştirilerek çocukların Arduino öğrenmesi için hazırlanmış bir programdır. Program Arduino’nun tüm versiyonları ile çalışabilmekte olup, kullanımı oldukça kolaydır. Snap4Arduino’da kullanılan blokların genel yapısı Scratch programına çok benzer olması nedeni ile, daha önce Scratch kullanmış birinin Snap4Arduino programını öğrenmesi oldukça kolaydır. Programın en güçlü özelliği, Arduino’yu bilgisayar üzerinden kontrol etmesi nedeniyle Arduino'ya bağlı cihazları kullanarak bilgisayar üzerinde yazacağınız oyunları yönetebilmenize olanak sağlamasıdır. Ayrıca yazmış olduğunuz programların kodlarını bilgisayarınıza kaydedebilir ve internet üzerinden diğer kullanıcılar ile paylaşabilirsiniz.