Kako narediti DIY Arduino in Bluetooth nadzorovano robotsko roko?

V zadnjem stoletju je robotika najpogostejše področje raziskav. Roboti so prevzeli nadzor nad skoraj vsem, kar so ljudje počeli. V naši družbi lahko vidimo avtonomne robote, ki opravljajo različne naloge. Obstaja tudi nekaj robotov na daljinsko upravljanje, ki nam pomagajo izvajati različne operacije. Roboti so bolj zanesljivi kot ljudje, od izdelave Nano vezij na področju tehnike in do zapletenih operacij na področju medicine.



Robotska roka

V tem projektu bomo izdelali robotsko roko, ki jo bo nadzoroval mikrokrmilnik Arduino. Nadzirali ga bodo prek Bluetootha s pomočjo android aplikacije za daljinsko upravljanje.



Kako nadzirati robotsko roko z uporabo Arduina?

Zdaj, ko poznamo povzetek našega projekta. Zberite nekaj več informacij o vezju in začnite graditi robotsko roko pod nadzorom Bluetooth in jo nadzirati prek Bluetootha.



1. korak: Zbiranje komponent

Najboljši pristop za začetek katerega koli projekta je sestaviti popoln seznam komponent. To ni samo inteligenten način za začetek projekta, ampak nas tudi rešuje številnih nevšečnosti sredi projekta. Seznam komponent tega projekta je spodaj:



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

2. korak: Preučevanje komponent

Ker imamo popoln seznam vseh komponent, ki jih bomo uporabili, pojdimo korak naprej in si oglejmo kratko študijo vseh komponent.

Arduino Nano je plošča mikrokrmilnika, ki izvaja različne operacije v različnih vezjih. Zahteva a Koda C ki odboru pove, katere naloge naj izvaja in kako. Ima 13 digitalnih I / O zatičev, kar pomeni, da lahko upravljamo 13 različnih naprav. Arduino Nano ima popolnoma enako funkcionalnost kot Arduino Uno, vendar v precej majhni velikosti. Mikrokrmilnik na plošči Arduino Nano je ATmega328p. Če želite nadzorovati več kot 13 naprav, uporabite Arduino Mega.

Arduino Nano



HC-05 brezžični serijski oddajnik Bluetooth : V tem projektu potrebujemo brezžično komunikacijo, zato bomo uporabili tehnologijo Bluetooth, za modul, ki bo uporabljen, pa HC-05. Ta modul ima več programabilnih hitrosti prenosa, vendar je privzeta hitrost prenosa 9600 bps. Lahko ga nastavite kot glavnega ali pomožnega, drugi modul HC-06 pa lahko deluje samo v pomožnem načinu. Ta modul ima štiri nožice. Ena za VCC (5V), preostale tri pa za GND, TX in RX. Privzeto geslo tega modula je 1234 ali 0000 . Če želimo komunicirati med dvema mikrokrmilnikoma ali komunicirati s katero koli napravo s funkcijo Bluetooth, kot je telefon ali prenosnik, nam HC-05 pri tem pomaga. Na voljo je že več aplikacij za Android, kar precej olajša ta postopek.

Modul Bluetooth HC-05

Tipičen Robotska roka je sestavljen iz več segmentov in ima običajno 6 sklepov. Vsebuje najmanj 4 koračne motorje, ki jih upravlja računalnik. Koračni motorji se razlikujejo od drugih enosmernih motorjev. Premikajo se natančno v natančnih korakih. Te robotske roke se uporabljajo za izvajanje različnih operacij. Z njimi lahko ročno upravljamo prek daljinskega upravljalnika ali pa jih programiramo za samostojno delovanje.

Robotska roka.

3. korak: Sestavljanje komponent

Zdaj, ko vemo o delovanju vseh glavnih uporabljenih komponent. Začnimo jih sestavljati in naredimo vezje za izdelavo robotsko roke z daljinskim upravljanjem.

  1. .Priložite ploščo Arduino Nano na ploščo. Arduino se napaja preko pozitivne in negativne žice adapterja.
  2. Modul Bluetooth postavite tudi na ploščo. Vklopite modul Bluetooth prek Arduina. Priključite Tx zatič modula Bluetooth na Rx zatič plošče Arduino Nan in priključek Rx modula Bluetooth priključite na Tx zatič plošče Arduino Nano.
  3. Kot vemo, obstajajo 4 koračni motorji. Vsak ima tehnično ime. Pokličejo se Komolec , Rame , Osnova, in Prijemalo . Vcc in ozemljitev vseh motorjev bosta skupna in povezana s pozitivnim in negativnim 6V adapterjem. Signalni zatič vseh štirih motorjev bo povezan s pin5, pin6, pin9 in pin11 Arduino Nano.
  4. Prepričajte se, da so vzpostavljene povezave skladne z naslednjim vezjem.

    Shema vezja

4. korak: Uvod v Arduino

Če še niste seznanjeni z Arduino IDE, ne skrbite, ker je spodaj razložen podroben postopek za nastavitev in uporabo Arduino IDE z mikrokrmilnikom.

  1. Prenesite najnovejšo različico Arduino IDE iz Arduino.
  2. Povežite ploščo Arduino Nano s prenosnikom in odprite nadzorno ploščo. Nato kliknite Strojna oprema in zvok . Zdaj kliknite Naprave in tiskalniki. Tu poiščite vrata, na katera je priključena plošča vašega mikrokrmilnika. V mojem primeru je COM14 v različnih računalnikih pa je drugače.

    Iskanje pristanišča

  3. Kliknite meni Orodje in ploščo nastavite na Arduino Nano iz spustnega menija.

    Nastavitvena plošča

  4. V istem meniju Orodja nastavite vrata na številko vrat, ki ste jo opazili prej v Naprave in tiskalniki .

    Nastavitev vrat

  5. V istem meniju orodja nastavite procesor na ATmega328P (stari zagonski nalagalnik).

    Procesor

  6. Za pisanje kode za upravljanje servo motorjev potrebujemo posebno knjižnico, ki nam bo pomagala napisati več funkcij za servo motorje. Ta knjižnica je priložena skupaj s kodo na spodnji povezavi. Če želite vključiti knjižnico, kliknite Skica> Vključi knjižnico> Dodaj ZIP. Knjižnica.

    Vključi knjižnico

  7. Prenesite spodnjo kodo in jo prilepite v svoj Arduino IDE. Kliknite na naložite za zapisovanje kode na ploščo mikrokrmilnika.

    Naloži

Če želite prenesti kodo, Klikni tukaj.

5. korak: Prenos aplikacije

Kot smo zdaj sestavili celo vezje in naložili kodo na ploščo mikrokrmilnika. omogoča prenos mobilne aplikacije, ki bo delovala kot daljinski upravljalnik robotske roke. V trgovini google play je na voljo brezplačna aplikacija. Ime aplikacije je Little Arm Robot Control . Če želite vzpostaviti povezavo Bluetooth, vklopite Bluetooth v mobilnem telefonu. Pojdite na nastavitve in svoj mobilni telefon seznanite z modulom HC-05. Po tem pritisnite gumb Bluetooth v aplikaciji. Če se obarva zeleno, to pomeni, da je aplikacija zdaj povezana in pripravljena za upravljanje robotske roke. Obstajajo drsniki, s katerimi lahko nastavite upravljanje robotske roke po želji.

App

6. korak: Razumevanje kodeksa

Koda je dobro komentirana in enostavna za razumevanje. Še vedno pa je na kratko razloženo spodaj.

1. Na začetku je vključena knjižnica za pisanje kode za upravljanje servo motorjev. Druga knjižnica math.h je vključen za izvajanje različnih matematičnih operacij v kodi. Inicializirajo se tudi štirje predmeti, ki se uporabljajo za štiri servo motorje.

#include // arduino knjižnica #include // standardna knjižnica c #define PI 3.141 Servo baseServo; Servo ramaServo; Servo komolecServo; Servo gripperServo; ukaz int;

2. Nato se razglasi struktura, ki zavzame vrednosti za osnovni, ramenski in komolčni servo motor.

struct jointAngle {// razglasitev strukture int base; int ramo; int komolec; };

3. Po tem se nekatere spremenljivke inicializirajo za shranjevanje želenega oprijema, zakasnitve in položaja servo motorja. hitrost je nastavljena na 15, predmet pa je narejen tako, da zavzame vrednost kota v konstrukciji.

int zaželenGrip; int gripperPos; int zaželena zakasnitev; int servoSpeed ​​= 15; int pripravljen = 0; struct jointAngle zaželenAngle; // želeni koti servomotorjev

Štiri. void setup () je funkcija, ki se uporablja za nastavitev zatičev Arduina kot VHOD ali IZHOD. Tu v tej funkciji smo izjavili, da bo zatič motorjev povezan s katerimi zatiči Arduina. Zagotovljeno je tudi, da Arduino predolgo ne bere serijskih vhodov. V tej funkciji je nastavljen tudi začetni položaj in hitrost prenosa. Hitrost prenosa je hitrost, s katero bo plošča mikrokrmilnika komunicirala s servo in Bluetooth modulom.

void setup () {Serial.begin (9600); baseServo.attach (9); // pritrdi osnovni servo na zatič 9 na predmet servo-rameServo.attach (10); // pritrdi ramenski servo na zatiču 9 na servo objekt elbowServo.attach (11); // pritrdi servo komolca na zatič 9 na servo objekt gripperServo.attach (6); // pritrdi servo prijemalko na zatiču 9 na servo objekt Serial.setTimeout (50); // zagotavlja, da arduino predolgo ne bere serijskega Serial.println ('zagnano'); baseServo.write (90); // začetni položaji servomotorjev ShoulderServo.write (150); elbowServo.write (110); pripravljen = 0; }

5. servoParallelControl () je funkcija, ki se uporablja za zaznavanje trenutnega položaja robotske roke in njeno premikanje v skladu z ukazom, ki ga dobite v mobilni aplikaciji. Če je trenutni položaj manjši od dejanskega, se bo roka premaknila navzgor in obratno. Ta funkcija bo vrnila vrednost trenutnega položaja in hitrost servo pogona.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // preberemo trenutno poz int newPos = startPos; // int theSpeed ​​= hitrost; // določimo, kje je poz glede na ukaz // če je trenutni položaj manjši od dejanskega premika navzgor if (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); zamuda (theSpeed); vrnitev 0; } else {vrnitev 1; }}

6. void loop () je funkcija, ki se večkrat izvaja v zanki. Ta funkcija bere podatke, ki prihajajo zaporedno, in shrani kot vsakega servo v strukturi. Sprva je stanje vseh servo postaj nastavljeno na nič. Tu je funkcija servoParallelControl () in se v njem posredujejo parametri. ta funkcija bo vrnila vrednost in bo shranjena v spremenljivki statusa.

void loop () {if (Serial.available ()) {ready = 1; željeniAngle.base = Serial.parseInt (); željeniAngle.shoulder = Serial.parseInt (); željeniAngle.elbow = Serial.parseInt (); željeniGrip = Serial.parseInt (); желанDelay = Serial.parseInt (); if (Serial.read () == ' n') {// če je zadnji bajt 'd', prenehajte z branjem in izvršite ukaz 'd' pomeni 'done' Serial.flush (); // počistimo vse ostale ukaze, nabrane v vmesnem pomnilniku // pošljemo zaključek ukaza Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int končano = 0; while (done == 0 && ready == 1) {// premaknite servo v želeni položaj status1 = servoParallelControl (željeniAngle.base, baseServo, желанDelay); status2 = servoParallelControl (желан Angle.rame, rameServo, želeniZakasnitev); status3 = servoParallelControl (željeniAngle.elbow, komolecServo, želeniDelay); status4 = servoParallelControl (željeniGrip, gripperServo, želeniDelay); če (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // konec časa}

Zdaj je bil to celoten postopek izdelave robotske roke. Po zapisovanju kode in prenosu aplikacije bi moral robot popolnoma delovati, ko drsnike v aplikaciji premaknete. Roko lahko programirate tudi tako, da deluje samostojno za izvajanje želene naloge.