Articles

Come controllare un motore passo-passo con driver A4988 e Arduino

Questo articolo include tutto quello che c’è da sapere sul controllo di un motore passo-passo con il driver del motore passo-passo A4988 e Arduino. Ho incluso uno schema elettrico, un tutorial su come impostare il limite di corrente e molti codici di esempio.

Sebbene sia possibile utilizzare questo driver senza una libreria Arduino, consiglio vivamente di dare un’occhiata al codice di esempio per la libreria AccelStepper alla fine di questo tutorial. Questa libreria è abbastanza facile da usare e può migliorare notevolmente le prestazioni dell’hardware.

Dopo ogni esempio, analizzo e spiego come funziona il codice, quindi non dovresti avere problemi a modificarlo in base alle tue esigenze.

Se vuoi saperne di più su altri driver per motori passo-passo, gli articoli qui sotto potrebbero essere utili:

  • How to control a stepper motor with DRV8825 driver and Arduino
  • 28BYJ-48 Stepper Motor with ULN2003 Driver and Arduino Tutorial
  • How to control a Stepper Motor with Arduino Motor Shield Rev3
  • TB6600 Stepper Motor Driver with Arduino Tutorial

Supplies

Hardware components

A4988 stepper motor driver × 1 Amazon
AliExpress
NEMA 17 stepper motor × 1 Amazon
Arduino Uno Rev3 × 1 Amazon
Power supply (8-35 V) × 1 Amazon
AliExpress
Breadboard × 1 Amazon
Capacitor (100 µF) × 1 Amazon
Jumper wires ~ 10 Amazon
AliExpress
USB cable type A/B × 1 Amazon

Mi piace usare questo driver in combinazione con un CNC-shield o scheda di espansione. Tale scudo include già condensatori e offre un modo semplice per selezionare la risoluzione microstepping. Rende il cablaggio molto più facile ed è una grande opzione se avete bisogno di una soluzione più permanente di un tagliere.

Tools

Small screwdriver Amazon
Multimeter Amazon
Alligator test leads (optional) Amazon

Software

Arduino IDE

Makerguides.com è un partecipante in Amazon Services LLC Associates Programma, un affiliato pubblicitario programma progettato per fornire un mezzo per siti per guadagnare tariffe pubblicitarie dalla pubblicità e il link al, di prodotti di Amazon.com.

il driver

il cuore del driver A4988 troverete un chip realizzato da Allegro MicroSystems: il A4988 DMOS Microstepping Driver con Traduttore e di Protezione da Sovracorrente. Questo driver del motore integrato rende l’interfaccia con un microcontrollore super facile in quanto sono necessari solo due pin per controllare sia la velocità che la direzione del motore passo-passo.

Il driver ha una capacità di uscita massima di 35 V e ± 2 A che è grande per la guida di piccole e medie dimensioni motori passo-passo come un NEMA 17 bipolare motore passo-passo.

Se è necessario controllare motori passo-passo più grandi come NEMA 23, dare un’occhiata al driver del motore passo-passo TB6600. Questo driver può essere utilizzato con lo stesso codice come il A4988 e ha una corrente nominale di 3.5 A.

  • TB6600 Stepper Motor Driver con Arduino Tutorial

Il chip driver A4988 ha diverse funzioni di sicurezza integrate come sovracorrente, cortocircuito, blocco sotto tensione e protezione a temperatura eccessiva. Puoi trovare ulteriori specifiche nella tabella sottostante.

A4988 Specifications

Minimum operating voltage 8 V
Maximum operating voltage 35 V
Continuous current per phase 1 A
Maximum current per phase 2 A
Minimum logic voltage 3 V
Maximum logic voltage 5.5 V
Microstep resolution full, 1/2, 1/4, 1/8 and 1/16
Reverse voltage protection? No
Quote 15.5 × 20,5 mm (0.6″ x 0.8″)
Costo Controllare il prezzo e ‘

Per ulteriori informazioni è possibile controllare la scheda tecnica qui.

Differenze tra A4988 e DRV8825

Il DRV8825 è abbastanza simile all’A4988 ma ci sono alcune differenze chiave:

  • Il DRV8825 offre 1/32 microstepping, mentre l’A4988 scende solo a 1/16-step. Maggiore microstepping risultati in più liscia, funzionamento più silenzioso, ma non è sempre necessario.
  • Il potenziometro limite di corrente è in una posizione diversa
  • Il rapporto tra la tensione di riferimento e il limite di corrente è diverso.
  • Il DRV8825 richiede una durata minima dell’impulso a PASSO di 1,9 µs; l’A4988 richiede un minimo di 1 µs.
  • Il DRV8825 può essere utilizzato con un’alimentazione del motore a tensione superiore (45 V vs 35 V). Ciò significa che è meno suscettibile ai danni da picchi di tensione LC.
  • Il DRV8825 può fornire un po ‘ più di corrente rispetto al A4988 senza alcun ulteriore raffreddamento.

Si noti che la piedinatura del DRV8825 è esattamente lo stesso per il A4988, in modo che possa essere utilizzato come un drop-in di ricambio!

A4899 (a sinistra) vs DRV8825 (a destra)

Microstep impostazioni

motori passo-passo, in genere hanno una dimensione del passo di 1.8° o 200 passi per giro, questo si riferisce completo i passaggi. Un driver microstepping come l’A4988 consente risoluzioni più elevate consentendo posizioni di passaggio intermedie. Ciò si ottiene energizzando le bobine con livelli di corrente intermedi.

Ad esempio, la guida di un motore in modalità quarto passo darà al motore a 200 passi per giro 800 micropassi per giro utilizzando quattro diversi livelli di corrente.

A4988 pinout

La risoluzione (dimensione del passo) pin di selezione (MS1, MS2 e MS3) consentono di selezionare uno dei cinque step risoluzioni secondo la tabella sotto riportata.

MS1 MS2 MS3 Microstep resolution
Low Low Low Full step
High Low Low 1/2 step
Low High Low 1/4 step
High High Low 1/8 step
High High High 1/16 step

Tutti e tre gli ingressi hanno resistenze interne di pull-down da 100 kΩ, in modo da lasciare scollegati i tre pin di selezione microstep in modalità full-step.

Io uso spesso un CNC-shield o scheda di espansione in combinazione con questi driver. La scheda di espansione ha 3 dip switch per impostare MS1-MS3 alto o basso e sul CNC-shield è possibile installare ponticelli. Se si utilizza il driver con una breadboard, è sufficiente utilizzare i ponticelli per collegare i pin del selettore a 5 V (cioè renderli ALTI).

Cablaggio – Collegamento A4988 per Arduino e motore passo-passo

Schema elettrico / schema per A4988 driver del motore passo-passo con Arduino e motore passo-passo.

Lo schema elettrico / schema sopra mostra come collegare il driver A4899 a un motore passo-passo e l’Arduino.

Le connessioni sono riportate anche nella seguente tabella:

A4988 Connections

A4988 Connection
VMOT 8-35V
GND Motor ground
SLP RESET
RST SLP
VDD 5V
GND Logic ground
STP Pin 3
DIR Pin 2
1A, 1B, 2A, 2B Stepper motor
  • L’alimentazione del motore è collegata a GND e VMOT (in alto a destra).
  • Le due bobine del motore passo-passo sono collegati a 1A, 1B e 2A, 2B (vedi sotto).
  • Il pin GND (in basso a destra) è collegato al pin di terra del microcontrollore e VDD è collegato a 5V.
  • Il pin STP (step) e DIR (direction) sono collegati rispettivamente al pin digitale 3 e 2. Puoi scegliere un pin digitale diverso se vuoi, ma questi sono quelli che ho usato per questo tutorial e il codice di esempio.
  • Il pin SLP è un ingresso basso attivo. Significato, tirando questo pin basso mette il driver in modalità sleep, riducendo al minimo il consumo di energia. RST è anche un input basso attivo. Quando tirato basso, tutti gli ingressi PASSO vengono ignorati fino a quando si tira in alto. Se non si utilizza il pin, è possibile collegarlo al pin SLP/SLEEP adiacente per portarlo in alto e abilitare il driver.
  • Il EN (enable) pin può essere lasciato scollegato, è tirato basso per impostazione predefinita. Quando questo pin è impostato alto il driver è disabilitato.

Nel resto di questo tutorial ho lasciato MS1, MS2 e MS3 disconnessi, quindi il driver funziona in modalità full-step. Questo rende spiegare il codice un po ‘ più facile. Normalmente userei 1/8 o 1/16 microstepping e collegherei i pin appropriati a 5V (vedi tabella nell’introduzione).

Warning

La scheda portante A4988 utilizza condensatori ceramici a bassa ESR, che la rendono suscettibile di picchi di tensione LC distruttivi, specialmente quando si utilizzano cavi di alimentazione più lunghi di pochi pollici.

Per proteggere il driver è possibile collegare un condensatore elettrolitico tra VMOT e GND. Pololu suggerisce un condensatore di 47 µF o più (ho usato un condensatore da 100 µF). Mi piacciono queste scatole di assortimento di Amazon, in questo modo ho sempre a portata di mano alcuni condensatori della giusta dimensione.

Come determinare il corretto cablaggio del motore passo-passo?

Se non riesci a trovare la scheda tecnica del tuo motore passo-passo, può essere difficile capire come collegare correttamente il tuo motore. Uso il seguente trucco per determinare come collegare motori passo-passo bipolari a 4 fili:

L’unica cosa che devi identificare sono le due coppie di fili che sono collegate alle due bobine del motore. I fili da una bobina si collegano a 1A e 1B e l’altro a 2A e 2B, la polarità non importa.

Per trovare i due fili da una bobina, effettuare le seguenti operazioni con il motore scollegato:

  1. Provare a far girare l’albero del motore passo-passo a mano e notare quanto sia difficile da girare.
  2. Ora scegliere una coppia casuale di fili dal motore e toccare le estremità nude insieme.
  3. Quindi, provare a far girare di nuovo l’albero del motore passo-passo.

Se senti molta resistenza, hai trovato un paio di fili dalla stessa bobina. Se riesci a far girare liberamente l’albero, prova un altro paio di fili. Ora collegare le due bobine ai pin mostrati nello schema elettrico sopra.

(Se non è ancora chiaro, si prega di lasciare un commento qui sotto, maggiori informazioni possono essere trovate anche sul RepRap.org wiki)

Come impostare il limite di corrente?

Prima di iniziare a programmare il vostro Arduino e iniziare a utilizzare il driver c’è una cosa molto importante che dovete fare che un sacco di gente dimentica: impostare il limite di corrente!

Questo passaggio non è molto complicato, ma assolutamente necessario per proteggere il vostro motore passo-passo e il driver. Se non si imposta un limite di corrente appropriato, il motore può assorbire più corrente di quella che o il driver può gestire, questo rischia di danneggiare uno o entrambi.

Per impostare il limite di corrente è necessario misurare una tensione di riferimento e regolare il potenziometro di bordo di conseguenza. Avrete bisogno di un piccolo cacciavite, un multimetro per misurare la tensione di riferimento, e alligatore puntali (opzionale, ma molto utile).

Limite di corrente schema elettrico per A4988 driver.

Per misurare la tensione di riferimento, il driver deve essere alimentato. L’A4988 ha solo bisogno di alimentazione tramite VDD (5V) ed è necessario collegare RST e SLP insieme, altrimenti il driver non si accende. È meglio scollegare il motore passo-passo mentre lo fai.

Se hai già cablato il driver, puoi lasciare tutto tranne il motore passo-passo collegato. È possibile applicare l’alimentazione tramite la porta USB di Arduino.

A4988 Connection
VDD 5V
RST SLP
SLP RESET
GND Ground
Required connections to set the current limit

Current limit formula

The next step is to calculate the current limit with the following formula:

Limite di corrente = Vref ÷ (8 × Rcs)

Rcs è la resistenza di senso corrente. Se hai acquistato un driver A4988 da Pololu prima di gennaio 2017, l’Rcs sarà 0.050 Ω. I driver venduti dopo hanno resistori di rilevamento corrente 0.068 Ω.

Quindi questo significa che per un limite di corrente di 1A per una scheda con resistori di rilevamento di corrente 0.068 Ω, il Vref dovrebbe essere 540 mV.

Posizioni dei resistori di rilevamento corrente. Immagine: www.pololu.com

Per selezionare il giusto limite di corrente, date un’occhiata alla scheda tecnica del vostro motore passo-passo. Se non riesci a trovare la corrente nominale del tuo motore, ti consiglio di iniziare con un limite di corrente di 1A. Puoi sempre aumentarlo in un secondo momento se il tuo motore/driver manca di passaggi.

Bonus info: Quando si utilizza il driver in modalità full-step, la corrente attraverso ogni bobina è limitata a circa il 70% del limite di corrente impostato. Ciò significa che è necessario impostare il limite di corrente del 40% superiore o 1,4 A in modalità full-step. Quando si utilizza microstepping, si applica la formula sopra.

Si noti che è necessario ricalibrare il limite di corrente se si modifica la tensione di alimentazione del motore. Se il tuo motore sta facendo molto rumore, prova ad abbassare il limite di corrente. È meglio impostare il limite di corrente abbastanza alto in modo che il motore non manchi i passaggi.

Misurazione Vref

Ora è necessario misurare la tensione di riferimento (Vref) tra i due punti contrassegnati nella foto qui sotto (GND e il potenziometro) e regolarlo al valore calcolato.

Punti sonda Vref (GND e potenziometro).

Vi consiglio di utilizzare alligator puntali fissati al cacciavite per impostare il limite di corrente. Ciò consente di regolare il potenziometro e misurare la tensione di riferimento allo stesso tempo.

Nota: C ‘ è un altro modo per misurare il limite di corrente e che è quello di misurare direttamente il consumo di corrente del motore passo-passo. Personalmente trovo il metodo sopra molto più semplice.

Pololu menziona quanto segue sul loro sito web:

Nota: la corrente della bobina può essere molto diversa dalla corrente di alimentazione, quindi non è necessario utilizzare la corrente misurata all’alimentazione per impostare il limite di corrente. Il luogo appropriato per mettere il misuratore di corrente è in serie con una delle bobine del motore passo-passo.

Pololu

Limite di corrente FAQ

Ho bisogno di avere il motore passo-passo collegato o no?
No, non è necessario collegare il motore passo-passo al driver quando si imposta il limite di corrente. Per essere sicuri, scollegare il motore, a volte interferisce con la misurazione della tensione Vref.

Devo girare il motore eseguendo Arduino motor sketch?
No, vedi domanda sopra.

Devo ruotare l’orologio del potenziometro – o in senso antiorario per aumentare Vref?
Questo dipende dal produttore del conducente. Se si dispone di un vero e proprio Polulu breakout board del DRV8825 o A4988 si gira il potenziometro in senso orario per aumentare Vref e in senso antiorario per abbassarlo.

Raffreddamento del driver

Il driver IC A4988 ha una corrente nominale massima di 2 A per bobina, ma senza un dissipatore di calore può fornire solo circa 1 A per bobina prima che inizi a surriscaldarsi.

Il driver di solito viene fornito con un piccolo dissipatore di calore adesivo-backed, che vi consiglio di installare subito. È inoltre possibile acquistare un gruppo di piccoli dissipatori di calore da Amazon per davvero a buon mercato.

Di base Arduino codice di esempio per controllare un motore passo-passo

Ora che avete cablato il driver e impostare il limite di corrente, è il momento di collegare il Arduino al computer e caricare un po ‘ di codice. Puoi caricare il seguente codice di esempio sul tuo Arduino usando l’IDE Arduino. Per questo esempio specifico, non è necessario installare alcuna libreria.

Questo schizzo controlla sia la velocità, il numero di giri, e la direzione di rotazione del motore passo-passo.

È possibile copiare il codice facendo clic sul pulsante nell’angolo in alto a destra del campo codice.

Come funziona il codice:

Lo schizzo inizia con la definizione dei pin di passo e direzione. Li ho collegati ai pin Arduino 3 e 2.

L’istruzione#define viene utilizzata per dare un nome a un valore costante. Il compilatore sostituirà qualsiasi riferimento a questa costante con il valore definito quando il programma viene compilato. Quindi ovunque tu menzioni dirPin, il compilatore lo sostituirà con il valore 2 quando il programma viene compilato.

Ho anche definito una costantestepsPerRevolution. Poiché ho impostato il driver in modalità passo completo, l’ho impostato su 200 passi per giro. Modificare questo valore se la configurazione è diversa.

// Define stepper motor connections and steps per revolution:#define dirPin 2#define stepPin 3#define stepsPerRevolution 200

Nel setup()sezione del codice, tutti i perni di controllo del motore sono dichiarati come uscita digitale con la funzione pinMode().

void setup() { // Declare pins as output: pinMode(stepPin, OUTPUT); pinMode(dirPin, OUTPUT);}

Nella sezione loop() del codice, lasciamo che il motore giri lentamente un giro nella direzione CW e un giro rapidamente nella direzione CCW. Successivamente, lasciamo che il motore giri 5 giri in ogni direzione con un’alta velocità. Quindi, come controlli la velocità, la direzione di rotazione e il numero di giri?

Controllo spinning direzione:

Per controllare la direzione di filatura del motore passo-passo abbiamo impostato il DIR (direzione) pin sia alta o bassa. Per questo usiamo la funzione digitalWrite(). A seconda di come è stato collegato il motore passo-passo, impostando il pin DIR alta lascerà il motore girare CW o CCW.

Controllo numero di passi o giri:

In questo esempio schizzo, il for loop controllare il numero di passi il motore passo-passo avrà. Il codice all’interno del ciclo for si traduce in 1 passo del motore passo-passo. Poiché il codice nel ciclo viene eseguito 200 volte (stepsPerRevolution), questo si traduce in 1 rivoluzione. Negli ultimi due cicli, il codice all’interno del ciclo for viene eseguito 1000 volte, il che si traduce in 1000 passaggi o 5 giri.

Nota che puoi cambiare il secondo termine nel ciclo for a qualsiasi numero di passaggi tu voglia. for(int i = 0; i < 100; i++) risulterebbe in 100 passi, o mezzo giro.

Velocità di controllo:

La velocità del motore passo-passo è determinata dalla frequenza degli impulsi che inviamo al perno PASSO. Maggiore è la frequenza, più veloce è il funzionamento del motore. È possibile controllare la frequenza degli impulsi modificando delayMicroseconds() nel codice. Più breve è il ritardo, maggiore è la frequenza, più veloce è il funzionamento del motore.

AccelStepper library tutorial

La libreria AccelStepper scritta da Mike McCauley è una fantastica libreria da utilizzare per il tuo progetto. Uno dei vantaggi è che supporta l’accelerazione e la decelerazione, ma ha anche molte altre funzioni interessanti.

È possibile scaricare l’ultima versione di questa libreria qui o fare clic sul pulsante qui sotto.

Puoi installare la libreria andando su Sketch>Includi Libreria> Aggiungi .Libreria ZIP in nell’IDE Arduino.

Un’altra opzione è quella di passare a Strumenti > Gestisci librerie or o digitare Ctrl + Maiusc + I su Windows. Il Gestore librerie aprirà e aggiornerà l’elenco delle librerie installate.

È possibile cercare ‘accelstepper’ e cercare la libreria di Mike McCauley. Selezionare la versione più recente e quindi fare clic su Installa.

Continuous rotation example code

Il seguente schizzo può essere utilizzato per eseguire uno o più motori passo-passo in modo continuo ad una velocità costante. (Non viene utilizzata alcuna accelerazione o decelerazione).

Come funziona il codice:

Il primo passo è includere la libreria con #include <AccelStepper.h>.

// Include the AccelStepper library:#include <AccelStepper.h>

Il passo successivo è definire le connessioni da A4988 ad Arduino e il tipo di interfaccia del motore. Il tipo di interfaccia motore deve essere impostato su 1 quando si utilizza un driver passo e direzione. Puoi trovare gli altri tipi di interfaccia qui.

L’istruzione#define viene utilizzata per dare un nome a un valore costante. Il compilatore sostituirà qualsiasi riferimento a questa costante con il valore definito quando il programma viene compilato. Quindi ovunque tu menzioni dirPin, il compilatore lo sostituirà con il valore 2 quando il programma viene compilato.

// Define stepper motor connections and motor interface type. Motor interface type must be set to 1 when using a driver:#define dirPin 2#define stepPin 3#define motorInterfaceType 1

Successivamente, è necessario creare una nuova istanza della classe AccelStepper con il tipo di interfaccia motore e le connessioni appropriati.

In questo caso, ho chiamato il motore passo-passo ‘stepper’ ma puoi usare anche altri nomi, come ‘z_motor’ o ‘liftmotor’ ecc. AccelStepper liftmotor = AccelStepper(motorInterfaceType, stepPin, dirPin);. Il nome che si dà al motore passo-passo verrà utilizzato in seguito per impostare la velocità, la posizione e l’accelerazione per quel particolare motore. È possibile creare più istanze della classe AccelStepper con nomi e pin diversi. Ciò consente di controllare facilmente 2 o più motori passo-passo allo stesso tempo.

// Create a new instance of the AccelStepper class:AccelStepper stepper = AccelStepper(motorInterfaceType, stepPin, dirPin);

Nella sezione setup() del codice definiamo la velocità massima in passi / secondo. Velocità di oltre 1000 passi al secondo possono essere inaffidabili, quindi ho impostato questo come massimo. Si noti che ho specificato il nome del motore passo-passo (‘stepper’), per il quale voglio definire la velocità massima. Se si dispone di più motori passo-passo collegati, è possibile specificare una velocità diversa per ogni motore:

void setup() { // Set the maximum speed in steps per second: stepper.setMaxSpeed(1000); stepper2.setMaxSpeed(500);}

Nel loop() per prima cosa impostiamo la velocità a cui vogliamo che il motore funzioni. Per questo, usiamo la funzione setSpeed(). (è anche possibile inserire questo nella sezione setup del codice).

stepper.runSpeed() esegue il polling del motore e quando un passaggio è dovuto, esegue 1 passaggio. Questo dipende dalla velocità impostata e dal tempo trascorso dall’ultimo passaggio. Se si desidera modificare la direzione del motore, è possibile impostare una velocità negativa: stepper.setSpeed(-400); gira il motore dall’altra parte.

Codice di esempio per controllare il numero di passi o giri

Per far ruotare il motore un numero specifico di passi preferisco usare un ciclo while in combinazione con stepper.currentPosition(). È possibile utilizzare il seguente codice di esempio, per far funzionare il motore avanti e indietro.

Spiegazione del codice:

La prima parte del codice fino alla sezione loop() è esattamente la stessa dell’esempio precedente.

Nel ciclo faccio uso di un ciclo while in combinazione con la funzione currentPosition(). Innanzitutto, ho impostato la posizione corrente del motore passo-passo su zero con stepper.setCurrentPosition(0).

 // Set the current position to 0: stepper.setCurrentPosition(0);

Successivamente facciamo uso del ciclo while. Un ciclo while si interromperà continuamente, e infinitamente, fino a quando l’espressione all’interno della parentesi, () diventa falsa. Quindi, in questo caso, controllo se la posizione corrente del motore passo-passo non è uguale a 400 passi (!= significa: non è uguale a). Anche se questo non è il caso, eseguiamo il motore passo-passo a una velocità costante come impostato da setSpeed().

Nel resto del ciclo, facciamo esattamente lo stesso, solo con una diversa velocità e posizione di destinazione.

Accelerazione e decelerazione esempio di codice

Con il seguente schizzo, è possibile aggiungere accelerazione e decelerazione per i movimenti del motore passo-passo, senza alcun complicato di codifica. Nell’esempio seguente, il motore funzionerà avanti e indietro con una velocità di 200 passi al secondo e un’accelerazione di 30 passi al secondo al secondo.

Spiegazione del codice:

Nel setup(), oltre alla velocità massima, dobbiamo definire l’accelerazione / decelerazione. Per questo usiamo la funzione setAcceleration().

void setup() { // Set the maximum speed and acceleration: stepper.setMaxSpeed(200); stepper.setAcceleration(30);}

Nella sezione loop del codice, ho usato un modo diverso per far ruotare il motore un numero predefinito di passaggi. La funzione stepper.moveTo() viene utilizzata per impostare la posizione di destinazione. La funzione stepper.runToPostion() sposta il motore (con accelerazione / decelerazione) nella posizione di destinazione e blocca fino a quando non si trova nella posizione di destinazione. Poiché questa funzione sta bloccando, non dovresti usarlo quando devi controllare altre cose allo stesso tempo.

Conclusione

In questo articolo vi ho mostrato come controllare un motore passo-passo con il driver del motore passo-passo A4988 e Arduino. Spero che tu l’abbia trovato utile e informativo. Se l’hai fatto, si prega di condividere con un amico che ama anche l’elettronica e fare le cose!

Ho usato personalmente questo driver molto per un gruppo di stampanti 3D e altri progetti relativi al CNC, ma mi piacerebbe sapere quali progetti si prevede di costruire (o hanno già costruito) con questo driver. Se avete domande, suggerimenti, o se si pensa che le cose mancano in questo tutorial, si prega di lasciare un commento in basso.