T.C. KTO KARATAY ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ ELEKTRİK VE BİLGİSAYAR MÜHENDİSLİĞİ ANA BİLİM DALI ULTRASONİK SENSÖR İLE RADAR OLUŞTURMA VE BLUETOOTH SENSÖR ÜZERİNDEN GELEN VERİLERE GÖRE ROBOT HAREKETLERİNİN SAĞLANMASI MİKRODALGA DERSİ PROJE ÖDEVİ FİNAL SUNUMU ALİ ÇETİNKAYA Tuğba SARAY DERS DANIŞMANI PROF. DR. MEHMET BAYRAK KONYA 2015
1. Giriş Mikrodalga teorisi dersi bu ödevin ana amacı RF ve Bluetooth modüllerin içyapılarını incelenip, aynı yazılımlar üzerinden eksikliklerinin karşılaştırılmasını planlamıştım. Sistemin genel işleyişi açısından bu iki haberleşme modülü de 2.4 GHZ üzerinde veri iletişimini sürdürmektedir. Bluetooth modül olarak HC05 modül ve Wifi modül olarakta NRF24L01 modül secilmiştir. Araştırılan konuların sonuçları açısından elimizdeki verilerin incelenip bize çıktısını grafik arayüz olarak sunabilen Visual Studio C# ile yazılmış bir yazılım ile PC üzerinde analizi yapmaktayız. Anahtar Sözcükler Mikrodalga, Wifi, Bluetooth, Konum Belirleme, Kablosuz Veri Aktarımı 2. Robotumun Genel Amacı Robotumun genel amacı ultrasonik sensörün yaptığı taramalar sonucu gelen veriler doğrultusunda kendi yönünü çizerek otonom olarak hareket almaktadır. Bunun verileri yazılan yazılım doğrultusunda radar ekranında belirerek kullanıcıya yön ve engel bilgisini vermektedir. Ayrıca robotun analog olarakta yönlendirme butonları sayesinde hareket etmektedir. 3. Projemizde Kullanılan Malzemeler 3.1. BLUETOOTH Teknolojisi HC Information Technology firmasının HC-05 Modelli ürünüdür (www.wavesen.com). Bu modüller master ve slave olmak üzere iki türdedir. Bu model hem master hem de slave olarak çalışabilmektedir. Hangi modda çalışacağını çalıştırılacağını yazılımsal olarak belirlenmektedir. Master ve slave modüllerin ayrı bir özellikleri de; master modda bağlantıyı başlatabilme durumu söz konusu iken; Slave modda sistem çalışması için gerekli olan bağlantıyı başlatma durumu olmaz. Ayrıca bağlantı hızlarını da istenen yazılım algoritması ile 2400 bauddan 115200 baunda kadar hızları ayarlanabilir. Şekil 3.1. HC-05 Bluetooth Modül
Pin No: Pin İsmi: Açıklama 1 STATE Boşta kullanılmayan pin 2 RX Veri okuma pini 3 TX Veri transfer pini 4 GND Toprak hattı 5 VCC +3.6V 6V DC Besleme hattı 6 EN Boşta kullanılmayan pin Tablo 3.1. Bluetooth modülün pin detayları. 3.2. ATMEGA 328P MİKRODENETLEYİCİSİ Bu mikroişlemcide 14 dijital giriş / çıkış işareti (6 tanesi PWM çıkışları olarak kullanılabilir), 6 analog giriş, 16 MHz seramik rezonatör, bir USB bağlantısı, bir güç girişi, bir ICSP başlık ve bir reset düğmesi vardır. Arduino Uno, mikrodenetleyici desteklemek için gerekli olan herşeye sahiptir. ( Bir USB kablosuyla kolay şekilde bilgisayara bağlanmak gibi. ) Çalışma Gerilimi : 5V Giriş Gerilimi (recommend) :7-12V Giriş Gerilimi (limits) :6-20V Dijital I/O Pinleri :14 Analog Giriş Pinleri :6 Her I / O Pin için DC Akım :40 ma 3.3V olan Pin için DC Akım :50 ma Flash Bellek :32 KB SRAM :2 KB Şekil 3.2. ATMEGA 328P Mikrodenetleyici EEPROM :1 KB Saat Frekansı :16 MHz 3.3. Arduino UNO ArduinoUno ATmega328 mikrodenetleyici içeren bir Arduino kartıdır. Arduino 'nun en yaygın kullanılan kartı olduğu söylenebilir. Arduino Uno 'nun ilk modelinden sonra Arduino Uno R2, Arduino Uno SMD ve son olarak Arduino Uno R3 çıkmıştır.
Şekil 3.3. Arduino Uno Datasheet görüntüsü 3.4. HC-SR04 Ultrasonik Sensör 2cm'den 400cm'ye kadar 3mm hassasiyetle ölçüm yapabilen bu ultrasonik sensörümüz; ses dalgaları sınıflandırılmasında 20Khz - 1Ghz aralığındaki ses sinyalleri ultrasonik ses olarak tanımlanmıştır. Bizim sensörümüz ve birçok ultrasonic sensör 40Khz frekansında ultrasonic ses üretmektedir. Burada önemli olan sesin yüksekliğinde belirleyici olan etken frekans 'tır. Ses yüksekse frekansta yüksektir. Ultrasonik ses sinyallerini insan kulağı algılayamaz. Çalışma Voltajı :DC 5V Çektiği Akım :15 ma Çalışma Frekansı :40 Hz Maksimum Görme Menzili :4m Minimum Görme Menzili :2cm Görme Açısı :15 Tetik Bacağı Giriş Sinyali :10 us TTL Darbesi Echo Çıkış Sinyali :Giriş TTL sinyali ve Mesafe Oranı Boyutları :45mm x 20mm x 15mm Tablo 3.4. HC-SR04 Sensör Detayları Şekil 3.4. HC-SR04
NOT: Sensör üzerinde 4 adet pin bulunmaktadır. Bunlar; VCC = +5v DC, GND = 0 V(Toprak), Trig = pals gönderme ve Echo = gelen sinyal pinidir. 3.5. L298 Motor Sürücü Kart üzerinde L298N motor sürücü entegresi kullanılmıştır. 24V'a kadar olan motorları sürmek için hazırlanmış olan bu motor sürücü kartı, iki kanallı olup, kanal başına 2A akım vermektedir. Teknik özellikleri açısından; Şekil 3.5. L298 Kart ENA: Sol motor kanalını aktif etme pini ENB:Sağ motor kanalını aktif etme pini MotorA:Sol motor çıkışı MotorB:Sağ motor çıkışı VCC:Besleme voltaj girişi(4.8v-24v) * Birbirinden bağımsız olarak iki ayrı motoru kontrol edebiliriz. * 2 kanal üzerinden de maksimum 2A akım verebilmektedir. * Kart üzerinde 7805 ile dahili +5v DC regülatörü vardır. * Yüksek sıcaklık ve kısa devre koruması vardır. IN1: Sol motor 1. girişi IN2:Sol motor 2. gitişi IN3:Sağ motor 1. girişi IN4:Sağ motor 2. girişi GND:Toprak bağlantısı Tablo 3.5. L298 Motor Sürücü Pin Açıklamaları. NOT: Robotta 4 adet pololu 7.5 V DC motor kullanılmıştır. Şekil 3.6. Lipo pillerin genel görünümü 3.7. Servo Motor 3.6. Güç Kaynağı ( Lipo Pil ) Robot çalışmamda 2 adet lipo pil kullanılmıştır. Piller; 1. pil = 11.1V 1350 ma, 2. pil = 7.4V 1100 ma ' dir. Tower Pro SG90 plastik dişlisi olan mini servo motordur. Sistemimde servo motoru 0 ile 180 derece arasındasın engelleri taraması için kullandım. Şekil 3.7. TowerPro SG90 NOT: Servo motor üzerinde ultrasonik sensör eklenerek tarama yapılmaktadır.
Büyüklük Ağırlık Ağırlık Zorlanma Torku @6V: Kablo Uzunluğu: 23.1 x 12.2 x 29 mm 9 g 0.1 sn/60 1.3 kg cm 15 cm 4. Projemizde Tasarlanan C# Arayüzü Tablo 3.7. Servo Motorun Teknik Detayları. Şekil 4.1. Altu V.4.1. in genel tasarım görüntüsü
5. Tasarlanan Robot Sistemin Birleştirilmesi Şekil 5.1.1. Altu_Radar Dış Görünüş 1 Şekil 5.1.2. Altu_Radar Dış Görünüş 2 6. Projemin Eklenebilecek veya Eksik olduğunu düşündüğüm noktalar Altu_Radar Robot şuan için bluetooth modül üzerinden rahatlıkla ve eksiksik şekilde çalışabilmektedir. İster PC istenirse android akıllı telefon üzerinden kontrol sistemi kumanda edilebilir.
Hem Bluetooth hem Wifi modül üzerinden sistemin çalış tırılması denenmiştir. En iyi sonuç bluetooth modül üze- rinden alınmıştır. Wifi modülün ekstra donanım gerektir- diği tespit edilmiştir. Şekil 6.1. de gösterilen NRF24L01 modül sistem üzerine eklenip mesafe attırılması yazılım üzerinde denenemedi Ama Bluetooth veri mesafesi ihtiyaç duyulan mesafe Şekil 6.1. NEF24L01 Modül kadar (50m) C# yazılımın verdiği esneklik ile düzeltilmiştir. 7. Öneri Altu_Robot şuan veri akışınında yaşanan aksaklıklar nedeniyle yazılım iyileştirmeleri üzerine çalışılmalıdır. C# grafik chart olarak eklenti kullanılabilir. Bu projede tüm chartları kendimiz oluşturduğumuzdan grafik üzerinde heryere müdahale edebilme sansımız bulunmaktadır. Hazır grafik arayüzlerin de ise sadece veri geldimi diy kontrol yapılacağından amatör olarak kullnılabilir. Profesyonel yazılım için yeterli kalmaz. Çünkü yazılımın bufferi dolduğunda c# haberleşmeside etkileneceğinden ultrasonik veri iletişiminde sıkıntılar ortaya çıkabilir. 9. Referans Kaynaklarım [3.1.] http://www.mcu-turkey.com/bluetooth-modulu-ile-bluetooth-baglantisi-kurmak [3.2.] http://www.atmel.com/images/atmel-8271-8-bit-avr-microcontroller-atmega48a- 48PA-88A-88PA-168A-168PA-328-328P_datasheet_Complete.pdf [3.3.] http://www.arduino.cc/en/main/arduinoboarduno [3.4.] http://www.micropik.com/pdf/hcsr04.pdf [3.5.] http://robot.ee.hacettepe.edu.tr/dosyalar/makaleler/l298.pdf [3.6.1] http://www.robitshop.com/111v-lipo-batarya-1350mah-25c,pr-2931.html [3.6.2] http://www.robitshop.com/74v-lipo-batarya-1050mah-25c,pr-1799.html [3.7.1.] http://www.robotistan.com/tower-pro-sg90-rc-mini-servo-motor,pr-92.html [3.7.2.] http://datasheet.sparkgo.com.br/sg90servo.pdf
9. Ekler 9.1. L298 Devre Şeması 9.2. Arduino Uno Devre Şeması Şekil 9.1. L298 Motor Sürücü Devre Şeması 9.3 Sistemin Arduino Yazılımı #include <NewPing.h> #include <Servo.h> #define TRIGGER_PIN 12 #define ECHO_PIN 11 #define MAX_DISTANCE 100 #define SERVO_PWM_PIN 5 Şekil 9.2. Arduino Uno Devre Şeması
// means -angle.. angle #define ANGLE_BOUNDS 80 #define ANGLE_STEP 1 int angle = 0; int dir = 1; // servonun kaç derece ile döneceğini belirledik. Servo myservo; NewPing sonar(trigger_pin, ECHO_PIN, MAX_DISTANCE); void setup() { Serial.begin(9600); myservo.attach(servo_pwm_pin); pinmode(trigger_pin, OUTPUT); pinmode(echo_pin, INPUT); myservo.writemicroseconds(1500); // servo 90 dereceye ayarlandı. } void loop() { delay(50); myservo.write(angle + ANGLE_BOUNDS); hesapla(angle); if (angle >= ANGLE_BOUNDS angle <= -ANGLE_BOUNDS) { dir = -dir; } angle += (dir * ANGLE_STEP); } int hesapla(int angle) { int cm = sonar.ping_cm(); Serial.println(cm, DEC); if(cm>0){ Serial.println(myservo.read()); } }