Elle Kumanda Edilen Microbit Araba

Merhabalar! Bugün SAMM Blog’da bir çok projesini bulabileceğiniz Micro:bit geliştirme kartı ile bir proje yapacağız. Micro:bit dahili Bluetooth modülü, buton, ivmeölçer ve dot matrix’i ile robotik eğitiminde kesinlikle en iyi Arduino alternatiflerinden. Giriş seviyesinde bir eğitimi tek bir direnç bile almadan tamamlayabiliyorsunuz. Ancak bugün biz birlikte biraz ileri seviye bir proje yapacağız 😊 Projemiz Eldiven Kontrollü Bluetooth Araba! Bilim kurgu filmlerinden fırlayıp gelmiş gibi olan bu projede hem bir Micro:bit araba yapacağız hem de iki Micro:bit’i haberleştirmeyi ve kontrol etmeyi öğreneceğiz. Haydi Elle Kumanda Edilen Micro:bit Araba projemize başlayalım!

Micro:bit Araba Malzemeleri

  • 2 x Micro:bit
  • 2 x Micro:bit Genişletme Modülü
  • 2 x orta boy breadboard
  • 2 x Flex Sensör
  • 2 x DC motor
  • 1 x L293D motor sürücü
  • 4 x 10K direnç
  • Yeterince jumper kablo
  • 1 x 9V Pil ve yuvası
  • 1 x Micro:bit için pil yatağı ve piller

Adım 1: Elle Kumanda Edilen Micro:bit Araba Devresi

Arabamızın devresini kurmak için 1 x breadboard, 2 x DC motor, 1 x L293D sürücü, 1 x Micro:bit genişletme modülü, yeteri kadar jumper  ve 9V pile ihtiyacımız var. VCC yazan yerleri 9V pilimizi taktığımız hatta bağlayacağız.

Micro:bit Araba Devresi
Micro:bit Araba Devresi

 

Kurduğumuz devreyi araba modelimize monte ederek hareket edebilecek hale getirelim.

Micro:bit Araba Kurulumu
Micro:bit Araba Kurulumu

 

Adım 2: Eldiven Devresi

Öncelikle flex sensörlerimizi eldivenimize dikerek başlamalıyız. Dikişlerimizin ne çok sıkı ne çok seyrek olmaması gerek, arabamızı parmak hareketlerimizle kontrol edeceğimiz için hareketleri iyi algılaması çok önemli. Eldivenimizin devresini kurmak için 1 x mini breadbord, 1 x Micro:bit genişletme modülü, 4 x 10K direnç ve gerektiği kadar jumper kabloya ihtiyacımız var.

Elle Kumanda Etme
Elle Kumanda Etme
Eldiven Devresi
Eldiven Devresi

 

Eldivenimiz bittiği zaman aşağıdaki gibi görünecek. Breadboardımızı eldivenimize iyi sabitlemeliyiz çünkü dönüşler için Micro:bit kartımızın üzerindeki ivmeölçeri kullanacağız.

Elle Kumanda için Eldiven
Elle Kumanda için Eldiven

 

Devrelerimiz tamam, programımıza geçebiliriz.

 

Adım 3: Elle Kumanda Edilen Micro:bit Arabanın Programı

 

Eldiven Micro:bit Kartından Mesaj Alma:

recievedString zaten kumanda karttan alınan mesajı ifade eder. Burada “recievedCommand” adında bir değişken oluşturarak okuduğumuz değerleri buraya kaydediyoruz. Örneğin kumanda Micro:bit kartımızdan “Right” adında bir emir gelirse recievedCommand değişkenimizin değeri bu oluyor. Bu değeri ana algoritmada arabamızı kumanda etmek için kullanacağız.

Micro:bit Araba Kodu 1
Micro:bit Araba Kodu 1

 

set_ Fonksiyonları:

DC motorların yönleri kablolarından verilen akıma göre değişir. Set fonksiyonları ile yapılacak harekete göre pinlerden akım verilerek bunlar set ediliyor.

move, stop, stop_break Fonksiyonları:

Move hareketi sağlayan, stop durduran fonksiyon. Hızımızı değiştirmek için move fonksiyonundaki analog değeri değiştirebiliriz. Stop_break fonksiyonu ise farklı haber gelmeden önce motorları set fonksiyonuna hazırlıyor.

move_ fonksiyonları:

Hareketi sağlayan fonksiyonlardır. Önce pinlere verilen akım sıfırlanır, daha sonra motorlar set edilir ardından hareket komutu verilir.

Micro:bit Araba Kodu 2
Micro:bit Araba Kodu 2

Bu temel fonksiyonlarımızın görevlerini anladıktan sonra ana algoritmamızı inceleyelim. Algoritmamızın görevi gelen mesaja göre arabamızın hareketini belirlemek. Bu sebeple If-Else-Else If şartlı kontrol yapısını kullandığımız bir programımız var. Kumandadan gelen mesaja karşılık gelen şarta göre hareket fonksiyonumuzu çalıştırıyoruz. Örneğin “Forward” yani ileri git mesajı geldiğinde move_fwd fonksiyonunu çalıştırıyor. Şartı kontrol etmek için eşittir mantık bloğunun bir tarafına mesajı sakladığımız recievedCommand değişkeni diğer tarafında string olarak doğru değer var.

 

Adım 4: Eldiven Micro:bit’in Programı

get_acc_ fonksiyonu ile ivmeölçerimizden aldığımız x,y, ve  z değerlerini acc_ değişkenlerine kaydeder. get_direction fonksiyonu ile de bu değerleri sınayarak elimizin hangi yöne eğildiğini algılarız, sağa ve sola dönme hareketini buradan okuduğumuz veriye göre gerçekleştiririz.

Elle Kumanda Kodu 1
Elle Kumanda Kodu 1
Elle Kumanda Kodu 2
Elle Kumanda Kodu 2

 

Get_flex_data fonksiyonu finger değişkeninden aldığı değere göre flex_data_index değişkeninin giriş pinini belirler. Bu iki parmağımızla kontrol yaptığımız için sırayla verileri okumamız için kullandığımız bir yöntemdir. “index” ve “middle” parmaklarımızın takma adları 😊

Elle Kumanda Kodu 3
Elle Kumanda Kodu 3
Elle Kumanda Kodu 4
Elle Kumanda Kodu 4
Proje Kodu 1
Proje Kodu 1

 

Son olarak hem flex sensörlerden hem de ivmeölçerimizden okuduğumuz değerleri kombine ettiğimiz ve arabamızın hareket komutunu belirlediğimiz fonksiyonumuzu inceleyelim. Okuduğumuz değerlere göre “ble_command” değişkenimize gerçek yön değerimizi yazarız. Bu değer bluetooth ile arabaya gönderdiğimiz string değerleri olacak, hatırlarsınız.

Eldiven Kodu
Eldiven Kodu

 

Son olarak ana algoritmamıza bakalım. Burada is_not_break çıktısı için bir fonksiyonumuz var. Bu fonksiyon kumanda eldivenin aktif olmasını sağlar/kontrol eder. Eğer eldivenin üzerindeki iki butona aynı anda basarsak bu değer 0 olur ve ana algoritmamız çalışmaz. Ta ki biz tekrar butonları basıp bu değeri 1 yapana kadar.

Ana algoritmamıza dönecek olursak şimdiye kadar konuştuğumuz fonksiyonları art arda çalıştırarak Bluetooth ile göndermek üzere bir string verisi oluşturur ve gönderir.

 

SON SÖZ

Bence çok zevkli bir projenin anlatımının sonuna geldik. Yaparken öğrendiğimiz ve geliştirmeye fazlasıyla açık bir proje oldu. Blok kod yazmak kolay gibi gelse de eğer metin kodda da belli bir seviyeye gelince o da blok kod yazmak gibi 😊 Fonksiyon mantığını anlamak için on numara bir uygulama bence. Aynı Labirent Oyun Konsolu projesinde olduğu gibi pek çok özellik de geliştirilebilir (örneğin araba durduğunda üzerindeki ışıkları yaksak nasıl olur 😉). Siz de Elle Kumanda Edilen Micro:bit Arabanızı yaparken takıldığınız noktalar olursa yine aşağıya yorum yapabilirsiniz. İyi üretmeler!

 

Kaynakça:

Projenin sahibi: https://www.instructables.com/member/nachiketkelkar/

Proje: https://www.instructables.com/Remote-Car-Glove-Controller/

 

0 0 vote
Article Rating
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments