Progetto Arduino: Controllo dei servomotori con il Wiimote Joystick

Progetto Arduino: Controllo dei servomotori con il Wiimote Joystick

Questo progetto con Arduino si ispira ad Armadillo Aerospace e il suo razzo Pixel controllato tramite computer portatile; da qui nasce l’idea di utilizzare un modulo Arduino per ottenere un velivolo controllato in remoto senza fili. Nel percorso di sviluppo, un obiettivo intermedio raggiungibile potrebbe essere qualcosa come un rover RC senza fili con una video camera, monitorato e controllato con un computer portatile ed un joystick su un network Wi Fi.

Il primo passo da compiere consiste nel semplice controllo, con il joystick, di un servo per mezzo di una connessione USB. Questo progetto si basa sul processo documentato in Arduino Serial Servo Control

Progetto Arduino per il controllo dei servomotori: la parte hardware

La configurazione hardware è molto semplice ed è descritta nel dettaglio nell’ articolo del serial servo. Il servomotore JR Sport ST47 standard servo viene collegato direttamente ad un modulo Arduino da 5V di potenza e a terra e il cavo di controllo del servo viene collegato al pin digitale #2.

Il modulo Arduino viene collegato ad un PC (in questo caso specifico con sistema operativo Linux) per mezzo di un cavo USB; viene collegato anche un joystick USB.

Progetto Arduino per il controllo dei servomotori: la parte software

Lo stack software a due strati include uno script Phyton per l’ interpretazione degli input che provengono dal joystick, e uno sketch Arduino per l’ attesa di input seriali in arrivo dallo script Phyton e per dare impulsi al servomotore.

Partiamo allora con lo script Phyton; questo codice vive sul PC e richiede l’installazione dei moduli pyserial e pygame , insieme alla libreria standard di Phyton. Il modulo pygame viene progettato primariamente per la creazione di grafica per i giochi, ma possiede un set di metodi diretti per interpretare i joystick ed altri dispositivi di input non convenzionali. Il modulo pyserial permette semplicemente di aprire una connessione seriale verso Arduino tramite una porta USB.

Lo scopo principale dello script Python è quello di leggere e di riportare gli input dei joystick. Un joystick pensato per i giochi potrebbe avere sei differenti assi ed una moltitudine di tasti. Lo script sarà in grado di ‘sentire’ gli input provenienti da ogni asse e (se abilitato) di stampare i valori delle posizioni del joystick.

Ogni asse del joystick riporta un range di valori decimali compresi tra -1.0 e 1.0, con zero come posizione centrale. Lo script converte quei valori (dall’asse X) in numeri approssimati tra 0 e 180 ed assegna un determinato valore ad una posizione del servomotore. Dal momento che il servomotore può viaggiare attraverso 180 gradi, ogni valore della posizione del servo stesso incrementa l’ antenna del servo di un grado, con il centro a 90 gradi. I numeri interi che vanno da 0 a 180 vengono di seguito convertiti in caratteri ASCII ed inviati, tramite la connessione seriale, ad Arduino.

Ecco lo script

Il passo successive consiste nel rimuovere il cavo USB da Arduino e nel controllare il servomotore inviando dati seriali tramite un network Wi Fi o ZigBee.

La scheda Arduino disponibile da Farnell

Leave a Reply