Sommario:
- Passaggio 1: Panoramica BMG160:
- Passaggio 2: cosa ti serve.
- Passaggio 3: collegamento hardware:
- Passaggio 4: misurazione del giroscopio a 3 assi utilizzando il codice Java:
- Passaggio 5: applicazioni:
Video: Interfacciamento del sensore giroscopio a 3 assi BMG160 con Raspberry Pi: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
Nel mondo di oggi, più della metà dei giovani e dei bambini è appassionato di giochi e tutti coloro che ne sono appassionati, affascinati dagli aspetti tecnici del gioco, conoscono l'importanza del rilevamento del movimento in questo campo. Anche noi siamo rimasti stupiti dalla stessa cosa e proprio per portarla sulle tavole abbiamo pensato di lavorare su un sensore giroscopico in grado di misurare la velocità angolare di qualsiasi oggetto. Quindi, il sensore che abbiamo adottato per affrontare il compito è BMG160. BMG160 è un sensore giroscopio digitale triassiale a 16 bit in grado di misurare la velocità angolare in tre dimensioni della stanza perpendicolari.
In questo tutorial, dimostreremo il funzionamento di BMG160 con Raspberry pi, utilizzando Java come linguaggio di programmazione.
L'hardware di cui avrai bisogno per questo scopo è il seguente:
1. BMG160
2. Raspberry Pi
3. Cavo I2C
4. Scudo I2C per Raspberry Pi
5. Cavo Ethernet
Passaggio 1: Panoramica BMG160:
Prima di tutto vorremmo familiarizzare con le caratteristiche di base del modulo sensore che è BMG160 e il protocollo di comunicazione su cui funziona.
BMG160 è fondamentalmente un sensore giroscopio digitale triassiale a 16 bit in grado di misurare le velocità angolari. È in grado di calcolare le velocità angolari in tre dimensioni della stanza perpendicolari, gli assi x, y e z, e fornire i corrispondenti segnali di uscita. Può comunicare con la scheda Raspberry Pi utilizzando il protocollo di comunicazione I2C. Questo particolare modulo è progettato per soddisfare i requisiti per le applicazioni consumer e per scopi industriali.
Il protocollo di comunicazione su cui funziona il sensore è I2C. I2C sta per il circuito inter-integrato. È un protocollo di comunicazione in cui la comunicazione avviene tramite le linee SDA (dati seriali) e SCL (orologio seriale). Consente di collegare più dispositivi contemporaneamente. È uno dei protocolli di comunicazione più semplici ed efficienti.
Passaggio 2: cosa ti serve.
I materiali di cui abbiamo bisogno per raggiungere il nostro obiettivo includono i seguenti componenti hardware:
1. BMG160
2. Raspberry Pi
3. Cavo I2C
4. Scudo I2C per Raspberry Pi
5. Cavo Ethernet
Passaggio 3: collegamento hardware:
La sezione relativa ai collegamenti hardware spiega sostanzialmente le connessioni di cablaggio necessarie tra il sensore e il Raspberry Pi. Garantire connessioni corrette è la necessità di base mentre si lavora su qualsiasi sistema per l'output desiderato. Quindi, i collegamenti necessari sono i seguenti:
Il BMG160 funzionerà su I2C. Ecco lo schema elettrico di esempio, che mostra come cablare ciascuna interfaccia del sensore.
Di default, la scheda è configurata per un'interfaccia I2C, quindi consigliamo di utilizzare questo collegamento se sei altrimenti agnostico. Tutto ciò di cui hai bisogno sono quattro fili!
Sono necessarie solo quattro connessioni pin Vcc, Gnd, SCL e SDA e questi sono collegati con l'aiuto del cavo I2C.
Queste connessioni sono mostrate nelle immagini sopra.
Passaggio 4: misurazione del giroscopio a 3 assi utilizzando il codice Java:
Il vantaggio dell'utilizzo di raspberry pi è che fornisce la flessibilità del linguaggio di programmazione in cui si desidera programmare la scheda per interfacciare il sensore con essa. Sfruttando questo vantaggio di questa scheda, dimostriamo qui la sua programmazione in Java. Il codice Java per BMG160 può essere scaricato dalla nostra comunità github che è Dcube Store Community.
Oltre che per la facilità degli utenti, spieghiamo anche il codice qui: Come primo passo della codifica è necessario scaricare la libreria pi4j in caso di java, perché questa libreria supporta le funzioni utilizzate nel codice. Quindi, per scaricare la libreria puoi visitare il seguente link:
pi4j.com/install.html
Puoi copiare il codice Java funzionante per questo sensore anche da qui:
import com.pi4j.io.i2c. I2CBus;
import com.pi4j.io.i2c. I2CDevice;
import com.pi4j.io.i2c. I2CFactory;
import java.io. IOException;
classe pubblica BMG160
{
public static void main(String args) genera un'eccezione
{
// Crea bus I2C
I2CBus bus = I2CFactory.getInstance(I2CBus. BUS_1);
// Ottieni il dispositivo I2C, l'indirizzo I2C BMG160 è 0x68(104)
I2CDevice device = bus.getDevice(0x68);
// Seleziona il registro dell'intervallo
// Configura l'intervallo di fondo scala, 2000 dps
device.write(0x0F, (byte)0x80);
// Seleziona il registro della larghezza di banda
// Larghezza di banda 200 Hz
device.write(0x10, (byte)0x04);
Thread.sleep(500);
// Legge 6 byte di dati
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
byte dati = nuovo byte[6];
device.read(0x02, data, 0, 6);
// Converti dati
int xGyro = ((data[1] & 0xFF) * 256 + (data[0] & 0xFF));
if(xGyro > 32767)
{
xGyro -= 65536;
}
int yGyro = ((data[3] & 0xFF) * 256 + (data[2] & 0xFF));
if(yGyro > 32767)
{
yGyro -= 65536;
}
int zGyro = ((data[5] & 0xFF) * 256 + (data[4] & 0xFF));
if(zGyro > 32767)
{
zGyro -= 65536;
}
// Invia i dati allo schermo
System.out.printf("Asse X di rotazione: %d %n", xGyro);
System.out.printf("Asse Y di rotazione: %d %n", yGyro);
System.out.printf("Asse Z di rotazione: %d %n", zGyro);
}
}
La libreria che facilita la comunicazione i2c tra il sensore e la scheda è pi4j, i suoi vari pacchetti I2CBus, I2CDevice e I2CFactory aiutano a stabilire la connessione.
import com.pi4j.io.i2c. I2CBus;import com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; import java.io. IOException;
Questa parte del codice fa in modo che il sensore misuri la velocità angolare scrivendo i rispettivi comandi utilizzando la funzione write() e quindi i dati vengono letti utilizzando la funzione read().
// Seleziona registro intervallo // Configura intervallo fondo scala, 2000 dps device.write(0x0F, (byte)0x80); // Seleziona registro larghezza di banda // Larghezza di banda 200 Hz device.write(0x10, (byte)0x04); Thread.sleep(500);
// Legge 6 byte di dati
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = new byte[6]; device.read(0x02, data, 0, 6);
I dati ricevuti dal sensore vengono convertiti nel formato appropriato utilizzando quanto segue:
int xGyro = ((data[1] & 0xFF) * 256 + (data[0] & 0xFF)); if(xGyro > 32767) { xGyro -= 65536; } int yGyro = ((data[3] & 0xFF) * 256 + (data[2] & 0xFF)); if(yGyro > 32767) { yGyro -= 65536; } int zGyro = ((data[5] & 0xFF) * 256 + (data[4] & 0xFF)); if(zGyro > 32767) { zGyro -= 65536; }
L'output viene stampato utilizzando la funzione System.out.println(), nel formato seguente.
System.out.println("Asse X di rotazione: %d %n", xGyro); System.out.println("Asse Y di rotazione: %d %n", yGyro); System.out.println("Asse Z di rotazione: %d %n", zGyro);
L'uscita del sensore è mostrata nell'immagine sopra.
Passaggio 5: applicazioni:
BMG160 ha un numero vario di applicazioni in dispositivi come telefoni cellulari, dispositivi di interfaccia uomo-macchina. Questo modulo sensore è stato progettato per soddisfare i requisiti di applicazioni consumer come stabilizzazione dell'immagine (DSC e fotocamera-telefono), giochi e dispositivi di puntamento. Viene anche impiegato nei sistemi che richiedono il riconoscimento dei gesti e nei sistemi utilizzati nella navigazione indoor.
Consigliato:
Interfacciamento del sensore di impronte digitali capacitivo con Arduino UNO: 7 passaggi
Interfacciamento del sensore di impronte digitali capacitivo con Arduino UNO: Ehi, che succede, ragazzi! Akarsh qui da CETech. Oggi aggiungeremo uno strato protettivo ai nostri progetti. Non preoccuparti, non nomineremo nessuna guardia del corpo per lo stesso. Sarà un simpatico sensore di impronte digitali di bell'aspetto di DFRobot. Quindi
Interfacciamento del sensore di gas con Arduino: 4 passaggi
Interfacciamento del sensore di gas con Arduino: Il sensore di fumo MQ-2 è sensibile al fumo e ai seguenti gas infiammabili: GPL, Butano, Propano, Metano, Alcool, Idrogeno. La resistenza del sensore è diversa a seconda del tipo di gas. Il sensore di fumo ha un potenziometro integrato
Interfacciamento del sensore giroscopio a 3 assi BMG160 con Arduino Nano: 5 passaggi
Interfacciamento del sensore giroscopico a 3 assi BMG160 con Arduino Nano: Nel mondo di oggi, più della metà dei giovani e dei bambini è appassionato di giochi e tutti coloro che ne sono appassionati, affascinati dagli aspetti tecnici del gioco, conoscono l'importanza del rilevamento del movimento in questo dominio. Anche noi siamo rimasti stupiti dalla stessa cosa e
Interfacciamento del sensore giroscopio a 3 assi BMG160 con particelle: 5 passaggi
Interfacciamento del sensore giroscopico a 3 assi BMG160 con particelle: nel mondo di oggi, più della metà dei giovani e dei bambini è appassionato di giochi e tutti coloro che ne sono appassionati, affascinati dagli aspetti tecnici del gioco, conoscono l'importanza del rilevamento del movimento in questo dominio. Anche noi siamo rimasti stupiti dalla stessa cosa e
GY-521 MPU6050 Modulo giroscopio con accelerazione a 3 assi 6DOF Tutorial: 4 passaggi
GY-521 MPU6050 Modulo giroscopio con accelerazione a 3 assi 6DOF Tutorial: DescrizioneQuesto semplice modulo contiene tutto il necessario per interfacciarsi con Arduino e altri controller tramite I2C (usare la libreria Wire Arduino) e fornire informazioni di rilevamento del movimento per 3 assi - X, Y e Z .SpecificheGamma accelerometro: ±2, ±