Hvordan laver man en DIY Arduino og Bluetooth-styret robotarm?

I det seneste århundrede er robotik det mest nye forskningsfelt. Robotter har taget kontrol over næsten alt, hvad mennesker plejede at gøre. Vi kan se autonome robotter udføre forskellige opgaver i vores samfund. Der er også nogle fjernstyrede robotter, der hjælper os med at udføre forskellige operationer. Fra at lave Nano-kredsløb inden for teknik til at tage komplekse operationer inden for medicinsk område er robotter mere pålidelige end mennesker.

I dette projekt skal vi lave en robotarm, der styres af en Arduino-mikrocontroller. Det styres via Bluetooth ved hjælp af en Android-fjernbetjeningsapp.

Sådan styres en robotarm ved hjælp af Arduino?

Nu som vi kender abstrakt af vores projekt. Lad os samle lidt mere information om kredsløbene og begynde at opbygge en Bluetooth-styret robotarm og styre den via Bluetooth.

Trin 1: Samling af komponenterne

Den bedste tilgang til at starte ethvert projekt er at lave en komplet liste over komponenter. Dette er ikke kun en intelligent måde at starte et projekt på, men det sparer os også for mange ulemper midt i projektet. En liste over komponenter i dette projekt er angivet nedenfor:

Trin 2: Studere komponenterne

Da vi har en komplet liste over alle de komponenter, vi skal bruge, lad os gå et skridt videre og gennemgå en kort undersøgelse af alle komponenterne.

Arduino Nano er et mikrocontrollerkort, der udfører forskellige operationer i forskellige kredsløb. Det kræver en C-kode der fortæller bestyrelsen, hvilke opgaver der skal udføres, og hvordan. Den har 13 digitale I / O-ben, hvilket betyder, at vi kan betjene 13 forskellige enheder. Arduino Nano har nøjagtig den samme funktionalitet som Arduino Uno, men i en ganske lille størrelse. Mikrocontrolleren på Arduino Nano-kortet er ATmega328p.Hvis du vil kontrollere mere end 13 enheder, skal du bruge Arduino Mega.

HC-05 trådløs Bluetooth seriel modtager: Vi har brug for trådløs kommunikation i dette projekt, så vi bruger Bluetooth-teknologi, og det modul, der skal bruges, er HC-05. Dette modul har flere programmerbare baudhastigheder, men standard baudhastigheden er 9600 bps. Det kan konfigureres som enten master eller slave, mens et andet modul HC-06 kun kan fungere i slave-tilstand. Dette modul har fire ben. Én til VCC (5V) og de resterende tre til GND, TX og RX. Standardadgangskoden til dette modul er 1234 eller 0000. Hvis vi vil kommunikere mellem to mikrokontroller eller kommunikere med en hvilken som helst enhed med Bluetooth-funktionalitet som en telefon eller bærbar computer, hjælper HC-05 os med at gøre det. Flere Android-applikationer er allerede tilgængelige, hvilket gør denne proces meget lettere.

En typisk Robotarmbestår af flere segmenter og har normalt 6 samlinger i sig. Den indeholder mindst 4 trinmotorer, der styres af computeren. Trinmotorer adskiller sig fra andre jævnstrømsmotorer. De bevæger sig præcist i nøjagtige intervaller. Disse robotarme bruges til at udføre forskellige operationer. Vi kan betjene dem manuelt via en fjernbetjening, eller vi kan programmere dem til at arbejde autonomt.

Trin 3: Samling af komponenterne

Nu som vi ved om arbejdet med alle de anvendte hovedkomponenter. Lad os begynde at samle dem og skabe et kredsløb til at bygge en fjernstyret robotarm.

  1. Fastgør Arduino Nano-tavlen på brødbrættet. Arduino får strøm fra adapterens positive og negative ledning.
  2. Placer også Bluetooth-modulet på brødbrættet. Tænd Bluetooth-modulet via Arduino. Tilslut Tx-stiften på Bluetooth-modulet til Rx-stiften på Arduino Nan-kortet og tilslut Rx-stiften på Bluetooth-modulet til Tx-stiften på Arduino Nano-kortet.
  3. Som vi ved, at der er 4 trinmotorer. Hver enkelt har et teknisk navn. De kaldes Albue, Skulder, Grundlag, og Griberen. Vcc og Ground på alle motorer vil være fælles og tilsluttet det positive og negative ved 6V adapteren. Signalstiften på alle de fire motorer forbindes til pin5, pin6, pin9 og pin11 i Arduino Nano.
  4. Sørg for, at de tilslutninger, du har foretaget, er i overensstemmelse med følgende kredsløbsdiagram.

Trin 4: Kom godt i gang med Arduino

Hvis du ikke allerede er fortrolig med Arduino IDE, skal du ikke bekymre dig, fordi en trinvis procedure til opsætning og brug af Arduino IDE med et mikrocontrollerkort forklares nedenfor.

  1. Download den nyeste version af Arduino IDE fra Arduino.
  2. Tilslut dit Arduino Nano-kort til din bærbare computer, og åbn kontrolpanelet. Klik derefter på Hardware og lyd. Klik nu på Enheder og printere.Her finder du den port, som dit mikrocontrollerkort er tilsluttet. I mit tilfælde er det COM14men det er anderledes på forskellige computere.
  3. Klik på værktøjsmenuen, og indstil tavlen til Arduino Nano fra rullemenuen.
  4. I den samme værktøjsmenu skal du indstille porten til det portnummer, du tidligere har observeret i Enheder og printere.
  5. I samme værktøjsmenu skal du indstille processoren til ATmega328P (gammel bootloader).
  6. For at skrive kode til betjening af servomotorer har vi brug for et specielt bibliotek, der hjælper os med at skrive flere funktioner til servomotorer. Dette bibliotek er vedhæftet sammen med koden i nedenstående link. Klik på for at inkludere biblioteket Skitse> Inkluder bibliotek> Tilføj ZIP. Bibliotek.
  7. Download koden, der er vedhæftet nedenfor, og indsæt den i din Arduino IDE. Klik på upload knap til at brænde koden på dit mikrocontrollerkort.

Klik her for at downloade koden.

Trin 5: Download af appen

Som vi nu har samlet hele kredsløbet og uploadet koden i mikrocontrollerkortet. lad os downloade en mobilapp, der fungerer som en fjernbetjening til robotarmen. En gratis app er tilgængelig i Google Play Butik. Appens navn er Little Arm Robot Control. For at oprette en Bluetooth-forbindelse skal du tænde Bluetooth på din mobil. Gå til indstillingerne, og par din mobiltelefon med HC-05-modulet. Når du har gjort dette, skal du trykke på Bluetooth-knappen i appen. Hvis det bliver grønt, betyder det, at appen nu er tilsluttet og klar til at betjene robotarmen. Der er skydere til at indstille betjene robotarmen som ønsket.

Trin 6: Forståelse af koden

Koden er godt kommenteret og let at forstå. Bur stadig, det forklares kort nedenfor.

1. I starten er der inkluderet et bibliotek til at skrive en kode til betjening af servomotorer. Et andet bibliotek matematik.her inkluderet for at udføre forskellige matematiske operationer i koden. Fire genstande initialiseres også til brug for de fire servomotorer.

#omfatte  // arduino-bibliotek # inkluderer  // standard c-bibliotek #definer PI 3.141 Servo baseServo; Servo skulder Servo; Servo albueServo; Servo gripperServo; int kommando;

2. Derefter erklæres en struktur for at tage værdier for base-, skulder- og albue-servomotorer.

struct jointAngle {// declairing a structure int base; int skulder; int albue; };

3. Herefter initialiseres nogle variabler for at gemme det ønskede greb, forsinkelse og placering af servomotoren. hastigheden er indstillet til at være 15, og et objekt får den til at tage værdien af ​​vinklen i strukturen.

int ønsket Greb; int gripperPos; int ønsket Forsinkelse; int servoSpeed ​​= 15; int klar = 0; struktur jointAngle ønsketAngle; // ønskede vinkler på servoer

4. ugyldig opsætning ()er en funktion, der bruges til at indstille Arduinos ben som INPUT eller OUTPUT. Her i denne funktion har vi erklæret, at stiften på motorerne vil blive forbundet til hvilke stifter i Arduino. Det sikres også, at Arduino ikke læser serielt input for længe. Startposition og baudrate er også indstillet i denne funktion. Baudrate er den hastighed, hvormed mikrocontrolkortet kommunikerer med tilsluttede servoer og Bluetooth-modul.

ugyldig opsætning () {Serial.begin (9600); baseServo.attach (9); // fastgør basisservoen på pin 9 til servoobjektet shoulderServo.attach (10); // fastgør skulder servo på pin 9 til servobjektet elbowServo.attach (11); // fastgør albueservoen på pin 9 til servobjektet gripperServo.attach (6); // fastgør griberservoen på pin 9 til servoobjektet Serial.setTimeout (50); // sikrer, at arduinoen ikke læser seriel for længe Serial.println ("startet"); baseServo.write (90); // første positioner af servos shoulderServo.write (150); elbowServo.write (110); klar = 0; }

5. servoParallelControl ()er en funktion, der bruges til at registrere robotarmens aktuelle position og flytte den i henhold til kommandoen fra mobilappen. Hvis den aktuelle position er mindre end den faktiske, bevæger armen sig op og omvendt. Denne funktion returnerer værdien af ​​den aktuelle position og hastigheden på servoen.

int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // læs den aktuelle pos int newPos = startPos; // int theSpeed ​​= hastighed; // definer hvor pos er i forhold til kommandoen // hvis den aktuelle position er mindre end den aktuelle bevægelse op hvis (startPos <(thePos-5)) {newPos = newPos + 1; theServo.write (newPos); forsinkelse (hastighed) returnere 0; } ellers hvis (newPos> (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); forsinkelse (hastighed) returnere 0; } andet {retur 1; }}

6. ugyldig sløjfe ()er en funktion, der kører gentagne gange i en løkke. Denne funktion læser de data, der kommer serielt, og gemmer vinklen på hver servo i strukturen. Oprindeligt er status for alle servoer nul. Her en funktion servoParallelControl ()kaldes og parametre sendes i den. denne funktion returnerer værdien, og den gemmes i en statusvariabel.

ugyldig sløjfe () {if (Serial.available ()) {ready = 1; ønsketAngle.base = Serial.parseInt (); ønsketAngle.shoulder = Serial.parseInt (); ønsketAngle.elbow = Serial.parseInt (); ønsket Grip = Serial.parseInt (); ønsketDelay = Serial.parseInt (); hvis (Serial.read () == '\ n') {// hvis den sidste byte er 'd', skal du stoppe med at læse og udføre kommandoen 'd' står for 'done' Serial.flush (); // ryd alle andre kommandoer stablet i bufferen // send færdiggørelse af kommandoen Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int færdig = 0; mens (færdig == 0 && klar == 1) {// flytter servoen til den ønskede position status1 = servoParallelControl (ønsketAngle.base, baseServo, ønsketDelay); status2 = servoParallelControl (ønsketAngle.shoulder, shoulderServo, ønsketDelay); status3 = servoParallelControl (ønsketAngle.elbow, albowServo, ønsketDelay); status4 = servoParallelControl (ønsket Grip, gribeservo, ønsket forsinkelse); hvis (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {færdig = 1}} // slutningen af ​​mens}

Dette var hele proceduren for at lave en robotarm. Efter at have brændt koden og downloadet appen, skal robotten fungere perfekt, når skyderne på appen flyttes. Du kan også programmere armen til at arbejde autonomt for at udføre den ønskede opgave.

Facebook Twitter Google Plus Pinterest