L'aggiunta di un modulo bussola al tuo microcontrollore Arduino apre una serie di possibilità per i progetti. Ecco come collegarne uno e usarlo.
Nei moderni progetti fai-da-te, è abbastanza comune trovare sensori avanzati come accelerometri e magnetometri interfacciati con microcontrollori. Anche se potresti aver utilizzato questi sensori sul tuo telefono, è difficile immaginare come funzionino questi moduli, ma è sorprendentemente semplice.
Il sensore magnetometro bussola GY-271 consente il rilevamento dell'orientamento per varie applicazioni. Qui esploreremo il processo di interfacciamento del sensore GY-271 con un microcontrollore Arduino, come calibrarlo e osserveremo i problemi che potresti incontrare mentre lo fai.
Cos'è il modulo bussola GY-271?
Il modulo bussola GY-271 è un magnetometro altamente sensibile in grado di misurare i campi magnetici in tre dimensioni. Viene utilizzato per rilevare il campo magnetico terrestre e determinare la direzione o l'orientamento dei dispositivi in applicazioni quali sistemi di navigazione, robotica e droni. Pensalo come una bussola digitale molto precisa. Questo sensore è dotato di un design compatto e robusto che lo rende facile da installare e utilizzare in un'ampia gamma di progetti.
Come funziona il modulo bussola GY-271?
Il modulo bussola GY-271 HCM5883L contiene un sensore magnetometrico a 3 assi, che si basa sulla tecnologia magnetoresistiva anisotropica (AMR). Il sensore misura la forza e la direzione del campo magnetico terrestre rilevando i cambiamenti nella resistenza dei suoi elementi AMR interni.
Quando il sensore è esposto a un campo magnetico, la resistenza degli elementi AMR cambia, generando una tensione proporzionale all'intensità e alla direzione del campo magnetico. Il processore del segnale digitale del sensore converte quindi questa tensione in un segnale digitale, che può essere letto da un microcontrollore. Misurando la tensione su tutti e tre gli assi, il sensore può fornire letture estremamente accurate dell'intensità e della direzione del campo magnetico in tre dimensioni.
Collegamento del GY-271 a un Arduino Uno
Il collegamento di questo modulo ad Arduino è piuttosto semplice. Abbiamo anche coperto altro moduli Arduino facili da usare che può aiutarti a ridimensionare il tuo progetto in futuro. Il modulo GY-271 ha un totale di cinque pin, incluso VCC, GNDe tre pin di segnale (SDA, SCL, E DRDY).
Avrai bisogno dei seguenti componenti:
- Modulo bussola GY-271 HMC5883L
- Arduino Uno (o altro modello)
- Ponticelli (maschio-maschio e maschio-femmina)
- Tagliere (facoltativo)
Per prima cosa, collega il VCC E GND pin del modulo GY-271 al 5V E GND pin di Arduino Uno, rispettivamente.
Quindi, collega il SDA E SCL pin del modulo al A4 E A5 pin analogici di Arduino Uno, rispettivamente.
Installazione delle librerie necessarie
Prima di poter iniziare a lavorare con il modulo bussola GY-271 e Arduino, è necessario installare le librerie necessarie per comunicare con il sensore.
La prima libreria che devi includere nel tuo sketch è la libreria Wire, che viene utilizzata per la comunicazione I2C tra Arduino e il sensore. La libreria Wire è preinstallata con l'IDE di Arduino, quindi non è necessario scaricarla separatamente. Per installare il secondo, il HMC5883L libreria, dovrai seguire questi passaggi:
Apri l'IDE di Arduino e vai a Schizzo > Includi libreria > Gestisci librerie.
Nel Gestore della libreria, cerca HMC5883L nella barra di ricerca.
Seleziona il HMC5883L libreria specificamente da Adafruit. Una volta installata la libreria, puoi includerla nel tuo schizzo Arduino andando a Schizzo > Includi libreria > HMC5883L.
Capire il Codice
Devi scrivere un programma che inizializzi il sensore, ne legga i dati e calcoli la forza e la direzione del campo magnetico terrestre. Il codice completo può essere scaricato dal nostro ufficiale Deposito GitHub.
All'inizio del codice, devi includere le librerie necessarie che hai appena scaricato.
#includere
#includere
#includere
Non dimenticare di assegnare un ID univoco al sensore. Usa questa riga per farlo:
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
Nel codice di configurazione, avvia il monitor seriale e controlla se il sensore risponde. È possibile stampare messaggi sul monitor per aggiornare lo stato del sensore:
vuotoimpostare(vuoto)
{
Seriale.inizio(9600);
Seriale.println("Test del magnetometro HMC5883"); Seriale.println("");
/* Inizializza il sensore */
Se(!mag.inizio())
{
Seriale.println("Ooops, nessun HMC5883 rilevato... Controlla il cablaggio!");
Mentre(1);
}
}
Nel ciclo, per prima cosa, ottieni un nuovo evento del sensore:
sensor_event_t evento;
mag.getEvent(&evento);
Quindi visualizzare le letture del sensore sul monitor seriale. Non dimenticare di impostare il baud rate su 9600.
Seriale.stampa("X: "); Seriale.stampa(evento.magnetico.x); Seriale.stampa(" ");
Seriale.stampa("Y:"); Seriale.stampa(evento.magnetico.y); Seriale.stampa(" ");
Seriale.stampa("Z: "); Seriale.stampa(evento.magnetico.z); Seriale.stampa(" ");Seriale.println("uT");
Tenere il modulo in modo che z punta "in alto" e misura la direzione con X E Y. In questo modo è possibile calcolare la direzione quando il magnetometro è a livello. Questa riga di codice aiuta con questo è:
galleggiante intestazione = atan2(evento.magnetico.y, evento.magnetico.x);
Una volta che hai il tuo intestazione, devi quindi aggiungere il tuo angolo di declinazione, che è l'errore del campo magnetico nella tua posizione.
galleggiante declinazioneAngolo = 0.663;
direzione += declinazioneAngolo;
È possibile trovare comodamente l'angolo di declinazione della propria area locale su Sito Web sulla declinazione magnetica. Se per qualche motivo non riesci a trovare il tuo angolo di declinazione, commenta le due righe del tuo codice.
Commentare le due righe di codice può causare letture errate del sensore. Fai del tuo meglio per calibrare il sensore prima dell'uso.
Infine, stampa l'intestazione sul monitor seriale e aggiungi un ritardo per attendere mezzo secondo prima di rileggere.
Seriale.stampa("Intestazione (gradi): ");
Seriale.println(rubrica Gradi);
ritardo(500);
Da qui, puoi personalizzare il codice in base alle esigenze del tuo progetto e aggiungere funzionalità aggiuntive come la registrazione dei dati.
Se preferisci utilizzare la libreria Adafruit, ti consigliamo di procurartela da Repository GitHub di Adafruit.
Lettura e interpretazione dei dati della bussola
I dati del sensore visualizzati nel monitor seriale mostrano i valori del vettore del campo magnetico misurati dal magnetometro in microtesla (μT) rispettivamente per gli assi X, Y e Z. Questi valori possono essere utilizzati per determinare l'orientamento e l'intensità del campo magnetico.
Anche il valore di rotta visualizzato in gradi è importante e rappresenta la direzione del polo nord magnetico rispetto alla posizione del sensore. Questa lettura può essere utilizzata in progetti in cui è necessario determinare la direzione di un oggetto in movimento, come nei sistemi di robotica, navigazione e geolocalizzazione.
Calibrazione del sensore
Se hai già installato una libreria diversa per il modulo HMC5883L, dovrai disinstallarla o eliminarla. In caso contrario, potresti ricevere errori di compilazione o visualizzare avvisi nel tuo monitor seriale durante la calibrazione. Si consiglia di utilizzare La biblioteca di Jarzebski disponibile su GitHub poiché dispone delle risorse di calibrazione complete necessarie per questa sezione.
Innanzitutto, scarica il file zip dal repository facendo clic su Codice > Scarica CAP.
Successivamente, apri l'IDE di Arduino e fai clic su Schizzo > Includi libreria > Aggiungi libreria.
Seleziona il Arduino-HMC5883 zip che hai appena scaricato e l'IDE di Arduino installerà automaticamente la libreria per te.
Eseguire lo schizzo di calibrazione disponibile nel repository mentre si sposta il sensore su una superficie piana durante il caricamento. I valori ottenuti dal monitor seriale sono i valori di offset del tuo sensore, che puoi utilizzare per correggere le tue letture mentre usi la bussola durante i tuoi progetti.
Problemi che potresti incontrare
Ci sono diversi errori in cui qualcuno potrebbe incorrere nell'interfacciare il modulo bussola con Arduino. Ecco alcuni esempi e le relative soluzioni alternative:
Errori di compilazione: Questi possono verificarsi se le librerie necessarie non sono incluse o se ci sono errori di sintassi nel codice. Per risolvere questo problema, assicurati di aver installato le librerie corrette e controlla il tuo codice per eventuali errori di sintassi. Come abbiamo visto molte volte, potresti aver installato accidentalmente più librerie HCM5883L.
Errore di compilazione: 'Adafruit_HMC5883_Unificato' fa non nominare un tipo
Errori di comunicazione: Se non riesci a comunicare con il modulo bussola, assicurati di averlo collegato ai pin corretti sul tuo Arduino e che il cablaggio sia corretto. Potrebbe anche essere necessario regolare l'indirizzo I2C del modulo nel codice se è diverso da quello predefinito, che è 0x1E.
Errore utilizzando hmc5883l/testDispositivo (linea246) Errore di comunicazione con il sensore HMC5883L. Il valore Leggere da ID_A, ID_B E Registri ID_C Farenon corrispondono ai valori attesi.
Interferenza magnetica: Se le letture della bussola sono instabili o fluttuanti, ciò potrebbe essere dovuto all'interferenza magnetica degli oggetti vicini. Allontanare il modulo da eventuali magneti o altre fonti di interferenza magnetica per ottenere letture più stabili.
Ravviva i tuoi progetti con il modulo bussola GY-271
Essere in grado di utilizzare il modulo bussola GY-271 HCM5883L apre una porta alla creazione di progetti fai-da-te più complessi utilizzando Arduino come rover guidati da GPS e droni fai-da-te. Le possibilità sono infinite, soprattutto quando si aggiungono altri sensori.