Jak wykonać samodzielne ramię robota sterowane przez Arduino i Bluetooth?

W ostatnim stuleciu robotyka jest najbardziej rozwijającą się dziedziną badań. Roboty przejęły kontrolę nad prawie wszystkim, co robili ludzie. Widzimy autonomiczne roboty wykonujące różne zadania w naszym społeczeństwie. Istnieją również zdalnie sterowane roboty, które pomagają nam wykonywać różne operacje. Roboty są bardziej niezawodne niż ludzie, od tworzenia nanobwodów w dziedzinie inżynierii po wykonywanie złożonych operacji w dziedzinie medycyny.



Ramię robota

W tym projekcie zamierzamy wykonać ramię robota, które będzie sterowane przez mikrokontroler Arduino. Będzie sterowany przez Bluetooth za pomocą aplikacji do zdalnego sterowania na Androida.



Jak kontrolować ramię robota za pomocą Arduino?

Teraz, gdy znamy streszczenie naszego projektu. Zbierzmy więcej informacji na temat obwodów i zacznijmy budować ramię robota sterowane przez Bluetooth i sterować nim przez Bluetooth.



Krok 1: Zbieranie komponentów

Najlepszym podejściem do rozpoczęcia każdego projektu jest sporządzenie pełnej listy komponentów. To nie tylko inteligentny sposób na rozpoczęcie projektu, ale także oszczędza nam wielu niedogodności w trakcie trwania projektu. Lista komponentów tego projektu jest podana poniżej:



  • Bezprzewodowy przekaźnik szeregowy Bluetooth HC-05
  • Adapter 6V
  • Przewody połączeniowe
  • Płytka prototypowa

Krok 2: Badanie komponentów

Ponieważ mamy pełną listę wszystkich komponentów, których będziemy używać, przejdźmy o krok do przodu i przeprowadźmy krótkie badanie wszystkich komponentów.

Arduino Nano to płytka mikrokontrolera, która wykonuje różne operacje w różnych obwodach. Wymaga Kod C. która mówi tablicy, jakie zadania ma wykonać i jak. Posiada 13 cyfrowych pinów I / O, co oznacza, że ​​możemy obsługiwać 13 różnych urządzeń. Arduino Nano ma dokładnie taką samą funkcjonalność jak Arduino Uno, ale w dość niewielkich rozmiarach. Mikrokontroler na płycie Arduino Nano to ATmega328p. Jeśli chcesz kontrolować więcej niż 13 urządzeń, użyj Arduino Mega.

Arduino Nano



Bezprzewodowy przekaźnik szeregowy Bluetooth HC-05 : W tym projekcie potrzebujemy komunikacji bezprzewodowej, więc będziemy używać technologii Bluetooth, a dla tego modułu, który będzie używany, to HC-05. Ten moduł ma kilka programowalnych szybkości transmisji, ale domyślna szybkość transmisji to 9600 bps. Można go skonfigurować jako master lub slave, podczas gdy inny moduł HC-06 może pracować tylko w trybie slave. Ten moduł ma cztery piny. Jeden dla VCC (5 V), a pozostałe trzy dla GND, TX i RX. Domyślne hasło tego modułu to 1234 lub 0000 . Jeśli chcemy komunikować się między dwoma mikrokontrolerami lub komunikować się z dowolnym urządzeniem z funkcją Bluetooth, takim jak telefon lub laptop HC-05, pomaga nam to zrobić. Dostępnych jest już kilka aplikacji na Androida, co znacznie ułatwia ten proces.

Moduł Bluetooth HC-05

Typowy Ramię robota składa się z kilku segmentów i zwykle ma 6 połączeń. Zawiera minimum 4 silniki krokowe, którymi steruje komputer. Silniki krokowe różnią się od innych silników prądu stałego. Poruszają się dokładnie w dokładnych przyrostach. Te robotyczne ramiona są używane do wykonywania różnych operacji. Możemy obsługiwać je ręcznie za pomocą pilota lub zaprogramować do pracy autonomicznej.

Ramię robota.

Krok 3: Montaż komponentów

Teraz, jak wiemy o działaniu wszystkich głównych używanych komponentów. Zacznijmy je składać i utwórzmy obwód, aby zbudować zdalnie sterowane ramię robota.

  1. .Zamocuj płytkę Arduino Nano na płytce stykowej. Arduino będzie zasilane przez dodatni i ujemny przewód adaptera.
  2. Umieść moduł Bluetooth również na płytce stykowej. Włącz moduł Bluetooth przez Arduino. Podłącz pin Tx modułu Bluetooth do pin Rx płyty Arduino Nan i podłącz pin Rx modułu Bluetooth do pin Tx płyty Arduino Nano.
  3. Jak wiemy, są 4 silniki krokowe. Każdy ma nazwę techniczną. Nazywają się Łokieć , ramię , Baza, i Chwytak . Vcc i uziemienie wszystkich silników będą wspólne i podłączone do dodatniego i ujemnego adaptera 6 V. Pin sygnałowy wszystkich czterech silników zostanie podłączony do pin5, pin6, pin9 i pin11 Arduino Nano.
  4. Upewnij się, że wykonane połączenia są zgodne z następującym schematem połączeń.

    Schemat obwodu

Krok 4: Pierwsze kroki z Arduino

Jeśli nie znasz jeszcze Arduino IDE, nie martw się, ponieważ poniżej wyjaśniono procedurę krok po kroku konfiguracji i używania Arduino IDE z płytą mikrokontrolera.

  1. Pobierz najnowszą wersję Arduino IDE ze strony Arduino.
  2. Podłącz płytkę Arduino Nano do laptopa i otwórz panel sterowania. Następnie kliknij Sprzęt i dźwięk . Teraz kliknij Urządzenia i drukarki. Tutaj znajdź port, do którego jest podłączona płyta mikrokontrolera. W moim przypadku tak COM14 ale jest inaczej na różnych komputerach.

    Znajdowanie portu

  3. Kliknij menu Narzędzie i ustaw tablicę na Arduino Nano z menu rozwijanego.

    Tablica nastawcza

  4. W tym samym menu narzędzi ustaw port na numer portu, który zaobserwowałeś wcześniej w Urządzenia i drukarki .

    Ustawianie portu

  5. W tym samym menu Narzędzia ustaw procesor na ATmega328P (stary program ładujący).

    Edytor

  6. Aby napisać kod obsługujący serwomotory, potrzebujemy specjalnej biblioteki, która pomoże nam napisać kilka funkcji dla serwomotorów. Ta biblioteka jest dołączona wraz z kodem, w linku poniżej. Aby dołączyć bibliotekę, kliknij Szkic> Dołącz bibliotekę> Dodaj ZIP. Biblioteka.

    Uwzględnij bibliotekę

  7. Pobierz załączony poniżej kod i wklej go do swojego Arduino IDE. Kliknij na Przekazać plik przycisk, aby wypalić kod na płycie mikrokontrolera.

    Przekazać plik

Aby pobrać kod, Kliknij tutaj.

Krok 5: Pobieranie aplikacji

Ponieważ teraz zmontowaliśmy cały zespół obwodów i załadowaliśmy kod na płytkę mikrokontrolera. pozwala pobrać aplikację mobilną, która będzie działać jako pilot do ramienia robota. Bezpłatna aplikacja jest dostępna w sklepie Google Play. Nazwa aplikacji to Sterowanie robotem Little Arm . Aby nawiązać połączenie Bluetooth, włącz Bluetooth w telefonie komórkowym. Przejdź do ustawień i sparuj swój telefon komórkowy z modułem HC-05. Po wykonaniu tej czynności naciśnij przycisk Bluetooth w aplikacji. Jeśli zmieni kolor na zielony, oznacza to, że aplikacja jest teraz połączona i gotowa do obsługi ramienia robota. Istnieją suwaki do ustawienia obsługi ramienia robota według potrzeb.

Aplikacja

Krok 6: Zrozumienie Kodeksu

Kod jest dobrze skomentowany i łatwy do zrozumienia. Wciąż jednak krótko wyjaśniono to poniżej.

1. Na początku dołączona jest biblioteka do pisania kodu do obsługi serwomotorów. Inna biblioteka math.h jest zawarty w celu wykonywania różnych operacji matematycznych w kodzie. Zainicjalizowane są również cztery obiekty do wykorzystania dla czterech serwomotorów.

#include // biblioteka arduino #include // standardowa biblioteka c #define PI 3.141 Servo baseServo; Ramię serwoServo; Łokieć serwaServo; Chwytak serwoServo; int polecenie;

2. Następnie deklaruje się, że konstrukcja przyjmuje wartości dla serwomotorów podstawy, ramienia i kolanka.

struct jointAngle {// deklarowanie struktury int base; int ramię; int łokieć; };

3. Następnie inicjalizowane są niektóre zmienne w celu zapamiętania żądanego uchwytu, opóźnienia i położenia serwomotoru. prędkość jest ustawiona na 15, a obiekt przyjmuje wartość kąta w konstrukcji.

int pożądaneGrip; int gripperPos; int pożądaneDelay; int servoSpeed ​​= 15; int gotowy = 0; struct jointAngle pożądanyKąt; // żądane kąty serw

Cztery. void setup () to funkcja służąca do ustawiania pinów Arduino jako INPUT lub OUTPUT. Tutaj w tej funkcji zadeklarowaliśmy, że pin silników zostanie podłączony do których pinów Arduino. Zapewniono również, że Arduino nie czyta wejścia szeregowego zbyt długo. W tej funkcji ustawia się również pozycję początkową i szybkość transmisji. Szybkość transmisji to szybkość, z jaką płytka mikrokontrolera będzie się komunikować z podłączonymi serwami i modułem Bluetooth.

void setup () {Serial.begin (9600); baseServo.attach (9); // dołącza serwomechanizm bazowy na pinie 9 do obiektu serwomechanizmu shoulderServo.attach (10); // dołącza serwo barku na pinie 9 do obiektu serwomechanizmu elbowServo.attach (11); // dołącza kolankowe serwo na pinie 9 do obiektu serwa gripperServo.attach (6); // dołącza serwomechanizm chwytaka na pinie 9 do obiektu serwa Serial.setTimeout (50); // zapewnia, że ​​arduino nie czyta portu szeregowego zbyt długo Serial.println ('started'); baseServo.write (90); // początkowe pozycje serw barków shoulderServo.write (150); elbowServo.write (110); gotowy = 0; }

5. servoParallelControl () to funkcja, która służy do wykrywania aktualnej pozycji ramienia robota i przesuwania go zgodnie z poleceniem wydanym przez aplikację mobilną. Jeśli aktualna pozycja jest mniejsza niż rzeczywista, ramię przesunie się do góry i odwrotnie. Ta funkcja zwróci wartość aktualnej pozycji i prędkość serwomechanizmu.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // przeczytaj aktualną pozycję int newPos = startPos; // int theSpeed ​​= speed; // zdefiniuj, gdzie jest pozycja w stosunku do polecenia // jeśli aktualna pozycja jest mniejsza niż rzeczywisty ruch w górę if (startPos (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); opóźnienie (theSpeed); return 0; } else {return 1; }}

6. void loop () to funkcja, która jest wykonywana wielokrotnie w pętli. Ta funkcja odczytuje dane przychodzące szeregowo i zapisuje kąt każdego serwomechanizmu w strukturze. Początkowo stan wszystkich serw jest ustawiony na zero. Tutaj funkcja servoParallelControl () jest wywoływana i przekazywane są w niej parametry. ta funkcja zwróci wartość i zostanie ona zapisana w zmiennej statusu.

void loop () {if (Serial.available ()) {ready = 1; pożądaneAngle.base = Serial.parseInt (); pożądaneAngle.shoulder = Serial.parseInt (); pożądaneAngle.elbow = Serial.parseInt (); pożądaneGrip = Serial.parseInt (); pożądaneDelay = Serial.parseInt (); if (Serial.read () == ' n') {// jeśli ostatni bajt to 'd', to przestań czytać i wykonaj polecenie 'd' oznacza 'done' Serial.flush (); // wyczyść wszystkie inne polecenia spiętrzone w buforze // wyślij zakończenie polecenia Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int done = 0; while (done == 0 && ready == 1) {// przesuń serwo do żądanej pozycji status1 = servoParallelControl (allowedAngle.base, baseServo, pożądaneDelay); status2 = servoParallelControl (pożądaneAngle.shoulder, shoulderServo, pożądaneDelay); status3 = servoParallelControl (pożądaneAngle.elbow, elbowServo, pożądaneDelay); status4 = servoParallelControl (pożądanyGrip, gripperServo, pożądanyDelay); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // end of while}

To była cała procedura tworzenia ramienia robota. Po wypaleniu kodu i pobraniu aplikacji robot powinien działać idealnie, gdy przesuwają się suwaki w aplikacji. Możesz także zaprogramować ramię do samodzielnej pracy w celu wykonania żądanego zadania.