DIY Arduino ve Bluetooth Kontrollü Robotik Kol Nasıl Yapılır?

Son yüzyılda, Robotik en yeni ortaya çıkan araştırma alanıdır. Robotlar, insanların eskiden yaptığı neredeyse her şeyin kontrolünü ele geçirdi. Toplumumuzda çeşitli görevleri yerine getiren otonom robotları görebiliriz. Çeşitli işlemleri gerçekleştirmemize yardımcı olan bazı uzaktan kumandalı Robotlar da var. Mühendislik alanında Nano devreler yapmaktan tıp alanındaki karmaşık ameliyatları yapmaya kadar robotlar insanlardan daha güvenilirdir.

Bu projemizde Arduino mikrodenetleyici ile kontrol edilecek bir Robotik Kol yapacağız. Bir android uzaktan kumanda uygulaması yardımıyla Bluetooth üzerinden kontrol edilecektir.

Arduino Kullanarak Robotik Kol Nasıl Kontrol Edilir?

Artık projemizin özetini bildiğimiz gibi. Devre hakkında biraz daha bilgi toplayalım ve Bluetooth kontrollü bir robotik kol oluşturmaya başlayalım ve bunu Bluetooth ile kontrol edelim.

Adım 1: Bileşenleri Toplama

Herhangi bir projeye başlamak için en iyi yaklaşım, bileşenlerin tam bir listesini yapmaktır. Bu sadece bir projeye başlamanın akıllı bir yolu değil, aynı zamanda bizi projenin ortasında birçok rahatsızlıktan kurtarıyor. Bu projenin bileşenlerinin bir listesi aşağıda verilmiştir:

Adım 2: Bileşenlerin İncelenmesi

Kullanacağımız tüm bileşenlerin tam bir listesine sahip olduğumuz için, bir adım öne geçelim ve tüm bileşenlerin kısa bir incelemesine geçelim.

Arduino Nano farklı devrelerde çeşitli işlemleri gerçekleştiren mikrodenetleyici kartıdır. Gerektirir C Kodu bu, kurula hangi görevleri ve nasıl gerçekleştireceğini söyler. 13 dijital I / O pinine sahiptir, bu da 13 farklı cihazı çalıştırabileceğimiz anlamına gelir. Arduino Nano, Arduino Uno ile tamamen aynı işlevselliğe sahiptir, ancak oldukça küçük bir boyuttadır. Arduino Nano kartındaki mikrodenetleyici, ATmega328p.13'ten fazla cihazı kontrol etmek istiyorsanız, Arduino Mega kullanın.

HC-05 Kablosuz Bluetooth Seri Alıcı-Verici: Bu projede kablosuz iletişime ihtiyacımız var, bu yüzden Bluetooth teknolojisini kullanacağız ve bu modül için kullanılacak olan HC-05. Bu modülün birkaç programlanabilir baud hızı vardır ancak varsayılan baud hızı 9600 bps'dir. Ana veya bağımlı olarak yapılandırılabilir, oysa başka bir HC-06 modülü yalnızca bağımlı modda çalışabilir. Bu modülün dört pini vardır. Biri VCC (5V) ve kalan üçü GND, TX ve RX için. Bu modülün varsayılan şifresi şu şekildedir: 1234 veya 0000. İki mikro denetleyici arasında iletişim kurmak veya Telefon veya Dizüstü Bilgisayar gibi Bluetooth işlevine sahip herhangi bir cihazla iletişim kurmak istiyorsak HC-05 bunu yapmamıza yardımcı olur. Bu işlemi çok daha kolay hale getiren birkaç Android uygulaması halihazırda mevcuttur.

Tipik Robot kolbirkaç parçadan oluşur ve içinde genellikle 6 eklem bulunur. Bilgisayar tarafından kontrol edilen minimum 4 step motor içerir. Step motorlar diğer DC motorlardan farklıdır. Tam olarak kesin artışlarla hareket ederler. Bu robotik kollar çeşitli işlemleri gerçekleştirmek için kullanılır. Bunları bir uzaktan kumanda ile manuel olarak çalıştırabiliriz veya bağımsız çalışacak şekilde programlayabiliriz.

3. Adım: Bileşenleri Birleştirme

Artık kullanılan tüm ana bileşenlerin çalışmasını bildiğimiz gibi. Bunları birleştirmeye başlayalım ve uzaktan kumandalı bir robotik kol oluşturmak için bir devre yapalım.

  1. .Arduino Nano kartını devre tahtasına takın. Arduino, adaptörün pozitif ve negatif kablosuyla güçlendirilecektir.
  2. Bluetooth modülünü devre tahtasına da yerleştirin. Bluetooth modülünü Arduino üzerinden çalıştırın. Bluetooth modülünün Tx pinini Arduino Nan kartının Rx pinine bağlayın ve Bluetooth modülünün Rx pinini Arduino Nano kartının Tx pinine bağlayın.
  3. 4 step motor olduğunu bildiğimiz gibi. Her birinin teknik bir adı vardır. Arandılar Dirsek, Omuz, baz, ve Tutucu. Tüm motorların Vcc ve Topraklaması ortak olacak ve 6V adaptörün pozitif ve negatifine bağlanacaktır. Dört motorun hepsinin Sinyal pini, Arduino Nano'nun pin5, pin6, pin9 ve pin11'lerine bağlanacaktır.
  4. Yapmış olduğunuz bağlantıların aşağıdaki devre şemasına göre yapıldığından emin olunuz.

Adım 4: Arduino'ya Başlarken

Arduino IDE'ye henüz aşina değilseniz endişelenmeyin, çünkü Arduino IDE'yi bir mikrodenetleyici kartı ile kurmak ve kullanmak için adım adım bir prosedür aşağıda açıklanmıştır.

  1. Arduino IDE'nin en son sürümünü Arduino'dan indirin.
  2. Arduino Nano kartınızı dizüstü bilgisayarınıza bağlayın ve kontrol panelini açın. Ardından, tıklayın Donanım ve ses. Şimdi tıklayın Cihazlar ve yazıcılar.Burada mikrodenetleyici kartınızın bağlı olduğu bağlantı noktasını bulun. Benim durumumda COM14ancak farklı bilgisayarlarda farklıdır.
  3. Araç menüsüne tıklayın ve panoyu Arduino Nano açılır menüden.
  4. Aynı Araç menüsünde, bağlantı noktasını daha önce görüntülemede gözlemlediğiniz bağlantı noktası numarasına ayarlayın. Cihazlar ve yazıcılar.
  5. Aynı Araç menüsünde İşlemciyi ATmega328P (Eski Önyükleyici).
  6. Servo motorları çalıştırmak için kod yazmak için, servo motorlar için çeşitli işlevler yazmamıza yardımcı olacak özel kitaplığa ihtiyacımız var. Bu kitaplık aşağıdaki bağlantıya kodla birlikte eklenmiştir. Kitaplığı dahil etmek için tıklayın Çizim > Kitaplığı Dahil Et > ZIP Ekle. Kütüphane.
  7. Aşağıda ekli kodu indirin ve Arduino IDE'nize yapıştırın. Tıkla yükle Kodu mikrodenetleyici kartınıza yazmak için düğme.

Kodu indirmek için burayı tıklayın.

Adım 5: Uygulamayı İndirme

Şimdi tüm devreyi bir araya getirdik ve kodu mikrodenetleyici kartına yükledik. robotik kol için uzaktan kumanda olarak çalışacak bir mobil uygulama indirelim. Google Play Store'da ücretsiz bir uygulama mevcuttur. Uygulamanın adı Küçük Kol Robot Kontrolüdür. Bluetooth bağlantısı kurmak için cep telefonunuzda Bluetooth'u açın. Ayarlara gidin ve cep telefonunuzu HC-05 modülüyle eşleştirin. Bunu yaptıktan sonra, uygulamadaki Bluetooth düğmesine basın. Yeşile dönmesi, uygulamanın artık bağlı olduğu ve robotik kolu çalıştırmaya hazır olduğu anlamına gelir. Robotik kolu istediğiniz gibi çalıştırmak için ayarlanan sürgüler vardır.

Adım 6: Kodu Anlama

Kod iyi yorumlanmıştır ve anlaşılması kolaydır. Yine de aşağıda kısaca açıklanmıştır.

1. Başlangıçta, servo motorları çalıştırmak için bir kod yazmak için bir kitaplık dahil edilmiştir. Başka bir kütüphane math.hkodda farklı matematiksel işlemler gerçekleştirmek için dahil edilmiştir. Dört servo motor için kullanılmak üzere dört nesne de başlatılır.

#Dahil etmek  // arduino kütüphanesi #include  // standart c kitaplığı #define PI 3.141 Servo baseServo; Servo omuzServo; Servo dirsekServo; Servo tutucuServo; int komutu;

2. Daha sonra taban, omuz ve dirsek servo motorları için değer alacak bir yapı ilan edilir.

struct jointAngle {// bir yapının tanımlanması int base; int omuz; dirsek içi; };

3. Bundan sonra, servo motorun istenen kavrama, gecikme ve konumunu saklamak için bazı değişkenler başlatılır. hız 15 olarak ayarlanır ve yapıdaki açının değerini almak için bir nesne yapılır.

int istenilenGrip; int gripperPos; int istenilenDelay; int servoSpeed ​​= 15; int hazır = 0; struct jointAngle requiredAngle; // servoların istenen açıları

4. geçersiz kurulum ()Arduino'nun pinlerini INPUT veya OUTPUT olarak ayarlamak için kullanılan bir fonksiyondur. İşte bu fonksiyonda motorların pininin Arduino'nun hangi pinlerine bağlanacağını beyan ettik. Ayrıca Arduino'nun seri girişi çok uzun süre okumaması da sağlanır. İlk Konum ve Baud Hızı da bu işlevde ayarlanır. Baud Hızı, mikro denetleyici kartının takılı servolar ve Bluetooth modülü ile iletişim kuracağı hızdır.

geçersiz kurulum () {Serial.begin (9600); baseServo.attach (9); // 9 numaralı pim üzerindeki temel servoyu omuzServo.attach (10) servo nesnesine bağlar; // pim 9 üzerindeki omuz servosunu servo nesnesi dirbowServo.attach (11) 'e bağlar; // dirsek servosunu pin 9'daki servo nesne gripperServo.attach (6) 'a bağlar; // pin 9'daki tutucu servoyu Serial.setTimeout(50) servo nesnesine bağlar; // arduino'nun çok uzun süre seri okumamasını sağlar Serial.println ("başladı"); baseServo.write (90); // servoların ilk konumları shoulderServo.write (150); elbowServo.write (110); hazır = 0; }

5. servoParallelControl ()robotik kolun mevcut konumunu tespit etmek ve mobil uygulama üzerinden verilen komuta göre hareket ettirmek için kullanılan bir işlevdir. Mevcut konum gerçekte olduğundan daha düşükse, kol yukarı hareket eder ve bunun tersi de geçerlidir. Bu fonksiyon, mevcut konumun değerini ve servo hızını döndürecektir.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // mevcut konumu oku int newPos = startPos; // int theSpeed ​​= hız; // konumun komuta göre nerede olduğunu tanımlayın // mevcut konum gerçek yukarı hareketten daha düşükse (startPos <(thePos-5)) {newPos = newPos + 1; theServo.write (newPos); gecikme (Hız); dönüş 0; } else if (newPos> (thePos + 5)) {newPos = newPos - 1; theServo.write(newPos); gecikme (hız); dönüş 0; } else {return 1; }}

6. geçersiz döngü ()bir döngüde tekrar tekrar çalışan bir işlevdir. Bu fonksiyon, seri olarak gelen verileri okur ve yapıdaki her bir servonun açısını kaydeder. Başlangıçta, tüm servoların durumu sıfır olarak ayarlanır. İşte bir fonksiyon servoParallelControl()çağrılır ve içinde parametreler geçirilir. bu işlev değeri döndürecektir ve bir durum değişkeninde saklanacaktır.

void döngü () {if (Serial.available ()) {ready = 1; istenilenAngle.base = Serial.parseInt (); istenilenAngle.shoulder = Serial.parseInt (); istenilenAngle.elbow = Serial.parseInt (); istenilenGrip = Serial.parseInt (); istenenGecikme = Serial.parseInt(); eğer (Serial.read () == '\ n') {// eğer son bayt 'd' ise o zaman okumayı durdurun ve 'd' komutunu çalıştırın 'tamamlandı' Serial.flush (); // tampondaki diğer tüm komutları sil // Serial.print ('d') komutunun tamamlanmasını gönder; }} int durum1 = 0; int durum2 = 0; int durum3 = 0; int durum4 = 0; int done = 0; while(done == 0 && hazır == 1){ //servoyu istenilen pozisyona hareket ettir status1 = servoParallelControl(desiredAngle.base, baseServo, desireDelay); status2 = servoParallelControl (istenilenAngle.shoulder, omuzServo, istenilenGecikme); status3 = servoParallelControl (istenilenAngle.elbow, elbowServo, istenilenGecikme); status4 = servoParallelControl (istenilenGrip, gripperServo, istenilenGecikme); eğer (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // süre sonu}

Şimdi, robotik kol yapmanın tüm prosedürü buydu. Kodu yazdıktan ve uygulamayı indirdikten sonra, robot, uygulamadaki kaydırıcılar hareket ettirildiğinde mükemmel şekilde çalışmalıdır. Ayrıca, istediğiniz görevi gerçekleştirmek için kolu bağımsız olarak çalışacak şekilde programlayabilirsiniz.

Facebook Twitter Google Plus Pinterest