Kako napraviti 'uradi sam' Arduino i Bluetooth kontroliranu robotsku ruku?

U posljednjem stoljeću, robotika je područje istraživanja koje se najviše razvija. Roboti su preuzeli kontrolu nad gotovo svime što su ljudi nekada radili. Možemo vidjeti autonomne robote koji obavljaju razne zadatke u našem društvu. Postoje i neki roboti s daljinskim upravljanjem koji nam pomažu u obavljanju raznih operacija. Od izrade Nano sklopova u području inženjerstva do uklanjanja složenih operacija u području medicine, roboti su pouzdaniji od ljudi.



Robotska ruka

U ovom ćemo projektu izraditi robotsku ruku kojom će upravljati Arduino mikrokontroler. Njime će se upravljati putem Bluetootha uz pomoć android aplikacije za daljinsko upravljanje.



Kako kontrolirati robotsku ruku koristeći Arduino?

Sad kad znamo sažetak našeg projekta. Prikupimo još nekoliko informacija o strujnom krugu i započnimo s izradom robotske ruke kojom upravlja Bluetooth i upravljajmo njome putem Bluetootha.



Korak 1: Prikupljanje komponenata

Najbolji pristup za započinjanje bilo kojeg projekta je sastaviti cjelovit popis komponenata. Ovo nije samo inteligentan način pokretanja projekta, već nas također štedi od mnogih neugodnosti usred projekta. Popis komponenata ovog projekta dat je u nastavku:



  • HC-05 bežični Bluetooth serijski primopredajnik
  • 6V adapter
  • Jumper žice
  • Breadboard

Korak 2: Proučavanje komponenata

Kako imamo cjelovit popis svih komponenata koje ćemo koristiti, krenimo korak naprijed i prođite kroz kratku studiju svih komponenata.

Arduino Nano je ploča mikrokontrolera koja izvodi razne operacije u različitim krugovima. To zahtijeva a C kod koji odboru govori koje zadatke treba izvršiti i kako. Ima 13 digitalnih I / O pinova što znači da možemo upravljati s 13 različitih uređaja. Arduino Nano ima potpuno istu funkcionalnost kao Arduino Uno, ali u prilično maloj veličini. Mikrokontroler na ploči Arduino Nano je ATmega328p. Ako želite kontrolirati više od 13 uređaja, upotrijebite Arduino Mega.

Arduino Nano



HC-05 bežični Bluetooth serijski primopredajnik : U ovom nam je projektu potrebna bežična komunikacija, pa ćemo koristiti Bluetooth tehnologiju, a za taj će se modul koristiti HC-05. Ovaj modul ima nekoliko programabilnih brzina prijenosa, ali zadana brzina prijenosa je 9600 bps. Može se konfigurirati kao master ili slave, dok drugi modul HC-06 može raditi samo u slave modu. Ovaj modul ima četiri pina. Jedan za VCC (5V), a preostala tri za GND, TX i RX. Zadana lozinka ovog modula je 1234 ili 0000 . Ako želimo komunicirati između dva mikrokontrolera ili komunicirati s bilo kojim uređajem s Bluetooth funkcijom poput telefona ili prijenosnog računala HC-05 u tome nam pomaže. Već je dostupno nekoliko Android aplikacija što ovaj postupak čini puno lakšim.

HC-05 Bluetooth modul

Tipičan Robotska ruka sastoji se od nekoliko segmenata i obično u sebi ima 6 zglobova. Sadrži najmanje 4 koračna motora kojima upravlja računalo. Koračni motori razlikuju se od ostalih istosmjernih motora. Premještaju se precizno u koracima. Te robotske ruke koriste se za izvođenje raznih operacija. Njima možemo ručno upravljati putem daljinskog upravljača ili ih možemo programirati za autonomni rad.

Robotska ruka.

Korak 3: Sastavljanje komponenata

Sad kad znamo o radu svih glavnih korištenih komponenata. Počnimo ih sastavljati i napravimo sklop za izgradnju robotizirane ruke s daljinskim upravljanjem.

  1. .Pričvrstite ploču Arduino Nano na ploči za ploču. Arduino će se napajati pozitivnom i negativnom žicom adaptera.
  2. Postavite i Bluetooth modul na ploču s pločama. Uključite Bluetooth modul putem Arduina. Spojite Tx pin Bluetooth modula s Rx pinom ploče Arduino Nan, a Rx pin Bluetooth modula spojite s Tx pinom ploče Arduino Nano.
  3. Kao što znamo da postoje 4 koračna motora. Svaki od njih ima tehnički naziv. Zovu se Lakat , Rame , Baza, i Hvataljka . Vcc i uzemljenje svih motora bit će zajednički i povezani s pozitivnim i negativnim dijelom 6V adaptera. Signalni pin svih četiri motora bit će spojen na pin5, pin6, pin9 i pin11 Arduino Nano-a.
  4. Provjerite jesu li veze koje ste napravili u skladu sa sljedećim dijagramom sklopa.

    Kružni dijagram

Korak 4: Početak rada s Arduinom

Ako već niste upoznati s Arduino IDE-om, ne brinite jer je u nastavku objašnjen korak po korak za postavljanje i upotrebu Arduino IDE-a s pločom mikrokontrolera.

  1. Preuzmite najnoviju verziju Arduino IDE sa Arduino.
  2. Spojite svoju Arduino Nano ploču s prijenosnim računalom i otvorite upravljačku ploču. Zatim kliknite na Hardver i zvuk . Sada kliknite na Uređaji i pisači. Ovdje pronađite priključak na koji je spojena vaša ploča mikrokontrolera. U mom slučaju jest COM14 ali je različito na različitim računalima.

    Pronalaženje luke

  3. Kliknite izbornik Alat i postavite ploču na Arduino Nano s padajućeg izbornika.

    Odbor za postavljanje

  4. U istom izborniku Alata postavite port na broj porta koji ste prije primijetili u Uređaji i pisači .

    Postavka porta

  5. U istom izborniku Alata postavite procesor na ATmega328P (stari pokretač).

    Procesor

  6. Za pisanje koda za upravljanje servo motorima potrebna nam je posebna biblioteka koja će nam pomoći da napišemo nekoliko funkcija za servo motore. Ova je knjižnica priložena zajedno s kodom u donjoj poveznici. Da biste uključili knjižnicu, kliknite na Skica> Uključi biblioteku> Dodaj ZIP. Knjižnica.

    Uključi biblioteku

  7. Preuzmite dolje priloženi kôd i zalijepite ga u svoj Arduino IDE. Klikni na Učitaj gumb za snimanje koda na ploči mikrokontrolera.

    Učitaj

Da biste preuzeli kôd, kliknite ovdje.

Korak 5: Preuzimanje aplikacije

Kao što smo sada sastavili cijeli sklop i prenijeli kod na ploču mikrokontrolera. omogućuje preuzimanje mobilne aplikacije koja će raditi kao daljinski upravljač za robotsku ruku. Besplatna aplikacija dostupna je u trgovini Google Play. Naziv aplikacije je Upravljanje robotom Little Arm . Da biste uspostavili Bluetooth vezu, uključite Bluetooth na svom mobitelu. Idite na postavke i uparite svoj mobitel s modulom HC-05. Nakon toga pritisnite Bluetooth tipku u aplikaciji. Ako postane zeleno, to znači da je aplikacija sada povezana i spremna za upravljanje robotskom rukom. Postoje klizači za podešavanje rada robotske ruke po želji.

App

Korak 6: Razumijevanje kodeksa

Kôd je dobro komentiran i lak za razumijevanje. Ipak, ukratko je objašnjeno u nastavku.

1. U početku je uključena biblioteka za pisanje koda za rad servo motora. Druga knjižnica matematika.h je uključen za izvođenje različitih matematičkih operacija u kodu. Četiri objekta su također inicijalizirana da se koriste za četiri servo motora.

#include // arduino library #include // standard c knjižnica #define PI 3.141 Servo baseServo; Servo rameServo; Servo lakatServo; Servo hvataljkaServo; naredba int;

2. Tada se deklarira struktura koja uzima vrijednosti za postolje, ramenski i lakatni servo motor.

struct jointAngle {// deklariranje strukture int base; int rame; int lakat; };

3. Nakon toga, neke se varijable inicijaliziraju za pohranu željenog prianjanja, kašnjenja i položaja servo motora. brzina je postavljena na 15, a objekt je napravljen tako da uzima vrijednost kuta u strukturi.

int željeniGrip; int gripperPos; int željeno odgađanje; int servoSpeed ​​= 15; int spreman = 0; struct jointAngle željeniAngle; // željeni kutovi servo pogona

Četiri. void postavljanje () je funkcija koja se koristi za postavljanje pinova Arduina kao ULAZ ili IZLAZ. Ovdje smo u ovoj funkciji izjavili da će pin motora biti spojen na koje iglice Arduina. Također je osigurano da Arduino predugo ne čita serijski ulaz. Početni položaj i brzina prijenosa također su postavljeni u ovoj funkciji. Brzina prijenosa je brzina kojom će ploča mikrokontrolera komunicirati sa servo-ima i Bluetooth modulom.

void setup () {Serial.begin (9600); baseServo.attach (9); // pričvršćuje osnovni servo na pin 9 na objekt servo-ramenaServo.attach (10); // pričvršćuje servo rame na zatik 9 na servo objekt elbowServo.attach (11); // pričvršćuje servo lakta na zatik 9 na servo objekt gripperServo.attach (6); // postavlja servo hvataljke na pin 9 na servo objekt Serial.setTimeout (50); // osigurava da arduino predugo ne čita serijski Serial.println ('pokrenut'); baseServo.write (90); // inicijalni položaji servo serva ShoulderServo.write (150); elbowServo.write (110); spremno = 0; }

5. servoParallelControl () je funkcija koja se koristi za otkrivanje trenutnog položaja robotske ruke i pomicanje prema naredbi danoj kroz mobilnu aplikaciju. Ako je trenutni položaj manji od stvarnog, ruka će se pomaknuti prema gore i obrnuto. Ova funkcija vraća vrijednost trenutnog položaja i brzinu servo-pogona.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // čitanje trenutne poz int newPos = startPos; // int theSpeed ​​= brzina; // definiramo gdje je poz s obzirom na naredbu // ako je trenutni položaj manji od stvarnog pomicanja prema gore if (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); kašnjenje (theSpeed); povratak 0; } else {povratak 1; }}

6. petlja void () je funkcija koja se ponavlja u petlji. Ova funkcija čita podatke koji dolaze serijski i pohranjuje kut svakog servoa u strukturu. U početku je status svih servo uređaja postavljen na nulu. Ovdje funkcija servoParallelControl () i u njemu se prosljeđuju parametri. ova će funkcija vratiti vrijednost i ona će biti pohranjena u varijablu statusa.

void loop () {if (Serial.available ()) {ready = 1; željeniAngle.base = Serial.parseInt (); željeniAngle.shoulder = Serial.parseInt (); željeniAngle.elbow = Serial.parseInt (); željeniGrip = Serial.parseInt (); željeniDelay = Serial.parseInt (); if (Serial.read () == ' n') {// ako je zadnji bajt 'd', tada prestanite čitati i izvršite naredbu 'd' znači 'gotovo' Serial.flush (); // obrišite sve ostale naredbe nagomilane u međuspremniku // pošaljite završetak naredbe Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int gotovo = 0; while (done == 0 && ready == 1) {// premjestiti servo na željeni položaj status1 = servoParallelControl (željeniAngle.base, baseServo, željeniDelay); status2 = servoParallelControl (željeniKutnik.rame, rameServo, željenoDelay); status3 = servoParallelControl (željeniUgao.lakat, lakatServo, željeniDelay); status4 = servoParallelControl (željeniGrip, gripperServo, željeniDelay); ako (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {gotovo = 1}} // kraj nekog vremena}

Ovo je bio cijeli postupak izrade robotske ruke. Nakon spaljivanja koda i preuzimanja aplikacije, robot bi trebao savršeno raditi kad se pomaknu klizači na aplikaciji. Također možete programirati ruku da samostalno radi za izvršavanje željenog zadatka.