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 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.



Robot kol

Bu projede Arduino mikrodenetleyici tarafından 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 biliyoruz. 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:



  • HC-05 Kablosuz Bluetooth Seri Alıcı-Verici
  • 6V Adaptör
  • Atlama Telleri
  • Breadboard

Adım 2: Bileşenleri İncelemek

Kullanacağımız tüm bileşenlerin tam bir listesine sahip olduğumuz için, bir adım ileri gidelim 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.

Arduino Nano



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 HC-05 kullanacağız. 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 pimi vardır. Biri VCC (5V) ve kalan üçü GND, TX ve RX için. Bu modülün varsayılan şifresi 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ı zaten mevcuttur.

HC-05 Bluetooth Modülü

Tipik Robot kol birkaç segmentten 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. Kesin olarak tam 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.

Robot kol.

Adım 3: 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 kablosundan beslenecektir.
  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 kademeli motor olduğunu bildiğimiz gibi. Her birinin teknik bir adı vardır. Onlara telefon edildi 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.

    Devre şeması

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ü şuradan indirin: Arduino.
  2. Arduino Nano kartınızı dizüstü bilgisayarınıza bağlayın ve kontrol panelini açın. Sonra 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 COM14 ancak farklı bilgisayarlarda farklıdır.

    Bağlantı Noktası Bulma

  3. Araç menüsüne tıklayın ve panoyu Arduino Nano açılır menüden.

    Ayar Panosu

  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 .

    Bağlantı Noktası Ayarlama

  5. Aynı Araç menüsünde İşlemciyi ATmega328P (Eski Önyükleyici).

    İşlemci

  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 Eskiz> Kitaplığı Dahil Et> ZIP Ekle. Kütüphane.

    Kitaplığı Dahil Et

  7. Aşağıya ekli kodu indirin ve Arduino IDE'nize yapıştırın. Tıkla yükle mikrodenetleyici panonuzdaki kodu yazmak için düğmeye basın.

    Yükle

Kodu indirmek için, buraya Tıkla.

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ü . Bluetooth bağlantısı kurmak için cep telefonunuzda Bluetooth'u açın. Ayarlara gidin ve cep telefonunuzu HC-05 modülü ile 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ıracak sürgüler vardır.

Uygulama

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.h kodda 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.

#include // arduino kitaplığı #include // standart c kitaplığı # tanımla PI 3.141 Servo baseServo; Servo omuzServo; Servo dirsekServo; Servo tutucuServo; int komutu;

2. Ardından 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 alacak bir obje yapılır.

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

Dört. 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 pimlerine bağlanacağını ilan 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; // pim 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 küçü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 {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 fonksiyon 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 (); istenilenDelay = Serial.parseInt (); eğer (Serial.read () == ' n') {// eğer son bayt 'd' ise okumayı durdurun ve 'd' komutunu çalıştırın 'tamamlandı' Serial.flush (); // tamponda bulunan diğer tüm komutları temizle // 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 && ready == 1) {// servoyu istenen konuma getirin status1 = servoParallelControl (istenilenAngle.base, baseServo, istenilenDelay); status2 = servoParallelControl (istenilenAngle.shoulder, omuzServo, istenilenGecikme); status3 = servoParallelControl (istenilenAngle.elbow, elbowServo, istenilenGecikme); status4 = servoParallelControl (requiredGrip, gripperServo, requiredDelay); 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 yazıp uygulamayı indirdikten sonra, uygulamadaki kaydırıcılar hareket ettirildiğinde robot mükemmel şekilde çalışmalıdır. Ayrıca kolu, istenen görevi gerçekleştirmek için bağımsız olarak çalışacak şekilde programlayabilirsiniz.