Paano Gumawa ng Isang DIY Arduino at Bluetooth Controlled Robotic Arm?

Sa nagdaang siglo, ang Robotics ay ang pinaka umuusbong na larangan ng pagsasaliksik. Kinontrol ng mga robot ang halos lahat ng ginagawa ng mga tao dati. Maaari nating makita ang mga autonomous na robot na gumaganap ng iba't ibang mga gawain sa ating lipunan. Mayroong ilang mga remote control Robots din na makakatulong sa amin upang maisakatuparan ang iba't ibang mga operasyon. Mula sa paggawa ng mga Nano circuit sa larangan ng engineering hanggang sa pagkuha ng mga kumplikadong operasyon sa larangan ng medikal, ang mga robot ay mas maaasahan kaysa sa mga tao.



Robotic Arm

Sa proyektong ito, gagawa kami ng isang Robotic Arm na makokontrol ng isang Arduino microcontroller. Ito ay makokontrol sa pamamagitan ng Bluetooth sa tulong ng isang Android remote control app.



Paano Makokontrol ang isang Robotic Arm Gamit ang Arduino?

Ngayon alam namin ang abstract ng aming proyekto. Ipunin namin ang ilang karagdagang impormasyon tungkol sa circuitry at simulan ang pagbuo ng isang kinokontrol na Bluetooth na braso ng robotic at kontrolin ito sa pamamagitan ng Bluetooth.



Hakbang 1: Pagkolekta ng Mga Bahagi

Ang pinakamahusay na diskarte upang simulan ang anumang proyekto ay upang makagawa ng isang kumpletong listahan ng mga bahagi. Hindi lamang ito isang matalinong paraan upang magsimula ng isang proyekto ngunit nakakatipid din ito sa amin mula sa maraming mga abala sa gitna ng proyekto. Ang isang listahan ng mga bahagi ng proyektong ito ay ibinibigay sa ibaba:



  • HC-05 Wireless Bluetooth Serial Transceiver
  • 6V Adapter
  • Jumper Wires
  • Breadboard

Hakbang 2: Pag-aaral ng Mga Bahagi

Dahil mayroon kaming kumpletong listahan ng lahat ng mga sangkap na gagamitin namin, ilipat natin ang isang hakbang at dumaan sa isang maikling pag-aaral ng lahat ng mga bahagi.

Arduino Nano ay isang board ng microcontroller na nagsasagawa ng iba't ibang mga operasyon sa iba't ibang mga circuit. Nangangailangan ito ng a C Code na nagsasabi sa board kung anong mga gawain ang dapat gampanan at kung paano. Mayroon itong 13 digital I / O pin na nangangahulugang maaari naming patakbuhin ang 13 magkakaibang mga aparato. Ang Arduino Nano ay may eksaktong parehong pag-andar tulad ng Arduino Uno ngunit sa medyo maliit na sukat. Ang microcontroller sa Arduino Nano board ay ATmega328p. Kung nais mong kontrolin ang higit sa 13 mga aparato, gamitin ang Arduino Mega.

Arduino Nano



HC-05 Wireless Bluetooth Serial Transceiver : Kailangan namin ng wireless na komunikasyon sa proyektong ito, kaya gagamit kami ng teknolohiyang Bluetooth at para sa modyul na gagamitin ay HC-05. Ang module na ito ay may maraming mai-programmable na rate ng baud ngunit ang default na rate ng baud ay 9600 bps. Maaari itong mai-configure bilang alinman sa master o alipin, samantalang ang isa pang module na HC-06 ay maaaring gumana lamang sa mode ng alipin. Ang module na ito ay may apat na mga pin. Isa para sa VCC (5V) at ang natitirang tatlo para sa GND, TX, at RX. Ang default na password ng modyul na ito ay 1234 o 0000 . Kung nais naming makipag-usap sa pagitan ng dalawang mga microcontroller o makipag-usap sa anumang aparato na may pag-andar ng Bluetooth tulad ng isang Telepono o Laptop HC-05 ay tumutulong sa amin na gawin iyon. Maraming mga application ng Android ang magagamit na kung saan ginagawang mas madali ang prosesong ito.

HC-05 Bluetooth Module

Isang tipikal Robotic Arm ay binubuo ng maraming mga segment at karaniwang mayroong 6 na kasukasuan dito. Naglalaman ito ng isang minimum na 4 na stepper motors na kinokontrol ng computer. Ang mga stepper motor ay naiiba mula sa iba pang mga DC motor. Ganap na gumagalaw ang mga ito sa eksaktong mga pagtaas. Ang mga robotic arm na ito ay ginagamit upang magsagawa ng iba`t ibang mga operasyon. Maaari naming manu-manong mapatakbo ang mga ito sa pamamagitan ng isang remote control o maaari nating mai-program ang mga ito upang gumana nang autonomiya.

Robotic Arm.

Hakbang 3: Pagtitipon ng Mga Bahagi

Ngayon alam namin ang tungkol sa pagtatrabaho ng lahat ng mga pangunahing sangkap na ginamit. Simulan nating tipunin ang mga ito at gumawa ng isang circuit upang makabuo ng isang remote-control na robotic arm.

  1. . Ilakip ang board ng Arduino Nano sa breadboard. Ang Arduino ay papatakbo sa pamamagitan ng positibo at negatibong kawad ng adapter.
  2. Ilagay din ang module ng Bluetooth sa breadboard. Palakasin ang module ng Bluetooth sa pamamagitan ng Arduino. Ikonekta ang Tx pin ng module ng Bluetooth sa Rx pin ng Arduino Nan board at ikonekta ang Rx pin ng module ng Bluetooth sa Tx pin ng Arduino Nano board.
  3. Tulad ng alam natin na mayroong 4 na stepper motor. Ang bawat isa ay may pang-teknikal na pangalan. Tinawag sila Siko , Balikat , Base, at Gripper . Ang Vcc at Ground ng lahat ng mga motor ay magiging pangkaraniwan at konektado sa positibo at negatibo ng 6V adapter. Ang Signal pin ng lahat ng apat na motor ay makakonekta sa pin5, pin6, pin9, at pin11 ng Arduino Nano.
  4. Tiyaking ang mga koneksyon na iyong ginawa ay naaayon sa sumusunod na diagram ng circuit.

    Diagram ng Circuit

Hakbang 4: Pagsisimula Sa Arduino

Kung hindi ka pa pamilyar sa Arduino IDE, huwag mag-alala dahil ang isang hakbang-hakbang na pamamaraan upang mai-set up at gamitin ang Arduino IDE sa isang board ng microcontroller ay ipinaliwanag sa ibaba.

  1. I-download ang pinakabagong bersyon ng Arduino IDE mula sa Arduino.
  2. Ikonekta ang iyong Arduino Nano board sa iyong laptop at buksan ang control panel. Pagkatapos, mag-click sa Hardware at Sound . Ngayon, mag-click sa Mga devices at Printers. Dito, hanapin ang port kung saan nakakonekta ang iyong board ng microcontroller. Sa aking kaso ito ay COM14 ngunit iba ito sa iba`t ibang mga computer.

    Paghanap ng Port

  3. Mag-click sa menu ng Tool at itakda ang board sa Arduino Nano mula sa drop-down na menu.

    Setting Board

  4. Sa parehong menu ng Tool, itakda ang port sa numero ng port na iyong naobserbahan dati sa Mga devices at Printers .

    Setting Port

  5. Sa parehong menu ng Tool, Itakda ang Proseso sa ATmega328P (Old Bootloader).

    Nagpoproseso

  6. Upang magsulat ng code upang mapatakbo ang mga motor na servo, kailangan namin ng espesyal na silid-aklatan na makakatulong sa amin na magsulat ng maraming mga pagpapaandar para sa mga motor na servo. Ang library na ito ay naka-attach kasama ang code, sa link sa ibaba. Upang maisama ang library, mag-click sa Sketch> Isama ang Library> Magdagdag ng ZIP. Library.

    Isama ang Library

  7. I-download ang code na nakalakip sa ibaba at i-paste ito sa iyong Arduino IDE. Mag-click sa i-upload pindutan upang sunugin ang code sa iyong board ng microcontroller.

    I-upload

Upang mai-download ang code, pindutin dito.

Hakbang 5: Pagda-download ng App

Tulad ng naipon na namin ang buong circuitry at na-upload ang code sa board ng microcontroller. hinahayaan ang pag-download ng isang mobile app na gagana bilang isang remote control para sa robotic arm. Ang isang libreng app ay magagamit sa google play store. Ang pangalan ng app ay ang Little Arm Robot Control . Upang makakonekta sa Bluetooth, i-on ang Bluetooth sa iyong mobile. Pumunta sa mga setting at ipares ang iyong mobile sa module na HC-05. Pagkatapos gawin ito, pindutin ang pindutan ng Bluetooth sa app. Kung ito ay naging berde, nangangahulugan ito na ang app ay konektado na ngayon at handa nang patakbuhin ang robotic arm. May mga slider upang maitakda ang pagpapatakbo ng robotic arm tulad ng ninanais.

App

Hakbang 6: Pag-unawa sa Code

Ang code ay mahusay na nagkomento at madaling maunawaan. Bur pa rin, maikling ipinaliwanag sa ibaba.

1. Sa simula, kasama ang isang silid-aklatan upang magsulat ng isang code upang mapatakbo ang mga servo motor. Isa pang library matematika.h ay kasama upang maisagawa ang iba't ibang mga pagpapatakbo ng matematika sa code. Ang apat na mga bagay ay isinalin din upang magamit para sa apat na motor na servo.

#include // arduino library #include // standard c library #define PI 3.141 Servo baseServo; Servo balikatServo; Servo elbowServo; Servo gripperServo; int utos;

2. Pagkatapos ang isang istraktura ay idineklara na kukuha ng mga halaga para sa base, balikat, at siko na mga servo motor.

struct jointAngle {// declairing isang istraktura int base; int balikat; int siko; };

3. Pagkatapos nito, ang ilang mga variable ay naisasimuno upang maiimbak ang nais na mahigpit na pagkakahawak, pagkaantala, at posisyon ng motor na servo. ang bilis ay nakatakda sa 15, at ang isang bagay ay ginawa upang kunin ang halaga ng anggulo sa istraktura.

int ninanais naGrip; int gripperPos; int ninanaisDelay; int servoSpeed ​​= 15; int handa = 0; nais ng istraktura ng magkakasunod na AnglesAngle; // nais na mga anggulo ng servos

Apat. walang bisa ang pag-setup () ay isang pagpapaandar na ginagamit upang itakda ang mga pin ng Arduino bilang INPUT o OUTPUT. Dito sa pagpapaandar na ito, ipinahayag namin na ang pin ng mga motor ay makakonekta sa aling mga pin ng Arduino. Tiniyak din na ang Arduino ay hindi masyadong nagbabasa ng serial input nang masyadong mahaba. Ang Paunang Posisyon at Baud Rate ay nakatakda din sa pagpapaandar na ito. Ang Baud Rate ay ang bilis kung saan ang microcontroller board ay makikipag-usap sa mga servos at Bluetooth module na nakakabit.

void setup () {Serial.begin (9600); baseServo.attach (9); // nakakabit ang base servo sa pin 9 sa servo object na balikatServo.attach (10); // nakakabit ang balikat na servo sa pin 9 sa servo object na sikoServo.attach (11); // nakakabit ang siko na servo sa pin 9 sa servo object gripperServo.attach (6); // nakakabit ang gripper servo sa pin 9 sa servo object na Serial.setTimeout (50); // tinitiyak na ang arduino ay hindi nagbabasa ng serial para sa masyadong mahabang Serial.println ('sinimulan'); baseServo.write (90); // intial posisyon ng servos balikatServo.write (150); sikoServo.write (110); handa na = 0; }

5. servoParallelControl () ay isang pagpapaandar na ginagamit upang makita ang kasalukuyang posisyon ng robotic arm at ilipat ito alinsunod sa utos na ibinigay sa pamamagitan ng mobile app. Kung ang kasalukuyang posisyon ay mas mababa kaysa sa aktwal, ang braso ay makakataas at kabaligtaran. Ibabalik ng pagpapaandar na ito ang halaga ng kasalukuyang posisyon at ang bilis ng servo.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // basahin ang kasalukuyang pos int newPos = startPos; // int theSpeed ​​= bilis; // tukuyin kung saan ang pos ay patungkol sa utos // kung ang kasalukuyang posisyon ay mas mababa na ang aktwal na lumipat pataas kung (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); antala (angSpeed); ibalik ang 0; } iba pa {return 1; }}

6. walang bisa loop () ay isang pagpapaandar na paulit-ulit na tumatakbo sa isang loop. Binabasa ng pagpapaandar na ito ang data na darating nang serial at iimbak ang anggulo ng bawat servo sa istraktura. Sa una, ang katayuan ng lahat ng mga servos ay nakatakda sa zero. Narito ang isang pagpapaandar servoParallelControl () ay tinawag at ipinapasa ang mga parameter dito. ibabalik ng pagpapaandar na ito ang halaga at maiimbak ito sa isang variable ng katayuan.

void loop () {if (Serial.available ()) {handa = 1; naisAngle.base = Serial.parseInt (); naisAngle.shoulder = Serial.parseInt (); naisAngle.elbow = Serial.parseInt (); naisGrip = Serial.parseInt (); naisDelay = Serial.parseInt (); kung (Serial.read () == ' n') {// kung ang huling byte ay 'd' pagkatapos ay itigil ang pagbabasa at magpatupad ng command na 'd' ay nangangahulugang 'tapos na' Serial.flush (); // limasin ang lahat ng iba pang mga utos na nakasalansan sa buffer // ipadala ang pagkumpleto ng utos na Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int tapos = 0; habang (tapos == 0 && handa == 1) {// ilipat ang servo sa nais na katayuan ng posisyon1 = servoParallelControl (naisAngle.base, baseServo, naisDelay); status2 = servoParallelControl (naisAngle.shoulder, balikatServo, ninanaisDelay); status3 = servoParallelControl (naisAngle.elbow, sikoServo, ninanaisDelay); status4 = servoParallelControl (ninanais naGrip, gripperServo, ninanaisDelay); kung (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {tapos = 1}} // pagtatapos ng habang}

Ngayon, ito ang buong pamamaraan ng paggawa ng isang robotic arm. Matapos masunog ang code at mai-download ang app, ang robot ay dapat na gumana perpektong pagmultahin kapag ang mga slider sa app ay inilipat. Maaari mo ring mai-program ang braso upang gumana nang masasarili upang maisagawa ang nais na gawain.