Sommario:

Come Usare il Modulo GY511 con Arduino [Crea una Bussola Digitale]: 11 Passaggi
Come Usare il Modulo GY511 con Arduino [Crea una Bussola Digitale]: 11 Passaggi

Video: Come Usare il Modulo GY511 con Arduino [Crea una Bussola Digitale]: 11 Passaggi

Video: Come Usare il Modulo GY511 con Arduino [Crea una Bussola Digitale]: 11 Passaggi
Video: Clessidra a LED con Arduino, MAX7219 e GY521 MPU6050 - Video 432 2024, Dicembre
Anonim
Come utilizzare il modulo GY511 con Arduino [Crea una bussola digitale]
Come utilizzare il modulo GY511 con Arduino [Crea una bussola digitale]

Panoramica

In alcuni progetti di elettronica, abbiamo bisogno di conoscere la posizione geografica in qualsiasi momento ed eseguire un'operazione specifica di conseguenza. In questo tutorial imparerai come utilizzare il modulo bussola LSM303DLHC GY-511 con Arduino per creare una bussola digitale. Innanzitutto, imparerai a conoscere questo modulo e come funziona, quindi vedrai come interfacciare il modulo LSM303DLHC GY-511 con Arduino.

Cosa imparerai

  • Che modulo bussola è?
  • Modulo bussola e interfaccia Arduino.
  • Crea una bussola digitale con il modulo GY-511 e Arduino.

Passaggio 1: informazioni generali sul modulo bussola

Informazioni generali sul modulo Bussola
Informazioni generali sul modulo Bussola

Il modulo GY-511 include un accelerometro a 3 assi e un magnetometro a 3 assi. Questo sensore può misurare l'accelerazione lineare a fondo scala di ± 2 g / ± 4 g / ± 8 g / ± 16 g e campi magnetici a fondo scala di ± 1,3 / ± 1,9 / ± 2,5 / ± 4,0 / ± 4,7 / ± 5,6 / ± 8,1 Gauss.

Quando questo modulo è posto in un campo magnetico, secondo la legge di Lorentz, una corrente di eccitazione induce nella sua microscopica bobina. Il modulo bussola converte questa corrente nella tensione differenziale per ciascuna direzione delle coordinate. Usando queste tensioni, puoi calcolare il campo magnetico in ogni direzione e ottenere la posizione geografica.

Consiglio

QMC5883L è un altro modulo bussola comunemente usato. Questo modulo, che ha una struttura e un'applicazione simili al modulo LMS303, ha prestazioni leggermente diverse. Quindi, se stai facendo i progetti, fai attenzione al tuo tipo di modulo. Se il tuo modulo è QMC5882L, usa la libreria e i codici appropriati che sono inclusi anche nel tutorial.

Passaggio 2: componenti richiesti

Componenti richiesti
Componenti richiesti

Componenti hardware

Arduino UNO R3 *1

GY-511 Accelerometro a 3 assi + magnetometro *1

Servomotore TowerPro SG-90 *1

1602 Modulo LCD *1

Ponticelli *1

Applicazioni software

Arduino IDE

Passaggio 3: interfacciamento del modulo bussola GY-511 con Arduino

Interfacciamento del modulo bussola GY-511 con Arduino
Interfacciamento del modulo bussola GY-511 con Arduino
Interfacciamento del modulo bussola GY-511 con Arduino
Interfacciamento del modulo bussola GY-511 con Arduino

Il modulo bussola GY-511 ha 8 pin, ma ne occorrono solo 4 per interfacciarsi con Arduino. Questo modulo comunica con Arduino utilizzando il protocollo I2C, quindi collega i pin SDA (uscita I2C) e SCK (ingresso orologio I2C) del modulo ai pin I2C sulla scheda Arduino.

NotaCome puoi vedere, in questo progetto abbiamo utilizzato il modulo GY-511. Ma puoi usare queste istruzioni per configurare altri moduli bussola LMS303.

Passaggio 4: calibrazione del modulo bussola GY-511

Per navigare, è necessario prima calibrare il modulo, il che significa impostare il campo di misura da 0 a 360 gradi. Per fare ciò, collega il modulo ad Arduino come mostrato di seguito e carica il seguente codice sulla tua scheda. Dopo aver eseguito il codice, è possibile visualizzare i valori minimo e massimo del campo di misura per gli assi X, Y e Z nella finestra del monitor seriale. Avrai bisogno di questi numeri nella parte successiva, quindi scrivili.

Passaggio 5: circuito

Circuito
Circuito

Passaggio 6: codice

In questo codice è necessaria la libreria Wire.h per la comunicazione I2C e la libreria LMS303.h per il modulo bussola. Puoi scaricare queste librerie dai seguenti link.

Libreria LMS303.h

Libreria Wire.h

NotaSe stai utilizzando QMC5883, avrai bisogno della seguente libreria:

MechaQMC5883L.h

Qui spieghiamo il codice per LMS303, ma puoi anche scaricare i codici per il modulo QMC.

Vediamo alcune delle nuove funzioni:

compass.enableDefault();

Inizializzazione del modulo

compass.read();

Lettura dei valori di output del modulo bussola

running_min.z = min(running_min.z, compass.m.z); running_max.x = max(running_max.x, compass.m.x);

Determinazione dei valori minimo e massimo del campo di misura confrontando i valori misurati.

Passaggio 7: creare una bussola digitale

Dopo aver calibrato il modulo, costruiremo una bussola collegando un servomotore al modulo. In modo che l'indicatore del servo ci mostri sempre la direzione nord, come la freccia rossa sulla bussola. Per fare ciò, prima il modulo bussola calcola prima la direzione geografica e la invia ad Arduino e poi, applicando un coefficiente appropriato, si calcola l'angolo che il servomotore deve ruotare in modo che il suo indicatore punti verso il nord magnetico. Alla fine, applichiamo quell'angolo al servomotore.

Passaggio 8: circuito

Circuito
Circuito

Passaggio 9: codice

Codice
Codice

Per questa parte hai anche bisogno della libreria Servo.h, che è installata di default sul tuo software Arduino.

Vediamo alcune delle nuove funzioni:

Servo Servo1;

Inizializzazione del modulo

compass.read();

Presentazione dell'oggetto servomotore

Servo1.attach(servoPin); compass.init(); compass.enableDefault();

Inizializzazione del modulo bussola e del servomotore

L'argomento Servo1.attach() è il numero del pin collegato al servomotore.

compass.m_min = (LSM303::vector){-32767, -32767, -32767}; compass.m_max = (LSM303::vector){+32767, +32767, +32767};

Utilizzando queste righe si definiscono i valori minimo e massimo per la misurazione del range ottenuto nella parte precedente.

intestazione float =compass.heading((LSM303::vector){0, 0, 1});

La funzione head() restituisce l'angolo tra l'asse delle coordinate e un asse fisso. È possibile definire l'asse fisso con un vettore nell'argomento della funzione. Ad esempio, qui, definendo il (LSM303:: vector) {0, 0, 1}, l'asse Z viene considerato come un asse costante.

Servo1.write(intestazione);

La funzione Servo1.write() applica il valore letto dal modulo bussola al servomotore.

NotaNotare che il servomotore potrebbe avere un campo magnetico, quindi è meglio posizionare il servomotore a una distanza adeguata dal modulo bussola, in modo che non provochi la deviazione del modulo bussola.

Consigliato: