Ses kontrollü robot uzun yıllardır üzerinde çalışan yapay zeka sistemlerinin başında yer almaktadır.Robot aldığı sesli komutları işleyerek yerine getirmektedir.Bu projemizde robotumuz söylenen komutlara göre hareket etmesi amaçlanmıştır.Andoid telefondaki sesi yazıya dönüştürme uygulaması ile söylediğimiz komutu yazıya çevirir.Yazıya çevrilen komut bluetooth üzerinden arduinoya aktarılır.Burada işlenerek algoritmada karşılığı olan fonksiyon gerçekleşerek robotun hareketi sağlanır.
Malzemeler:
- Arduino UNO
- Yapboz Robot Kiti
- Hc-06 bluetooth modülü
- Yapboz shield
- Batarya
- Kontrol için android uygulaması
- Hcsr-04 ultrasonik sensör

// Proje Hocam - Yapboz Ses Kontrollü Robot
#include <Servo.h>// servo motor kütüphanesi
#include <NewPing.h>//ultrasonik sensör kütüphanesi
String voice;
//motor pinleri
#define SolMotorileri 10
#define SolMotorGeri 11
#define SagMotorileri 9
#define SagMotorGeri 8
#define Sol_motor_PWM 6
#define Sag_motor_PWM 5
//sensör pinleri
#define USTrigger 13
#define USEcho 12
#define Maksimum_uzaklik 100
Servo servo; //servo motor tanımlama
NewPing sonar(USTrigger, USEcho, Maksimum_uzaklik);//ultrasonik sensör tanımlama
//kullanılacak eleman tanımı
unsigned int uzaklik;
unsigned int on_uzaklik;
unsigned int sol_uzaklik;
unsigned int sag_uzaklik;
unsigned int zaman;
// program ilk çalıştığında sadece bir kez çalışacak programlar
void setup()
{
pinMode(Sol_motor_PWM, OUTPUT);
pinMode(Sag_motor_PWM, OUTPUT);
analogWrite(Sol_motor_PWM,255);
analogWrite(Sag_motor_PWM,255);
Serial.begin(9600); //iletişim ayarı
//motor çıkışları
pinMode(SolMotorileri, OUTPUT);
pinMode(SolMotorGeri, OUTPUT);
pinMode(SagMotorileri, OUTPUT);
pinMode(SagMotorGeri, OUTPUT);
servo.attach(2); //servo pin tanımı
}
// sonsuz döngü
void loop() {
while (Serial.available()){ //Okumak için kullanılabilir bayt olup olmadığını kontrol et
delay(10); //10 milisaniye bekle
char c = Serial.read(); //Seri okuma
if (c == '#') {break;} // # tespit edildiğinde döngüden çık
voice += c; //Ses = ses + c Steno
}
if (voice.length() > 0) {
Serial.println(voice);
if(voice == "*ileri"||voice == "*ileri git") {ileri();}
else if(voice == "*geri"||voice == "*geri gel"){geri();}
else if(voice == "*sağa dön"||voice == "*sağ") {sag();}
else if(voice == "*sola dön"||voice == "*sol") {sol();}
else if(voice == "*dur"||voice == "*arabayı durdur") {dur();}
else if(voice == "*sol ileri"){sol(); delay(100); ileri();}
else if(voice == "*sağ ileri"){sag(); delay(100); ileri();}
else if(voice == "*sol geri"){sol(); delay(100); geri();}
else if(voice == "*sag geri"){sag(); delay(100); geri();}
else if(voice == "*ileri git dur"||voice == "*biraz ileri git") {ileri(); delay(500); dur();}
else if(voice == "*geri gel dur"||voice == "*biraz geri gel") {geri(); delay(500); dur();}
else if(voice == "*sola dön dur"||voice == "*biraz sola dön") {sol(); delay(500); dur();}
else if(voice == "*sağa dön dur"||voice == "*biraz sağa dön") {sag(); delay(500); dur();}
else if(voice == "*sola bak"||voice == "*soluna bak") {solabak();}
else if(voice == "*sağa bak"||voice == "*sağına bak") {sagabak();}
else if(voice == "*önüne bak"||voice == "*öne bak") {onunebak();}
else if(voice == "*engel"||voice == "*engel algıla"){engel();}
voice="";}}
// robotun yön komutları
void ileri()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorGeri, LOW);
digitalWrite(SagMotorileri, HIGH);
}
void geri()
{
digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorGeri, HIGH);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, HIGH);
}
void sag()
{
digitalWrite(SolMotorileri, LOW);
digitalWrite(SolMotorGeri, HIGH);
digitalWrite(SagMotorGeri, LOW);
digitalWrite(SagMotorileri, HIGH);
}
void sol()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, HIGH);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, HIGH);
}
void dur()
{
digitalWrite(SolMotorGeri, LOW);
digitalWrite(SolMotorileri, LOW);
digitalWrite(SagMotorileri, LOW);
digitalWrite(SagMotorGeri, LOW);
}
void sagabak()
{
servo.write(0);
delay(100);
}
void solabak()
{
servo.write(180);
delay(100);
}
void onunebak()
{
servo.write(90);
delay(100);
}
void ledyak()
{
digitalWrite(53,HIGH);
}
void ledkapat()
{
digitalWrite(53,LOW);
}
// sensörün mesafe ölçümü
void sensor_olcum()
{
delay(50);
zaman = sonar.ping();
uzaklik = zaman / US_ROUNDTRIP_CM;
}
void engel()
{
delay(500);
servo.write(90);
sensor_olcum();
on_uzaklik = uzaklik;
if(on_uzaklik > 35 || on_uzaklik == 0)
{
ileri();
}
else
{
dur();
servo.write(180);
delay(500);
sensor_olcum();
sol_uzaklik = uzaklik;
servo.write(0);
delay(500);
sensor_olcum();
sag_uzaklik = uzaklik;
servo.write(90);
delay(500);
if(sag_uzaklik < sol_uzaklik)
{
sol();
delay(500);
ileri();
}
else if(sol_uzaklik < sag_uzaklik)
{
sag();
delay(500);
ileri();
}
else
{
geri();
}
}
}
ahmet gedik –
Yemin ederim ben bu kadar özenen site daha önce görmemiştim .. 🙂 adam süper paketlemiş ve içine gönül hoş olsun diye jelibon koydurtmuş .. Site Müthiş
Hasan –
Hocam montaj için kullanım kılavuzu da geliyor mu
Proje Hocam –
ürünü kurulu olarak gönderiyoruz Hasan bey
Halil (doğrulanmış kullanıcı) –
Android için hangi uygulamayı kullanmalıyız
Bektaş solmaz –
Android için hangi uygulamayı kullanmamız gerekiyor
Proje Hocam –
AMR Voice uygulaması kullanılmaktadır.
bandiefe1903 –
Projenin Yapboz Kodlamasını Öğrenebilir Miyim ?
Proje Hocam –
kodlar sayfaya eklenmiştir