Logo ilsitodelfaidate.it

Controller a due joystick: panoramica del progetto

Controllare un braccio robotico 4DOF in modo fluido e naturale con Arduino richiede un'interfaccia intuitiva, capace di tradurre i movimenti della mano in comandi precisi. In questo progetto realizzeremo un controller manuale basato su due joystick analogici: uno dei metodi più immediati ed efficaci per pilotare un braccio robotico hobbistico, e un ottimo punto di partenza per capire come gestirlo tramite Arduino con pochissimo hardware aggiuntivo.

Il risultato è un sistema di controllo affidabile, che unisce componenti dedicati a una logica software completamente personalizzabile.

Se non hai ancora assemblato il braccio, puoi seguire la guida completa che ho pubblicato qui: Tutorial - Guida per l’assemblaggio del braccio robotico 4 DOF (di Capitan Farloc).
Una volta completata la struttura meccanica, questo controller ti permetterà di comandare i quattro gradi di libertà in modo diretto, preciso e decisamente più coinvolgente

Materiali Utilizzati

Per realizzare il controller a due joystick per braccio robotico 4DOF con Arduino sono necessari pochi materiali economici e facilmente reperibili:

  • 2 joystick analogici a doppio potenziometro, recuperabili da vecchie console, negozi di surplus elettronico o acquistabili online
  • 1 scatola di derivazione da esterno a tenuta stagna (IP55), del tipo comunemente usato negli impianti elettrici civili o un'altra scatola in plastica 
  • 1 cavo multipolare con almeno 6 conduttori di colori diversi (tipo cavo segnale audio o domotica)
  • Connettori Dupont passo 2,54mm a crimpare: 1 connettore maschio a 4 poli e 1 connettore maschio a 2 poli, con i relativi contatti metallici
  • 4 condensatori da 100nF per il filtraggio del segnale analogico sugli ingressi ADC di Arduino
  • 1 scheda Arduino Uno (o compatibile)
  • 1 scheda driver PCA9685 a 16 canali PWM con interfaccia I2C
  • Stagno per saldatura e filo di rame per i ponticelli interni al controller

Attrezzatura Necessaria

Per assemblare e cablare il controller sono sufficienti utensili comuni, già presenti nella maggior parte dei laboratori hobbistici:

  • Saldatore con stagno, per le saldature sui terminali dei potenziometri e i ponticelli interni
  • Multimetro, indispensabile per verificare la continuità dei collegamenti e i valori di tensione prima di collegare il cavo ad Arduino
  • Trapano con fresa conica a gradini, per ricavare i fori sulla scatola di derivazione per il passaggio delle leve dei joystick e del cavo multipolare
  • Spellafili o Forbici da elettricista, per tagliare e spellare i conduttori del cavo multipolare
  • Pinza Crimpatrice o Pinza a becchi per la crimpatura dei contatti Dupont, la pinza crimpatrice dedicata garantisce un risultato più preciso e uniforme

Difficoltà, Tempi e Costi

Difficoltà: Facile

Il progetto è alla portata di chi ha un minimo di dimestichezza con elettricità a bassa tensione e piccoli lavori di fai‑da‑te.
Non richiede competenze avanzate, ma serve precisione nei collegamenti.

Tempo di realizzazione: 4–8 ore

Dipende da:

  • tempo per preparare la scatola
  • ordine dei cablaggi
  • eventuali saldature

Costo totale: 5–15 €

Parte dei componenti può essere di recupero.

I Joystick

Questo controller è nato dall'esigenza di avere uno strumento pratico per studiare l'interfacciamento e il controllo dei movimenti del braccio robotico 4DOF tramite Arduino Uno.

Per realizzarlo ho recuperato due joystick analogici acquistati anni fa in un negozio di surplus elettronico e mai utilizzati fino ad ora. In alternativa, si possono impiegare anche i joystick delle vecchie console o del PC, a patto che il loro funzionamento sia basato su due potenziometri — uno per l'asse X e uno per l'asse Y — la cui resistenza varia con lo spostamento della leva.

È proprio questo principio che li rende adatti al progetto: la posizione della leva si traduce direttamente in un valore analogico leggibile da Arduino.

Vista dall'alto del joystick senza leva: si distingue chiaramente il meccanismo a croce che trasmette il movimento della leva ai quattro potenziometri, due in parallelo per ciascun asse.

Il contenitore

Dal momento che i joystick sono privi di scocca, ho dovuto trovare una scatola adatta ad alloggiarli e a raccogliere tutti i collegamenti elettrici. La scelta è ricaduta su una scatola di derivazione da esterno a tenuta stagna, del tipo comunemente usato negli impianti elettrici civili.

I motivi della scelta sono pratici: costo contenuto, facile reperibilità nei negozi di materiale elettrico, e una plastica sufficientemente robusta ma allo stesso tempo lavorabile senza difficoltà, caratteristica utile per fresare le aperture necessarie al montaggio dei joystick.

I pressacavi laterali, normalmente usati per il passaggio dei cavi elettrici, si sono rivelati utili anche per il cablaggio del progetto.

Scatola di derivazione in plastica a tenuta stagna: robusta, economica e facilmente reperibile nei negozi di materiale elettrico. La plastica si lavora con facilità per ricavare le aperture necessarie al montaggio dei joystick

Assemblaggio dei Joystick

Per montare i due joystick sulla scatola ho effettuato due fori circolari sul coperchio ed i relativi fori per le viti di fissaggio.

Joystick assemblati sulla scatola

Schema elettrico dei collegamenti

Le porte analogiche di Arduino sono ingressi che leggono una tensione compresa tra 0 e 5V e la convertono, tramite un ADC a 10 bit, in un valore numerico intero compreso tra 0 e 1023. La funzione analogRead(pin) restituisce quindi 0 in corrispondenza di 0V e 1023 in corrispondenza di 5V, con tutti i valori intermedi distribuiti linearmente.

Per sfruttare questo principio, è sufficiente portare all'interno del controller i due riferimenti di tensione disponibili su Arduino: GND (0V) e 5V. Collegando questi due valori agli estremi di ciascun potenziometro, il cursore centrale diventa un partitore di tensione variabile: la tensione prelevata dal cursore — e quindi il valore restituito da analogRead() — rifletterà con precisione la posizione della leva in quell'istante.

Ogni joystick monta due potenziometri, uno per l'asse X e uno per l'asse Y. Con due joystick otteniamo quindi quattro segnali analogici indipendenti, ciascuno mappato su una porta analogica di Arduino, che ci forniranno in tempo reale la posizione delle due leve.

Di seguito lo schema elettrico dei collegamenti per tutti e quattro i potenziometri, i 4 condensatori C1÷C4 da 100nF presenti nello schema servono a filtrare il segnale analogico in ingresso all'ADC, riducendo il rumore sulla lettura.

Schema circuitale del controller: i quattro potenziometri dei due joystick (RV1÷RV4) sono collegati alle porte analogiche A0÷A3 di Arduino Uno tramite un connettore a 6 poli. I condensatori C1÷C4 da 100nF filtrano il segnale analogico in ingresso all'ADC, riducendo il rumore sulla lettura

Il cablaggio

Per collegare il controller ad Arduino è necessario un cavo con almeno sei conduttori interni: due per l'alimentazione (5V e GND, condivisi tra i due joystick) e quattro per i segnali analogici, uno per ciascun asse X e Y di ogni joystick. Non servono sezioni elevate, trattandosi di segnali analogici a bassissima corrente, è sufficiente un cavo multipolare da segnale, come quelli comunemente usati per impianti audio o domotica.

È buona norma usare un cavo con conduttori di colore diverso e mantenere la stessa associazione colore-segnale per tutta la lunghezza del cablaggio e nei ponticelli interni al controller. Questo accorgimento, apparentemente banale, semplifica notevolmente il debug in caso di comportamenti anomali.

Va tenuto presente che più il cavo è lungo, maggiore è la sua esposizione ai disturbi elettromagnetici, che si traducono in instabilità nella lettura analogica. È quindi consigliabile contenere la lunghezza del cavo entro un metro, o in alternativa assicurarsi che i condensatori di filtro da 100nF sugli ingressi ADC di Arduino (visibili nello schema elettrico) siano effettivamente presenti.

Nel mio caso i joystick montano due potenziometri per ogni asse, una caratteristica non universale ma presente in alcuni modelli vintage. Ho scelto di collegarli in parallelo a coppie: questo abbassa leggermente la resistenza totale vista dall'ingresso ADC, ma soprattutto media eventuali piccole differenze tra i due elementi, contribuendo a una lettura più stabile e priva di rumore.

I due joystick analogici montati nel controller, con i potenziometri di ogni asse collegati in parallelo tramite fili codificati per colore. La codifica cromatica, mantenuta coerente su tutti i collegamenti, facilita il debug e le eventuali modifiche future

I connettori

Per intestare il cavo multipolare ho scelto dei connettori Dupont passo 2,54mm, lo standard de facto nel mondo Arduino e nei progetti hobbistici in generale. Si tratta di connettori a crimpare, composti da due parti: la scocca in plastica, disponibile in varie configurazioni da 1 a n poli, e i contatti metallici dorati che vengono crimpati su ogni singolo filo e poi inseriti nella scocca fino allo scatto di blocco.

Per questo progetto ne ho utilizzati due: uno a quattro poli per i quattro segnali analogici (assi X e Y dei due joystick) e uno a due poli per l'alimentazione (5V e GND). Questa suddivisione in due connettori separati ha un vantaggio pratico: rende impossibile collegare per errore i fili di alimentazione agli ingressi analogici di Arduino, riducendo il rischio di danneggiare la scheda.

I componenti dei connettori Dupont passo 2,54mm prima della crimpatura: la scocca a quattro poli (in basso a destra), la scocca a due poli (in alto) e alcuni contatti metallici dorati pronti per essere crimpati sui fili

La crimpatura

Una volta spellati i fili del cavo multipolare per circa 2-3mm, i contatti metallici vengono crimpati su ciascun conduttore con un'apposita pinza per crimpare oppure (più complicato ma possibile) con una pinza a becchi. Il contatto va poi inserito nella scocca plastica dal lato posteriore, facendo attenzione all'orientamento, fino a sentire il caratteristico clic che indica il corretto aggancio del linguettino di blocco.

Il risultato finale è un collegamento ad innesto pulito e affidabile, facilmente scollegabile per eventuali modifiche o manutenzioni future — un vantaggio non trascurabile rispetto a una saldatura diretta sui pin di Arduino.

I due connettori Dupont completati: il connettore a quattro poli con i fili colorati dei segnali analogici (giallo, bianco, viola, e blu) e quello a due poli per l'alimentazione. I pin maschio sono ben visibili sul lato inferiore dei connettori

Collegamento del controller ad Arduino Uno

Una volta completata la crimpatura, il collegamento ad Arduino Uno è immediato: il connettore a due poli si inserisce sui pin 5V e GND della sezione POWER, mentre il connettore a quattro poli si innesta sui pin A0, A1, A2 e A3 della sezione ANALOG IN. I connettori Dupont passo 2,54mm si adattano perfettamente ai pin header di Arduino Uno, che per costruzione montano già dei pin femmina standard.

Vale la pena sottolineare un dettaglio importante per chi volesse usare un Arduino Nano al posto dell'Uno: sul Nano i pin header sono maschi, in questo caso il cablaggio non cambia, ma i connettori da crimpare sul cavo dovranno essere di tipo femmina invece che maschio, in modo da potersi innestare correttamente sui pin della scheda. È una differenza semplice ma da tenere presente fin dalla fase di assemblaggio del cavo, per evitare di doverlo rifare.

Dettaglio del collegamento dei due connettori Dupont passo 2,54mm sulla scheda Arduino Uno: il connettore a due poli inserito sui pin 5V e GND della sezione POWER (in alto) e il connettore a quattro poli inserito sui pin A0÷A3 della sezione ANALOG IN (in basso). Sullo sfondo sono visibili il microcontrollore ATmega328P e il quarzo della scheda

La scheda driver PCA9685

Per pilotare i quattro servomotori del braccio robotico, anche se si tratta di 4 Mini Servo MG90S, non è consigliabile collegarli direttamente ai pin PWM di Arduino Uno. Ogni servomotore assorbe una corrente che, soprattutto sotto sforzo, può facilmente superare la capacità erogabile dai pin della scheda, con il rischio concreto di danneggiare la nostra scheda Arduino in modo irreversibile.

La soluzione adottata in questo progetto è l'utilizzo di una scheda driver basata sul chip PCA9685, un controller PWM a 16 canali indipendenti. Questa scheda si occupa di generare autonomamente i segnali PWM per ciascun servomotore, alimentandoli da una sorgente di tensione esterna dedicata, visibile nel connettore verde di alimentazione nella foto, e scaricando completamente Arduino da questo compito.

Il vantaggio più significativo dal punto di vista del cablaggio è che la PCA9685 comunica con Arduino tramite interfaccia I2C, un protocollo seriale a due soli fili (SDA e SCL) oltre all'alimentazione. Questo significa che, indipendentemente dal numero di servomotori collegati, si occupano soltanto due pin di Arduino, lasciando libere tutte le altre porte per eventuali espansioni future. L'indirizzo I2C della scheda è inoltre configurabile tramite i pad di saldatura visibili sul bordo sinistro, il che permette di collegare fino a 62 schede PCA9685 sullo stesso bus, per un totale teorico di 992 canali PWM indipendenti.

Vista dall'alto della scheda driver PCA9685 collegata ai servomotori del braccio robotico. Il connettore verde in basso è il morsetto di alimentazione esterna per i servomotori, mentre i connettori Dupont sul lato destro portano i segnali I2C (SDA e SCL) verso Arduino Uno, visibile parzialmente in basso a destra. In alto sono visibili i connettori a tre poli gialli per il collegamento dei servomotori

Il sistema completo

Con il controller assemblato e cablato, il braccio robotico 4DOF è finalmente pronto per essere comandato manualmente. Il sistema nella sua interezza è composto da tre elementi collegati in cascata: il controller a due joystick, Arduino Uno e il braccio robotico con la sua scheda driver PCA9685.

Il flusso dei segnali è semplice e lineare: le leve dei joystick generano quattro tensioni analogiche variabili che il cavo multipolare porta agli ingressi A0÷A3 di Arduino Uno. Il software legge questi valori, li elabora e li traduce in comandi PWM che vengono inviati via I2C alla scheda PCA9685, la quale provvede ad azionare i quattro servomotori del braccio con la precisione e la fluidità necessarie.

Sul frontale del controller sono ben visibili le etichette identificative dei due joystick — ARANCIO/ROSA e VIOLA/BLU — che richiamano i colori dei fili utilizzati per il cablaggio interno e rendono immediata l'associazione tra ogni leva e i movimenti che controlla. Questa piccola attenzione, apparentemente trascurabile, si rivela molto utile durante le prime sessioni di utilizzo e ancora di più in fase di debug del software.

Arduino Uno riceve alimentazione direttamente tramite il cavo USB collegato al computer, che serve anche per il caricamento e l'eventuale aggiornamento del firmware.

Vista d'insieme del sistema di controllo completo. Da sinistra: il braccio robotico 4DOF in legno con la scheda PCA9685 alla base, Arduino Uno al centro con i connettori Dupont sugli ingressi analogici e I2C, e il controller a due joystick nella scatola di derivazione stagna a destra. Il cavo multipolare bianco collega il controller ad Arduino, mentre il cavo USB fornisce alimentazione e connessione al computer

Conclusioni e ringraziamenti

Grazie per aver seguito questa guida dedicata alla costruzione del controller a due joystick per il braccio robotico 4DOF. Conoscere i componenti utilizzati, comprendere il principio di funzionamento dei joystick analogici e realizzare un cablaggio ordinato e affidabile sono le basi indispensabili per poter poi passare alla fase successiva: la programmazione.

Il controller che abbiamo costruito insieme è ora pronto dal punto di vista hardware, ma per farlo funzionare concretamente è necessario caricare su Arduino Uno il firmware che legge i segnali analogici dei joystick e li traduce in movimenti fluidi e precisi del braccio robotico. Questa parte, la programmazione dello sketch Arduino, la gestione della libreria PCA9685 e la mappatura dei movimenti sulle leve, sarà l'argomento di un articolo dedicato "Tutorial - Programmazione Arduino per il controller a due joystick" che pubblicherò prossimamente.

Se hai trovato utile questa guida e desideri approfondire altri progetti legati alla robotica e all'elettronica hobbistica, puoi continuare la lettura visitando gli altri contenuti presenti nella sezione del sito Elettronica e Robotica, dove troverai molte altre guide pratiche e spiegazioni passo‑passo.

Tengo molto alla qualità e all'originalità dei contenuti che pubblico. Per questo preferisco che non vengano copiati o ripubblicati altrove. Se però ritieni che questa guida possa essere utile ad altre persone, sarò davvero felice se vorrai condividere il link alla pagina: è il modo più corretto per diffondere le informazioni e sostenere il lavoro che c'è dietro ogni articolo.

Buone Costruzioni Fai Da Te a Tutti

Luciano (Capitan Farloc)

 

Attenzione!

I lavori ed i consigli descritti in questo sito, sono dati da persone che svolgono attività a livello hobbistico e non professionale, quindi senza alcuna garanzia che siano corretti e che siano la migliore soluzione da applicare.
Inoltre l’utilizzo delle attrezzature e delle tecniche esposte su questo portale deve essere fatto valutando attentamente le proprie capacità.
Nell'esposizione fatta all'interno degli articoli si parte sempre dal presupposto che le attività vengano svolte da persone che abbiano le conoscenze e le capacità necessarie per l'utilizzo in sicurezza degli attrezzi necessari per non mettere a rischio l'incolumità delle persone e delle cose.
Pertanto chi gestisce questo portale non è da considerarsi in alcun caso responsabile dei danni cagionati, direttamente o indirettamente, dalla messa in pratica degli articoli in esso riportati.
Prima di effettuare qualsiasi attività "FaiDaTe" è comunque consigliabile leggere le Note di Sicurezza che contengono un elenco minimo e non esaustivo di misure da adottare per la sicurezza.

Copyright

La ripubblicazione degli articoli è vietata, è invece consentita la pubblicazione di brevi estratti degli articoli o delle foto a patto che al termine venga chiaramente indicata la fonte, inserendo un collegamento ipertestuale che rinvii alla pagina da cui il contenuto è stato estratto.

L'icona del sito ilsitodelfaidate.it è stata scaricata dal sito 123rf.com. © captainvector, 123RF Free Images

Esclusione di Responsabilità (Disclaimer)

Privacy Policy

Cookie Policy

Termini e Condizioni

Modifica Preferenze al Consenso