Kaip padaryti savadarbį „Arduino“ ir „Bluetooth“ valdomą robotų ranką?

Pastarajame amžiuje robotika yra labiausiai atsirandanti tyrimų sritis. Robotai perėmė beveik viską, ką žmonės darė. Mes galime pamatyti autonominius robotus, atliekančius įvairias užduotis mūsų visuomenėje. Yra keletas nuotoliniu būdu valdomų robotų, kurie mums padeda atlikti įvairias operacijas. Nuo „Nano“ grandinių gamybos inžinerijos srityje iki sudėtingų operacijų medicinos srityje - robotai yra patikimesni nei žmonės.



Robotinė ranka

Šiame projekte mes sukursime robotinę ranką, kurią valdys „Arduino“ mikrovaldiklis. Jis bus valdomas per „Bluetooth“ naudojant „Android“ nuotolinio valdymo programą.



Kaip valdyti robotų ranką naudojant „Arduino“?

Dabar, kai žinome savo projekto santrauką. Surinkime daugiau informacijos apie schemas ir pradėkime kurti „Bluetooth“ valdomą robotizuotą ranką ir valdykime ją per „Bluetooth“.



1 veiksmas: rinkite komponentus

Geriausias būdas pradėti bet kokį projektą yra sudaryti išsamų komponentų sąrašą. Tai ne tik protingas būdas pradėti projektą, bet ir taupo mus nuo daugelio nepatogumų projekto viduryje. Toliau pateikiamas šio projekto komponentų sąrašas:



  • HC-05 belaidis „Bluetooth“ nuoseklusis siųstuvas-imtuvas
  • 6V adapteris
  • Šuolių laidai
  • Bandomoji Lenta

2 žingsnis: komponentų studijavimas

Turėdami išsamų visų komponentų, kuriuos ketiname naudoti, sąrašą, eikime žingsniu į priekį ir atlikime trumpą visų komponentų tyrimą.

„Arduino Nano“ yra mikrovaldiklio plokštė, atliekanti įvairias operacijas skirtingose ​​grandinėse. Tam reikia a C kodas tai lentai nurodo, kokias užduotis ir kaip atlikti. Jame yra 13 skaitmeninių įvesties / išvesties kontaktų, o tai reiškia, kad galime valdyti 13 skirtingų įrenginių. „Arduino Nano“ turi lygiai tokią pačią funkciją kaip „Arduino Uno“, tačiau yra gana mažo dydžio. „Arduino Nano“ plokštės mikrovaldiklis yra ATmega328p. Jei norite valdyti daugiau nei 13 įrenginių, naudokite „Arduino Mega“.

„Arduino Nano“



HC-05 belaidis „Bluetooth“ nuoseklusis siųstuvas-imtuvas : Šiame projekte mums reikalingas belaidis ryšys, todėl naudosime „Bluetooth“ technologiją ir tas modulis, kuris bus naudojamas, yra HC-05. Šis modulis turi keletą programuojamų duomenų perdavimo greičių, tačiau numatytasis perdavimo greitis yra 9600 bps. Jį galima sukonfigūruoti kaip pagrindinį arba pavaldųjį, o kitas modulis HC-06 gali veikti tik vergo režimu. Šis modulis turi keturis kaiščius. Vienas skirtas VCC (5V), o likusieji trys - GND, TX ir RX. Numatytasis šio modulio slaptažodis yra 1234 m arba 0000 . Jei norime bendrauti tarp dviejų mikrovaldiklių arba bendrauti su bet kokiu „Bluetooth“ funkciją turinčiu įrenginiu, pavyzdžiui, telefonu ar nešiojamuoju kompiuteriu HC-05, tai mums padeda. Jau yra keletas „Android“ programų, kurios šį procesą labai palengvina.

HC-05 „Bluetooth“ modulis

Tipiškas Robotinė ranka susideda iš kelių segmentų ir paprastai turi 6 jungtis. Jame yra mažiausiai 4 žingsniniai varikliai, kuriuos valdo kompiuteris. Žingsniniai varikliai skiriasi nuo kitų nuolatinės srovės variklių. Jie juda tiksliai tiksliai. Šios robotizuotos rankos naudojamos įvairioms operacijoms atlikti. Mes galime juos valdyti rankiniu būdu per nuotolinio valdymo pultą arba galime juos užprogramuoti veikti autonomiškai.

Robotinė ranka.

3 žingsnis: komponentų surinkimas

Dabar, kai žinome apie visų pagrindinių naudojamų komponentų veikimą. Pradėkime juos surinkti ir sukurti grandinę, kad sukurtume nuotoliniu būdu valdomą robotų ranką.

  1. .Tvirtinkite „Arduino Nano“ lentą ant duonos. „Arduino“ bus maitinamas per teigiamą ir neigiamą adapterio laidą.
  2. Įdėkite „Bluetooth“ modulį ir į duonos skydą. Įjunkite „Bluetooth“ modulį per „Arduino“. Prijunkite „Bluetooth“ modulio „Tx“ kaištį prie „Arduino Nan“ plokštės „Rx“ kaiščio ir prijunkite „Bluetooth“ modulio „Rx“ kaištį prie „Arduino Nano“ plokštės „Tx“ kaiščio.
  3. Kaip žinome, kad yra 4 žingsniniai varikliai. Kiekvienas iš jų turi techninį pavadinimą. Jie vadinami Alkūnė , Pečių , Bazė, ir Griebtuvas . Visų variklių „Vcc“ ir „Ground“ bus bendros ir sujungtos su 6V adapterio teigiamais ir neigiamais elementais. Visų keturių variklių signalo kaištis bus prijungtas prie „Arduino Nano“ pin5, pin6, pin9 ir pin11.
  4. Įsitikinkite, kad jūsų atliktos jungtys atitinka šią grandinės schemą.

    Grandinės schema

4 žingsnis: darbo pradžia naudojant „Arduino“

Jei dar nesate susipažinę su „Arduino IDE“, nesijaudinkite, nes žingsnis po žingsnio procedūra, kaip nustatyti ir naudoti „Arduino IDE“ su mikrovaldiklio plokšte, paaiškinta toliau.

  1. Atsisiųskite naujausią „Arduino IDE“ versiją iš Arduino.
  2. Prijunkite „Arduino Nano“ plokštę prie nešiojamojo kompiuterio ir atidarykite valdymo skydą. Tada spustelėkite Aparatūra ir garsas . Dabar spustelėkite Prietaisai ir spausdintuvai. Čia raskite prievadą, prie kurio prijungta jūsų mikrovaldiklio plokštė. Mano atveju taip yra COM14 bet skirtinguose kompiuteriuose yra kitaip.

    Rasti uostą

  3. Spustelėkite meniu Įrankis ir nustatykite lentą į „Arduino Nano“ iš išskleidžiamojo meniu.

    Nustatymo lenta

  4. Tame pačiame meniu Įrankis nustatykite prievadą į prievado numerį, kurį anksčiau pastebėjote Prietaisai ir spausdintuvai .

    Uosto nustatymas

  5. Tame pačiame meniu Įrankis nustatykite procesorių į „ATmega328P“ (senas įkrovos įrankis).

    Procesorius

  6. Norint parašyti kodą servovarikliams valdyti, mums reikia specialios bibliotekos, kuri padės mums parašyti keletą servovariklių funkcijų. Ši biblioteka kartu su kodu yra pridėta žemiau esančioje nuorodoje. Norėdami įtraukti biblioteką, spustelėkite Eskizas> Įtraukti biblioteką> Pridėti ZIP. Biblioteka.

    Įtraukti biblioteką

  7. Atsisiųskite žemiau pridėtą kodą ir įklijuokite jį į „Arduino IDE“. Spustelėkite įkelti mygtuką, kad įrašytumėte kodą savo mikrovaldiklio plokštėje.

    Įkelti

Norėdami atsisiųsti kodą, paspauskite čia.

5 žingsnis: Programos atsisiuntimas

Kadangi mes dabar surinkome visą schemą ir įkėlėme kodą į mikrovaldiklio plokštę. leidžia atsisiųsti programą mobiliesiems, kuri veiks kaip roboto rankos nuotolinis valdymas. „Google Play“ parduotuvėje yra nemokama programa. Programos pavadinimas yra Mažų rankų robotų valdymas . Norėdami užmegzti „Bluetooth“ ryšį, įjunkite „Bluetooth“ savo mobiliajame telefone. Eikite į nustatymus ir suporuokite savo mobilųjį telefoną su „HC-05“ moduliu. Tai padarę programoje paspauskite „Bluetooth“ mygtuką. Jei jis tampa žalias, tai reiškia, kad programa dabar prijungta ir paruošta naudoti robotą. Yra slankikliai, kad būtų galima valdyti robotų ranką pagal pageidavimą.

Program

6 veiksmas: supraskite kodą

Kodas yra gerai komentuojamas ir lengvai suprantamas. Bur still, tai trumpai paaiškinta toliau.

1. Pradžioje yra įtraukta biblioteka, skirta parašyti kodą servovarikliams valdyti. Kita biblioteka matematika.h yra įtraukta atlikti skirtingas matematines operacijas kode. Taip pat inicializuoti keturi objektai, skirti naudoti keturiems servovarikliams.

#include // arduino biblioteka #include // standartinė c biblioteka #define PI 3.141 Servo bazėServo; Servo pečiųServo; Servo alkūnėServo; Servo griebtuvasServo; int komanda;

2. Tada deklaruojama, kad konstrukcija ima pagrindo, pečių ir alkūnių servo variklių reikšmes.

struct jointAngle {// struktūros int bazės paskelbimas; int peties; int alkūnė; };

3. Po to, kai kurie kintamieji inicijuojami, norint išsaugoti norimą servovariklio sukibimą, vėlavimą ir padėtį. greitis nustatomas kaip 15, o objektas padaromas atsižvelgiant į konstrukcijos kampo vertę.

int norimaGrip; int griebtuvasPos; int pageidautinaDelay; int servoSpeed ​​= 15; int pasirengęs = 0; struct jointAngle pageidaujamasAngle; // norimi servos kampai

Keturi. negaliojanti sąranka () yra funkcija, naudojama nustatyti „Arduino“ kaiščius kaip „INPUT“ arba „Output“. Šioje funkcijoje mes paskelbėme, kad variklių kaištis bus sujungtas su kuriais „Arduino“ kaiščiais. Taip pat užtikrinama, kad „Arduino“ per ilgai neskaitytų nuosekliojo įvesties. Šioje funkcijoje taip pat nustatoma pradinė padėtis ir perdavimo sparta. „Baud Rate“ yra greitis, kuriuo mikrovaldiklio plokštė susisieks su prijungtais servo ir „Bluetooth“ moduliais.

negaliojanti sąranka () {Serial.begin (9600); baseServo.attach (9); // pritvirtina pagrindinį servo ant kaiščio 9 prie servo objekto petiesServo.attach (10); // pritvirtina peties servo ant kaiščio 9 prie servo objekto alkūnėsServo.attach (11); // pritvirtina alkūnės servo ant kaiščio 9 prie servo objekto griebtuvoServo.attach (6); // pritvirtina griebtuvo servo ant kaiščio 9 prie servo objekto Serial.setTimeout (50); // užtikrina, kad arduino per ilgai neskaitys serijos Serial.println ('Start'); baseServo.write (90); // vidinės servos peties padėtiesServo.write (150); alkūnėServo.rašyti (110); pasirengęs = 0; }

5. servoParallelControl () yra funkcija, naudojama aptikti dabartinę roboto rankos padėtį ir ją perkelti pagal komandą, pateiktą per mobiliąją programėlę. Jei dabartinė padėtis yra mažesnė už tikrąją, ranka judės aukštyn ir atvirkščiai. Ši funkcija grąžins dabartinės padėties vertę ir servo greitį.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // perskaityti dabartinį pos int newPos = startPos; // int theSpeed ​​= greitis; // nurodykite, kur yra pos, atsižvelgiant į komandą // jei dabartinė padėtis yra mažesnė už faktinį judėjimą aukštyn if (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); vėlavimas („Speed“); grąžinti 0; } else {grąžinti 1; }}

6. tuščia kilpa () yra funkcija, kuri kartojasi cikle. Ši funkcija nuskaito nuosekliai gaunamus duomenis ir saugo kiekvieno servo kampą konstrukcijoje. Iš pradžių visų servoservisų būsena nustatoma į nulį. Čia funkcija servoParallelControl () iškviečiamas ir jame perduodami parametrai. ši funkcija grąžins vertę ir bus išsaugota būsenos kintamajame.

void loop () {if (Serial.available ()) {pasirengęs = 1; norimasAngle.base = Serial.parseInt (); norimasAngle.shoulder = Serial.parseInt (); norimasAngle.elbow = Serial.parseInt (); norima rankena = Serial.parseInt (); norimasDelay = Serial.parseInt (); if (Serial.read () == ' n') {// jei paskutinis baitas yra „d“, tada nustokite skaityti ir vykdykite komandą „d“ reiškia „atlikta“ Serial.flush (); // išvalyti visas kitas buferyje sukauptas komandas // siųsti komandą Serial.print ('d'); }} int būsena1 = 0; int status2 = 0; int būsena3 = 0; int status4 = 0; int padaryta = 0; while (done == 0 && ready == 1) {// perkelkite servo į norimos padėties būseną1 = servoParallelControl (norimasAngle.base, baseServo, norimasDelay); status2 = servoParallelControl (norimas kampas.pečiai, petysServas, norimas atidėjimas); status3 = servoParallelControl (norimas kampas.lėkštė, alkūnėServo, norimas atidėjimas); status4 = servoParallelControl (norima rankena, „gripperServo“, norima delsa); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // pabaigos laikas}

Tai buvo visa robotų rankos gamybos procedūra. Įdegus kodą ir atsisiuntus programą, robotas turėtų veikti puikiai, kai judinami programos slankikliai. Taip pat galite užprogramuoti ranką savarankiškai dirbti norimą užduotį atlikti.