Robotik kodlama, yazılım (software), elektronik (hardware) ve mekanik (Mechanical) olmak üzere 3 temel başlıktan oluşmaktadır. Yazılım, kendi içerisinde metin tabanlı (text-based) ve blok tabanlı (block-based) programlama olmak üzere ikiye ayrılır. Yazımızın devamında bu programlama türlerini detaylı bir şekilde inceleyeceğiz. Metin tabanlı programlama C, Python vb. programlama türleri kullanılarak yazılan programlama türüdür. Blok tabanlı programlama ise görsel olarak hazırlanmış kod bloklarını mouse yardımıyla sürükle – bırak yaparak oluşturduğunuz programlama türüdür. Kod bloklarını sürükle – bırak yaparak istediğiniz algoritmayı oluşturursunuz. Elektronik (Hardware), geliştirmek istediğiniz proje için gerekli sensörleri mikrodenetleyiciyle kablo vb. bağlantı elemanları ile haberleştirdiğiniz aşamadır. Mekanik (Mechanical) ise bağlantı yaptığınız girdi ve çıktı sensörlerinin ahşap, metal vb. materyallerden oluşan robotun iskelet parçalarına yerleştirilmesi ve bu iskelet parçalarının doğru bir şekilde birleştirilmesini kapsamaktadır.
Robotik kodlama, günümüzde teknolojinin hızla gelişmesiyle endüstride birçok alanda kullanılmaya başlamıştır. Bu kullanım alanları beraberinde birçok yeni meslek grubunu oluşturmuş ve mühendislik bölümlerine olan talebin artmasını sağlamıştır. Bundan dolayı her yaş kategorisinde eğitim kurumları ders programlarına “Robotik Kodlama” , “Fiziksel Programlama” vb. robotik kodlama basamaklarının anlatıldığı dersleri eklemeye başlamıştır. Aynı zamanda robotik kodlamanın yaygınlaşması hobi projeleri geliştiren kişisel kullanıcıların sayısını da arttırmıştır.
Robotik kodlamanın yaygınlaşması, robotik kodlama araçlarının ve kodlama platformlarının sayısını da arttırmıştır. Elektronik olarak robotik kodlama araçları proje geliştirme kartları ve sensörlerden oluşmaktadır.
Proje Geliştirme Kartları
Robotik kodlamada, çeşitli programlama dillerini kullanarak oluşturduğumuz proje kodlarını mikrodenetleyicilerin içerisine yükleriz. Bu mikrodenetleyicileri, girdi-çıktı sensörleri ile beraber daha rahat kullanabilmemiz için proje geliştirme kartları ortaya çıkmıştır.
Robotik kodlamada sık kullanılan proje geliştirme kartları şu şekildedir;
Arduino
Arduino, farklı amaçlara yönelik farklı boyutlarda, ATmega mikrodenetleyicisini kullanan proje geliştirme kartları geliştirmektedir. Örneğin, Arduino UNO, Arduino NANO, Arduino Leonardo, Arduino ailesine ait proje geliştirme kartlarıdır.
Arduino setlerine ulaşmak için tıklayınız.
Raspberry Pi
Raspberry Pi, ortaya çıkış amacı çocukların kodlama ve elektroniği sevmesi olan bir topluluktur. Çeşitli amaçlara yönelik farklı boyutlarda proje geliştirme kartları ve mikrodenetleyiciler üretmektedir. Raspberry Pi, Raspberry Pi Pico, Raspberry Pi Pico W, Raspberry Pi ailesine ait proje geliştirme kartlarıdır.
Raspberry Pi, Single Board Computer – SBC (Tek Kart Bilgisayar) olarak tanımlanan kredi kartı boyutlarında bir bilgisayardır. Raspberry Pi modellerini daha detaylı incelemek için Raspberry Pi Nedir? Modelleri ve Neler Yapılabilir? #1 adlı blog yazımızı inceleyebilirsiniz.
Raspberry Pi setlerine ulaşmak için tıklayınız.
PicoBricks
Picobricks, üzerinde 12 adet modül bulunduran bir proje geliştirme kartıdır.PicoBricks kartı Raspberry Pi Pico mikrodenetleyici kartını kullanmaktadır ve 12 den fazla sensör modülü bulundurmaktadır. PicoBricks kartı üzerindeki veri yolları sayesinde, kartının bütünlüğünü bozmadan ve kablo kullanmadan kart üzerindeki modüllerin Raspberry Pi Pico ile olan iletişimini sağlayabiliriz. Ayrıca PicoBricks, üzerindeki modülleri kırılma noktalarından kırarak, kartın bütünlüğünü bozabilir ve bu sayede kolay bağlantı kabloları yardımıyla modüllerin iletişimini rahatlıkla sağlayabiliriz.
PicoBricks, çeşitli geliştirme kartları ve mikrodenetleyicileri kullanarak farklı seviyedeki kullanıcılar için proje geliştirme kartı üretir. PicoBricks for Raspberry Pi Pico , PicoBricks for micro:bit, BerryBot PicoBricks ailesinin ürünleridir.
PicoBricks ürünlerine ulaşmak için tıklayınız.
MakeBlock
MakeBlock, eğitim – öğretim ortamlarında kullanılmak üzere farklı amaçlara yönelik robot platformları ve bu platformlarla kullanılmak üzere sensör modülleri üretmektedir. mbot (1-2), mBot Ranger, mBot Ultimate Robot Kit MakeBlock ailesinin ürünleridir.
MakeBlock ürünlerine ulaşmak için tıklayınız.
micro:bit
Micro:Bit, BBC tarafından geliştirilmiş, ön yüzünde 5×5 Matris LED, 2 buton, Accelerometer, Compass, Speaker ve microphone sensörü barındıran bir mikrodenetleyici kartıdır. Ayrıca micro:bit in alt yüzeyindeki pin noktaları sayesinde Micro:Bit’e farklı sensörler bağlayabilirsiniz.
micro:bit ürünlerine ulaşmak için tıklayınız.
Kodlama Platformları
Yukarıda bahsettiğimiz geliştirme kartları ve diğer geliştirme kartlarını programlayabilmek için editörler geliştirilmiştir. Bu editörlerin bazıları geliştirme kartı üreten firmalar tarafından, bazıları ise farklı firmalar tarafından geliştirme kartları için tasarlanmıştır.
Robotik kodlama esnasında yazdığımız kodları sensörlerle haberleştirebilmemiz için mikrodenetleyicilerin içerisine yükleriz. Bundan dolayı kullanılan editörler, projede kullandığınız mikrodenetleyiciye göre farklılık gösterebilir.
Robotik kodlamada sıklıkla kullanılan editörler şunlardır;
Arduino IDE
Arduino IDE , Arduino, Raspberry Pi, ESP32 vb. proje geliştirme kartlarını C programlama dilinde kodlamanızı sağlayan metin tabanlı bir programlama editörüdür.
Örnek Devre
Örnek Arduino Kodu
#define Button 8
#define Led 10
void setup() {
pinMode(Button, INPUT);
pinMode(Led, OUTPUT);
}
void loop() {
if (digitalRead(Button) == 1)
digitalWrite(Led,HIGH);
else
digitalWrite(Led,LOW);
}
Thonny IDE
Thonny IDE, Raspberry Pi, Raspberry Pi Pico, Arduino, micro:bit vb. proje geliştirme kartlarını Python programlama dilinde kodlamanızı sağlayan metin tabanlı bir programlama editörüdür.
Örnek Devre
Örnek Thonny IDE Python Kodu
import gpiod
import time
LED_PIN_G = 17
LED_PIN_Y = 27
LED_PIN_R = 22
chip = gpiod.Chip('gpiochip4')
led_lineG = chip.get_line(LED_PIN_G)
led_lineG.request(consumer="LED", type=gpiod.LINE_REQ_DIR_OUT)
led_lineY = chip.get_line(LED_PIN_Y)
led_lineY.request(consumer="LED", type=gpiod.LINE_REQ_DIR_OUT)
led_lineR = chip.get_line(LED_PIN_R)
led_lineR.request(consumer="LED", type=gpiod.LINE_REQ_DIR_OUT)
while True:
led_lineG.set_value(0)
led_lineY.set_value(0)
led_lineR.set_value(1)
time.sleep(3)
led_lineG.set_value(0)
led_lineY.set_value(1)
led_lineR.set_value(0)
time.sleep(0.5)
led_lineG.set_value(1)
led_lineY.set_value(0)
led_lineR.set_value(0)
time.sleep(2)
Scratch
Scratch, MIT tarafından geliştirilen blok tabanlı bir programlama editörüdür. Scratch bloklarını sürükle – bırak yaparak, geliştirme kartlarına kod yükleyebilir ya da Scratch platformundaki kukla, kostüm ve dekorları kullanarak eğlenceli animasyon, oyun vb. görsel projeler geliştirebilirsiniz.
Örnek Scratch Kodu
PicoBricks IDE
PicoBricks IDE, bilgisayarınıza herhangi bir program yüklemeden internet bağlantısı olan bir bilgisayar ile tarayıcınızdan kullanabileceğiniz online bir programlama editörüdür. PicoBricks içerisindeki editörleri kullanarak isterseniz blok programlama, istersenizde MicroPython dilinde metin tabanlı programlar oluşturabilirsiniz. PicoBricks IDE ile PicoBricks for Raspberry Pi Pico ve BerryBot mikrodenetleyicilerini kodlayabilirsiniz.
Örnek PicoBricks IDE Kodu
MicroBlocks
MicroBlocks, Raspberry Pi Pico, micro:bit, ESP32, PicoBricks, REX Robot Kiti vb. bir çok mikrodenetleyici ve proje geliştirme kartını blok tabanlı kodlamayı sağlayan bir editördür. MicroBlocks ‘u diğer editörlerden ayıran en önemli özelliği paralel kod yapısını destekliyor olmasıdır.
Paralel kod yapısı birden fazla döngüyü eş zamanlı olarak çalıştırılmasına verilen isimdir.
Örnek MicroBlocks IDE Kodu
MakeBlock IDE
MakeBlocks IDE, mBot, Arduino, Raspberry Pi vb. birçok mikrodenetleyiciyi ve proje geliştirme kartını blok tabanlı olarak programlamayı sağlayan bir editördür. MakeBlocks IDE, MakeBlocks proje geliştirme kartları için ortaya çıkmış bir editör olduğu halde içerisinden birçok sensör ve mikrodenetleyici eklentisi bulunmaktadır.
Örnek MakeBlock IDE Kodu
MakeCode IDE
MakeCode IDE, başta micro:bit olmak üzere birçok mikrodenetleyici ve proje geliştirme kartını, blok tabanlı olarak kodlamayı sağlayan bir programlama editörüdür. MakeCode IDE ile micro:bit ‘i kodlayacaksanız, MakeCode IDE içerisinde bir simulatör bulunmaktadır. Bu simulatorde anlık olarak yazdığınız kodların çıktısını görürsünüz. Buda bir hatayla karşılaşılması olasılığında hatayı almadan önce kodunuzu simulatorde test etmenize olanak sağlar.
Örnek MakeCode IDE Kodu
Robotik Kodlamada Sık Karşılaşılan Hatalar / Sorunlar
Robotik kodlama yazımızın başında da bahsettiğimiz gibi Elektronik, Yazılım ve Mekanik olmak üzere 3 basamaktan oluşmaktadır. Bu basamakların her birinde, farklı hatalarla karşılaşılmaktadır.
Elektronik Basamağında Karşılaşılan Sorunlar
- Kablo karmaşası: Mikrodenetleyiciler ile sensörleri haberleştirebilmek için jumper ya da benzeri kablo türlerini kullanarak, sensörün pinlerini mikrodenetleyicinin ilgili pinlerine iletiriz. Bu işlem her bir sensör için en az 2 kablo bağlantısı gerektir. Buda kullandığımız sensörün sayısı arttıkça devrede oluşan kablo karmaşasını arttırmaktadır. Kablo karmaşasının artmasıda, devrede hata tespitinin zamanını arttırmaktadır. Özellikle eğitim-öğretim ortamlarında bu tarz hatalar öğrencilerin dersten soğumasıyla sonuçlanabilmektedir. PicoBricks, BerryBot, mBot vb. proje geliştirme kartları bu sorunu ortadan kaldırmak için üretilmiştir.
- Lehim Tehlikesi: Bazı durumlarda sensörleri mikrodenetleyiciyle haberleştirebilmek için kablo ve lehimi aynı anda kullanmamız gerekebilir. Bu gibi durumlarda ise lehimden ortaya çıkan gazın zararı, lehim makinesini kullanırken yaşanabilecek kazalar elektronik basamağında sorunlara yol açmaktadır.PicoBricks vb. proje geliştirme kartları bu tarz sorunları ortadan kaldırmak için üretilmiştir.
Yazılım Basamağında Karşılaşılan Hatalar
- Syntax (Noktalama) Hatası: Metin tabanlı programlama dillerinin kullanımında her programlama dilinin farklı bir syntax (noktalama) yapısı olduğu için bu tarz hatalar ile sıklıkla karşılaşılmaktadır. Örneğin C programlama dilinde bir “;” işaretini eksik koysanız dahi kodunuzun tamamı doğru olduğu halde hata verecektir. Birde kod satırınızın fazla olduğu bir proje kodunu hayal edin hata yapma olasılığınız bu tarz durumlarda artmaktadır. Blok tabanlı programlama dillerinin başlıca çıkış amacı da bu hata türünü ortadan kaldırmaktır.
- Programlama Dili Yapısına Alışma: Her programlama dilinin kendine ait bir yapısı bulunmaktadır. Kod yazmayı bilsek dahi farklı bir programlama diline yeni geçtiğimizde zorluk yaşayabiliriz. Örneğin C programlama dilinde “ else if “ ifadesi ile Python programlama dilindeki “elif” ifadesi aynı işe yaramaktadır. Ancak kod yazımı farklılık gösterir.
Mekanik Basamağında Karşılaşılan Hatalar
- Kurulum Karmaşası: Fazla mekanik parça kullanan robotik sistemlerde, sistemin tamamını oluşturmak için gerekli kurulum adımları karmaşıklık gösterebilmektedir. Burda yaşanılan karışıklığı önlemek için PicoBricks, mBot vb. ürünlerin içerisinde kurulum kılavuzları gönderilmekte ve kullanıcıya kurulum aşamasında destek sağlanmaktadır.
- Parça Kaybı: Fazla parçalı sistemlerde parçalarımızı düzenli bir şekilde muhafaza etmezsek kaybına yol açabiliriz. Bu gibi durumlarda organizer vb. elemanları kullanmak yararlı olacaktır.
Eğitimde Robotik Kodlamanın Önemi ve Yeri
Robotik kodlama basamakları, öğrencilerin bilgi işlemsel düşünme becerilerini geliştirdiğinden dolayı eğitim – öğretim kurumlarında yer verilmektedir. Hatta STEM gibi eğitim anlayışları geliştirilerek, diğer derslerle beraber kullanılmaktadır. Yazılım aşamasında öğrenciler; problem çözme,algoritmik düşünme gibi becerilerini, Elektronik ve mekanik aşamasında ise el-kol koordinasyonu, motor vb. becerilerini geliştirmektedir. Aynı zamanda Robotik Kodlama gibi uygulamalı dersler, grup çalışması yapılarak işlendiği için öğrencilerin sosyal becerilerine de katkı sağlar.