16 Ocak 2018 Salı

R-bot


Robot deyince aklınıza insan görünümlü otomatlar olan androidler gelmesin. Bu tür uygulamalar için otomatik kontrol sistemleri henüz emekleme aşamasında olduğu için pahalı yatırımlar ve araştırmalar gerektirmektedir, ki  bol sıfırlı kazancı olan şirketler ve para kazanma amacı gütmeyen üniversite gibi araştırma için üzerrinde çalışmalar yapılabilir olmaktadır. Bu alanda bizim payımıza düşen nispeten daha yapılabilir ve kullanıcıya ulaşılabilir tekerlekli robotlar.

Düşünürsek, NASA'nın Mars gezegeni üzerindeki Curiosty, Opportunity. Spirit gibi robotları bizim o beklediğimiz insansı robotlar yerine çek çek arabaları andıran tekerlekli makinelerdi. Kaldı ki, engelden kaçma, yolunu bulma ve gerektiğinde analiz yapabilme kapasitesi olan makinelerdi. Çünkü  Mars ile dünya arasındaki haberleşme 25 dakikalık bir gecikme içeriyordu. Aynı şekilde Amazon internet pazarlama şirketi ürün taşımasında akıllı robotlar kullanmakta. ki robotları tekerlekli taşıma arabalarıdır.
Resimde paket içeriği görülmektedir. Rbot gövde, pil yuvası,Rbot kontrol kartı, Ardunio UNO, motorları (tekerlekleri ile birlikte, serbest tekerleği, hatta pilleri ile birlikte.

Burada anlatmaya çalıştığımız otomat olarak (robot diyelim) giriş seviyesinde üzerinde çalışmalar gerçekleştirebileceğimiz bir platform sunmayı amaçladık. Mikrokontroller tabanlı bile olsa en azından yönlendirme ve kontrol için temel araçları barındıran bir donanım sunduk.
Alüminyum gövde için çok fazla renk seçeneği (eloksal) olmadığı için ve de  stok maliyeti açısında iki renk üzerinde sınırladık

Robotik uygulamalar açısından üç tekerlek ki bunlardan iki tanesi kontrol edilerek R-bot, hareketi kontrol edilebilir olmaktadır. Üçüncü tekerlek  kadar önemli olmayıp sadece  R-bot' un dengede durmasını sağlamak amaçlanmaktadır.. 3 tekerlek aslında bir yüzeyin statik olarak dengede durması için gereken minimum tekerlek sayısını belirtmektedir. (Hali hazırda 2 veya tek tekerlek ile dengede durabilen sistemler var ise de bunlar ya sürekli olarak kontrol gerektirir ya da dinamik denge kurallarının uygulanmasını gerektirir) Matematik deki bir yüzey en az 3 noktadan geçer yaklaşımından gelmektedir.
Rbot Kontrol kartına monte edilmiş Arduino UNO. Bağlantıları gerçeleştirilip Rbot'un çalıştırılması için hazır.

Kontrol yaklaşımı olarak Arduino UNO tarafından sağlanmaktadır,  dolayısı ile Arduino programı ile programlanabileceği gibi scratch gibi görsel bir dil kullanılarak da programlanması mümkündür.
(Bacak uyumluluğu olduğu sürece daha güçlü bir işlemci içeren bir kartın takılması da mümkündür)
Elektrikli aletler için enerji vazgeçilmez. Burada 4 adet kalem pil kullanımı için pil yuvası hazır. Sadece pilleri bekliyor.

NOT: Ürün tanıtımları esnasında  ürünün neden şarjlı pil kullanılmadığı veya lipo pil olarak bilinen ürünlerin kullanılmadığını sordular. Fakat bu ürünü tasarlarken hedef kitlemizin hata yapması durumunda çıkabilecek sorunları minimum düzeyde tutmayı hedefledik.  Ürünü kullanırken siz, istediğiniz tipte pili kullanmayı elbette seçebilirsiniz.

Dolayısı ile anlaşılacağı gibi motor kontrol, bluetooth haberleşme , çizgi izleme ve ultrasonik sensörlerin bağlantılar Arduino UNO için uyumlu olacak şekilde oluşturulmuştur. Hali hazırda besleme 4 adet kalem pile yapılabilmektedir. Bu da pil bitince kolaylıkla yenisi ile değiştirilebileceği anlamını taşır.
Rbot çizgi izleme testinde.

Rbot'un tablet ile bluetooth üzerinden kontrolu. (tablet arayüzü)

Bluetooth haberleşme olduğu için android cep telefonu veya tablet ile  R-bot kontrolü mümkün olabilmektedir. (isteyen kendi kontrol cihazını kolaylıkla yapabilir)

Motor sürücüler kontrol kartı üzerine monte edildiği için, ek bir sürücü gerektirmez.

Proje açısından gözden geçirilecek olursa;

  • Bluetooth üzerinden bilgisayar, cep telefonu veya tablet ile haberleşme. (Cep telefonu veya tablet için Android işletim sistemi ile sınırlanmıştır)
  • Kontrol kartı üzerindeki butonların kullanımı  ile kontrol veya programlama seçeneği
  • Arduino programlanması ile otonom işlemlerin gerçeklenmesi
  • Çizgi izleme sensörü kullanımı ile çizgi izleme özelliği
  • Ultrasonik sensör kullanımı ile mesafe algılama ve gerekirse, nesnelerden kaçırma
  • Ek servo motor desteği ile gerektiğinde kıskaç gibi ek donanımlara izin verme özelliği


Elbette bunlar hali hazırda desteklenen yapılar olup, gerektiğinde paletli sistem, veya ayak yapıları eklenerek kullanım esnekliğinin artırılabilir.

Cep telefonu kontrolu ile veya tablet ile kolaylıkla yönlendirilebilir. Kameralı olsun isterseniz, size kim engel olabilir ki.(Maliyet açısından ürünün fiyatını artırmamak için üzerinde çalışılmamıştır. Elbette güzel olacağının bizde farkındayız, ama kabul edersiniz ki, özellikle hitap etmek istediğimizi kitle açısından fiyatının fazla yükseltilmemesi önemlidir.)

Programlama olayına gelince; birçok seçeneğiniz olabileceği gibi, en başta Arduino  geliştirme ortamı ve özellikle görsel kodlama açısından kullanılan scratch kodlama kullanılabilir.(mbot programı kullanılmaktadır).

Ürün tanıtımı esnasında birçok arkadaşımız gelip neler yaptığını sormaktaydı. Ürün özelliklerine anlattığımızda hayal kırıklığı yaşamaktalar. Oysa ki burada asıl anlatmaya çalıştığımız bu ürünün kod geliştirme sonrası kodların deneneceği bir ortam sunmasıdır. Yani kodlamanın sonucunun fiziksel bir ortamda karşılığının olmasını sağlamaktadır.

Cep telefonu ile kontrol edilebilir, hızı ayarlanabilir. Rbot destek amacı ile üretilmiştir.

Asıl önemli olan şu, bu robot üzerinde kodlama öğrenildiğinde ne olacak? Bu sorunun cevabını da çeşitli etkinliklerde vermeye çalıştık. En basitinden bu robot gibi bir Arduino/Genuino üzerinde kodların çalıştığı tekerlekli sandalye oldu. Burada sadece cep telefonundan kontrol edilen bir sandalye değil, aynı zamanda üzerine binip dolaşabileceğiniz bir sandalye olduğunu belirtmeye çalışıyoruz. Ama mantık aynı!

Rbot Montajı

Rbot esas olarak alüminyom bir gövde üzerine monte edildiği ve dolayısı ile kesme , delme gibi işlemler gerektirmediğinden, sadece bir pense veya karga burun ve bir yıldız tornavida ile monte edilebilmektedir. Kablo montajları birkaç geçme konnektör olduğundan montaj işini bir çocuğun yapabileceği ölçeğe indirmektedir. (Amacımız  Rbot ürünün Kodlama dersine destek olması idi)


Rbot montajı...

Ürünü monte ettikten sonra neler yapabileceğiniz hayal gücünüze kalmış...

Scratch Kartı (Kodlama için)


Biliyorsunuz, şu anda okullarda kodlama dersi kondu ve her ne kadar gelecek yıl mecburi olacak ise de, bu yıl dersi eğitim planına alan okullar var.

Çoğu uygulamada bilgisayar üzerinde kodlama dersi gösterilmektedir. Yani çöpten adam sağa, çöpten adam sol şeklinde. Ama bu kodlama sonucunun fiziksel ortama taşınması gerekir. En azından daha canlı ve etkileşimli olması açısından.

Bu noktadan yola çıkarak Arduino/genuino tabanlı bir ürün ortaya koymak istedik. Sonuçta Arduino/genuino UNO işlemcisini içeren ve USB üzerinden programlanabilen ve ek olarak shield olarak bilinen ek donanımı bir araya toplayıp, birleştirdik. Özellikle Arduino UNO maliyeti artı shiled maliyetine girmeden sadece shield maliyeti ile UNO özelliklerinde bir geliştirme kartı ortaya çıkmış oldu.


Scratch kartının bir robot kol ile birlikte uygulaması


Robot kol uygulamasından küçük bir örnek. Kodlaması scratch kodu üzerinden gerçekleştirildi. Bu ne yapıyor sorusu, yeni nasıl yapılır sorusunu tercih ediyoruz!

Ürün özelliklerini bir göz atarsak;

  • USB üzerinden bilgisayardan programlanabilme ve veri iletişimi,
  • Arduino/Genino UNO programlama özelliklerine sahip olması;
  • harici besleme girişi ile bilgisayardan bağımsız olarak çalışabilmesi,
  • 5 adet LED üzerinden kontrol imkanı;
  • bir potansiyometre ve bir trimpot üzerinden ayar değerinin okunabilmesi,
  • bir LDR (ışık ile direnci değişen eleman) üzerinden analog değerinin okunabilmesi,
  • bir buton ile veri girişi imkanı,
  • 8x8 LED matris üzerinden istenilen şeklin oluşturulması ve yazının yazılması,
  • 4 adet  3'lü pin üzerinden örneğin bir robot kol imkanı, istenilen sensör okuması veya çıkış olarak kullanılma imkanı,
  • İster Arduino programı, ister scratch kodu üzerinden kodlama yapabilme imkanı;
Ürün üzerinde çip Arduino UNO için kullanılan modeldir ve özellikle bootloader olarak bilinen ve Arduino kartları üzerinde yüklü olan kodların aynen bu geliştirme kartı üzerinde de yüklü olduğunu bilmek, elbette sizin açınızdan süpriz değildir.

8x8 matris ekran üzerinde kayan yazı örneği


Kodlama
Scratch kartı  hem Arduino studio , hem de Scratch programları üzerinden kodlama yapılabilmektedir. Hatta Arduino kodlama yapılabilen her türlü  studio üzerinden üretilen kodlar  scratch kartını programlamak mümkündür. Ama yineden biz Scratch ve Arduino studio üzerinden programlama (kodlama üzerinde) durulacaktır.

Scratch iki modda çalışabilmektedir. Birincisi çevrimiçi modu olup, Arduino kartı üzerine yüklenmiş bir program yardımı ile scratch ile sürekli iletişim halinde bulunur ve Scratch üzerinde oluşturulan kod anında  Arduino kartında işleme alınır. Sıkıntısı kullanıcı için kütüphane oluşturmak zordur. Çünkü Arduino kodları yanında Java kodlamanın bilinmesidir. (Bu son kullanıcıyı etkilemez)Ayrıca Arduino kartı üzerine ön yüklemiş kodun desteklemediği işleri yapmak mümkün değildir (ön yükleme programında değişiklik yapılmadığı sürece). Arduino kartı bilgisayara bağlı ve Scratch programı ile bağlantı kurulabildiği sürece çalışır. Çünkü kodlar bilgisayar üzerinden yürütülür.
Arduino modunda ise kodlama , Arduino kodlarına dönüştürülür ve Arduino kodları derlenir ve yüklenir. Dolayısı ile Arduino koduna dönüştürüldüğü zaman istenildiği gibi Arduino Studio üzerinde istenildiği gibi değişiklik yapılabilir ve daha esnek yaklaşım sağlanabilir. Arduino kartı program yüklendikten sonra, istenirse ayrı bir besleme yardımı ile bağımsız olarak  çalışabilir. Kodlar arduino üzerinde yürütülür.

Kodlama olayına girmeden bazı terimler konusunda hemfikir olmamız gerekiyor. Bunlar;

Scratch kartı üzerindeki elemanları yerleşimi ve kısa tanımları.
Scratc kartı için ekran olarak düzenlenmiş 8x8 (64 LED) matris ekranı oluşturmaktadır.
Matris ekran üzerinde www.kontrolcepte.com yazarken.

lojik-1:  Temelde +5Volt gerilimini temsil eder. Sistemimiz besleme olarak dışarıdan 9-12Volt gibi besleme aralıklarında olsa bile, bilgisayar olsun veya kart içi besleme +5Volt'dur. (regülatör vardır) Arduino çipi ve diğer birçok eleman açısından bakılırsa, (bazılarında farklılık görülse de) 3.5Volt ile 5Volt aralığını lojik-1 olarak kabul edilmektedir.

lojik-0: Temelde 0Volt gerilimini temsil eder. Ama elektronik açısından bakıldığında (+5Volt beslemede ) +1 Volt ile 0 Volt aralığını temsil eder.

LED: Işık yayan diyot. Devreye seri bir direnç yardımı ile bağlanır. Yoksa bozulur

Buton: Basıldığı zaman devreyi kapat ve bırakıldığı zaman devreyi açan eleman.

LDR:Direnci ışığa göre değişen eleman.

Potansiyometre: Direnç değeri bir kol (mil) yardımı ile değişen eleman.

Trimpot: Direnç değeri bir tornavida yardımı ile değiştirilebilen eleman.

Buzer: Elektrik akımı uygulandığında  ses çıkaran eleman. (vızıldar)

Mikrokontroller: Bu kart üzerinde tüm işlemlerin (kodların) yürütüldüğü, kodun bilgisayar üzerinden yüklendiği ve çalıştırıldığı yerdir. Kısacası bu bir orkestra şefidir. Hayallerinizi yıkmak gibi olmasın ama mikrokontroller üzerindeki kod sizin ekranda gördüğünüzden çok daha farklıdır ve sadece sayılar vardır. (aslında 1 ve 0).

Bit:Mikrokontroller üzerindeki hafızanın en küçük birimine denir. Yani 1 veya 0 değerinin saklandığı yer.

Bayt:Özellikle scratch kartı üzerindeki 8 tane bit'in birlikte oluşturulduğu gruptur. Bu noktada sayı sistemlerine girmemiz gerekecek ama o ayrı bir konudur.