Ako si vyrobiť robotické rameno ovládané pomocou Arduina a Bluetooth?

V poslednom storočí je robotika najrozvinutejšou oblasťou výskumu. Roboty prevzali kontrolu nad takmer všetkým, čo ľudia kedysi robili. Vidíme autonómnych robotov, ktorí v našej spoločnosti vykonávajú rôzne úlohy. Existujú aj niektoré diaľkovo ovládané roboty, ktoré nám pomáhajú vykonávať rôzne operácie. Od výroby nanoobvodov v oblasti inžinierstva až po vykonávanie komplexných chirurgických zákrokov v oblasti medicíny sú roboty spoľahlivejšie ako ľudské bytosti.



Robotické rameno

V tomto projekte vyrobíme Robotické rameno, ktoré bude riadené mikrokontrolérom Arduino. Ovládať sa bude cez Bluetooth pomocou aplikácie pre Android na diaľkové ovládanie.



Ako ovládať robotické rameno pomocou Arduina?

Teraz, keď už vieme, abstrakt nášho projektu. Zozbierajme ďalšie informácie o obvodoch a začnime stavať robotické rameno ovládané Bluetooth a ovládať ho cez Bluetooth.



Krok 1: Zhromaždenie komponentov

Najlepším spôsobom, ako zahájiť akýkoľvek projekt, je vytvoriť kompletný zoznam komponentov. Toto nie je len inteligentný spôsob zahájenia projektu, ale tiež nás ušetrí od mnohých nepríjemností uprostred projektu. Zoznam komponentov tohto projektu je uvedený nižšie:



  • Bezdrôtový sériový vysielač Bluetooth HC-05
  • 6V adaptér
  • Prepojovacie drôty
  • Nepál

Krok 2: Štúdium komponentov

Pretože máme kompletný zoznam všetkých komponentov, ktoré budeme používať, poďme o krok vpred a urobme si krátku štúdiu všetkých komponentov.

Arduino Nano je doska mikrokontroléra, ktorá vykonáva rôzne operácie v rôznych obvodoch. Vyžaduje si to Zákonníka C. ktorý správnej rade povie, aké úlohy má vykonávať a ako. Má 13 digitálnych I / O pinov, čo znamená, že môžeme obsluhovať 13 rôznych zariadení. Arduino Nano má úplne rovnakú funkcionalitu ako Arduino Uno, ale v celkom malom rozmere. Mikrokontrolér na doske Arduino Nano je ATmega328p. Ak chcete ovládať viac ako 13 zariadení, použite Arduino Mega.

Arduino Nano



Bezdrôtový sériový vysielač Bluetooth HC-05 : V tomto projekte potrebujeme bezdrôtovú komunikáciu, takže použijeme technológiu Bluetooth a pre tento modul, ktorý sa bude používať, je HC-05. Tento modul má niekoľko programovateľných prenosových rýchlostí, ale predvolená prenosová rýchlosť je 9600 b / s. Môže byť nakonfigurovaný ako hlavný alebo podriadený, zatiaľ čo iný modul HC-06 môže pracovať iba v podriadenom režime. Tento modul má štyri piny. Jeden pre VCC (5V) a zvyšné tri pre GND, TX a RX. Predvolené heslo tohto modulu je 1234 alebo 0000 . Ak chceme komunikovať medzi dvoma mikrokontrolérmi alebo komunikovať s akýmkoľvek zariadením s funkciou Bluetooth, napríklad telefónom alebo notebookom, pomôže nám to HC-05. K dispozícii je už niekoľko aplikácií pre Android, čo tento proces výrazne uľahčuje.

Modul Bluetooth HC-05

Typický Robotické rameno je zložený z niekoľkých segmentov a má zvyčajne 6 kĺbov. Obsahuje minimálne 4 krokové motory, ktoré sú riadené počítačom. Krokové motory sa líšia od ostatných jednosmerných motorov. Pohybujú sa presne v presných prírastkoch. Tieto robotické ramená sa používajú na vykonávanie rôznych operácií. Môžeme ich ovládať manuálne pomocou diaľkového ovládača alebo ich môžeme naprogramovať tak, aby fungovali autonómne.

Robotické rameno.

Krok 3: Zostavenie komponentov

Teraz, keď vieme o fungovaní všetkých hlavných použitých komponentov. Poďme ich zostaviť a pripraviť obvod na zostavenie diaľkovo ovládaného robotického ramena.

  1. .Pripevnite dosku Arduino Nano na nepájivú dosku. Arduino bude napájané cez kladný a záporný vodič adaptéra.
  2. Vložte modul Bluetooth aj na nepájivú dosku. Zapnite modul Bluetooth cez Arduino. Pripojte kolík Tx modulu Bluetooth k kolíku Rx karty Arduino Nan a kolík Rx modulu Bluetooth pripojte k kolíku Tx karty Arduino Nano.
  3. Ako vieme, existujú 4 krokové motory. Každý z nich má technický názov. Nazývajú sa Lakeť , Rameno , Základňa, a Chápadlo . Vcc a uzemnenie všetkých motorov budú spoločné a pripojené ku kladnému a zápornému pólu 6V adaptéra. Signálny pin všetkých štyroch motorov bude pripojený na pin5, pin6, pin9 a pin11 Arduino Nano.
  4. Skontrolujte, či sú vykonané pripojenia podľa nasledujúcej schémy zapojenia.

    Schéma zapojenia

Krok 4: Začíname s Arduino

Ak ešte nemáte skúsenosti s Arduino IDE, nebojte sa, pretože nižšie je vysvetlený krok za krokom postup nastavenia a používania Arduino IDE s doskou mikrokontroléra.

  1. Stiahnite si najnovšiu verziu Arduino IDE z Arduino.
  2. Pripojte dosku Arduino Nano k notebooku a otvorte ovládací panel. Potom kliknite na Hardvér a zvuk . Teraz kliknite na Zariadenia a tlačiarne. Tu nájdite port, ku ktorému je pripojená doska vášho mikrokontroléra. V mojom prípade to tak je COM14 ale na rôznych počítačoch je to iné.

    Hľadá sa prístav

  3. Kliknite na ponuku Nástroj a nastavte dosku na Arduino Nano z rozbaľovacej ponuky.

    Nastavovacia doska

  4. V rovnakej ponuke nástrojov nastavte port na číslo portu, ktoré ste pozorovali predtým v priečinku Zariadenia a tlačiarne .

    Nastavenie portu

  5. V tej istej ponuke nástrojov nastavte procesor na ATmega328P (starý bootloader).

    procesor

  6. Aby sme mohli napísať kód na prevádzku servomotorov, potrebujeme špeciálnu knižnicu, ktorá nám pomôže napísať niekoľko funkcií pre servomotory. Táto knižnica je pripojená spolu s kódom do nižšie uvedeného odkazu. Ak chcete zahrnúť knižnicu, kliknite na Náčrt> Zahrnúť knižnicu> Pridať ZIP. Knižnica.

    Zahrnúť knižnicu

  7. Stiahnite si nižšie priložený kód a vložte ho do svojho Arduino IDE. Klikni na nahrať tlačidlo na vypálenie kódu na doske vášho mikrokontroléra.

    Nahrať

Ak chcete stiahnuť kód, kliknite tu.

Krok 5: Stiahnutie aplikácie

Pretože sme teraz zostavili celé obvody a nahrali kód do dosky mikrokontroléra. umožňuje stiahnuť mobilnú aplikáciu, ktorá bude fungovať ako diaľkové ovládanie robotického ramena. V obchode Google Play je k dispozícii bezplatná aplikácia. Názov aplikácie je Robotické ovládanie malého ramena . Ak chcete vytvoriť pripojenie Bluetooth, zapnite Bluetooth v mobile. Prejdite na nastavenia a spárujte svoj mobil s modulom HC-05. Potom stlačte tlačidlo Bluetooth v aplikácii. Ak sa zmení na zelenú, znamená to, že aplikácia je teraz pripojená a pripravená na obsluhu robotického ramena. Existujú posúvače, pomocou ktorých je možné nastaviť robotické rameno podľa potreby.

App

Krok 6: Porozumenie Kódexu

Kód je dobre komentovaný a ľahko pochopiteľný. Stále je to však stručne vysvetlené nižšie.

1. Na začiatku je zahrnutá knižnica na zápis kódu na prevádzku servomotorov. Ďalšia knižnica matematika.h je zahrnutý na vykonávanie rôznych matematických operácií v kóde. Pre štyri servomotory sú tiež inicializované štyri objekty.

#include // arduino library #include // standard c library #define PI 3.141 Servo baseServo; Servo ramenoServo; Servo lakeťServo; Uchopovač serva Servo; príkaz int;

2. Potom sa deklaruje štruktúra, ktorá nadobúda hodnoty pre servomotory základne, ramena a lakťa.

struct jointAngle {// deklarácia štruktúry int base; int rameno; int lakeť; };

3. Potom sa inicializujú niektoré premenné, ktoré ukladajú požadované uchopenie, oneskorenie a polohu servomotora. rýchlosť je nastavená na 15 a vytvorí sa objekt, ktorý prevezme hodnotu uhla v konštrukcii.

int desiredGrip; int chápadloPos; int požadovanýDelay; int servoSpeed ​​= 15; int pripravený = 0; struct jointAngle požadovanýAngle; // požadované uhly serva

Štyri. nastavenie neplatnosti () je funkcia, ktorá sa používa na nastavenie pinov Arduina na VSTUP alebo VÝSTUP. Tu v tejto funkcii sme deklarovali, že pin motorov bude pripojený ku ktorým pinom Arduina. Je tiež zaistené, že Arduino nečíta sériový vstup príliš dlho. V tejto funkcii je tiež nastavená počiatočná poloha a prenosová rýchlosť. Prenosová rýchlosť je rýchlosť, ktorou bude doska mikrokontroléra komunikovať s pripojenými servami a modulom Bluetooth.

void setup () {Serial.begin (9600); baseServo.attach (9); // pripojí základné servo na kolíku 9 k servo objektu ramenoServo.attach (10); // pripevní servo na rameno na kolíku 9 k objektu servo elbowServo.attach (11); // pripojí servo lakte na kolík 9 k chápadlu servopohonuServo.attach (6); // pripojí servo uchopovača na pin 9 k servo objektu Serial.setTimeout (50); // zabezpečí, že arduino nebude čítať seriál príliš dlho Serial.println ('started'); baseServo.write (90); // úvodné polohy serva ramenoServo.write (150); elbowServo.write (110); pripravený = 0; }

5. servoParallelControl () je funkcia, ktorá sa používa na zistenie aktuálnej polohy robotického ramena a jeho pohyb podľa príkazu zadaného prostredníctvom mobilnej aplikácie. Ak je aktuálna poloha menšia ako skutočná, rameno sa posunie nahor a naopak. Táto funkcia vráti hodnotu aktuálnej polohy a rýchlosť serva.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // prečítať aktuálny pos int newPos = startPos; // int theSpeed ​​= speed; // definovať, kde je pos vzhľadom na príkaz // ak je aktuálna poloha menšia ako skutočná výška, ak (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); oneskorenie (rýchlosť); návrat 0; } else {návrat 1; }}

6. neplatná slučka () je funkcia, ktorá beží opakovane v slučke. Táto funkcia číta dáta prichádzajúce sériovo a ukladá uhol každého serva do štruktúry. Spočiatku je stav všetkých serv nastavený na nulu. Tu funkcia servoParallelControl () sa volá a odovzdávajú sa v ňom parametre. táto funkcia vráti hodnotu a uloží sa do premennej status.

void loop () {if (Serial.available ()) {ready = 1; desiredAngle.base = Serial.parseInt (); desiredAngle.shoulder = Serial.parseInt (); požadovanýAngle.elbow = Serial.parseInt (); desiredGrip = Serial.parseInt (); desiredDelay = Serial.parseInt (); if (Serial.read () == ' n') {// ak je posledný bajt 'd', potom prestaň čítať a vykonaj príkaz 'd' znamená 'done' Serial.flush (); // vymaže všetky ostatné príkazy nahromadené vo vyrovnávacej pamäti // pošle dokončenie príkazu Serial.print ('d'); }} int status1 = 0; int stav2 = 0; int stav3 = 0; int stav4 = 0; int hotovo = 0; while (done == 0 && ready == 1) {// presuňte servo na požadovanú pozíciu status1 = servoParallelControl (požadovanýAngle.base, baseServo, požadovanýDelay); status2 = servoParallelControl (requiredAngle.shoulder, ramenoServo, desiredDelay); status3 = servoParallelControl (requiredAngle.elbow, elbowServo, desiredDelay); status4 = servoParallelControl (desiredGrip, gripperServo, desiredDelay); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // koniec času}

Teraz to bol celý postup výroby robotického ramena. Po vypálení kódu a stiahnutí aplikácie by mal robot pri posúvaní posúvačov v aplikácii fungovať úplne dobre. Rameno môžete tiež naprogramovať tak, aby pracovalo autonómne pri vykonávaní požadovanej úlohy.