Hvordan lage en DIY Arduino og Bluetooth-kontrollert robotarm?
I det siste århundre er robotikk det mest nye forskningsfeltet. Roboter har tatt kontroll over nesten alt som mennesker pleide å gjøre. Vi kan se autonome roboter som utfører forskjellige oppgaver i samfunnet vårt. Det er også noen fjernstyrte roboter som hjelper oss med å utføre forskjellige operasjoner. Fra å lage nanokretser innen ingeniørfag til å ta ut komplekse operasjoner innen medisinsk, er roboter mer pålitelige enn mennesker.
I dette prosjektet skal vi lage en robotarm som skal styres av en Arduino mikrokontroller. Den vil bli styrt via Bluetooth ved hjelp av en Android-fjernkontrollapp.
Hvordan kontrollere en robotarm ved hjelp av Arduino?
Nå som vi vet abstrakt av prosjektet vårt. La oss samle litt mer informasjon om kretsene og begynne å bygge en Bluetooth-kontrollert robotarm og kontrollere den via Bluetooth.
Trinn 1: Samle komponentene
Den beste tilnærmingen for å starte et prosjekt er å lage en komplett liste over komponenter. Dette er ikke bare en intelligent måte å starte et prosjekt på, men det sparer oss også for mange ulemper midt i prosjektet. En liste over komponenter i dette prosjektet er gitt nedenfor:
Trinn 2: Studere komponentene
Siden vi har en komplett liste over alle komponentene vi skal bruke, la oss gå et skritt videre og gå gjennom en kort studie av alle komponentene.
Arduino Nano er et mikrokontrollkort som utfører forskjellige operasjoner i forskjellige kretser. Det krever en C-kode som forteller styret hvilke oppgaver som skal utføres og hvordan. Den har 13 digitale I / O-pinner som betyr at vi kan betjene 13 forskjellige enheter. Arduino Nano har nøyaktig samme funksjonalitet som Arduino Uno, men i ganske liten størrelse. Mikrokontrolleren på Arduino Nano-kortet er ATmega328p.Hvis du vil kontrollere mer enn 13 enheter, bruk Arduino Mega.
HC-05 trådløs Bluetooth seriell mottaker: Vi trenger trådløs kommunikasjon i dette prosjektet, så vi vil bruke Bluetooth-teknologi, og for den modulen som skal brukes er HC-05. Denne modulen har flere programmerbare overføringshastigheter, men standard overføringshastighet er 9600 bps. Den kan konfigureres som enten master eller slave, mens en annen modul HC-06 bare kan fungere i slave-modus. Denne modulen har fire pinner. Én for VCC (5V) og de resterende tre for GND, TX og RX. Standardpassordet til denne modulen er 1234 eller 0000. Hvis vi ønsker å kommunisere mellom to mikrokontrollere eller kommunisere med en hvilken som helst enhet med Bluetooth-funksjonalitet, som en telefon eller bærbar PC, hjelper HC-05 oss med å gjøre det. Flere Android-applikasjoner er allerede tilgjengelige, noe som gjør denne prosessen mye enklere.
En typisk Robotarmbestår av flere segmenter og har vanligvis 6 skjøter i seg. Den inneholder minst 4 trinnmotorer som styres av datamaskinen. Stepper motorer er forskjellige fra andre DC motorer. De beveger seg nøyaktig i eksakte trinn. Disse robotarmene brukes til å utføre forskjellige operasjoner. Vi kan betjene dem manuelt via en fjernkontroll, eller vi kan programmere dem til å fungere autonomt.
Trinn 3: Montering av komponentene
Nå som vi vet om arbeidet med alle hovedkomponentene som brukes. La oss begynne å montere dem og lage en krets for å bygge en fjernstyrt robotarm.
- Fest festet Arduino Nano på brødplaten. Arduino vil bli drevet gjennom adapterens positive og negative ledning.
- Plasser også Bluetooth-modulen på brødplaten. Slå på Bluetooth-modulen gjennom Arduino. Koble Tx-pinnen til Bluetooth-modulen til Rx-pinnen på Arduino Nan-kortet og koble Rx-pinnen til Bluetooth-modulen til Tx-pinnen på Arduino Nano-kortet.
- Som vi vet at det er 4 trinnmotorer. Hver og en har et teknisk navn. De kalles Albue, Skulder, Utgangspunkt, og Gripper. Vcc og bakken til alle motorene vil være vanlige og koblet til det positive og negative av 6V-adapteren. Signalpinnen til alle de fire motorene kobles til pin5, pin6, pin9 og pin11 på Arduino Nano.
- Forsikre deg om at tilkoblingene du har gjort er i henhold til følgende kretsskjema.
Trinn 4: Komme i gang med Arduino
Hvis du ikke allerede er kjent med Arduino IDE, ikke bekymre deg fordi en trinnvis prosedyre for å sette opp og bruke Arduino IDE med et mikrokontrollerkort er forklart nedenfor.
- Last ned den nyeste versjonen av Arduino IDE fra Arduino.
- Koble Arduino Nano-kortet til den bærbare datamaskinen og åpne kontrollpanelet. Klikk deretter på Maskinvare og lyd. Nå klikker du på Enheter og skrivere.Her finner du porten som mikrokontrollerkortet er koblet til. I mitt tilfelle er det COM14men det er forskjellig på forskjellige datamaskiner.
- Klikk på Verktøy-menyen og sett tavlen til Arduino Nano fra rullegardinmenyen.
- I samme Verktøy-meny, sett porten til portnummeret du observerte før i Enheter og skrivere.
- I samme verktøymeny, sett prosessoren til ATmega328P (gammel bootloader).
- For å skrive kode for å betjene servomotorene, trenger vi et spesielt bibliotek som vil hjelpe oss med å skrive flere funksjoner for servomotorer. Dette biblioteket er vedlagt sammen med koden, i lenken nedenfor. For å inkludere biblioteket, klikk på Skisse> Inkluder bibliotek> Legg til ZIP. Bibliotek.
- Last ned koden som er vedlagt nedenfor, og lim den inn i Arduino IDE. Klikk på laste opp -knappen for å brenne koden på mikrokontrollerkortet.
Klikk her for å laste ned koden.
Trinn 5: Last ned appen
Som vi nå har samlet hele kretsløpet og lastet opp koden i mikrokontrollerkortet. lar oss laste ned en mobilapp som fungerer som fjernkontroll for robotarmen. En gratis app er tilgjengelig i Google Play-butikken. Navnet på appen er Little Arm Robot Control. For å opprette en Bluetooth-tilkobling, slå på Bluetooth på mobilen din. Gå til innstillingene og par mobilen din med HC-05-modulen. Etter å ha gjort dette, trykk på Bluetooth-knappen i appen. Hvis det blir grønt, betyr det at appen nå er koblet til og klar til å betjene robotarmen. Det er glidebrytere for å stille inn betjene robotarmen som ønsket.
Trinn 6: Forstå koden
Koden er godt kommentert og lett å forstå. Bur fortsatt, det blir kort forklart nedenfor.
1. I starten er et bibliotek inkludert for å skrive en kode for å betjene servomotorer. Nok et bibliotek matematikk.her inkludert for å utføre forskjellige matematiske operasjoner i koden. Fire objekter er også initialisert for å brukes til de fire servomotorene.
#inkludere// arduino-biblioteket # inkluderer // standard c-bibliotek #definer PI 3.141 Servo baseServo; Servo skulder Servo; Servo albueServo; Servo gripperServo; int kommando;
2. Deretter blir en struktur erklært å ta verdier for base-, skulder- og albue-servomotorer.
struct jointAngle {// declairing a structure int base; int skulder; int albue; };
3. Etter dette initialiseres noen variabler for å lagre ønsket grep, forsinkelse og posisjon til servomotoren. hastigheten er satt til å være 15, og et objekt er laget for å ta verdien av vinkelen i strukturen.
int ønsket grep; int gripperPos; int ønsketDelay; int servoSpeed = 15; int ready = 0; struktur jointAngle ønsketAngle; // ønsket vinkel på servoene
4. ugyldig oppsett ()er en funksjon som brukes til å sette pinnene til Arduino som INPUT eller OUTPUT. Her i denne funksjonen har vi erklært at pinnen til motorene vil være koblet til hvilke pinner på Arduino. Det sikres også at Arduino ikke leser serieinngang for lenge. Startposisjon og baudrate er også angitt i denne funksjonen. Baud Rate er hastigheten som mikrokontrollerkortet vil kommunisere med tilkoblede servoer og Bluetooth-modul.
ugyldig oppsett () {Serial.begin (9600); baseServo.attach (9); // fester basisservoen på pinne 9 til servoobjektet shoulderServo.attach (10); // fester skulder servo på pinne 9 til servoobjektet albueServo.attach (11); // fester albueservoen på pinne 9 til servoobjektet gripperServo.attach (6); // fester gripeservoen på pinne 9 til servoobjektet Serial.setTimeout (50); // sørger for at arduinoen ikke leser serie for lenge Serial.println ("startet"); baseServo.write (90); // første posisjoner av servos shoulderServo.write (150); elbowServo.write (110); klar = 0; }
5. servoParallelControl ()er en funksjon som brukes til å oppdage den nåværende posisjonen til robotarmen og flytte den i henhold til kommandoen gitt via mobilappen. Hvis den nåværende posisjonen er mindre enn den faktiske, vil armen bevege seg oppover og omvendt. Denne funksjonen returnerer verdien til gjeldende posisjon og hastigheten på servoen.
int servoParallelControl (int thePos, Servo theServo, int theSpeed) {int startPos = theServo.read (); // les gjeldende pos int newPos = startPos; // int theSpeed = hastighet; // definere hvor posen er i forhold til kommandoen // hvis den nåværende posisjonen er mindre enn den faktiske flyttingen opp hvis (startPos <(thePos-5)) {newPos = newPos + 1; theServo.write (newPos); forsinkelse (hastigheten); retur 0; } ellers hvis (newPos> (thePos + 5)) {newPos = newPos - 1; theServo.write (newPos); forsinkelse (hastigheten); retur 0; } annet {retur 1; }}
6. ugyldig sløyfe ()er en funksjon som går gjentatte ganger i en løkke. Denne funksjonen leser dataene som kommer serielt og lagrer vinkelen til hver servo i strukturen. I utgangspunktet er statusen til alle servoene satt til null. Her en funksjon servoParallelControl ()kalles og parametere sendes i den. denne funksjonen vil returnere verdien og den vil bli lagret i en statusvariabel.
ugyldig sløyfe () {if (Serial.available ()) {ready = 1; ønsketAngle.base = Serial.parseInt (); ønsketAngle.shoulder = Serial.parseInt (); ønsketAngle.elbow = Serial.parseInt (); ønsketGrip = Serial.parseInt (); ønsketDelay = Serial.parseInt (); hvis (Serial.read () == '\ n') {// hvis den siste byten er 'd', så slutte å lese og utføre kommandoen 'd' står for 'ferdig' Serial.flush (); // tøm alle andre kommandoer som er stablet i bufferen // send fullføring av kommandoen Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int ferdig = 0; mens (ferdig == 0 && klar == 1) {// flytter servoen til ønsket posisjonsstatus1 = servoParallelControl (ønsketAngle.base, baseServo, ønsketDelay); status2 = servoParallelControl (ønsketAngle.shoulder, shoulderServo, ønsketDelay); status3 = servoParallelControl (ønsketAngle.elbow, albueServo, ønsketDelay); status4 = servoParallelControl (ønsket Grip, gripperServo, ønsketDelay); hvis (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {ferdig = 1}} // slutt på stund}
Dette var hele prosedyren for å lage en robotarm. Etter å ha brent koden og lastet ned appen, skal roboten fungere helt fint når glidebryterne på appen flyttes. Du kan også programmere armen til å jobbe autonomt for å utføre den ønskede oppgaven.