Sommario:

Agita la tua mano per controllare il braccio robotico OWI Nessun vincolo: 10 passaggi (con immagini)
Agita la tua mano per controllare il braccio robotico OWI Nessun vincolo: 10 passaggi (con immagini)

Video: Agita la tua mano per controllare il braccio robotico OWI Nessun vincolo: 10 passaggi (con immagini)

Video: Agita la tua mano per controllare il braccio robotico OWI Nessun vincolo: 10 passaggi (con immagini)
Video: HANDIMATICA 10-Le prospettive offerte dalle tecnologie robotiche per fisioterapisti e fisiatri[1/3] 2024, Novembre
Anonim
Image
Image
Parti
Parti

L'IDEA:

Ci sono almeno altri 4 progetti su Instructables.com (al 13 maggio 2015) sulla modifica o il controllo del braccio robotico OWI. Non sorprende, dal momento che è un kit robotico così grande ed economico con cui giocare. Questo progetto è simile nello spirito (cioè, controlla il braccio robotico con Arduino), ma diverso nell'approccio. [video]

L'idea è quella di essere in grado di controllare il braccio robotico in modalità wireless utilizzando i gesti. Inoltre, ho cercato di ridurre al minimo le modifiche al braccio robotico, in modo che potesse essere ancora utilizzato con il controller originale.

Sembra semplice.

Quello che è finito per essere è un progetto in tre parti:

  1. Un guanto dotato di sensori sufficienti per controllare un LED e 5 motori
  2. Un dispositivo trasmettitore basato su Arduino Nano per accettare comandi di controllo dal guanto e inviarlo in modalità wireless al dispositivo controller Arm
  3. Un ricevitore wireless basato su Arduino Uno e un dispositivo di controllo del motore collegato al braccio robotico OWI

CARATTERISTICHE

  1. Supporto per tutti i 5 gradi di libertà (DOF) e il LED
  2. Big Red Button - per fermare immediatamente i motori sul braccio prevenendo danni
  3. Design modulare portatile

Per gli utenti mobili: il "video promozionale" di questo progetto è su YouTube qui.

Passaggio 1: parti

GUANTO:

Avrai bisogno di quanto segue per costruire un controller per guanti:

  1. Guanto con cuciture elasticizzate Isotoner Smartouch Tech (o simile) - su Amazon.com
  2. Sensore Spectra Symboflex 2.2" - su Amazon.com
  3. GY-521 6DOF MPU6050 Giroscopio a 3 assi + Modulo accelerometro - su Fasttech.com
  4. INTESTAZIONE SCATOLA 2X5 DIRITTA - su Phoenixent.com
  5. PRESA-PRESA IDC 2X5 - su Phoenixent.com
  6. CAVO A NASTRO PIATTO 10 Conduttori Passo.050" - su Phoenixent.com
  7. 2 LED da 5 mm - verde e giallo
  8. 2 x piccoli pulsanti
  9. Resistenze, fili, ago, filo nero, pistola per colla, pistola per saldatura, saldatura, ecc.

SCATOLA DI TRASMISSIONE A FASCIA:

  1. Scheda Arduino compatibile Nano v3.0 ATmega328P-20AU - su Fasttech.com
  2. Ricetrasmettitore wireless nRF24L01+ 2,4 GHz compatibile con Arduino - su Amazon.com
  3. Braccialetto Gymboss - su Amazon.com
  4. Custodia portabatteria da 9 V con interruttore ON/OFF con cavo a filo - su Amazon.com
  5. INTESTAZIONE SCATOLA 2X5 DIRITTA - su Phoenixent.com
  6. batteria 9v
  7. Condensatore 47uF (50v)
  8. Resistenze, fili, pistola per colla, pistola per saldatura, saldatura, ecc.

SCATOLA DI CONTROLLO DEL BRACCIO ROBOTIZZATO OWI:

  1. Scheda di sviluppo Uno R3 Rev3 compatibile con Arduino - su Fasttech.com
  2. Prototype Shield KIT fai da te per Arduino (o simili) - su Amazon.com
  3. Ricetrasmettitore wireless nRF24L01+ 2,4 GHz compatibile con Arduino - su Amazon.com
  4. 3 x L293D driver per motore a circuito integrato a 16 pin a circuito integrato - su Fasttech.com
  5. 1 x SN74HC595 74HC595 Registro a scorrimento a 8 bit con registri di uscita a 3 stati DIP16 - su Amazon.com
  6. Condensatore 47uF (50v)
  7. Scatola per Arduino - su Amazon.com
  8. Interruttore di accensione/spegnimento
  9. 2 pulsanti da 13 mm (uno rosso e uno verde)
  10. 2 x 2X7 BOX HEADER DIRITTO - come sopra su Phoenixent.com
  11. CAVO A NASTRO PIATTO 14 Conduttore Passo.050" - come sopra su Phoenixent.com
  12. Batteria 9v + connettore ad innesto
  13. Resistenze, fili, pistola per colla, pistola per saldatura, saldatura, ecc.

… ed ovviamente:

OWI Robotic Arm Edge - Braccio robotico - OWI-535 - su Adafruit.com

Fase 2: PROTOTIPAZIONE

PROTOTIPAZIONE
PROTOTIPAZIONE
PROTOTIPAZIONE
PROTOTIPAZIONE

Suggerisco vivamente di prototipare ciascuno dei dispositivi di controllo prima di saldare tutti i componenti insieme.

Questo progetto utilizza alcuni componenti hardware impegnativi:

nRF24L01

Mi ci è voluto un po' per far parlare i due nRF24. Apparentemente né Nano né Uno forniscono abbastanza potenza stabilizzata a 3,3 V affinché i moduli funzionino in modo coerente. Una soluzione nel mio caso era un condensatore da 47uF sui pin di alimentazione su entrambi i moduli nRF24. Ci sono anche alcune stranezze nell'uso della libreria RF24 in modalità IRQ e non IRQ, quindi consiglio di studiare gli esempi con molta attenzione.

Un paio di ottime risorse:

nRF24L01 Pagina prodotto IC ricetrasmettitore RF a bassissima potenza a 2,4 GHz

Pagina della libreria dei driver RF24

Basta cercare su Google nRF24 + arduino per produrre molti link. Vale la pena fare una ricerca

74HC595 REGISTRO CAMBI

Non a caso, dovendo controllare 5 motori, un LED, due pulsanti e un modulo Wireless, ho esaurito i pin dell'Uno in tempi relativamente brevi. Il modo ben noto per "estendere" il conteggio dei pin è utilizzare un registro a scorrimento. Poiché nRF24 stava già utilizzando l'interfaccia SPI, ho deciso di utilizzare SPI anche per la programmazione del registro a scorrimento (per la velocità e per salvare i pin) invece della funzione shiftout(). Con mia grande sorpresa ha funzionato come un incantesimo dalla prima volta. Puoi verificarlo nell'assegnazione dei pin e negli schizzi.

Breadboard e ponticelli sono tuoi amici.

Fase 3: GUANTO

GUANTO
GUANTO
GUANTO
GUANTO
GUANTO
GUANTO
GUANTO
GUANTO

OWI Robotic ARM ha 6 elementi da controllare (OWI Robotic Arm Edge Picture)

  1. Un LED situato sulla PINZA del dispositivo
  2. UNA PINZA
  3. UN POLSO
  4. Un GOMITO - è la parte del braccio robotico attaccata al POLSO
  5. Una SPALLA è la parte del braccio robotico attaccata alla BASE
  6. UNA BASE

Il guanto è progettato per controllare il LED del braccio robotico e tutti e 5 i motori (gradi di libertà).

Ho singoli sensori contrassegnati sulle immagini e una descrizione di seguito:

  1. La PINZA è controllata dai pulsanti situati sul dito medio e sul mignolo. La pinza viene chiusa premendo insieme l'indice e il medio. La pinza si apre premendo insieme anello e mignolo.
  2. Il POLSO è controllato dal resistore flessibile sul cercatore di indice. Arricciare il dito a metà fa abbassare il polso e piegarlo fino in fondo fa alzare il polso. Tenere l'indice dritto ferma il polso.
  3. Il GOMITO è controllato dall'accelerometro: l'inclinazione del palmo verso l'alto e verso il basso sposta rispettivamente il gomito su e giù
  4. La SPALLA è controllata dall'accelerometro: inclinando il palmo a destra e a sinistra (non capovolto però!) si sposta la spalla rispettivamente su e giù
  5. La BASE è controllata anche dall'accelerometro, simile alla spalla: inclinando il palmo a destra e a sinistra completamente capovolto (palmo rivolto verso l'alto) si sposta la base rispettivamente a destra e a sinistra
  6. Il LED sulla pinza si accende/spegne premendo contemporaneamente entrambi i pulsanti di controllo della pinza.

Tutte le risposte dei pulsanti sono ritardate di 1/4 di secondo per evitare il jitter.

L'assemblaggio del guanto richiede alcune saldature e molte cuciture. Fondamentalmente si tratta solo di collegare 2 pulsanti, resistenza flessibile, modulo Accel/Gyro al tessuto del guanto e instradare i cavi alla scatola dei connettori.

Due LED sulla scatola di connessione sono:

  1. VERDE - accensione
  2. GIALLO - lampeggia quando i dati vengono trasmessi alla scatola di controllo del braccio.

Passaggio 4: SCATOLA DEL TRASMETTITORE

SCATOLA TRASMETTITORE
SCATOLA TRASMETTITORE
SCATOLA TRASMETTITORE
SCATOLA TRASMETTITORE
SCATOLA TRASMETTITORE
SCATOLA TRASMETTITORE

La scatola del trasmettitore è essenzialmente Arduino Nano, modulo wireless nRF24, connettore a filo flessibile e 3 resistori: 2 resistori pull-down da 10 kOhm per i pulsanti di controllo della pinza sul guanto e un resistore a divisione di tensione da 20 kOhm per il sensore flessibile che controlla il polso.

Tutto è saldato insieme su una vero-board. Nota che nRF24 è "sospeso" su Nano. Ero preoccupato che questo potesse causare interferenze, ma funziona.

L'uso della batteria da 9 V rende la parte strap-on un po' ingombrante, ma non volevo fare confusione con le batterie LiPo. Forse più tardi.

Si prega di consultare la fase di assegnazione dei pin per le istruzioni di saldatura

Passaggio 5: SCATOLA DI CONTROLLO DEL BRACCIO

SCATOLA DI CONTROLLO DEL BRACCIO
SCATOLA DI CONTROLLO DEL BRACCIO
SCATOLA DI CONTROLLO DEL BRACCIO
SCATOLA DI CONTROLLO DEL BRACCIO
SCATOLA DI CONTROLLO DEL BRACCIO
SCATOLA DI CONTROLLO DEL BRACCIO
SCATOLA DI CONTROLLO DEL BRACCIO
SCATOLA DI CONTROLLO DEL BRACCIO

La scatola di controllo del braccio è basata su Arduino Uno. Riceve i comandi dal guanto in modalità wireless tramite il modulo nRF24 e controlla l'OWI Robotoc Arm tramite 3 chip driver L293D.

Poiché sono stati utilizzati quasi tutti i pin Uno, ci sono molti fili all'interno della scatola - si chiude a malapena!

In base alla progettazione, la scatola si avvia in modalità OFF (come se si premesse un pulsante redstop), dando all'operatore il tempo di indossare il guanto e prepararsi. Una volta pronto, l'operatore preme il pulsante verde e deve essere immediatamente stabilita la connessione tra il guanto e la scatola di controllo (come indicato dal LED giallo sul guanto e dal LED rosso sulla scatola di controllo).

CONNESSIONE A OWI

La connessione al braccio robotico avviene tramite un connettore a doppia fila a 14 pin (secondo l'immagine sopra) tramite cavo piatto a 14 fili.

  • Le connessioni dei LED sono a massa comune (-) e arduino pin A0 tramite resistore da 220 Ohm
  • Tutti i cavi del motore sono collegati ai pin L293D 3/6 o 11/14 (+/- rispettivamente). Ogni L293D supporta 2 motori, quindi due coppie di pin.
  • Le linee di alimentazione OWI sono i pin più a sinistra (+6v) e più a destra (GND) del connettore a 7 pin sul retro della parte superiore gialla. (Puoi vedere i fili collegati nella foto sopra). Questi due sono collegati ai pin 8 (+) e 4, 5, 12, 13 (GND) su tutti e tre gli L293D.

Si prega di vedere il resto dell'assegnazione dei pin al passaggio successivo

Passaggio 6: ASSEGNAZIONE PIN

ASSEGNAZIONE PIN
ASSEGNAZIONE PIN
ASSEGNAZIONE PIN
ASSEGNAZIONE PIN
ASSEGNAZIONE PIN
ASSEGNAZIONE PIN

NANO:

  • 3.3v - 3.3v al chip nRF24L01 (pin 2)
  • 5v - 5v alla scheda accelerometro, pulsanti, sensore flessibile
  • a0 - ingresso resistore flessibile
  • a1 - controllo LED giallo "comms"
  • a4 - SDA ad accelerometro
  • a5 - SCL per accelerometro
  • d02 - Chip nRF24L01 Pin di interruzione (pin 8)
  • d03 - ingresso pulsante pinza aperta
  • d04 - ingresso pulsante chiusura pinza
  • d09 - Pin SPI CSN su chip nRF24L01 (pin 4)
  • d10 - Pin CS SPI su chip nRF24L01 (pin 3)
  • d11 - SPI MOSI al chip nRF24L01 (pin 6)
  • d12 - SPI MISO su chip nRF24L01 (pin 7)
  • d13 - SPI SCK su chip nRF24L01 (pin 5)
  • Vin - 9v +
  • GND - massa comune

ONU:

  • 3.3v - 3.3v al chip nRF24L01 (pin 2)
  • 5v - 5v ai pulsanti
  • Vin - 9v +
  • GND - terra comune
  • a0 - LED polso +
  • a1 - Pin SPI SS per Shift Register Select - al pin 12 su Shift Register
  • a2 - Ingresso pulsante ROSSO
  • a3 - Ingresso pulsante VERDE
  • a4 - direzione base destra - pin 15 su L293D
  • a5 - led di comunicazione
  • d02 - nRF24L01 Ingresso IRQ (pin 8)
  • d03 - abilita servo base (pwm) pin 1 o 9 su L293D
  • d04 - direzione base sinistra - pin 10 sul rispettivo L293D
  • d05 - abilita servo spalla (pwm) pin 1 o 9 su L293D
  • d06 - abilitazione servo gomito (pwm) pin 1 o 9 su L293D
  • d07 - Pin SPI CSN su chip nRF24L01 (pin 4)
  • d08 - Pin CS SPI su chip nRF24L01 (pin 3)
  • d09 - abilita il servo da polso (pwm) pin 1 o 9 su L293D
  • d10 - abilita il servo pinza (pwm) pin 1 o 9 su L293D
  • d11 - SPI MOSI su chip nRF24L01 (pin 6) e pin 14 su Shift Register
  • d12 - SPI MISO su chip nRF24L01 (pin 7)
  • d13 - SPI SCK su chip nRF24L01 (pin 5) e pin 11 su Shift Register

REGISTRO CAMBI E L293D:

  • pin QA (15) di 74HC595 al pin 2 di L293D #1
  • pin QB (1) di 74HC595 al pin 7 di L293D #1
  • pin QC (2) di 74HC595 al pin 10 di L293D #1
  • pin QD (3) di 74HC595 al pin 15 di L293D #1
  • pin QE (4) di 74HC595 al pin 2 di L293D #2
  • pin QF (5) di 74HC595 al pin 7 di L293D #2
  • pin QG (6) di 74HC595 al pin 10 di L293D #2
  • pin QH (7) di 74HC595 al pin 15 di L293D #2

Passaggio 7: COMUNICAZIONE

COMUNICAZIONE
COMUNICAZIONE

Glove invia 2 byte di dati alla scatola di controllo 10 volte al secondo o ogni volta che viene ricevuto un segnale da uno dei sensori.

2 byte sono sufficienti per 6 controlli perché dobbiamo solo inviare:

  • ON/OFF per LED (1 bit) - In realtà ho usato 2 bit per essere coerente con i motori, ma uno è sufficiente
  • OFF/DESTRA/SINISTRA per 5 motori: 2 bit ciascuno = 10 bit

È sufficiente un totale di 11 o 12 bit.

Codici di direzione:

  • OFF: 00
  • DESTRA: 01
  • SINISTRA: 10

La parola di controllo ha questo aspetto (a bit):

Byte 2 ---------------- Byte 1----------------

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 LED-- M5-- M4-- M3-- M2-- M1--

  • M1 - pinza
  • M2 - polso
  • M3 - gomito
  • M4 - spalla
  • M5 - base

Il byte 1 può essere comodamente inserito direttamente nel registro a scorrimento, poiché controlla la direzione destra/sinistra dei motori da 1 a 4.

Per le comunicazioni è abilitato un timeout di 2 secondi. Se si verifica il timeout, tutti i motori vengono arrestati come se fosse stato premuto un pulsante ROSSO.

Passaggio 8: SCHIZZI e altro…

SCHIZZI e altro…
SCHIZZI e altro…

GUANTO

Lo schizzo del guanto utilizza le seguenti librerie:

  • DirectIO - disponibile su Github
  • I2Cdev - disponibile su Github
  • Wire - parte di Arduino IDE
  • MPU6050 - disponibile su Github
  • SPI - parte di Arduino IDE
  • RF24 - disponibile su Github

e tre librerie sviluppate da me:

  • AvgFilter - disponibile su Github
  • DhpFilter - disponibile su Github
  • TaskScheduler - disponibile su Github

Lo schizzo del guanto è disponibile qui: Schizzo del guanto v1.3

SCATOLA DI CONTROLLO DEL BRACCIO

Lo schizzo del braccio utilizza le seguenti librerie:

  • DirectIO - disponibile su Github
  • PinChangeInt - disponibile su Github
  • SPI - parte di Arduino IDE
  • RF24 - disponibile su Github

e una libreria da me sviluppata:

TaskScheduler - disponibile su Github

Lo schizzo del braccio è disponibile qui: Schizzo del braccio v1.3

Schede tecniche dell'hardware utilizzato

  • 74HC595 registro a scorrimento - scheda tecnica
  • L293D driver motore - scheda tecnica
  • Modulo wireless nRF24 - scheda tecnica
  • Modulo accelerometro/giroscopio MPU6050 - scheda tecnica

AGGIORNAMENTO 31 maggio 2015:

Una nuova versione degli schizzi della scatola di controllo del guanto e del braccio è disponibile qui: Glove and Arm Sketches v1.5

Si trovano anche su github qui.

I cambiamenti

  • Aggiunti altri due byte alla struttura di comunicazione per inviare la velocità motore richiesta per i motori Polso, Gomito, Spalla e Base come valore a 5 bit (0.. 31) dal Guanto proporzionato all'angolo del gesto di controllo (vedi sotto). Arm Control Box mappa i valori [0.. 31] ai rispettivi valori PWM per ciascuno dei motori. Ciò consente un controllo graduale della velocità da parte dell'operatore e una movimentazione più precisa del braccio.
  • Nuova serie di gesti:

1. LED: LED di controllo dei pulsanti - pulsante del dito medio - ON, pulsante del mignolo - OFF

2. PINZA: comandi a striscia flessibile Gripper - dito mezzo piegato - APRI, dito completamente piegato - CHIUDI

3. POLSO: il polso viene controllato inclinando il palmo dalla posizione completamente orizzontale rispettivamente SU e GI. Più inclinazione produce più velocità

4. BRACCIO: il braccio viene controllato inclinando il palmo dalla posizione completamente orizzontale SINISTRA e DESTRA. Più inclinazione produce più velocità

5. SPALLA: la spalla viene controllata ruotando il palmo a DESTRA ea SINISTRA dalla posizione del palmo rivolto verso l'alto. Il palmo viene ruotato lungo l'asse del gomito (così come agitare la mano)

6. BASE: La base è controllata allo stesso modo della spalla con il palmo rivolto verso il basso.

Passaggio 9: CHE ALTRO?

COS'ALTRO?
COS'ALTRO?

L'IMMAGINAZIONE AL LAVORO

Come al solito con tali sistemi, potrebbero essere programmati per fare molto di più.

Ad esempio, il design attuale incorpora già funzionalità aggiuntive, non possibili con il telecomando standard:

  • Aumento graduale della velocità: ogni movimento del motore viene avviato ad una velocità minima predefinita, che viene aumentata gradualmente ogni 1 secondo fino al raggiungimento della velocità massima. Ciò consente un controllo più preciso di ciascuno dei motori (in particolare il polso e la pinza)
  • Cancellazione del movimento più rapida: quando l'Arm Box riceve il comando di fermare un motore, inverte momentaneamente il motore per circa 50 ms, "interrompendo" il movimento e consentendo un controllo più preciso.

COS'ALTRO?

Forse si potrebbero implementare gesti di controllo più elaborati. Oppure i gesti simultanei potrebbero essere usati per controlli elaborati. Il braccio può ballare?

Se hai un'idea su come riprogrammare il guanto o hai una versione di uno schizzo che vuoi che provi, per favore fammelo sapere: [email protected]

Fase 10: *** ABBIAMO VINTO!!! ***

*** ABBIAMO VINTO !!! ***
*** ABBIAMO VINTO !!! ***

Questo progetto ha vinto il Primo Premio al concorso Coded Creations sponsorizzato da Microsoft.

Controlla! WOO-HOO!!!

Creazioni codificate
Creazioni codificate
Creazioni codificate
Creazioni codificate

Secondo Premio nelle Creazioni Codificate

Consigliato: