Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Arduino - Robot Lengan Kontrol melalui Web

Komponen dan persediaan

Arduino UNO
× 1
PHPoC WiFi Shield untuk Arduino
× 1
Robot Lengan 6DOF
× 1

Tentang proyek ini

Jika Anda pemula, saya sarankan membaca tutorial berikut:

  • Arduino - Motor
  • Arduino - Motor Servo
  • Arduino - Wifi

1. Demonstrasi

2. Antarmuka Pengguna

Lengan robot memiliki 6 motor.

  • Zona A:Kontrol motor 2, 3, 4 (kontrol tiga sambungan tangan)
  • Zona B:Motor kontrol 1 (basis kontrol)
  • Zona C:Kontrol motor 5 (kontrol rotasi gripper)
  • Zona D:Motor kontrol 6 (pegangan kontrol)

3. Arsitektur Sistem

4. Alur Kerja

Sisi Klien (antarmuka pengguna web - ditulis dalam JavaScript + HTML + CSS)

Ketika pengguna menyentuh atau menyapu jari (atau mengklik atau menggerakkan mouse), kita bisa mendapatkan koordinat (x, y). Alur kerjanya adalah sebagai berikut:

Dalam kasus Zona A, untuk menghitung sudut motor 2, 3, 4, kita perlu melakukan beberapa perhitungan geometrik . Anda dapat merujuknya di akhir halaman ini.

Sisi Server (Kode Arduino):

Setelah menerima satu set sudut dari klien, enam motor bergerak dari sudut saat ini ke sudut baru secara bertahap. Enam motor harus bergerak dan mencapai sudut baru secara bersamaan. Sebelum masuk ke detail cara mengontrol semua motor, mari kita lihat cara mengontrol satu motor. Misalkan kita ingin memindahkan motor dari sudut arus (sudut) ke sudut baru (sudut_baru). Karena kecepatan motor tinggi, kita harus memperlambatnya. Untuk melakukannya, dua langkah berikut diulang sampai motor mencapai sudut baru:

  • Pindahkan motor dengan langkah kecil.
  • Jeda sebentar, lalu pindahkan satu langkah lagi.

Diagram berikut mengilustrasikan skema di atas jika sudut baru lebih besar dari sudut saat ini:

Di mana step_numis jumlah langkah yang harus diambil motor. langkah dan waktu adalah nilai yang telah ditentukan sebelumnya. Dua yang kemudian menentukan kecepatan dan kelancaran. Di atas hanya untuk satu robot. Untuk membuat robot mulai bergerak dan mencapai tujuan pada saat yang sama, kita dapat melakukan hal berikut:Enam motor mengambil jumlah_langkah yang sama , tapi langkah masing-masing motor berbeda satu sama lain. Jadi kita harus memilih step_num dalam proyek ini maksimal.

Secara umum, alur kerja Arduino adalah sebagai berikut:

5. Perhitungan Geometris

Mari kita buat perhitungan lengan robot ke dalam soal geometri berikut:

Dikenal

  • C sudah diperbaiki
  • Titik yang diketahui - D adalah input dari pengguna
  • Titik yang diketahui - CB, BA, AD (masing-masing dilambangkan dengan b, a, d)
  • Panjang setiap segmen lengan Temukan: sudut C, B, A Solusi:
  • Asumsikan sudut B dan A sama
  • Tambahkan beberapa poin dan segmen tambahan

Perhitungan

  • Kita mengetahui titik C dan D => kita dapat menghitung panjang DC (dilambangkan dengan c)
  • Kita juga bisa menghitung
  • Lihat segitiga ABE, kita dapat menyimpulkan bahwa AE =BE dan E =- 2α.
  • Jadi:
  • Hukum Cosinus pada segitiga CDE:
  • Ubah (1) dan (2) menjadi (3), kita mendapatkan:

Sederhanakan

  • Sederhanakan di atas:
  • Karena kita mengetahui a, b, c dan d, selesaikan persamaan kuadrat di atas, kita dapat menghitung nilai . - Dan =– - Sampai sekarang kita menemukan , mari kita cari - Hukum Cosinus pada segitiga BDC dan BDA:
  • Pecahkan rangkaian persamaan ini, kita dapat menghitung .
  • Jadi, sudut yang dibutuhkan adalah:(δ+γ), dan . Ini adalah sudut masing-masing motor 2, 3 dan 4.

6. Kode Sumber

Kode sumber mencakup dua file:

  • RobotArmWeb.ino :kode Arduino
  • Remote_arm.php :Kode aplikasi web, yang diunggah ke PHPoC WiFi Shield atau PHPoC Shield. (Lihat instruksi dalam artikel ini.)

Anda juga perlu mengunggah file gambar flywheel.png ke PHPoC Shield.

Kit Pemula Arduino Terbaik untuk Pemula

Jika Anda mencari kit Arduino, lihat Kit Arduino Terbaik untuk Pemula


Referensi Fungsi

  • Arduino - Perpustakaan Servo
  • Servo.attach()
  • Servo.write()
  • Servo.writeMicroseconds()
  • Servo.read()
  • Servo.attached()
  • Servo.detach()
  • Serial.begin()
  • Serial.println()

Kode

  • RobotArmWeb
  • remote_arm.php
RobotArmWebArduino
Ini adalah Kode Arduino
#include #include int angle_init[] ={90, 101, 165, 153, 90, 120}; // saat motor berdiri tegak. Di web, sudut saat motor berdiri lurus adalah {0, 90, 130, 180, 0, 0};int angle_offset[] ={0, 11, -15, -27, 0, 137}; // offset antara motor servo nyata dan sudut pada webint cur_angles[] ={90, 101, 165, 153, 90, 120}; // sudut arus enam motor (derajat) int dest_angles[] ={0, 0, 0, 0, 0, 0}; // sudut yang ditentukanint angle_max[] ={180, 180, 160, 120, 180, 137};int angle_min[] ={ 0, 0, 0, 20, 0, 75};int arah[] ={1, 1 , 1, 1, 1 ,-1};int angleSteps[] ={3, 2, 2, 2, 4 ,4}; // langkah langkah setiap motor (derajat)Servo servo1;Servo servo2;Servo servo3;Servo servo4;Servo servo5;Servo servo6;Servo servo[6] ={servo1, servo2, servo3, servo4, servo5, servo6};PhpocServer server (80);Klien PhpocClient;int stepNum =0;pengaturan batal(){ Serial.begin(9600); Phpoc.begin(PF_LOG_SPI | PF_LOG_NET); server.beginWebSocket("lengan_jauh"); servo1.attach(2); // menempelkan servo pada pin 2 ke objek servo servo2.attach(3); // menempelkan servo pada pin 3 ke objek servo servo3.attach(4); // menempelkan servo pada pin 4 ke objek servo servo4.attach(5); // menempelkan servo pada pin 5 ke objek servo servo5.attach(6); // pasang servo pada pin 6 ke objek servo servo6.attach(7); // menempelkan servo pada pin 7 ke objek servo for(int i =0; i <6; i++) servo[i].write(angle_init[i]);}void loop() { PhpocClient client =server.available (); if(klien) { String angleStr =client.readLine(); if(angleStr) { Serial.println(angleStr); int komaPos1 =-1; int komaPos2; for(int i =0; i <5; i++) { commaPos2 =angleStr.indexOf(',', commaPos1 + 1); int sudut =angleStr.substring(commaPos1 + 1, commaPos2).toInt(); dest_angles[i] =sudut * arah[i] + angle_offset[i]; komaPos1 =komaPos2; } int angle5 =angleStr.substring(commaPos1 + 1).toInt(); dest_angles[5] =angle5 * arah[5] + angle_offset[5]; langkahNum =0; // gerakkan motor dalam banyak langkah kecil untuk membuat motor bergerak dengan mulus, hindari menggerakkan motor secara tiba-tiba. Di bawah ini adalah langkah perhitungan for(int i =0; i <6; i++) { int dif =abs(cur_angles[i] - dest_angles[i]); int langkah =dif / angleSteps[i]; if(stepNum  0) { for(int i =0; i <6; i++) { int angleStepMove =(dest_angles[i] - cur_angles[i]) / stepNum; cur_angles[i] +=angleStepMove; if(cur_angles[i]> angle_max[i]) cur_angles[i] =angle_max[i]; else if(cur_angles[i]  
remote_arm.phpPHP
Kode ini adalah aplikasi web.
Arduino - Arm Robot - Web

Arduino - Robot Lengan Kontrol melalui Web

WebSocket :null

Skema

Perlu menyediakan sumber daya eksternal untuk 6 motor

Proses manufaktur

  1. Robot Pi Sederhana
  2. Pusat Kontrol Arduino
  3. Menggunakan IoT untuk Mengontrol Lengan Robot dari Jarak Jauh
  4. Hambatan Menghindari Robot Dengan Motor Servo
  5. Robot Pengikut Baris
  6. Kontrol Humidifier Arduino
  7. Arduino - Kirim Suhu ke Web melalui Serial
  8. Littlearm 2C:Membangun Lengan Robot Arduino Cetak 3D
  9. Robot Asisten Rumah Otonom
  10. Robot untuk navigasi dalam ruangan yang sangat keren