Hur man gör en DIY Arduino och Bluetooth-styrd robotarm?
Under det senaste århundradet är robotik det mest framväxande forskningsområdet. Robotar har tagit kontrollen över nästan allt som människor brukade göra. Vi kan se autonoma robotar som utför olika uppgifter i vårt samhälle. Det finns också några fjärrstyrda robotar som hjälper oss att utföra olika operationer. Från att göra Nano-kretsar inom teknikområdet till att ta komplexa operationer inom medicinskt område är robotar mer pålitliga än människor.
I det här projektet ska vi skapa en robotarm som kommer att styras av en Arduino-mikrokontroller. Det kommer att styras via Bluetooth med hjälp av en Android-fjärrkontrollapp.
Hur man styr en robotarm med Arduino?
Nu som vi vet abstrakt av vårt projekt. Låt oss samla lite mer information om kretsarna och börja bygga en Bluetooth-styrd robotarm och styra den via Bluetooth.
Steg 1: Samla in komponenterna
Det bästa sättet att starta något projekt är att göra en komplett lista över komponenter. Detta är inte bara ett intelligent sätt att starta ett projekt utan det sparar oss också från många besvär mitt i projektet. En lista över komponenter i detta projekt ges nedan:
Steg 2: Studera komponenterna
Eftersom vi har en fullständig lista över alla komponenter som vi ska använda, ska vi gå ett steg framåt och gå igenom en kort studie av alla komponenter.
Arduino Nano är ett mikrokontrollkort som utför olika operationer i olika kretsar. Det kräver en C-kod som talar om för styrelsen vilka uppgifter som ska utföras och hur. Den har 13 digitala I / O-stift vilket betyder att vi kan använda 13 olika enheter. Arduino Nano har exakt samma funktionalitet som Arduino Uno men i ganska liten storlek. Mikrokontrollern på Arduino Nano-kortet är ATmega328p.Om du vill styra mer än 13 enheter, använd Arduino Mega.
HC-05 trådlös Bluetooth-seriemottagare: Vi behöver trådlös kommunikation i det här projektet, så vi kommer att använda Bluetooth-teknik och för den modulen som ska användas är HC-05. Den här modulen har flera programmerbara baudhastigheter men standard baudhastigheten är 9600 bps. Den kan konfigureras antingen som master eller slav, medan en annan modul HC-06 endast kan fungera i slavläge. Denna modul har fyra stift. En för VCC (5V) och de återstående tre för GND, TX och RX. Standardlösenordet för denna modul är 1234 eller 0000. Om vi vill kommunicera mellan två mikrokontroller eller kommunicera med någon enhet med Bluetooth-funktion som en telefon eller bärbar dator, hjälper HC-05 oss att göra det. Flera Android-applikationer är redan tillgängliga vilket gör processen mycket enklare.
En typisk Robotarmbestår av flera segment och har vanligtvis 6 fogar i sig. Den innehåller minst 4 stegmotorer som styrs av datorn. Stegmotorer skiljer sig från andra likströmsmotorer. De rör sig exakt i exakta steg. Dessa robotarmar används för att utföra olika operationer. Vi kan styra dem manuellt via en fjärrkontroll eller så kan vi programmera dem att arbeta självständigt.
Steg 3: Montering av komponenterna
Nu som vi vet om hur alla huvudkomponenter som används fungerar. Låt oss börja montera dem och skapa en krets för att bygga en fjärrstyrd robotarm.
- .Fäst Arduino Nano-brädet på brädbrädan. Arduino drivs via adapterens positiva och negativa kabel.
- Placera Bluetooth-modulen också på panelen. Slå på Bluetooth-modulen via Arduino. Anslut Tx-stiftet på Bluetooth-modulen till Rx-stiftet på Arduino Nan-kortet och anslut Rx-stiftet på Bluetooth-modulen till Tx-stiftet på Arduino Nano-kortet.
- Som vi vet finns det 4 stegmotorer. Var och en har ett tekniskt namn. De kallas Armbåge, Axel, Bas, och Gripare. Vcc och jord för alla motorer kommer att vara vanliga och anslutna till det positiva och negativa med 6V-adaptern. Signalstiftet på alla de fyra motorerna kommer att anslutas till pin5, pin6, pin9 och pin11 i Arduino Nano.
- Se till att anslutningarna du har gjort är enligt följande kretsschema.
Steg 4: Komma igång med Arduino
Om du inte redan är bekant med Arduino IDE, oroa dig inte eftersom en steg för steg-procedur för att ställa in och använda Arduino IDE med ett mikrokontrollkort förklaras nedan.
- Ladda ner den senaste versionen av Arduino IDE från Arduino.
- Anslut ditt Arduino Nano-kort till din bärbara dator och öppna kontrollpanelen. Klicka sedan på Hårdvara och ljud. Klicka nu på Enheter och skrivare.Här hittar du porten som ditt mikrokontrollkort är anslutet till. I mitt fall är det COM14men det är annorlunda på olika datorer.
- Klicka på Verktyg-menyn och ställ in tavlan till Arduino Nano från rullgardinsmenyn.
- I samma verktygsmeny ställer du in porten till det portnummer som du observerade tidigare i Enheter och skrivare.
- I samma verktygsmeny ställer du in processorn på ATmega328P (Old Bootloader).
- För att skriva kod för att styra servomotorerna behöver vi ett speciellt bibliotek som hjälper oss att skriva flera funktioner för servomotorer. Detta bibliotek bifogas tillsammans med koden i länken nedan. Klicka på för att inkludera biblioteket Skiss> Inkludera bibliotek> Lägg till ZIP. Bibliotek.
- Ladda ner koden som bifogas nedan och klistra in den i din Arduino IDE. Klicka på ladda upp -knappen för att bränna koden på ditt mikrokontrollerkort.
Klicka här för att ladda ner koden.
Steg 5: Ladda ner appen
Som vi nu har monterat hela kretsloppet och laddat upp koden i mikrokontrollkortet. låter oss ladda ner en mobilapp som fungerar som fjärrkontroll för robotarmen. En gratis app finns i google play store. Appens namn är Little Arm Robot Control. För att skapa en Bluetooth-anslutning, slå på Bluetooth på din mobil. Gå till inställningarna och para ihop din mobil med HC-05-modulen. När du har gjort detta trycker du på Bluetooth-knappen i appen. Om den blir grön betyder det att appen nu är ansluten och redo att använda robotarmen. Det finns skjutreglage för att ställa in robotarmen som önskas.
Steg 6: Förstå koden
Koden är väl kommenterad och lätt att förstå. Bur still, det förklaras kort nedan.
1. I början ingår ett bibliotek för att skriva en kod för drift av servomotorer. Ett annat bibliotek matematik.hingår för att utföra olika matematiska operationer i koden. Fyra objekt initialiseras också för att användas för de fyra servomotorerna.
#omfatta// arduino-biblioteket # inkludera // standard c-bibliotek #define PI 3.141 Servo baseServo; Servo axelServo; ServoarmbågeServo; Servogripare Servo; int kommando;
2. Sedan förklaras en struktur för att ta värden för bas-, axel- och armbågs servomotorer.
struct jointAngle {// declairing a structure int base; int axel; int armbåge; };
3. Efter detta initialiseras vissa variabler för att lagra önskat grepp, fördröjning och position för servomotorn. hastigheten är inställd på 15 och ett objekt görs för att ta värdet på vinkeln i strukturen.
int wantedGrip; int gripperPos; int önskadFördröjning; int servoSpeed = 15; int ready = 0; struct jointAngle wantedAngle; // önskade vinklar på servorna
4. ogiltig installation ()är en funktion som används för att ställa in stiften på Arduino som INPUT eller OUTPUT. Här i denna funktion har vi förklarat att motorns stift kommer att anslutas till vilka stift på Arduino. Det säkerställs också att Arduino inte läser serieinmatningen för länge. Initial position och Baud Rate ställs också in i denna funktion. Baud Rate är den hastighet med vilken mikrokontrollkortet kommer att kommunicera med de anslutna servos och Bluetooth-modulen.
ogiltig installation () {Serial.begin (9600); baseServo.attach (9); // fäster bas servo på stift 9 till servoobjektet shoulderServo.attach (10); // fäster axelservoen på stift 9 till servobjektet elbowServo.attach (11); // fäster armbågens servo på stift 9 till servoobjektet gripperServo.attach (6); // fäster gripservon på stift 9 till servoobjektet Serial.setTimeout (50); // säkerställer att arduino inte läser serie för länge Serial.println ("startad"); baseServo.write (90); // inre positioner för servos shoulderServo.write (150); elbowServo.write (110); redo = 0; }
5. servoParallelControl ()är en funktion som används för att upptäcka robotarmens nuvarande position och flytta den enligt kommandot som ges via mobilappen. Om den aktuella positionen är mindre än den faktiska, kommer armen att röra sig uppåt och tvärtom. Denna funktion returnerar värdet för den aktuella positionen och hastigheten för servon.
int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // läs nuvarande pos int newPos = startPos; // int theSpeed = hastighet; // definiera var pos är med avseende på kommandot // om den aktuella positionen är mindre än den aktuella flytten upp om (startPos <(thePos-5)) {newPos = newPos + 1; theServo.write (newPos); fördröjning (hastigheten); returnera 0; } annars om (newPos> (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); fördröjning (hastigheten); returnera 0; } annat {retur 1; }}
6. ogiltig slinga ()är en funktion som körs upprepade gånger i en slinga. Denna funktion läser data som kommer seriellt och lagrar vinkeln för varje servo i strukturen. Ursprungligen är statusen för alla servon noll. Här en funktion servoParallelControl ()kallas och parametrar skickas i den. den här funktionen returnerar värdet och det kommer att lagras i en statusvariabel.
void loop () {if (Serial.available ()) {ready = 1; wantedAngle.base = Serial.parseInt (); wantedAngle.shoulder = Serial.parseInt (); wantedAngle.elbow = Serial.parseInt (); wantedGrip = Serial.parseInt (); wantedDelay = Serial.parseInt (); om (Serial.read () == '\ n') {// om den sista byten är 'd', sluta läsa och kör kommandot 'd' står för 'gjort' Serial.flush (); // rensa alla andra kommandon som staplas i bufferten // skicka slutförandet av kommandot Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int gjort = 0; medan (gjort == 0 && ready == 1) {// flytta servon till önskad position status1 = servoParallelControl (ønsketAngle.base, baseServo, ønsketDelay); status2 = servoParallelControl (önskadAngle.shoulder, shoulderServo, ønsketDelay); status3 = servoParallelControl (önskadAngle.elbow, armbågeServo, ønsketDelay); status4 = servoParallelControl (wantedGrip, gripperServo, wantedDelay); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {done = 1}} // slutet av stunden}
Detta var hela proceduren för att skapa en robotarm. Efter att ha bränt koden och laddat ner appen bör roboten fungera helt bra när skjutreglagen i appen flyttas. Du kan också programmera armen så att den arbetar autonomt för att utföra önskad uppgift.