Talaan ng mga Nilalaman:

Pag-interfacing ng 3-Axis Gyroscope Sensor BMG160 Sa Raspberry Pi: 5 Hakbang
Pag-interfacing ng 3-Axis Gyroscope Sensor BMG160 Sa Raspberry Pi: 5 Hakbang

Video: Pag-interfacing ng 3-Axis Gyroscope Sensor BMG160 Sa Raspberry Pi: 5 Hakbang

Video: Pag-interfacing ng 3-Axis Gyroscope Sensor BMG160 Sa Raspberry Pi: 5 Hakbang
Video: How To Track Orientation with Arduino | ADXL345 Accelerometer Tutorial 2024, Hulyo
Anonim
Image
Image

Sa panahon ngayon, higit sa kalahati ng kabataan at mga bata ay mahilig sa paglalaro at lahat ng mga mahilig dito, na nabighani ng mga teknikal na aspeto ng paglalaro ay alam ang kahalagahan ng paggalaw ng pakiramdam sa domain na ito. Namangha rin kami sa parehong bagay at dalhin lamang ito sa mga board, naisip naming magtrabaho sa isang gyroscope sensor na maaaring masukat ang angular rate ng anumang bagay. Kaya, ang sensor na kinuha namin upang harapin ang gawain ay ang BMG160. Ang BMG160 ay isang 16-bit, digital, triaxial, sensor ng gyroscope na maaaring sukatin ang angular rate sa tatlong patas na sukat ng silid.

Sa tutorial na ito, ipapakita namin ang pagtatrabaho ng BMG160 sa Raspberry pi, gamit ang Java bilang wika ng programa.

Ang hardware na kakailanganin mo para sa hangaring ito ay ang mga sumusunod:

1. BMG160

2. Raspberry Pi

3. I2C Cable

4. I2C Shield para sa Raspberry Pi

5. Ethernet Cable

Hakbang 1: Pangkalahatang-ideya ng BMG160:

Ang iyong kailangan..!!
Ang iyong kailangan..!!

Una sa lahat nais naming pamilyar ka sa mga pangunahing tampok ng module ng sensor na ang BMG160 at ang protocol ng komunikasyon kung saan ito gumagana.

Ang BMG160 ay karaniwang isang 16-bit, digital, triaxial, sensor ng gyroscope na maaaring sukatin ang mga rate ng angular. Ito ay may kakayahang computing angular rate sa tatlong patas na sukat ng silid, ang x-, y- at z-axis, at pagbibigay ng kaukulang mga signal ng output. Maaari itong makipag-usap sa board ng raspberry pi gamit ang I2C komunikasyon sa komunikasyon. Ang partikular na modyul na ito ay dinisenyo upang matugunan ang mga kinakailangan para sa mga aplikasyon ng consumer pati na rin mga hangarin sa industriya.

Ang protocol ng komunikasyon kung saan gumagana ang sensor ay I2C. Ang I2C ay nangangahulugang inter-integrated circuit. Ito ay isang protocol ng komunikasyon kung saan nagaganap ang komunikasyon sa pamamagitan ng mga linya ng SDA (serial data) at SCL (serial clock). Pinapayagan ang pagkonekta ng maraming mga aparato nang sabay. Ito ay isa sa pinakasimpleng at pinaka mahusay na protocol ng komunikasyon.

Hakbang 2: Ano ang Kailangan Mo.. !

Ang iyong kailangan..!!
Ang iyong kailangan..!!
Ang iyong kailangan..!!
Ang iyong kailangan..!!
Ang iyong kailangan..!!
Ang iyong kailangan..!!

Ang mga materyal na kailangan namin para makamit ang aming layunin ay may kasamang mga sumusunod na bahagi ng hardware:

1. BMG160

2. Raspberry Pi

3. I2C Cable

4. I2C Shield Para sa Raspberry Pi

5. Ethernet Cable

Hakbang 3: Hardware Hookup:

Hardware Hookup
Hardware Hookup
Hardware Hookup
Hardware Hookup

Karaniwang ipinapaliwanag ng seksyon ng hookup ng hardware ang mga koneksyon sa mga kable na kinakailangan sa pagitan ng sensor at ng raspberry pi. Ang pagtiyak sa tamang mga koneksyon ay ang pangunahing pangangailangan habang nagtatrabaho sa anumang system para sa nais na output. Kaya, ang mga kinakailangang koneksyon ay ang mga sumusunod:

Gagana ang BMG160 sa paglipas ng I2C. Narito ang halimbawa ng diagram ng mga kable, na nagpapakita kung paano i-wire ang bawat interface ng sensor.

Sa labas ng kahon, naka-configure ang board para sa isang interface ng I2C, dahil inirerekumenda namin ang paggamit ng hookup na ito kung hindi ka agnostiko. Ang kailangan mo lang ay apat na wires!

Apat na koneksyon lamang ang kinakailangan ng Vcc, Gnd, SCL at SDA pin at ang mga ito ay konektado sa tulong ng I2C cable.

Ang mga koneksyon na ito ay ipinakita sa mga larawan sa itaas.

Hakbang 4: Pagsukat ng 3-Axis Gyroscope Gamit ang Java Code:

Pagsukat ng 3-Axis Gyroscope Gamit ang Java Code
Pagsukat ng 3-Axis Gyroscope Gamit ang Java Code
Pagsukat ng 3-Axis Gyroscope Gamit ang Java Code
Pagsukat ng 3-Axis Gyroscope Gamit ang Java Code

Ang bentahe ng paggamit ng raspberry pi ay, nagbibigay sa iyo ng kakayahang umangkop ng wika ng programa kung saan nais mong i-program ang board upang ma-interface ang sensor kasama nito. Ginagamit ang kalamangan na ito ng board na ito, ipinapakita namin dito ang programa nito sa Java. Ang Java code para sa BMG160 ay maaaring ma-download mula sa aming komunidad na github na Dcube Store Community.

Pati na rin para sa kadalian ng mga gumagamit, ipinapaliwanag din namin ang code dito: Bilang unang hakbang ng pag-coding kailangan mong i-download ang pi4j library sa kaso ng java, dahil sinusuportahan ng library na ito ang mga pagpapaandar na ginamit sa code. Kaya, upang mai-download ang library maaari mong bisitahin ang sumusunod na link:

pi4j.com/install.html

Maaari mong kopyahin ang gumaganang java code para sa sensor na ito mula dito din:

import com.pi4j.io.i2c. I2CBus;

import com.pi4j.io.i2c. I2CDevice;

import com.pi4j.io.i2c. I2CFactory;

i-import ang java.io. IOException;

pampublikong klase BMG160

{

public static void main (String args ) nagtatapon ng Exception

{

// Lumikha ng I2C bus

I2CBus bus = I2CFactory.getInstance (I2CBus. BUS_1);

// Kumuha ng I2C device, ang address ng BMG160 I2C ay 0x68 (104)

I2CDevice aparato = bus.getDevice (0x68);

// Piliin ang rehistro ng saklaw

// I-configure ang saklaw ng buong sukat, 2000 dps

aparato. magsulat (0x0F, (byte) 0x80);

// Piliin ang rehistro ng bandwidth

// Bandwidth 200 Hz

aparato. magsulat (0x10, (byte) 0x04);

Thread.tulog (500);

// Basahin ang 6 bytes ng data

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb

byte data = bagong byte [6];

aparato.read (0x02, data, 0, 6);

// I-convert ang data

int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF));

kung (xGyro> 32767)

{

xGyro - = 65536;

}

int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF));

kung (yGyro> 32767)

{

yGyro - = 65536;

}

int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF));

kung (zGyro> 32767)

{

zGyro - = 65536;

}

// Output data sa screen

System.out.printf ("X-Axis of Rotation:% d% n", xGyro);

System.out.printf ("Y-axis ng Pag-ikot:% d% n", yGyro);

System.out.printf ("Z-axis ng Pag-ikot:% d% n", zGyro);

}

}

Ang silid-aklatan na nagpapadali sa komunikasyon ng i2c sa pagitan ng sensor at board ay pi4j, ang iba't ibang mga package na I2CBus, I2CDevice at I2CFactory ay makakatulong upang maitaguyod ang koneksyon.

import com.pi4j.io.i2c. I2CBus; import com.pi4j.io.i2c. I2CDevice; import com.pi4j.io.i2c. I2CFactory; i-import ang java.io. IOException;

Ginagawa ng bahaging ito ng code na sukatin ng sensor ang angular rate sa pamamagitan ng pagsulat ng kani-kanilang mga utos gamit ang function na magsulat () at pagkatapos ay basahin ang data gamit ang read () function.

// Select range register // Configure full scale range, 2000 dps device.write (0x0F, (byte) 0x80); // Piliin ang rehistro ng bandwidth // Bandwidth 200 Hz aparato. Magsulat (0x10, (byte) 0x04); Thread.tulog (500);

// Basahin ang 6 bytes ng data

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = bagong byte [6]; aparato.read (0x02, data, 0, 6);

Ang natanggap na data mula sa sensor ay na-convert sa naaangkop na format sa pamamagitan ng paggamit ng sumusunod:

int xGyro = ((data [1] & 0xFF) * 256 + (data [0] & 0xFF)); kung (xGyro> 32767) {xGyro - = 65536; } int yGyro = ((data [3] & 0xFF) * 256 + (data [2] & 0xFF)); kung (yGyro> 32767) {yGyro - = 65536; } int zGyro = ((data [5] & 0xFF) * 256 + (data [4] & 0xFF)); kung (zGyro> 32767) {zGyro - = 65536; }

Ang output ay naka-print gamit ang pag-andar ng System.out.println (), sa sumusunod na format.

System.out.println ("X-Axis of Rotation:% d% n", xGyro); System.out.println ("Y-axis ng Pag-ikot:% d% n", yGyro); System.out.println ("Z-axis ng Pag-ikot:% d% n", zGyro);

Ang output ng sensor ay ipinapakita sa larawan sa itaas.

Hakbang 5: Mga Aplikasyon:

Mga Aplikasyon
Mga Aplikasyon

Ang BMG160 ay may iba't ibang bilang ng mga application sa mga aparato tulad ng mga cell phone, human machine interface device. Ang module ng sensor na ito ay dinisenyo upang matugunan ang mga kinakailangan para sa mga aplikasyon ng consumer tulad ng pagpapapanatag ng imahe (DSC at camera-phone), gaming at pagturo ng mga aparato. Ginagamit din ito sa mga system na nangangailangan ng pagkilala sa kilos at mga sistemang ginamit sa nabigasyon sa panloob.

Inirerekumendang: