Ardunio ve ses ile çalışan robot projesi
Yüksek okuldaki öğrencilerimle beraber hazırladığımız ses tanıyarak hareket eden robot projemizin tüm aşamaları ve kodunu sizinle paylaşacağım. Şimdiden iyi çalışmalar…
Gerekli Malzemeler:
- Ardunio Uno
- Adafruit Motor Shield(L293)
- Voice Recognition Module V2 (sesle kontrol modülü)
- PL2303 TTL modul
- 4 adet 6v dc motor
- 4 adet tekerlek
- Özel yapım robot gövdesi
- 7.4 v lipo pil
Adafruit Motor Shield(L293): Motor shield ile , 2 Servo Motor + 4 DC motor ve 2 Step motor çalıştırabilmekteyiz . Üzerinde bulunan L293D entegreleri , motor kontrolünü sağlayan entegrelerdir . Yukarıda görmüş olunan M1 , M2 , M3 , M4 çıkışlarımız , 4 adet çalıştırabileceğimiz DC motor çıkışlarıdır . Klemenslerde aynı zamanda GND bulunur . Aynı zamanda , EXT_PWR klemensine , motorumuzu besleyecek gerilimi vermeliyiz . Çünkü Ardunio üzerindeki gerilim , DC motoru çalıştırmaya yetmez . Her motor çıkışını kontrol etmek için , AF Motor kütüphanesini yüklememiz gerekmektedir. Böylece kolaylıkla her çıkışı kontrol edebiliriz . Motor girişlerimize , DC motorumuzun uçlarını bağlıyoruz . Uçların yönü mühim değildir . DC motorun 1 bacağına 1 , diğer bacağına 0 vererek bir yöne , tam tersini uygulayarak da diğer yöne kontrolünü sağlarız . Hangi çıkışları kullanacağımıza karar verip , bağlantıları yaptıktan sonra programlama kısmına geçebiliriz . Voice Recognition Module V2 :Ses tanıma modülü ses komutlarıyla çalışır . Seri port arabirimi aracılığıyla yanıt verir ve bununla birlikte araba veya diğer elektrikli cihazları kontrol edebiliriz. Bu modül hafızasında 15 adet kelime tutabilir. Ses tanıma kartına hoparlör bağlıdır, hoparlör aracılığıyla ses karta giderek kartı komutlara göre aktif hale getirir.
- Voltaj: 4.5-5.5V Akım: <40mA Dijital Arabirimi: 5V TTL seviyesi UART ara yüzü ve GPIO Analog Arabirim: 3.5mm mono-kanal mikrofon konektörü + mikrofon pin ara yüzü Boyutu: 30 mm x 47.5 mm Tanıma doğruluğu:% 99 (İdeal ortamda)
Ses kaydında kullanılan AT komutları :
- 0x11 kodu ile ses kayıt işlemine başladık .
- 0x41 kodu ile cihaz içeriğini sıfırlamada kullandık.
- Resetlemek ve fabrika ayarları için RX ve RX bacaklarını kısa devre etmek yeterli oluyor.
PL2303 TTL modülü: Bu modül, seri port üzerinden komutlar göndererek Voice Recognition,H-05,hc-06 bluetooth vb.. modüllerin yapılandırılmasında kullanılır.
- Yüksek hızda flaş stabilize, kontrolör PL2303HX
- 500 mA aşırı akım koruması
- iki tane veri iletim göstergesi gerçek zamanlı veri aktarım durumunu izleyebilirsiniz
- 3.3V ve DDWRT 5V pinleri mevcut,
- Yüksek kalite şeffaf makaron kapamalı
- Win7 sistemi desteği (win8 de henüz çalıştıramadım)
AccessPort137 programı yardımıyla terminal bağlantısını gerçekleştirdik. Program ayarları aşağıdaki gibi olmalı; Serial port ayarları:
- Baud rate: 9600
- Parity bit: None
- Data bit: 8
- Stop bit: 1
- Send format: Hex
- Receive format: Char
AA 11 komutu vererek ses kaydını başlatıyoruz. Toplam 3*5 = 15 adet ses komutu verebiliyoruz.START yazısını görünce ses komutunu söylüyoruz, Again yazarak bizden tekrar etmemizi istiyor.Eğer iki ses uyumlu olursa Finish one yazıyor yoksa Different – uyumsuz diye mesaj geliyoruz ve bizden aynı tonda ses komutu vermemizi bekliyor. Bu şekilde 5 tane komut girince Group 1 finished diyor ve ikinci komut kütüphanesine geçiyor istersek devam etmeye biliriz. Artık ses komutumuzu Ardunioda kullanabiliriz. Robotun yapım aşama görüntüleri :
Robotun Ardunio kodu :#include <AFMotor.h> byte com = 0; //reply from voice recognition AF_DCMotor motor1(1); // sağ ön motor ayarı AF_DCMotor motor2(2); // sol ön motor ayarı AF_DCMotor motor3(3); // sol arka motor ayarı AF_DCMotor motor4(4); // sağ arka motor ayarı void setup() { Serial.begin(9600); //serihaberleşme içiçn port ayarı yapılıyor delay(2000); // ses tanıma seriport haberleşme ayarı yapılıyor Serial.write(0xAA); Serial.write(0x37); delay(1000); Serial.write(0xAA); Serial.write(0x21); motor1.setSpeed(200); motor2.setSpeed(200); motor3.setSpeed(200); motor4.setSpeed(200);// motor hız ayarı — 200/255 } void loop() { while(Serial.available()) { com = Serial.read(); switch(com) { case 0x11: Serial.println(“ileri”); motor1.run(FORWARD);motor4.run(FORWARD); motor2.run(FORWARD);motor3.run(FORWARD); break; case 0x12: Serial.println(“geri”); motor1.run(BACKWARD);motor4.run(BACKWARD); motor2.run(BACKWARD);motor3.run(BACKWARD); break; case 0x13: Serial.println(“sola”); motor1.run(FORWARD);motor4.run(FORWARD); motor2.run(BACKWARD);motor3.run(BACKWARD); break; case 0x14: Serial.println(“sağa”); motor1.run(BACKWARD);motor4.run(BACKWARD); motor2.run(FORWARD);motor3.run(FORWARD); break; case 0x15: Serial.println(“dur”); motor1.run(RELEASE);motor4.run(RELEASE); motor2.run(RELEASE);motor3.run(RELEASE); break; } } }
Motor sürücü kütüphanesini indirmek için tıklayınız.
Robotun Videosu: