Arduino Bluetooth İle Motor Kontrolü
Arduino ile büyük projelere adım atmak istiyorsak motor kontrolünü öğrenmek zorundayız. İçerisinde motor elemanı olan bir projede kullanılacak motoru daima aracı bir eleman ile Arduino’ya bağlamak en mantıklı iş olacaktır. Bu sayede oluşabilecek herhangi bir arızada Arduino kartına bir zarar gelmez iken, arıza tespiti de kolaylaşır. Piyasada çok sayıda motor sürücü entegreleri bulunmaktadır. Biz bu projede L293D entegresini kullanacağız. Akıllı cihazımız ile dc motoru kontrol etmek için bize lazım olan elamanlara şimdi göz atalım.
Kullanılan Malzemeler
- 1 adet ARDUİNO UNO,
- 1 adet HC-05 Bluetooth modülü,
- 1 adet L293D Motor Sürücü Entegresi,
- 1 adet DC Motor,
- 1 adet Breadboard ve çeşitli devre yapım elemanları.
Tasarım
Arduino Uno kartı ile dc motor arasında L293D motor sürücü entegresini kullanacağımızı söylemiştik. L293D’yi daha yakından inceleyecek olursak; toplamda 16 adet uca sahiptir. Bunlardan 4’ü giriş (INPUT), 4’ü çıkış pinidir. Yine 4 adet topraklama (GND) ucuna sahiptir. Kalan 4 uçtan 2’si yetki (ENABLE), 2’si de pozitif besleme ucudur.
Devrenin geneline baktığımızda Uno kartının 3v3 pozitif besleme ucu devre enerjisi için breadboard pozitif şeridine, Gnd negatif besleme ucu ise breadboard negatif şeridine verilmiştir. Kartın dijital 3, 4, 5 uçları L293D motor sürücü entegresinin giriş ve yetkilendirme uçlarına bağlanmıştır. Kartın seri haberleşme TX ve RX uçları HC-05 bluetooth modülünün RXD ve TXD pinleri ile birleştirilmiştir.
Kodlar
Bu projede en büyük avantajlarımızdan birisi mobil tasarıma gerek olmaması. Devre ile iletişime geçmek için gerekli olan Android uygulamayı PlayStore mağazasından BlueTerm programını indirerek gerçekleştirebileceğiz. Uygulamadan biraz bahsetmek gerekirse; kendisine ait seri haberleşme sistemi ile etkin olan bluetooth modüllü cihazı (projede Arduino’yu) bularak iki cihazı etkileşime geçiren bir uygulamadır.
Arduino kodlamamızda giriş, çıkış pinlerini belirledikten sonra seri haberleşmeyi başlatacağız. Daha sonrasında ise mobil cihazımızdan gelecek haberi bekleyeceğiz. Bu haberler mobil cihazdan 0,1,2 numaralarına basılması ile karta gelecektir. 0 numarasına basıldığında motor duracak, 1 numarasına basıldığında motor sağa, 2 numarasına basıldığında ise sola dönecektir. Bu şekilde Android tabanlı mobil bir cihaz ile Arduino sistemli bir devreyi kontrol etmiş olacağız.
Şimdi kodlarımıza bakalım.
int motorPin1 = 3; // L293D 2.pin int motorPin2 = 4; // L293D 7.pin int enablePin = 5; // L293D 1.pin int durum; int bayrak=0; void setup() { // giriş-çıkış pinlerinin ayarlanması pinMode(motorPin1, OUTPUT); pinMode(motorPin2, OUTPUT); pinMode(enablePin, OUTPUT); // motorun çalışabilmesi için yetki pinini(enablePin) lojik-1 yapıyoruz digitalWrite(enablePin, HIGH); // bluetooth modül ile seri iletişim başlatıldı Serial.begin(9600); } void loop() { //veri alışverişi olursa o anki motorun durumu okunsun ve kayıtedilsin if(Serial.available() > 0){ durum = Serial.read(); bayrak=0; } //eğer mobil cihazdan "0" verisi gelirse motor dursun if (durum == '0') { digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, LOW); if(bayrak == 0){ Serial.println("Motor: kapalı"); bayrak=1; } } // eğer mobil cihazdan "1" verisi gelirse motor sağa dönsün else if (durum == '1') { digitalWrite(motorPin1, LOW); digitalWrite(motorPin2, HIGH); if(bayrak == 0){ Serial.println("Motor: sağa dönüyor"); bayrak=1; } } // eğer mobil cihazdan "2" verisi gelirse motor sola dönsün else if (durum == '2') { digitalWrite(motorPin1, HIGH); digitalWrite(motorPin2, LOW); if(bayrak == 0){ Serial.println("Motor: sola dönüyor"); bayrak=1; } } }