Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-23 15:03
W dzisiejszym świecie ponad połowa młodzieży i dzieci lubi gry, a wszyscy ci, którzy je lubią, zafascynowani technicznymi aspektami gier, wiedzą, jak ważne jest wykrywanie ruchu w tej dziedzinie. Byliśmy również zdumieni tym samym i żeby wprowadzić to na tablice, pomyśleliśmy o pracy nad czujnikiem żyroskopowym, który może mierzyć prędkość kątową dowolnego obiektu. Tak więc sensor, którym się podjęliśmy, to BMG160. BMG160 to 16-bitowy, cyfrowy, trójosiowy czujnik żyroskopowy, który może mierzyć prędkość kątową w trzech prostopadłych wymiarach pomieszczenia.
W tym samouczku zademonstrujemy działanie BMG160 z Raspberry pi, używając Javy jako języka programowania.
Sprzęt, którego będziesz potrzebować do tego celu, to:
1. BMG160
2. Raspberry Pi
3. Kabel I2C
4. Osłona I2C dla Raspberry Pi
5. Kabel Ethernet
Krok 1: Przegląd BMG160:
Przede wszystkim chcielibyśmy zapoznać Państwa z podstawowymi cechami modułu czujnika jakim jest BMG160 oraz protokołem komunikacyjnym na którym pracuje.
BMG160 to w zasadzie 16-bitowy, cyfrowy, trójosiowy czujnik żyroskopowy, który może mierzyć prędkości kątowe. Jest w stanie obliczać prędkości kątowe w trzech prostopadłych wymiarach pomieszczenia, osi x, y i z oraz dostarczać odpowiednie sygnały wyjściowe. Może komunikować się z płytą raspberry pi za pomocą protokołu komunikacyjnego I2C. Ten konkretny moduł został zaprojektowany w celu spełnienia wymagań aplikacji konsumenckich, jak również zastosowań przemysłowych.
Protokół komunikacyjny na którym pracuje czujnik to I2C. I2C oznacza układ scalony. Jest to protokół komunikacyjny, w którym komunikacja odbywa się za pośrednictwem linii SDA (dane szeregowe) i SCL (zegar szeregowy). Umożliwia podłączenie wielu urządzeń jednocześnie. Jest to jeden z najprostszych i najbardziej wydajnych protokołów komunikacyjnych.
Krok 2: Czego potrzebujesz…
Materiały, których potrzebujemy do realizacji naszego celu, obejmują następujące komponenty sprzętowe:
1. BMG160
2. Raspberry Pi
3. Kabel I2C
4. Osłona I2C dla Raspberry Pi
5. Kabel Ethernet
Krok 3: Podłączenie sprzętu:
Sekcja dotycząca podłączania sprzętu zasadniczo wyjaśnia połączenia okablowania wymagane między czujnikiem a raspberry pi. Zapewnienie prawidłowych połączeń jest podstawową koniecznością podczas pracy na dowolnym systemie o pożądanej mocy. Tak więc wymagane połączenia są następujące:
BMG160 będzie pracował przez I2C. Oto przykładowy schemat okablowania, pokazujący, jak okablować każdy interfejs czujnika.
Po wyjęciu z pudełka, płyta jest skonfigurowana do interfejsu I2C, dlatego zalecamy korzystanie z tego podłączenia, jeśli jesteś agnostykiem. Wszystko czego potrzebujesz to cztery przewody!
Wymagane są tylko cztery połączenia Vcc, Gnd, SCL i SDA, które są połączone za pomocą kabla I2C.
Połączenia te są pokazane na powyższych zdjęciach.
Krok 4: 3-osiowy pomiar żyroskopu za pomocą kodu Java:
Zaletą korzystania z raspberry pi jest to, że zapewnia elastyczność języka programowania, w którym chcesz zaprogramować płytkę w celu połączenia z nią czujnika. Wykorzystując tę zaletę tej płyty, demonstrujemy tutaj jej programowanie w Javie. Kod Java dla BMG160 można pobrać z naszej społeczności github, czyli Dcube Store Community.
Oprócz ułatwienia użytkownikom wyjaśniamy również kod tutaj: Jako pierwszy krok kodowania musisz pobrać bibliotekę pi4j w przypadku java, ponieważ ta biblioteka obsługuje funkcje używane w kodzie. Aby pobrać bibliotekę, możesz odwiedzić poniższy link:
pi4j.com/install.html
Możesz skopiować działający kod java dla tego czujnika również stąd:
importuj com.pi4j.io.i2c. I2CBus;
importuj com.pi4j.io.i2c. I2CDurządzenie;
importuj com.pi4j.io.i2c. I2CFabryka;
import java.io. IOException;
klasa publiczna BMG160
{
public static void main(String args) wyrzuca Wyjątek
{
// Utwórz magistralę I2C
Magistrala I2CBus = I2CFactory.getInstance(I2CBus. BUS_1);
// Pobierz urządzenie I2C, adres BMG160 I2C to 0x68(104)
Urządzenie I2CDevice = bus.getDevice(0x68);
// Wybierz rejestr zakresu
// Skonfiguruj pełny zakres skali, 2000 dps
urządzenie.write(0x0F, (bajt)0x80);
// Wybierz rejestr przepustowości
// Pasmo 200 Hz
urządzenie.write(0x10, (bajt)0x04);
Wątek.sen(500);
// Odczytaj 6 bajtów danych
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb
bajt dane = nowy bajt[6];
urządzenie.odczyt(0x02, dane, 0, 6);
// Konwertuj dane
int xGyro = ((dane[1] i 0xFF) * 256 + (dane[0] i 0xFF));
if(xGyro > 32767)
{
xŻyroskop -= 65536;
}
int yro = ((dane[3] i 0xFF) * 256 + (dane[2] i 0xFF));
if(yGyro > 32767)
{
yGyro -= 65536;
}
int zGyro = ((dane[5] i 0xFF) * 256 + (dane[4] i 0xFF));
if(zGyro > 32767)
{
zGyro -= 65536;
}
// Prześlij dane na ekran
System.out.printf("Oś obrotu X: %d %n", xGyro);
System.out.printf("Oś obrotu Y: %d %n", yGyro);
System.out.printf("Oś obrotu Z: %d %n", zGyro);
}
}
Biblioteka, która ułatwia komunikację i2c między czujnikiem a płytą to pi4j, jej różne pakiety I2CBus, I2CDevice i I2CFactory pomagają w nawiązaniu połączenia.
importuj com.pi4j.io.i2c. I2CBus; importuj com.pi4j.io.i2c. I2CDurządzenie; importuj com.pi4j.io.i2c. I2CFabryka; import java.io. IOException;
Ta część kodu powoduje, że czujnik mierzy prędkość kątową, zapisując odpowiednie polecenia za pomocą funkcji write(), a następnie dane są odczytywane za pomocą funkcji read().
// Wybierz rejestr zakresu // Skonfiguruj pełny zakres skali, 2000 dps device.write(0x0F, (byte)0x80); // Wybierz rejestr przepustowości // Przepustowość 200 Hz device.write(0x10, (byte)0x04); Wątek.sen(500);
// Odczytaj 6 bajtów danych
// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb byte data = new byte[6]; urządzenie.odczyt(0x02, dane, 0, 6);
Dane otrzymane z czujnika są konwertowane do odpowiedniego formatu przy użyciu następujących metod:
int xGyro = ((dane[1] i 0xFF) * 256 + (dane[0] i 0xFF)); if(xGyro > 32767) { xGyro -= 65536; } int yGyro = ((dane[3] i 0xFF) * 256 + (dane[2] i 0xFF)); if(yGyro > 32767) { yGyro -= 65536; } int zGyro = ((dane[5] i 0xFF) * 256 + (dane[4] i 0xFF)); if(zGyro > 32767) { zGyro -= 65536; }
Dane wyjściowe są drukowane przy użyciu funkcji System.out.println() w następującym formacie.
System.out.println("Oś obrotu X: %d %n", xGyro); System.out.println("Oś obrotu Y: %d %n", yGyro); System.out.println("Oś obrotu Z: %d %n", zGyro);
Wyjście czujnika pokazano na powyższym obrazku.
Krok 5: Aplikacje:
BMG160 ma zróżnicowaną liczbę zastosowań w urządzeniach takich jak telefony komórkowe, urządzenia interfejsu człowiek-maszyna. Ten moduł czujnika został zaprojektowany, aby spełnić wymagania zastosowań konsumenckich, takich jak stabilizacja obrazu (DSC i aparat-telefon), urządzenia do gier i urządzenia wskazujące. Stosowany jest również w systemach wymagających rozpoznawania gestów oraz systemach stosowanych w nawigacji wewnętrznej.
Zalecana:
Interfejs czujnika temperatury DS18B20 z Arduino i ESP8266: 8 kroków
Łączenie czujnika temperatury DS18B20 z Arduino i ESP8266: Hej, co słychać, chłopaki! Akarsh tutaj z CETech.Dzisiaj zamierzamy dodać nowy czujnik do naszego arsenału znany jako czujnik temperatury DS18B20. Jest to czujnik temperatury podobny do DHT11, ale ma inny zestaw zastosowań. Porównamy to z
Pierwsze kroki z interfejsem czujnika I2C? - Interfejs MMA8451 za pomocą ESP32: 8 kroków
Pierwsze kroki z interfejsem czujnika I2C? - Interfejs MMA8451 za pomocą ESP32: W tym samouczku dowiesz się wszystkiego o tym, jak uruchomić, podłączyć i uzyskać urządzenie I2C (akcelerometr) współpracujące z kontrolerem (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Interfejs czujnika ADXL335 w Raspberry Pi 4B w 4 krokach: 4 kroki
Interfejs czujnika ADXL335 na Raspberry Pi 4B w 4 krokach: W tej instrukcji będziemy łączyć czujnik ADXL335 (akcelerometr) na Raspberry Pi 4 z Shunya O/S
Jak korzystać z czujnika żyroskopowego MPU6050 z „skiiiD”: 9 kroków
Jak korzystać z czujnika żyroskopowego MPU6050 z „skiiiD”: Samouczek korzystania z modułu czujnika żyroskopowego MPU6050 z „skiiiD” Przed rozpoczęciem dostępny jest podstawowy samouczek dotyczący korzystania ze skiiiDhttps://www.instructables.com/id/Getting-Started -W
Interfejs czujnika kropli deszczu do NodeMcu- dla początkujących: 5 kroków
Interfejs czujnika kropli deszczu do NodeMcu| dla początkujących: w tym samouczku wiesz, jak połączyć czujnik deszczu z NodeMcu