back to top

#16 Ses Kontrollü Robot Araba

Gelişen ve gelişmeye devam eden yapay zeka uygulamaları insan özelliklerini tanımakta, öğrenmekte ve onun gibi davranmaya çalışmaktadır. Yapay zekayı en kısa haliyle öğrenebilen yazılımlar olarak ifade edebiliriz. Bazen görüntüyü bazen sesi bazen ise sensörlerden topladığı verileri kullanarak öğrenirler. Geliştiricilerinin belirlediği algoritmalar sayesinde bunu yaparlar ve elde ettikleri sonuçlara göre kullanıdıkları alanlarda karar verme süreçlerinde yardımcı olurlar. Kısaca karar verme sürecinin hızlı ve hatasız yapılması gereken durumlarda artık yapay zeka uygulamaları kullanılmaktadır. Pazarlama alanından savunma sanayisine, eğitimden sağlığa, ekonomiden eğlenceye her alanda yapay zeka verimi arttırıp maliyetleri düşürmektedir.

PicoBricks ile yapacağımız bu projede konuşarak kontrol edebileceğiniz 2WD araba yapacağız. PicoBricks 2 adet 6V DC motoru ve bluetooth ile kablosuz iletişim kurmanızı sağlamaktadır. 

Proje Detayları ve Algoritma

Projede setin içinden çıkan robot araba kiti montajlanarak cep telefonu üzerinden kontrol edilecektir. HC05 bluetooth modülü PicoBricks ile cep telefonu arasında kablosuz olarak iletişim kurabilmemizi sağlayan bir modüldür. Projede cep telefonuna yüklenen mobil uygulama sayesinde telefondan gönderilen komutlar HC05 modülü üzerinden PicoBrickse iletilecek ve bu verilere göre de robot araba hareket edecektir. Cep telefonundan ileri, geri, sağ, sol butonları ile robot arabayı yönlendirebileceğimiz gibi sesli komutla da PicoBrickse veriler gönderebiliriz. Projede robot arabanın hareketlerini kontrol etmek için sesli komutlar vereceğiz.  

Bağlantı Şeması

Projenin MicroBlocks ile Kodlanması

Projenin montajını tamamladıktan sonra kod kısmında ilk olarak cmd ve buffer adında iki değişken oluşturarak 9600 bant genişliğinde tanımlanan seri port okuma işlemini buffer değişkeni ile yapıyor ve gelen bilgileri cmd değişkenine aktarıyoruz. Eğer tüm kodları yazdığınız halde telefon ile PicoBricks arasında iletişim sağlamamıyorsan bant genişliğini 9600 yerine 115200 olarak değiştirmeyi deneyebilirsin.

Projenin MicroBlocks kodlarına ulaşmak için tıkla.

HC05 modülü ile seri port üzerinden gelen bilgilerin tutulduğu cmd değişkeni ile when blokları kullanarak karşılaştırma işlemleri yapıyoruz. Gelen bilgi “forward” ise robot arabanın ileri doğru hareket edebilmesi için motor1 ve motor2 bloklarını 0 ile 100 değerleri arasında çalıştırmalıyız. Pilinizin doluluk durumu ile doğru orantılı olarak aracınızın hızı değişecektir. Aynı şekilde bluetooth üzerinden gelen bilgi “right” ise aracın sağa dönmesi “left” ise sola dönmesi, “backward” ise geri gitmesi, “stop” ise aracın durması için gerekli kodları yazıyoruz. Bu kodlarda aracın hareketleri belirli bir süre yapması sağlanmıştır. Dilersen süreleri uzatabilir ya da kaldırabilirsin.

Kodları yazarak PicoBricks üzerinde çalıştırdıktan sonra android cihazlar için aşağıdaki bağlantıdan mobil uygulamayı indirerek telefona kuruyoruz. 

https://play.google.com/store/apps/details?id=appinventor.ai_cempehlivan92.Arduino_Sesli_Kontrol&hl=tr

Language butonu ile dil seçeneklerini açıp “en” seçeneği ile dili ingilizce “tr” seçeneği ile dili türkçe olarak düzenleyebilirsin.

Projenin Yapım Aşamaları

1: Setin içerisinden çıkan 2WD robot araba şasesine birinci motoru vidalayarak sabitle.

2: İkinci motoru şaseye vidalayarak sabitle.

3: Tekerleri motorlara tak.

4: Şasenin altından sarhoş tekeri aralayıcı kullanarak sabitle

5: Şasenin üstünden aralayıcıyı somunla sabitle

6: 4 adet aralayıcı alt şasenin dört köşesine sabitle

7: Üst şaseyi tak va somunlarla sabitle

8: Motorların kablolarını motor sürücüdeki klemenslere tak.

9: Motor sürücü, Bluetooth modülü, Picobricks board ve pil kutusunu şaseye sıcak silikon kullanarak sabitle.

Proje montajını, kodların yazılmasını ve mobil uygulama kurulumunu gerçekleştirdikten sonra şimdi robot arabanı sesli olarak kontrol edebilirsin. Bunun için HC05 bluetooth modülü ile cep telefonunu eşleştirmelisin. Cihazının bluetooth ayarlarına girerek HC05 modülünü seçmeli ve eşleştirmelisin. Eşleştirme işleminde modül için gerekli parola “1234” ya da “0000” dır. Modül ile cihazı eşleştirdikten sonra uygulamayı açarak Connect butonuna tıkla ve HC05 modülüne seçerek bağlan.

Bağlantı gerçekleştiğinde Status bölümünde yeşil renkli Connected yazısını göreceksin. Mikrofon simgesine tıklayarak “forward”, “backward”, “right”, “left” komutları ile aracı hareket ettirebilirsin.

Proje Önerisi

Bu projede cep telefonuna yüklediğimiz mobil uygulama üzerinden sesli komutlar vererek robot arabayı hareket ettirdik. Sen de iki eksen robot kol projesindeki pan-tilt mekanizmasına HC05 bluetooth modülü bağlayarak sesli komutlar ile ya da butonlar ile mekanizmayı kontrol edebilirsin. Aynı şekilde bu projedeki robot arabayı sesli komutlar yerine butonlar kullanarak kontrol edebileceğin bir mobil uygulama deneyebilir ya da MIT Appinventor editörü ile projene özel mobil uygulama geliştirebilirsin. 

HC05 Bluetooth modülü ile sadece motor sürücü ve motor değil PicoBricks üzerindeki diğer modülleri de çalıştırabilirsin. Örneğin, mobil uygulama üzerinden RGB ledi dilediğin renkte yakabilir, DHT11 modülünden sıcaklık ve nem değerlerini, LDR sensör üzerinden ışık değerlerini okuyabilir, OLED ekrana yazılar yazdırabilirsin.  MIT Appinventor editörü ile bu işlemler için özel olarak yazılmış bir mobil uygulama ve uygulamadan gelen verilerin otomatik olarak çalışması için Microblocks ile yazılmış hazır kodlar var. Aşağıdaki linkten Microblocks dosyasını indirip çalıştırarak ve android apk dosyasını indirip telefonuna kurarak tüm bu özellikleri çalıştırabilirsin. 

https://drive.google.com/file/d/11Qg6AwgKb9OH6EtXWw5mDEEhwdHA9MSp/view?usp=drivesdk

Projenin MicroPython Kodları

from machine import Pin, UART
from utime import sleep

uart = UART(0,9600) #If connection cannot be established, try 115200.
m1 = Pin(21, Pin.OUT)
m2 = Pin(22, Pin.OUT)

m1.low()
m2.low()

while True:
    sleep(0.05)
    if uart.any():
        cmd = uart.readline()
    if cmd==b'F':
        m1.high()
        m2.high()
    elif cmd==b'B':
        m1.high()
        m2.low()
    elif cmd==b'R':
        m1.high()
        m2.low()
    elif cmd==b'L':
        m1.low()
        m2.high()
    elif cmd==b'S':
        m1.low()
        m2.low()
    cmd=""

Projenin Arduino C Kodları

void setup() {
  Serial1.begin(9600);
}

void loop() {
  if (Serial1.available() > 0) {
 
      char sread = Serial1.read();
      Serial.println(sread);
      
      if (sread == 'f') {
      Forward();
    } else if(sread == 'b'){
      Backward();
    } else if(sread == 'r'){
      Turn_Right();
    } else if(sread == 'l'){
      Turn_Left();
    } else if(sread == 's'){
      Stop();
    }
  }
}

void Forward(){
  digitalWrite(21,HIGH);
  digitalWrite(22,HIGH);
  delay(1000);
  digitalWrite(21,LOW);
  digitalWrite(22,LOW);
}
void Backward(){
  digitalWrite(21,HIGH);
  digitalWrite(22,LOW);
  delay(1000);
  digitalWrite(21,LOW);
  digitalWrite(22,LOW);
}
void Turn_Left(){
  digitalWrite(21,LOW);
  digitalWrite(22,HIGH);
  delay(500);
  digitalWrite(21,LOW);
  digitalWrite(22,LOW);
}
void Turn_Right(){
  digitalWrite(21,HIGH);
  digitalWrite(22,LOW);
  delay(500);
  digitalWrite(21,LOW);
  digitalWrite(22,LOW);
}
void Stop(){
  digitalWrite(21,LOW);
  digitalWrite(22,LOW);
  delay(1000);
}

Arduino kodlarını yükledikten sonra aşağıdaki linkten android uygulamayı indirerek terminal modunu aç ve araç hareketleri için f,b,r,l,s harflerini kullan.

https://play.google.com/store/apps/details?id=com.giumig.apps.bluetoothserialmonitor&hl=tr

Önceki İçerik
Sonraki İçerik

Son Çıkan Yazılar

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz