Arduino bluetooth kontrollü robot araba yapımı projemizde –ki doğrudan bizim elimizden girilen ilk proje- basit bir araç platformu kullanılarak uzaktan kontrollü elektromekanik bir sistem yapmak amacındayız. Projede Arduino UNO R3, HC06 bluetooth modülü, L298P motor shield, 12V kuru akü, 4 adet redüktörlü DC motor ve pleksiglass gövde kullanılmıştır. Buradaki amaç android tabanlı bir telefon ile bluetooth üzerinden bir aracın kontrol edilmesidir. Bu uzaktan kontrollü araç projesinin ilk aşamasıdır. Diğer aşamalarda kızılötesi kumanda ve ESP8266 yardımıyla bilgisayar üzerinden kontrol edilecektir.
Aduino Bluetooth Kontrollü Robot Araba Yapımı
Bir sistemin kontrol edilmesi için o sistemle bir iletişimin kurulması gerekmektedir. Asıl mesele iletişimin nasıl bir ortamda ve hangi şartlar altında (mesafe, ortam, elektromanyetik alan, hız, vb.) gerçekleşeceğini belirlemektir. Ardından bütün bu şartlar göz önünde alınarak en uygun iletişim biçimi saptanmalıdır. Örneğin bu projede çok uzak mesafeden erişim gerekmemekle birlikte kablosuz bir protokol kullanılmalıdır. Bu durumda bluetooth bizim işimizi çözmektedir. Fakat çok daha uzak mesafelerden ulaşmak istendiği zaman internet gibi daha kapsamlı bir iletişim protokolü kullanmak gerekecektir.
Arduino bluetooth kontrollü robot araba yapımı projemiz de yazılım kısmına bakılacak olursa gömülü yazılım Arduino’nun arayüzü ile, android yazılımı ise App Inventor programı ile yazılmıştır. Android cihazdan gönderilen veriler, HC06 bluetooth modülü üzerinden Arduino UNO’ya gönderilmektedir. Arduino ise gelen verilerin gerekli şartları sağlaması halinde L298 Motor Shield’i tetikleyerek motorların gereken yön ve hızda dönmesini sağlamaktadır.
L298 Motor Shield, çoğu motor sürücü kartların aksine hem 2A gibi yüksek akım değerlerinde çalışabilmesi hem de modüler olarak üzerinde çevre elemanların takılmasını sağlayan soketler bulundurması açısından diğer sürücü kartlarından ayrılmaktadır. Üzerinde dahili olarak DC, step ve servo motorları için soketler bulunduran Shield, buna ilaveten bluetooth ile dijital ve analog pinler için de soketler barındırmaktadır. Bu özellikleri sayesinde çevre elemanları da Shield üzerine takılabilmekte ve bütün bir yapı ihtiva etmektedir.
L298 motor shield, çoğu motor sürücüye göre daha güçlü ve nitelikli bir sürücüdür. Üzerinde step, DC ve servo motorların takılabileceği soketler bulundurduğu gibi HC06 bluetooth modüllerinin takılabileceği 4 pinli soket de barındırmaktadır. L298P entegresinin güç verdiği motor sürücüde aynı anda 2 DC motor veya 1 step/servo motor sürülürken kanal başına 2A akım verebilmektedir. Ayrıca üzerinde bulundurduğu klemensler yardımıyla motor enerjisi harici bir kaynaktan alınabilmektedir. Ayrıca shield üzerindeki buzzer sayesinde istenen şartlarda ses vermesi sağlanabilmektedir.
4WD Araç Platformu (DIY) - Arduino Bluetooth Araç Yapımı
Arduino bluetooth robot araba yapımı kiti demonte olarak gelen bir araç kitidir. Ürünün içerisinde, gerekli olan bütün mekanik parçalar ile motor ve tekerlekler bulunmaktadır. Fakat kit içeriğinde elektronik sistemin bulunmaması nedeniyle gerekli olan bu sistemin kullanıcı tarafından tasarlanması gerekir. Araç üzerinde, tasarladığınız elektronik kartlar ve sensörleri kolayca yerleştirebileceğiniz alanlar bulunmaktadır.
Kit İçeriği
• 4 Adet – 65mm çaplı tekerlek.
• 4 Adet – Plastik dişlili redüktörlü motor + enkoder diski.
• 2 Adet – Alt ve üst olmak üzere plexiglass araba gövdesi.
• Pil yuvası.
• Mekanik ve elektronik bağlantı parçaları.
http://www.robocombo.com/4WD-Arac-Platformu-DIY,PR-1135.html
L298 Motor Sürücü Shield
L298 Motor Shield, üzerinde barındırdığı VMS klemensinden veya Arduinonun Vin pininden beslenebilmektedir. VMS klemensinden verilen enerji shield’e bağlı tüm motorların beslenmesinde kullanılmaktadır. Ayrıca bu girişten verilen enerji shield üzerindeki OPT jumperi kullanılarak Arduinonun Vin pinine bağlanmaktadır. Eğer Arduino ve Shield ayrı ayrı beslenirse bu jumper pinlerinin birbirinden ayrılması gerekir. Aynı durum Arduino beslemesi için de geçerlidir. Arduinonun DC soketinden verilen enerji eğer OPT jumperi aktifse aynı zamanda shield ile motorları da besler. Motorların fazla akım çekmesi durumunda arduinodan yapılan besleme sıkıntı doğurabilmektedir ve VMS pininden yapılan enerji daha avantajlıdır.
Motor Shield üzerindeki 4 pinli bluetooth soketi Arduino’nun TX ve RX pinleri ile 3,3V ve GND pinlerine bağlıdır. HC06 bluetooth modülü direk bu pinlere bağlanarak kolayca kullanılabilmektedir.
Teknik Özellikler
• Tetikleme gerilimi: 5V
• Motor Besleme Gerilimi (Vin Pini Bağlı Olduğu Durumda) : 7-12V
• Motor Besleme Gerilimi (Vin Pini Bağlı Değilse) : 4,8-24V
• Maksimum Motor Akımı: 2A
• Motor A Pinleri:
• D12: Yön Belirleme Pini
• D10: PWM Girişi
• Motor B Pinleri:
• D13: Yön Belirleme Pini
• D11: PWM Girişi
• Buzzer Pini: D4
https://www.robocombo.com/Arduino-L298P
HC06 Bluetooth Modülü
HC06 Bluetooth Modülü, üzerinde CSR firmasına ait BC417 bluetooth çipi bulunan ve Bluetooth 2.0+EDR destekleyen bir karttır.
HC06 modülünün iki farklı modeli vardır. İlk modelde (HC06 Bluetooth Modülü-A2E7X) çip ve çeşitli devre elemanları bir kart üzerinde dizilmiş olarak bulunmaktadır. Ayrıca kart üzerinde gerekli anten dizaynı optimize edilmiş olarak gelmektedir. Bu tip kartlar PCB tasarımlarında lehimleme kolaylığı açısından daha kullanışlıdır.
İkinci ve daha çok tercih edilen modelde (HC06 Bluetooth Modülü (Pin Çıkışlı)-A2E7Y) ise ilk modelin gerekli pinleri ve haberleşme lojik seviyesi ayarlanmış şeklinde bulunmaktadır. Bu modelin üzerinde ikinci bir kart bulunup gerekli pinlerin dışarı alınması sayesinde herhangi bir lehimleme yapılmadan kullanıma uygundur. Böyle bir tasarım hobi ve robotik uygulamalarda kullanım kolaylığı açısından idealdir.
Modülün haberleşme bağlantısı serial(UART) olduğundan hızlı ve kolay bir kullanımı vardır. Ayrıca bu pinler yardımıyla AT komutlarını kullanarak modülün baud rate değeri, isim, şifre gibi çeşitli özellikleri değiştirilebilmektedir.
HC06 modülü varsayılan olarak Slave modda çalışmaktadır. HC05 modülü ise hem Master hem de Slave olarak kullanılabilmektedir.
Özellikler
• Bluetooth Çipi: CSR BC417
• Bluetooth Versiyonu: Bluetooth 2.0+EDR(Enhanced Data Rate)
• Hafıza: Harici 8Mbit Flash
• Çıkış Gücü: -4 ~ +6dBm
• Çalışma Frekansı: 2.4GHz
• Hassasiyet: -80dBm
• Çalışma Gerilimi: 1.8 – 3.6V(Tipik: 3.3V)
• Çalışma Akımı(Max): 40mA
• Çalışma Sıcaklığı: -40 ~ +85 °C
• Haberleşme Arayüzü: UART
• Çalışma Alanı: 10m
• Boyutlar(Modül): 27x13x2mm
• Boyutlar(Modül Kartı): 43x16x7mm
http://www.robocombo.com/HC06-Bluetooth-Modulu-Pin-Cikisli
12V 1.3Ah Kuru Akü
Akü, elektrik enerjisini kimyasal enerji olarak depolanmasını sağlayan ve yeri geldiğinde depoladığı kimyasal enerjiyi elektrik enerjisine dönüştüren cihazdır. Ayrıca akülerle yalnızca DC gerilim depolaması yapılabilmektedir.
• Teknik Özellikler
• Nominal Voltaj: 13,5 – 13,8V
• 20Hr Kapasitesi: 1,3Ah
• Şarj Voltajı: 14,4 – 14,7V
• Boyut: 97x2551x57mm
• CE sertifikalı
Projede araç kiti üzerine eklenen Arduino UNO ile L298 Motor Sürücü Shield kullanılarak aracın kullanılması amaçlanmıştır. Uzaktan kontrol edilmesi için Android telefon ile HC06 Bluetooth modülü kullanılmıştır. Aracın üzerindeki sistemin çalıştırılması için gereken güç ise 12V kapasiteli bir kuru aküden karşılanmıştır.
http://www.robocombo.com/12V-13Ah-Kuru-Aku,PR-423.html
Aracın Arduino ve Android kodları ise şöyledir:
Arduino Kodu
[c]
int pwm1 = 10;
int pwm2 = 11;
int yon1 = 12;
int yon2 = 13;
int gelenVeri = 0;
void setup()
{
pinMode(pwm1, OUTPUT);
pinMode(pwm1, OUTPUT);
pinMode(yon1, OUTPUT);
pinMode(yon2, OUTPUT);
digitalWrite(pwm1, LOW);
digitalWrite(pwm2, LOW);
digitalWrite(yon1, LOW);
digitalWrite(yon2, LOW);
Serial.begin(9600);
}
void MotorKontrol(int mYon1, int mYon2, int pwmGiris)
{
digitalWrite(yon1, mYon1);
digitalWrite(yon2, mYon2);
digitalWrite(pwm1, pwmGiris);
digitalWrite(pwm2, pwmGiris);
}
void loop()
{
if (Serial.available() > 0)
{
gelenVeri = Serial.read();
if (gelenVeri == 10) // İleri
{
MotorKontrol(LOW, LOW, HIGH);
}
else if (gelenVeri == 20) // Geri
{
MotorKontrol(HIGH, HIGH, HIGH);
}
else if (gelenVeri == 30) // Sol
{
MotorKontrol(HIGH, LOW, HIGH);
}
else if (gelenVeri == 40) // Sağ
{
MotorKontrol(LOW, HIGH, HIGH);
}
else // Başka bir veri gelirse dur
{
MotorKontrol(LOW, LOW, LOW);
}
}
}
[/c]
Arduino kodu, tamamen seri port üzerinden veri okuma ve okunan veriye göre dijital çıkışların high veya low yapma esasına dayanmaktadır. Bunun nedeni ise Android telefondan gelen verilerdir. Byte türündeki bu değerler okunarak gerekli şartları sağlaması durumunda motor sürücü tetiklenmektedir. Örneğin “10” değeri geldiği zaman araç ileri gidecek şekilde motor sürücüsü tetiklenmektedir. Hiçbir şartın sağlanmaması durumunda ise sürücü yine tetiklenerek motorların çalışmaması sağlanmaktadır. App Inventor ile yazılan Android blokları ise şu şekildedir:
Arduino Robot Araba Yapımı Kod Blokları
Android programın arayüzüne bakıldığında 4 adet yön butonu, 1 adet Bluetooth arama butonu ile Bluetooth durum label’i görülmektedir. Projede bulunan HC06 bluetooth modülü ile telefonun önceden eşleştirilmiş olması gerekmektedir. Eşleştirdikten sonra telefonun bluetoothu açılarak programa öyle giriş yapılır. Ardından “Bağlan” butonuna tıklanarak bulunan Bluetooth cihazlarından HC05 seçilerek telefonu aygıta bağlayın. Artık araç kullanmaya hazır hale gelmiştir.
Resimde görülen bloklar App Inventor ile yazılmış Android kodlarıdır. Kodun temel olarak Bluetooth cihazlarına bağlanmak ve her butona basıldığında ve el kaldırıldığında bluetooth cihazına veri gönderilmesi esasına dayanmaktadır. Butona basıldığı zaman hangi yöne hangi hızda gitmesi gerektiğine dair, el butondan kaldırıldığında ise motorlara verilen enerjinin kesilmesi için veri gönderilmektedir. Arduino tarafında ise Bluetooth modül ile alınan veriler gerekli şartları sağladığı zaman motorlara hareket verilmekte, şartlar sağlanmazsa motora giden enerjinin kesilmektedir.
VIDEO