Arduino kullanarak Bluetooth ile DC motor hız ve yön kontrolü
Bluetooth tabanlı dc motor hız ve yön kontrolü için Gerekli Bileşenler:
Bu proje için gerekli bileşenler aşağıdaki gibidir
- Arduino Uno
- HC-06 Bluetooth cihazı
- L293D Motor Kontrolörü IC
- DC Motorlar
- 9V pil
- Bağlantı telleri
- Breadboard
Bluetooth tabanlı dc motor hız ve yön kontrolünün Devre Şeması
Öncelikle L293D IC'yi Arduino ile bağlayacağız. L293D motor kontrolörü IC'nin Arduino ile bağlantıları aşağıdaki gibidir
- Arduino'nun 5V pini ile L293D IC'nin 1, 9, 16 numaralı pinleri.
- L293D IC'nin Pin 2'si Giriş pinidir; Arduino'nun 6 numaralı pinine bağlayın.
- L293D IC'nin 3 numaralı pini motorun bir ucuna ve motorun diğer ucunu L293D'nin 6 numaralı pimine bağlayın.
- 4, 5, 12 ve 13 numaralı pinler, L293D IC'nin GND pinleridir; bunları Arduino'nun GND'sine bağlayın.
- L293D IC'nin Pin 7'si Giriş pinidir; Arduino'nun 5 numaralı pinine bağlayın.
- Pin 8, L293D IC'nin VCC pinidir, bunu akünün pozitif ucuna ve akünün negatif ucunu Toprağa bağlayın.
- L293D IC'nin Pin 10'u, ikinci motor için Giriş pinidir; Arduino'nun 9 numaralı pinine bağlayın.
- L293D'nin 11 numaralı pini motorun bir ucuna ve motorun ikinci ucunu L293D'nin 14 numaralı pimine bağlayın.
- L293D'nin Pin 15'i, ikinci motor için ikinci Giriş pinidir; Arduino'nun 10 numaralı pinine bağlayın.
Daha sonra HC-06 Bluetooth cihazının bağlantılarını Arduino ile yapın. Bluetooth cihazı HC-06'nın Arduino ile bağlantıları aşağıdaki gibidir
- HC-06'nın VCC'sinden Arduino'nun 5V'una
- HC-06'nın GND'sinden Arduino'nun GND'sine
- HC-06'dan Arduino'nun RX pinine TX
- HC-06'nın RX pinini Arduino'nun TX pinine
Bluetooth tabanlı dc motor hız ve yön kontrolünün çalışması
HC-06 Bluetooth modülü, Arduino ile seri iletişim yoluyla çalışır, bu da Arduino'nun verileri Seri yoluyla gönderip alacağı anlamına gelir.Uygulamadan bilgi göndermek için önce onu yüklememiz gerekir. Şunlar arasından App yükleyebilirsiniz burada . APP'yi kurduktan sonra, onu ve seçeneklerden açın ve Bluetooth modülüne bağlayın. Bluetooth modülüne bağladıktan sonra size mavi boş ekran gösterecektir. Şimdi, oraya '1' yazacağınız zaman, sol motor hareket etmeye başlayacak ve '2' yazacağınız zaman, sağ motor hareket etmeye başlayacak ve benzer şekilde '3' yazarak her iki motor da dönecektir. saat yönünde ve '4' yazıldığında, her iki motor da saat yönünün tersine dönecektir. '0' yazıldığında, her iki motor da hareket etmeyi durduracaktır.
Bluetooth tabanlı dc motor hız ve yön kontrolü kodu
int first_motor_pin1 = 11; int first_motor_pin2 = 10; int second_motor_pin1 = 9; int second_motor_pin2 = 8; int state; int flag = 0; void setup ( ) { Serial.begin (9600); pinMode (first_motor_pin1, OUTPUT); pinMode (first_motor_pin2, OUTPUT); pinMode (second_motor_pin1, OUTPUT); pinMode (second_motor_pin2, OUTPUT); } void loop ( ) { if(Serial.available( ) > 0){ state = Serial.read( ); flag = 0; } if (state == '1') { digitalWrite (first_motor_pin1, LOW); digitalWrite (first_motor_pin2, HIGH); digitalWrite (second_motor_pin1, HIGH); digitalWrite (second_motor_pin2, HIGH); if(flag == 0){ Serial.println("Left Motor ON"); flag = 1; } } else if (state == '2') { digitalWrite (first_motor_pin1, HIGH); digitalWrite (first_motor_pin2, HIGH); digitalWrite (second_motor_pin1, HIGH); digitalWrite (second_motor_pin2, LOW); if(flag == 0){ Serial.println("Right Motor ON"); flag = 1; } } else if (state == '3') { digitalWrite (first_motor_pin1, LOW); digitalWrite (first_motor_pin2, HIGH); digitalWrite (second_motor_pin1, HIGH); digitalWrite (second_motor_pin2, LOW); if(flag == 0){ Serial.println("Both Motors Clockwise"); flag = 1; } } else if (state == '4') { digitalWrite (first_motor_pin1, HIGH); digitalWrite (first_motor_pin2, LOW); digitalWrite (second_motor_pin1, LOW); digitalWrite (second_motor_pin2, HIGH); if(flag == 0){ Serial.println("Both Motors Anti-clockwise"); flag = 1; } } else if (state == '0') { digitalWrite (first_motor_pin1, LOW); digitalWrite (first_motor_pin2, LOW); digitalWrite (second_motor_pin1, LOW); digitalWrite (second_motor_pin2, LOW); if(flag == 0){ Serial.println("Both Motors OFF"); flag = 1; } } }
Kod Açıklaması
Öncelikle motorları kontrol etmek için olan koddaki pinleri başlattık. Dört pini başlattık, ikisi birinci motoru kontrol etmek için ve diğer ikisi ikinci motoru kontrol etmek içindir. Başlattığımız durum değişkeni, Bluetooth cihazından gelecek çıkışı depolamak içindir. Başlatılan bayrak değişkeni, dizinin yalnızca durumdan sonra yazdırılmasını sağlar.
int first_motor_pin1 = 11; int first_motor_pin2 = 10; int second_motor_pin1 = 9; int second_motor_pin2 = 8; int state; int flag = 0;
Daha sonra setup fonksiyonunda tüm pinleri çıkış pinleri olarak ilan ettik çünkü çıkışı bu pinlerden L293D motor kontrol cihazına vereceğiz. Arduino'dan gelen bu çıktı, L293D motor kontrolörü IC'nin girişi olacaktır.
pinMode (first_motor_pin1, OUTPUT); pinMode (first_motor_pin2, OUTPUT); pinMode (second_motor_pin1, OUTPUT); pinMode (second_motor_pin2, OUTPUT);
Daha sonra döngü fonksiyonunda verinin mevcut olup olmadığını veya android uygulamasındaki butona basılı olup olmadığını kontrol ettik. Veriler mevcut olacaksa, durum değişkeninde saklanacaktır. Ardından bu verileri kodumuzda önceden kaydedilmiş verilerle karşılaştıracağız. Veriler eşleşirse, o zaman yazılan kod çalıştırılır ve motor buna göre çalışır.
if(Serial.available( ) > 0){ state = Serial.read( ); flag = 0; } if (state == '1') { digitalWrite (first_motor_pin1, LOW); digitalWrite (first_motor_pin2, HIGH); digitalWrite (second_motor_pin1, HIGH); digitalWrite (second_motor_pin2, HIGH); if(flag == 0){ Serial.println("Left Motor ON"); flag = 1; } }
Bahadır ÖZGEN
Electronic Robotic Coding Research and Development 1975 - ∞
Learn ForeverIf you want, let's learn together...https://roboticcode2020.blogspot.com/bahadirozgen1975@gmail.com