19 Nisan 2015 Pazar

Bluetooth Kontrollü Arduino Tabanlı Oyuncak Araba

Elinizdeki herhangi bir kumandalı arabayı telefonunuzla kontrol etmek istemez miydiniz?

Şimdiki yazımda aslında 3 ay önce çalışmalarına başladığım şuan tamamen hayata geçirdiğim BTCAR projemi anlatmaya başlayayım.

Malzemeler;
-Atmega 328p (Arduino Uno daki mikroçip)
-28 pin dip soket
-L293D motor sürücü entegresi
-16 pin dip soket
-HC-06 Bluetooth Modül
-3x  2'li Klemens
-Buzzer(korna için)
-2 beyaz 2 kırmızı LED
-1N4001 diyot
-7805 (5V gerilim regülatörü)
-10uF Kondansatör
-100nF Kondansatör
-16mHz Kristal Osilatör
-2x 22pF kondansatör
-Anahtar
-11.1V Li-Po pil tavsiyemdir.
-Yeteri kadar kablo
-Yeteri kadar dişi-erkek header

Adım 1;

Malzemelerin temin edinmesi. Bu konuda Karaköy'den temin edebilirsiniz.
Baskı devresi dahil herşeyinin yapmak isterseniz aşağı yukarı 80 90 TL masrafı vardır.


Adım 2;

Devrenin breadboard üzerinde kurulması denenmesi.

             Öncelikle bluetooth modülünün çalışması denetlenebilir. Bluetooth modülü boştayken aralıklarla üstündeki kırmızı led yanıp söner. Eğer bir cihaz bağlandığında ise o ışık sürekli yanmaya başlar. Bluetooth modüle bağlanmak için şifre ister. Genellikle 1234 yada 0000 gibi basit şifrelerdir. Bluetooth modül ilk iki bacağı haberleşme kısmı, üçüncü bacağı GND ve 4. bacak VCC besleme bacağıdır. Besleme gerilimi olarak önerilen 3.3V olsa da 5V vermek çok da bir sorun yaratmamaktadır. Arduino ile haberleşmesi ise en son anlatacağım.


               Güç devresi olarak standart LM7805 gerilim regülatörü kullandım. 5V atmega328p ve motor sürücü için gerekliydi. Ayrıca motor voltaj için direk kaynaktan gerilim verdim. 5V temiz ve düz bir şekilde dönüştürülsün diye iki tane kondansatörle olası gecikmelerden kaynaklı bilgi kayıpları önlensin ve devre düzgünce çalışabilsin diye.

         

                 Şimdi ise motor sürücü olarak L293D kullandım. Amalarım var bu konuda siz siz olun motorunuzun çekeceği akımı küçümsemeyin. Ona göre L298N gibi daha gelişmiş bir sürücü alın. Aşırı ısınma problemi yaşadım bu sürücüde. Sürücü normalde 600mA akım veriyor her bir motora. Zorlanma durumunda ise 0.8 - 1 A verebilmektedir. Daha büyük zorluklarda direk motor sürücü yanacaktır dikkatli olun. O yüzden arabanızın motorlarını teste tutabilirsiniz herhangi bir dc kaynak ile gerilim verin. ve aynı anda multimetre ile akımını ölçün. Bu değer sizin motorun normal çalışma akımı eğer çalışır durumda motorun ucunu tutup tekrar ölçtüğünüzde ise bu değer zorlanma akımıdır. Sürücü seçiminde datasheetlerine bakıp uygun olanı almanız en doğrusu. Ölçüm yaparken multimetrenizi de yakmamaya çalışın çünkü motor 1 A çekerken siz 200mA kanalında ölçüm yapmaya kalkarsanız muhtemelen sigortanız yanacaktır. Motor sürücü için tabiki bir beslemeye ihtiyacımız olacak. Bu beslemeyi direk Arduinodan çekmeye kalkarsak verimli bir sürüş elde edemeyiz. O yüzden datasheette yazan değerler doğrultusunda 4,5-36V'a kadar besleyebiliriz. Ben 11.1 V Li-Po ile gayet verim aldım. Sürücünün  içeriğinde ise standart H köprüsü bulunmaktadır. Bacakları ise karşılıklı simetrik olarak çalışır. Enable bacakları sürücünün o kısmının çalışıp çalışmayacağını yönetmek içindir. Lojik 1 olduğu zaman motoru sürmeye izin almış sayılırız. Lojik 1 ve 0 demek aslında voltaj seviyelerini belirtmektedir. Lojik 1 5V Lojik 0 0V olarak kabul edilir teorikte.



       Arduino ile bağlantısında ise motor sürücünün her enable ve her yön girişlerini doğrudan bağladım. Dijital pinlere bağlantı yaptım. PWM olması birşeyi değiştirmedi. Tek dikkat edilmesi gereken şey çıkışların analog verilmesi. Dijital çıkış verilirse 3.3V çıkış voltajı olacağından motor yavaş dönecektir. Ama analog çıkışlarda 5V tam veriliyor bu sayede dönüşlerde sorun ortadan kalkıyor.

Aşağıda prototip halinde denemeleri yaptığım fotoğraflar.



Adım 3;

Devrenin daha seri daha az kayıplı ve estetik açıdan ayrıca sağlam ve uzun ömürlü olması için devrenin baskı devresini yaptım.

Çizim düzenlemeler denemeler dahil 1 2 gün sürdü. Çizimde Eagle PCB programını kullandım. Daha basit arayüz gelişmiş kütüphaneleri olması ve büyüklerimin önerileri çerçevesinde kullandım.


Öncelikle schematicten devre elemanlarını özenle seçmek gerekiyor. Gerçekte olan boyutları yazıyor ona göre yerine göre cetvelle ölçmek kolaylık sağlayabilir. Çünkü bastıktan sonra eleman o yuvaya uymazsa iyi durmaz. Sonra bu çizimi yaptıktan sonra bağlantıları ne kadar kaliteli yaptık ona bakmamız lazım. Doğruluğundan emin olduğumuzda ise switch the board komutuyla artık baskı devre ekranına geçip neyin nerde olması gerektiğine karar verebiliriz.

Eğer tasarım sırasında %100 yolların kaplanmasını elde edemezseniz oranı yüksek tutup daha sonra schematic'e dönüp o bağlantı yolları arasına 0ohm diye tabir ettiğimiz aslında kablo koymak gibi birşey onlardan koyup tasarımı %100 e ulaştırmaya çalışmalıyız. Üzerine yazı vs. herşeyi yazabilirsiniz sadece yazdıktan sonra ayna komutu ile ters çevrili olması gerekir. En son çizim bitince export için siyah beyaz çıktı olmak gerek denemek için.

Her şey tamamsa doğruca Kadıköy Yazıcıoğlu İşhanının arkasındaki Cemil Copy baskı merkezine. Elinize bakır plaketinizi alıp gitmeniz de yarar var A4 boyutunda. Orda sadece tişört baskı makinesı benzeri bir şey ile bakır plakanın üzerine Aydınger transfer kağıdına basılmış devreleri üstüne koyup tostun kapağını kapatıp 10dk beklemesi yeterli oldu. Ütüyle uğraşmam derseniz gayet başarılı temiz baskı oluyor 6 TL. A4'e ne kadar devre sığdırırsanız farketmez.


Baskıyı Karaköy'de yaptırmaya kalkmayın denemeyin denettirmeyin. 120 150 TL gibi öğrenci adama düşman rakamlar verebiliyorlar. Halbuki tek katlı bu profesyonel olarak kalıpsız da yapabilirler. Neyse sonra bilen bir arkadaşınızla bunu asite atmakta sıra. Ben de sağolsun Rasim arkadaşımla birlikte asite attık.





Asitten çıkıp asetonla üzerinden mürekkebi silinmiş haldeki bakır plakayı şimdi de seri seri delme işlemine geldi. Bu konuda YTU IEEE RAS sayesinde hazır stantta tak tak 96 deliği kısa sürede delmiş oldum.



Devre hazır gibi durabilir ama yine multimetre ile yolların tek tek kontrol edilmesi gerekmektedir gözden kaçan bir ufak yolun kesintiye uğraması lehimleme yapıldıktan sonra daha büyük sorunlara yol açabilir. O yüzden tek tek kontrol ettim ve iki tane hata yakaladım sonra lehimle kapattım onları. Devre takır takır çalışmaktadır. Arabanın üzerine de ledleri takmanın sırası burda delerken havya kullanabilirsiniz ancak o havayı solumayınız plastik sonuçta. Sıcak silikonla doldurup sabitledim.







Adım 4;

Telefondan kontrolü için Android programa ihtiyacım vardı. Kendim yazmak için gerekli bilgi ve yetkinliğe sahip değildim. Google Play'de dolaşırken Bluetooth RC controller adında bir program sayesinde bu yükten kurtulmuş oldum.

Arduino kodlaması ise gayet basit. Mantığı arduino bluetooth modül aracılığıyla telefona bağlanmış olsun. Telefon bu bağlantı geçidi sayesinde ekrandaki komutları gönderdikçe arduino bunu alıp işlemesine dayanacak. Küçük if else yapılarıyla bu sorun çözülebilir. If gelen bilgi == a deyip istediğimiz yaptırabiliriz. Arabanın farlarının kontrolünde bu mantık digitalWrite(LED,HIGH) yaptır diyeceğiz. Arabayı sürerken de küçük fonksiyonlar yazmamız gereksiz kod satırlarını ortadan kaldırıp programın seri seri işlemesine yardımcı olacaktır. Burda ileri gitmesi için ana motorun bağlı olduğu kısımdaki enable girişine HIGH verip sonra ileri yada geri gitmesi için analogWrite(motorR1,HIGH); analog çıkışın sebebini yukarda anlatmıştım 3.3V - 5V davası. aynı şekilde sağ sol ileri sol ileri sağ ayrı ayrı yazdım. En son hiç bir şeye dokunmadığımızda ise motorlerın ENABLE girişlerini LOW yap diye fonksiyon yazdım benzer şekilde. Kodlar ve Eagle çizimlerimi en altta paylaşacağım.


Bu projeyi neden yaptın neden uğraştın derseniz asıl amacı hem kablosuz haberleşme, PCB dizaynı, PCB basması ve kişisel becerimin artması. Bu sayede daha çok tecrübe edindim. Proje aslında sadece asıl projemin alt yapısı için geçiş projesidir. O projeyi de yakında bitireceğim.

Bu projenin yapımında bana yardım eden

Rasim Bora Kocaoğlu
Fatih Bektaş
Ali Aydın Köse
Berkan Gürsoy
arkadaşlarıma teşekkürü bir borç bilirim.


Prototip Arabanın Videosu;

VEE ÇALIŞIR HALDEKİ VİDEOSUUUU





Çalışır haldeki videosunu çekip devre şemaları ile birlikte koyacağım.
 Araba 35cm Ferrari Sultanbeyliden temin ettim.




EKLER

Eagle Çizimi ve Arduino Kodu

Herhangi bir soru da yorum yazabilirsiniz.

Youtube Kanalım