Kā padarīt DIY Arduino un Bluetooth kontrolētu robotu roku?

Pēdējā gadsimta laikā robotika ir visizplatītākā pētījumu joma. Roboti ir pārņēmuši kontroli pār gandrīz visu, ko cilvēki darīja agrāk. Mēs varam redzēt autonomus robotus, kas mūsu sabiedrībā veic dažādus uzdevumus. Ir arī daži tālvadības roboti, kas mums palīdz veikt dažādas darbības. Sākot ar Nano shēmu izgatavošanu inženierzinātņu jomā un beidzot ar sarežģītu operāciju veikšanu medicīnas jomā, roboti ir uzticamāki nekā cilvēki.



Robotu roka

Šajā projektā mēs gatavojamies izveidot robotizētu roku, kuru vadīs Arduino mikrokontrolleris. To kontrolēs, izmantojot Bluetooth, izmantojot android tālvadības lietotni.



Kā kontrolēt robotu roku, izmantojot Arduino?

Tagad, kad mēs zinām sava projekta kopsavilkumu. Apkoposim vairāk informācijas par shēmu un sāksim veidot ar Bluetooth vadāmu robotu roku un vadīsim to, izmantojot Bluetooth.



1. darbība: komponentu savākšana

Vislabākā pieeja jebkura projekta uzsākšanai ir pilnīga sastāvdaļu saraksta sastādīšana. Tas ir ne tikai saprātīgs veids, kā sākt projektu, bet arī ietaupa mūs no daudzām neērtībām projekta vidū. Tālāk ir sniegts šī projekta sastāvdaļu saraksts:



  • HC-05 bezvadu Bluetooth seriālais uztvērējs
  • 6V adapteris
  • Džemperu vadi
  • Maizes dēlis

2. solis: Komponentu izpēte

Tā kā mums ir pilns visu to komponentu saraksts, kurus mēs izmantosim, virzīsimies soli uz priekšu un īsi izpētīsim visus komponentus.

Arduino Nano ir mikrokontrolleru plate, kas veic dažādas darbības dažādās ķēdēs. Tas prasa a C kods kas padomei norāda, kādi uzdevumi un kā jāveic. Tam ir 13 digitālās I / O tapas, kas nozīmē, ka mēs varam darbināt 13 dažādas ierīces. Arduino Nano ir tieši tāda pati funkcionalitāte kā Arduino Uno, bet diezgan mazā izmērā. Arduino Nano dēļa mikrokontrolleris ir ATmega328p. Ja vēlaties kontrolēt vairāk nekā 13 ierīces, izmantojiet Arduino Mega.

Arduino Nano



HC-05 bezvadu Bluetooth seriālais uztvērējs : Šajā projektā mums nepieciešama bezvadu komunikācija, tāpēc mēs izmantosim Bluetooth tehnoloģiju, un šim modulim, kas tiks izmantots, ir HC-05. Šim modulim ir vairāki programmējami datu pārraides ātrumi, bet noklusējuma pārraides ātrums ir 9600 bps. To var konfigurēt kā galveno vai vergu, savukārt cits modulis HC-06 var darboties tikai vergu režīmā. Šim modulim ir četras tapas. Viens VCC (5V) un pārējie trīs GND, TX un RX. Šī moduļa noklusējuma parole ir 1234 vai 0000 . Ja mēs vēlamies sazināties starp diviem mikrokontrolleriem vai sazināties ar jebkuru ierīci ar Bluetooth funkcionalitāti, piemēram, tālruni vai klēpjdatoru HC-05, tas mums palīdz. Jau tagad ir pieejamas vairākas Android lietojumprogrammas, kas šo procesu padara daudz vieglāku.

HC-05 Bluetooth modulis

Tipisks Robotu roka sastāv no vairākiem segmentiem, un tajā parasti ir 6 savienojumi. Tajā ir vismaz 4 soļu motori, kurus vada dators. Stepper motori atšķiras no citiem līdzstrāvas motoriem. Viņi pārvietojas precīzi ar precīzu soli. Šīs robotizētās rokas tiek izmantotas dažādu darbību veikšanai. Mēs varam tos darbināt manuāli, izmantojot tālvadības pulti, vai arī mēs varam tos ieprogrammēt autonomai darbībai.

Robotu roka.

3. solis: komponentu montāža

Tagad, kad mēs zinām par visu galveno izmantoto komponentu darbību. Sāksim tos salikt un izveidot ķēdi, lai izveidotu tālvadības robotu roku.

  1. .Pievienojiet Arduino Nano dēli uz maizes dēļa. Arduino tiks darbināts caur adaptera pozitīvo un negatīvo vadu.
  2. Novietojiet Bluetooth moduli arī uz paneļa. Ieslēdziet Bluetooth moduli, izmantojot Arduino. Savienojiet Bluetooth moduļa Tx tapu ar Arduino Nan dēļa Rx tapu un savienojiet Bluetooth moduļa Rx tapu ar Arduino Nano dēļa Tx tapu.
  3. Tā kā mēs zinām, ka ir 4 soļu motori. Katram no tiem ir tehniskais nosaukums. Tos sauc Elkonis , Plecu , Bāze, un Gripper . Visu motoru Vcc un Ground būs kopīgi un savienoti ar 6V adaptera pozitīvo un negatīvo. Visu četru motoru signāla tapa tiks savienota ar Arduino Nano pin5, pin6, pin9 un pin11.
  4. Pārliecinieties, vai veiktie savienojumi atbilst šai shēmai.

    Ķēdes shēma

4. solis: darba sākšana ar Arduino

Ja jūs vēl neesat pazīstams ar Arduino IDE, neuztraucieties, jo tālāk ir paskaidrota pakāpeniska procedūra, kā iestatīt un izmantot Arduino IDE ar mikrokontrolleru paneli.

  1. Lejupielādējiet jaunāko Arduino IDE versiju no Arduino.
  2. Pievienojiet savu Arduino Nano dēli klēpjdatoram un atveriet vadības paneli. Pēc tam noklikšķiniet uz Aparatūra un skaņa . Tagad noklikšķiniet uz Ierīces un printeri. Šeit atrodiet portu, kuram ir pievienota jūsu mikrokontrolleru plate. Manā gadījumā tā ir COM14 bet dažādos datoros tas ir atšķirīgs.

    Ostas atrašana

  3. Noklikšķiniet uz izvēlnes Rīks un iestatiet tāfeli uz Arduino Nano no nolaižamās izvēlnes.

    Dēļu iestatīšana

  4. Tajā pašā izvēlnē Rīks iestatiet portu uz porta numuru, kuru iepriekš novērojāt Ierīces un printeri .

    Portas iestatīšana

  5. Tajā pašā izvēlnē Rīks iestatiet Procesors uz ATmega328P (Old Bootloader).

    Procesors

  6. Lai ierakstītu kodu servomotoru darbināšanai, mums ir nepieciešama īpaša bibliotēka, kas mums palīdzēs uzrakstīt vairākas funkcijas servomotoriem. Šī bibliotēka ir pievienota kopā ar kodu zemāk esošajā saitē. Lai iekļautu bibliotēku, noklikšķiniet uz Skice> Iekļaut bibliotēku> Pievienot ZIP. Bibliotēka.

    Iekļaut bibliotēku

  7. Lejupielādējiet zemāk pievienoto kodu un ielīmējiet to savā Arduino IDE. Noklikšķiniet uz augšupielādēt pogu, lai ierakstītu kodu mikrokontrolleru dēlī.

    Augšupielādēt

Lai lejupielādētu kodu, noklikšķiniet šeit.

5. darbība. Lietotnes lejupielāde

Tā kā mēs tagad esam samontējuši visu shēmu un augšupielādējuši kodu mikrokontrolleru dēlī. ļauj lejupielādēt mobilo lietotni, kas darbosies kā robota rokas tālvadības pults. Google Play veikalā ir pieejama bezmaksas lietotne. Lietotnes nosaukums ir Mazo roku robotu vadība . Lai izveidotu Bluetooth savienojumu, ieslēdziet Bluetooth savā mobilajā ierīcē. Pārejiet uz iestatījumiem un savienojiet pārī mobilo ierīci ar moduli HC-05. Pēc tam lietotnē nospiediet Bluetooth pogu. Ja tas kļūst zaļš, tas nozīmē, ka lietotne tagad ir savienota un gatava darboties ar robotu. Ir slīdņi, lai iestatītu robotizētās rokas darbību pēc vēlēšanās.

App

6. solis: izpratne par kodu

Kods ir labi komentēts un viegli saprotams. Bur Still, tas ir īsumā paskaidrots zemāk.

1. Sākumā ir iekļauta bibliotēka, lai uzrakstītu kodu servomotoru darbināšanai. Vēl viena bibliotēka math.h ir iekļauts dažādu matemātisko darbību veikšanai kodā. Četri priekšmeti tiek inicializēti arī izmantošanai četriem servomotoriem.

#include // arduino bibliotēka #include // standarta c bibliotēka #define PI 3.141 Servo baseServo; Servo plecsServo; Servo elkonisServo; Servo satvērējsServo; int komanda;

2. Tad tiek paziņots, ka struktūra ņem bāzes, plecu un elkoņu servomotoru vērtības.

struct jointAngle {// struktūras atcelšana int bāzē; int plecu; int elkonis; };

3. Pēc tam tiek inicializēti daži mainīgie, lai saglabātu servomotora vēlamo saķeri, aizturi un stāvokli. ātrums ir iestatīts uz 15, un objekts tiek izgatavots, lai ņemtu leņķa vērtību konstrukcijā.

int vēlamaisGrip; int gripperPos; int vēlamaisKavēšanās; int servoSpeed ​​= 15; int gatavs = 0; struct jointAngle vēlamaisAngle; // vēlamie servo leņķi

Četri. anulēt iestatīšanu () ir funkcija, ko izmanto, lai iestatītu Arduino tapas kā INPUT vai OUTPUT. Šajā funkcijā mēs esam paziņojuši, ka motoru tapa būs savienota ar kurām Arduino tapām. Tiek arī nodrošināts, ka Arduino pārāk ilgi nelasa sērijveida ievadi. Šajā funkcijā ir iestatīta arī sākotnējā pozīcija un pārraides ātrums. Bauda ātrums ir ātrums, ar kādu mikrokontrolleru panelis sazināsies ar pievienoto servo un Bluetooth moduli.

void setup () {Sērijas.sākt (9600); baseServo.attach (9); // piestiprina pamata servo uz tapas 9 pie servo objekta plecaServo.attach (10); // piestiprina plecu servo uz tapas 9 pie servo objekta elbowServo.attach (11); // piestiprina elkoņa servo uz tapas 9 pie servo objekta satvērējaServo.attach (6); // piestiprina 9. tapas satvērēja servo servo objektam Serial.setTimeout (50); // nodrošina, ka arduino pārāk ilgi nelasa sēriju Serial.println ('Start'); baseServo.write (90); // servo pleca intiālās pozīcijasServo.write (150); elbowServo.write (110); gatavs = 0; }

5. servoParallelControl () ir funkcija, ko izmanto, lai noteiktu robotizētās rokas pašreizējo stāvokli un pārvietotu to saskaņā ar komandu, kas dota, izmantojot mobilo lietotni. Ja pašreizējā pozīcija ir mazāka par faktisko, roka virzīsies uz augšu un otrādi. Šī funkcija atgriezīs pašreizējās pozīcijas vērtību un servo ātrumu.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // lasīt pašreizējo poz int newPos = startPos; // int theSpeed ​​= ātrums; // definējiet pozīciju attiecībā pret komandu // ja pašreizējā pozīcija ir mazāka par faktisko virzību uz augšu, ja (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); kavēšanās (theSpeed); atgriešanās 0; } else {return 1; }}

6. void loop () ir funkcija, kas atkārtoti darbojas ciklā. Šī funkcija nolasa datus, kas nāk sērijveidā, un struktūrā saglabā katra servo leņķi. Sākumā visu servo serveru statuss tiek iestatīts uz nulli. Šeit funkcija servoParallelControl () tiek izsaukts un tajā tiek nodoti parametri. šī funkcija atgriezīs vērtību, un tā tiks saglabāta statusa mainīgajā.

void loop () {if (Seriāls.pieejams ()) {gatavs = 1; wantAngle.base = Seriālais.parseInt (); wantAngle.shoulder = Seriālais.parseInt (); wantAngle.elbow = Seriālais.parseInt (); wantGrip = Serial.parseInt (); wantedDelay = Seriālais.parseInt (); ja (Serial.read () == ' n') {// ja pēdējais baits ir 'd', tad pārtrauciet lasīšanu un izpildiet komandu 'd' apzīmē 'done' Serial.flush (); // notīrīt visas citas buferī sakrautās komandas // nosūtīt komandas Serial.print ('d') pabeigšanu; }} int statuss1 = 0; int statuss2 = 0; int statuss3 = 0; int statuss4 = 0; int izdarīts = 0; while (izdarīts == 0 && gatavs == 1) {// pārvietojiet servo uz vēlamo pozīciju1 = servoParallelControl (wishAngle.base, baseServo, wantedDelay); status2 = servoParallelControl (wantAngle.plecs, plecuServo, wantedDelay); status3 = servoParallelControl (vēlamaisAngle.elbow, elbowServo, wantedDelay); status4 = servoParallelControl (requiredGrip, gripperServo, wantedDelay); ja (statuss1 == 1 & statuss2 == 1 & statuss3 == 1 & statuss4 == 1) {izdarīts = 1}} // brīža beigas}

Šī bija visa robotizētās rokas izgatavošanas procedūra. Pēc koda sadedzināšanas un lietotnes lejupielādes robotam vajadzētu darboties pilnīgi labi, kad tiek pārvietoti lietotnes slīdņi. Varat arī ieprogrammēt roku autonomai darbībai, lai veiktu vēlamo uzdevumu.