Arduino Robotik Arduino ile Temizlik Robotu Yapımı By Konuk Yazar Posted on 26 Temmuz 2017 11 min read 9 3 47,399 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Öncelikle bu projenin basit ve yapımı kolay bir proje olduğunu belirterek başlamalıyım. Projeye başlamadan önce bazı tavsiyelerde bulunacağım. Öncelikle projede kullanacağınız sensörleri , motorları , modülleri bread-board yardımı ile test ediniz. Örneğin; l293n motor sürücüsünü kullanarak motorları pwm ile sürmeyi, daha sonra sensörler ile mesafe ölçmenin mantığını öğrenmelisiniz. Öğrendiğiniz iki durumu koşul ifadeleri ile kodlamayı deneyiniz. Board üzerinde yaptığınız temel testlerden sonra tasarım ve kodlama mantığı hayal gücünüze kalıyor. Projede Kullanılan Malzemeler: Arduino Nano HC-SR04 x 3 Batarya(7ah 12v akü kullanıldı) Turbo fan(20w 12v) L293N modül Plastik redüktörlü motor (dc 6v 200rpm) x4 Tekerlek(kasnağa uyumlu olmasına dikkat ediniz) x2 Plastik kutu(şase için) Mini bread board Jumper Kablolar Sarhoş teker Anahtar Kablo bağları Tül (4 cm²) Aletler: Sıcak silikon tabancası ve silikonu Tornavida(+,-) Yan keski Havya ve lehim teli Arduino nano kullanmamızın sebebi , küçük ve bizim işimizi görecek kadar pin sayısına sahip olmasıdır. Alternatif olarak da uno kullanabilirsiniz ama dediğim gibi küçük olması yararınıza olacaktır. Dört adet motor kullanmamıza rağmen sadece 2 motorun hızlarını ve yönlerini kontrol edeceğimiz için L293N motor sürücüsü bize yeterli olacaktır. Modül üzerinde bulunan soğutucu blokta motor sürücülerinin aşırı ısınmasını engelleyerek uzun süre çalışmasını sağlamaktadır. Ön taraftaki motorlar ve fan direk olarak bataryaya bağlanmalı, motorların dönüş yönü aşağıdaki gibi olmalıdır. (+,- bağlantı şeklini değiştirerek dönüş yönlerini değiştirebilirsiniz.) Birazda kasanın yapımından bahsedeyim. Kasa için plastik ekmek kabı kullanıldı.Çünkü ucuz ve istediğim ölçülerdeydi. Ancak zamanla kutunun esnediğini fark ettim. Bu sebepten dolayı esnemeyen veya içini metal bir iskeletle destekleyeceğiniz bir gövde yapın. Kutuyu delme ve kesme işleri için bıçak falçata vs. yerine havya kullanırsanız daha rahat olacaktır. Bu işler için ayrı bir havyanız yoksa bir parça teli ısıtarak da kullanabilirsiniz. Zira lehim yaptığınız havya ile plastik eritmek havyanıza zarar verir. Yapıştırma işlemler için de sıcak silikon ve bazı sabitleme işleri için de kablo bağları kullanıldı. Kasanın yapımında dikkat etmeniz gereken bir nokta da sarhoş tekerin ve yön tekerlerinin(arkadaki tekerler) yüksekliğidir. Bu yüksekliği iyi ayarlarsanız hem halıda hem de fayans üzerinde rahatça çalışacaktır. Vakum kısmında ise normal elektrikli süpürgelerdeki sistemin aynısı kullanıldı. Yani fanın önüne koyulan tül parçasına tozlar yapışıyor, çöpler ise haznede birikiyor. gövdenin alt tarafından küçük bir delik açıp motorunuzun gücüne göre açtığınız yeri genişletirsiniz veya dudak ekleyebilirsiniz. Burada dikkat etmeniz gereken 2 husus var. Fan hesabı notlarını incelerseniz, yaptığınız vakumlama sisteminde olabildiğince az dirsek kullanılmalı ve gövde altına açtığınız deliği küçük tutmaya özen gösterin yani acele etmeden küçük bir delik ile motor gücüne göre genişletmelisiniz. Kullanacağınız jumperler, kablo bağları ve bread-board sizi lehimleme işinden kurtaracaktır. Önemli olan bir diğer noktada L293N modulünün kullanımı. Bu modülün kullanımı kolaydır ancak dikkat edeceğiniz nokta enable pinleridir. Eneable A ve B pinleri normalde 5v kısadevredir ancak biz buraya pwm vererek motorun hız kontrolünü sağlayabiliriz. Devre Şeması Arduino Kodları // Made by Fatih Mehmet Yılmaz //ön int trigPin = 5; int echoPin = 4; //sağ int trigPin2 = 13; int echoPin2 = 6; //sol int trigPin3 = 8; int echoPin3 = 7; // motor 1 int enA = 9;//ok int in1 = 2; int in2 = 10; // motor 2 int enB = 3;//ok int in3 = 11; int in4 = 12; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(trigPin2, OUTPUT); pinMode(echoPin2, INPUT); pinMode(trigPin3, OUTPUT); pinMode(echoPin3, INPUT); pinMode(9,OUTPUT); pinMode(2,OUTPUT); pinMode(10,OUTPUT); pinMode(3,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); } void loop() { //sistemin 3saniye gecikmeli başlaması için do {delay(3000);} while(0); //ön—————————————————————— int duration, distance; digitalWrite (trigPin, HIGH); delayMicroseconds (10); digitalWrite (trigPin, LOW); duration = pulseIn (echoPin, HIGH); distance = (duration/2) / 29.1; Serial.print(“sag sensor:”); Serial.print(distance); Serial.print(“cm”); Serial.println(); //sağ——————————————————————- int duration2, distance2; digitalWrite (trigPin2, HIGH); delayMicroseconds (10); digitalWrite (trigPin2, LOW); duration2 = pulseIn (echoPin2, HIGH); distance2 = (duration2/2) / 29.1; Serial.print(“sag sensor:”); Serial.print(distance2); Serial.print(“cm”); Serial.println(); //sol—————————————————————— int duration3, distance3; digitalWrite (trigPin3, HIGH); delayMicroseconds (10); digitalWrite (trigPin3, LOW); duration3 = pulseIn (echoPin3, HIGH); distance3 = (duration3/2) / 29.1; Serial.print(“sag sensor:”); Serial.print(distance3); Serial.print(“cm”); Serial.println(); //—————————————————————— // Motorlar sabit hızda aynı yöne dönüyorlar. // sol motor ileri digitalWrite(in1, HIGH); digitalWrite(in2, LOW); // Motor 1 için 0~255 arasında bir hız değeri verelim. 255 en üst sınır analogWrite(enA, 100); // sağ motor ileri digitalWrite(in3, HIGH); digitalWrite(in4, LOW); // Motor 2 için 0~255 arasında bir hız değeri verelim. 255 en üst sınır analogWrite(enB, 100); delay(2000); //——————-KOŞUL BLOĞU———————- if(distance<10 && distance >4)//ön sensör { //motorlar durduruluyor digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); delay(750);//bir üst fonksiyonun çalışma süresi // motorlar geriye dönüyor digitalWrite(in1, LOW); digitalWrite(in2, HIGH); digitalWrite(in3, LOW); digitalWrite(in4, HIGH); delay(1750);//bir üst fonksiyonun çalışma süresi digitalWrite(in1, HIGH); digitalWrite(in2, LOW); delay(1750);//bir üst fonksiyonun çalışma süresi } //—————————————————- if(distance2<7 && distance2 >4)//sağ sensör { //sol motor digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 200); //sağ motor digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 130); // sağ motorun hızı arttırıldı delay(1500); } //—————————————————— if(distance3<7 && distance3 >4)//sol sensör { //sol motor digitalWrite(in1, HIGH); digitalWrite(in2, LOW); analogWrite(enA, 130);// sol motorun hızı arttırıldı //sağ motor digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 100); delay(1500); } } //————————————————— Projenin Çalışma Videosu Sakarya Üniversitesi Mekatronik Mühendisliği Öğrencisi Fatih Mehmet Yılmaz (https://www.facebook.com/fmyilmazz)