Taula de continguts:
- Pas 1: Visió general de BMG160:
- Pas 2: el que necessiteu..
- Pas 3: connexió de maquinari:
- Pas 4: mesura del giroscopi de 3 eixos mitjançant codi Java:
- Pas 5: aplicacions:
Vídeo: Interfície del sensor de giroscopi de 3 eixos BMG160 amb Raspberry Pi: 5 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:13
Al món actual, més de la meitat de la joventut i dels nens els agrada el joc i tots aquells que ho fan, fascinats pels aspectes tècnics del joc, saben la importància de la detecció de moviment en aquest domini. També ens va sorprendre el mateix i, només per portar-lo a les plaques, vam pensar a treballar en un sensor de giroscopi que pogués mesurar la velocitat angular de qualsevol objecte. Per tant, el sensor que hem pres per fer front a la tasca és BMG160. BMG160 és un sensor de giroscopi digital de 16 bits, triaxial, que pot mesurar la velocitat angular en tres dimensions de l’habitació perpendiculars.
En aquest tutorial, demostrarem el funcionament de BMG160 amb Raspberry pi, utilitzant Java com a llenguatge de programació.
El maquinari que necessiteu per a aquest propòsit és el següent:
1. BMG160
2. Raspberry Pi
3. Cable I2C
4. Escut I2C per a Raspberry Pi
5. Cable Ethernet
Pas 1: Visió general de BMG160:
En primer lloc, ens agradaria familiaritzar-vos amb les funcions bàsiques del mòdul de sensor que és BMG160 i el protocol de comunicació amb el qual funciona.
BMG160 és bàsicament un sensor de giroscopi digital de 16 bits, triaxial, que pot mesurar la velocitat angular. És capaç de calcular velocitats angulars en tres dimensions perpendiculars de l'habitació, l'eix x, y i z, i proporcionar els senyals de sortida corresponents. Pot comunicar-se amb la placa raspberry pi mitjançant el protocol de comunicació I2C. Aquest mòdul en particular està dissenyat per satisfer els requisits tant per a aplicacions de consum com per a finalitats industrials.
El protocol de comunicació en què funciona el sensor és I2C. I2C significa el circuit inter-integrat. És un protocol de comunicació en què la comunicació té lloc a través de línies SDA (dades de sèrie) i SCL (rellotge de sèrie). Permet connectar diversos dispositius alhora. És un dels protocols de comunicació més senzills i eficients.
Pas 2: el que necessiteu..
Els materials que necessitem per assolir el nostre objectiu inclouen els components de maquinari següents:
1. BMG160
2. Raspberry Pi
3. Cable I2C
4. Escut I2C per a Raspberry Pi
5. Cable Ethernet
Pas 3: connexió de maquinari:
La secció de connexió de maquinari explica bàsicament les connexions de cablejat necessàries entre el sensor i el raspberry pi. Garantir connexions correctes és la necessitat bàsica mentre es treballa en qualsevol sistema per a la sortida desitjada. Per tant, les connexions necessàries són les següents:
El BMG160 funcionarà sobre I2C. Aquí teniu un exemple de diagrama de cablejat, que demostra com connectar cada interfície del sensor.
Fora de la caixa, el tauler està configurat per a una interfície I2C, per tant, us recomanem que utilitzeu aquesta connexió si no sou agnòstic. Tot el que necessiteu són quatre cables.
Només es necessiten quatre connexions pins Vcc, Gnd, SCL i SDA i es connecten amb l'ajut del cable I2C.
Aquestes connexions es mostren a les imatges anteriors.
Pas 4: mesura del giroscopi de 3 eixos mitjançant codi Java:
L’avantatge d’utilitzar el raspberry pi és que us proporciona la flexibilitat del llenguatge de programació en què voleu programar la placa per tal d’interfocar-hi el sensor. Aprofitant aquest avantatge d’aquest tauler, demostrem aquí la seva programació a Java. El codi Java de BMG160 es pot descarregar de la nostra comunitat github, que és Dcube Store Community.
A més de la facilitat dels usuaris, aquí també expliquem el codi: com a primer pas de codificació, heu de descarregar la biblioteca pi4j en cas de java, perquè aquesta biblioteca admet les funcions utilitzades al codi. Per tant, per descarregar la biblioteca podeu visitar el següent enllaç:
pi4j.com/install.html
Podeu copiar el codi Java de treball d’aquest sensor també des d’aquí:
import com.pi4j.io.i2c. I2CBus;
import com.pi4j.io.i2c. I2CDevice;
import com.pi4j.io.i2c. I2CFactory;
importació java.io. IOException;
classe pública BMG160
{
public static void main (String args ) llança Excepció
{
// Crea un bus I2C
Bus I2CBus = I2CFactory.getInstance (I2CBus. BUS_1);
// Obteniu un dispositiu I2C, l'adreça I2C de BMG160 és 0x68 (104)
I2CDevice device = bus.getDevice (0x68);
// Seleccioneu registre de rang
// Configureu el rang a escala completa, 2000 dps
device.write (0x0F, (byte) 0x80);
// Seleccioneu el registre d'ample de banda
// Amplada de banda 200 Hz
device.write (0x10, (byte) 0x04);
Thread.sleep (500);
// Llegiu 6 bytes de dades
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
byte dades = byte nou [6];
device.read (0x02, dades, 0, 6);
// Converteix dades
int xGyro = ((dades [1] i 0xFF) * 256 + (dades [0] i 0xFF));
if (xGyro> 32767)
{
xGyro - = 65536;
}
int yGyro = ((dades [3] i 0xFF) * 256 + (dades [2] i 0xFF));
if (yGyro> 32767)
{
yGyro - = 65536;
}
int zGyro = ((dades [5] i 0xFF) * 256 + (dades [4] i 0xFF));
if (zGyro> 32767)
{
zGyro - = 65536;
}
// Sortiu les dades a la pantalla
System.out.printf ("Eix X de rotació:% d% n", xGyro);
System.out.printf ("eix Y de rotació:% d% n", yGyro);
System.out.printf ("eix Z de rotació:% d% n", zGyro);
}
}
La biblioteca que facilita la comunicació i2c entre el sensor i la placa és pi4j, els seus diversos paquets I2CBus, I2CDevice i I2CFactory ajuden a establir la connexió.
importar com.pi4j.io.i2c. I2CBus; importar com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; importació java.io. IOException;
Aquesta part del codi fa que el sensor mesuri la velocitat angular escrivint les ordres respectives mitjançant la funció write () i després es llegeixen les dades mitjançant la funció read ().
// Selecciona el registre d’interval // Configura l’interval d’escala completa, 2000 dps device.write (0x0F, (byte) 0x80); // Seleccioneu registre d'amplada de banda // Amplada de banda 200 Hz device.write (0x10, (byte) 0x04); Thread.sleep (500);
// Llegiu 6 bytes de dades
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = new byte [6]; device.read (0x02, dades, 0, 6);
Les dades rebudes del sensor es converteixen al format adequat mitjançant el següent:
int xGyro = ((dades [1] i 0xFF) * 256 + (dades [0] i 0xFF)); if (xGyro> 32767) {xGyro - = 65536; } int yGyro = ((dades [3] i 0xFF) * 256 + (dades [2] i 0xFF)); if (yGyro> 32767) {yGyro - = 65536; } int zGyro = ((dades [5] i 0xFF) * 256 + (dades [4] i 0xFF)); if (zGyro> 32767) {zGyro - = 65536; }
La sortida s’imprimeix mitjançant la funció System.out.println (), en el format següent.
System.out.println ("Eix X de rotació:% d% n", xGyro); System.out.println ("eix Y de rotació:% d% n", yGyro); System.out.println ("eix Z de rotació:% d% n", zGyro);
La sortida del sensor es mostra a la imatge superior.
Pas 5: aplicacions:
BMG160 té un nombre variat d’aplicacions en dispositius com ara telèfons mòbils i dispositius d’interfície humana-màquina. Aquest mòdul de sensor ha estat dissenyat per satisfer els requisits per a aplicacions de consum, com ara estabilització d’imatge (DSC i telèfon amb càmera), dispositius de jocs i puntes. També s’utilitza en sistemes que requereixen reconeixement de gestos i en els sistemes utilitzats en la navegació interior.
Recomanat:
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32: 8 passos
Introducció a la interfície del sensor I2C ?? - Interfície del MMA8451 mitjançant ESP32s: en aquest tutorial, aprendreu tot sobre com iniciar, connectar-se i aconseguir que el dispositiu I2C (acceleròmetre) funcioni amb el controlador (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Interfície del sensor de giroscopi de 3 eixos BMG160 amb Arduino Nano: 5 passos
Interfície del sensor de giroscopi de 3 eixos BMG160 amb Arduino Nano: al món actual, més de la meitat de la joventut i dels nens els agrada el joc i tots aquells que els hi agraden, fascinats pels aspectes tècnics del joc, saben la importància de la detecció de moviment. en aquest domini. També ens va sorprendre el mateix i
Diversió amb giroscopi amb anell de Neopixel: 4 passos (amb imatges)
Divertiment amb giroscopi amb anell de Neopixel: en aquest tutorial utilitzarem el giroscopi MPU6050, un anell de neopixel i un arduino per construir un dispositiu que il·lumini els leds que corresponguin a l’angle d’inclinació. Aquest és un projecte senzill i divertit. reunir-se en una pissarra
Interfície del sensor de giroscopi de 3 eixos BMG160 amb partícules: 5 passos
Interfície del sensor de giroscopi de 3 eixos BMG160 amb partícules: al món actual, més de la meitat de la joventut i dels nens els agrada el joc i tots aquells que els hi agraden, fascinats pels aspectes tècnics del joc, saben la importància de la detecció de moviment a aquest domini. També ens va sorprendre el mateix i
GY-521 MPU6050 Tutorial del mòdul de giroscopi d’acceleració de 3 eixos: 4 passos
GY-521 MPU6050 Tutorial del mòdul de giroscopi d’acceleració de 3 eixos: Descripció Aquest senzill mòdul conté tot el necessari per connectar-se a Arduino i altres controladors mitjançant I2C (utilitzeu la biblioteca Wire Arduino) i proporcionar informació de detecció de moviment per a 3 eixos: X, Y i Z Especificacions: rangs d’acceleròmetres: ± 2, ±