Spisu treści:

Śledzenie ruchu za pomocą MPU-6000 i Particle Photon: 4 kroki
Śledzenie ruchu za pomocą MPU-6000 i Particle Photon: 4 kroki

Wideo: Śledzenie ruchu za pomocą MPU-6000 i Particle Photon: 4 kroki

Wideo: Śledzenie ruchu za pomocą MPU-6000 i Particle Photon: 4 kroki
Wideo: Jak skomunikować urządzenie modbus RTU ze SCADA? 2024, Lipiec
Anonim
Image
Image

MPU-6000 to 6-osiowy czujnik śledzenia ruchu, który ma wbudowany 3-osiowy akcelerometr i 3-osiowy żyroskop. Ten czujnik jest w stanie skutecznie śledzić dokładne położenie i położenie obiektu w płaszczyźnie trójwymiarowej. Może być stosowany w systemach wymagających analizy położenia z najwyższą precyzją.

W tym samouczku zilustrowano interfejs modułu czujnika MPU-6000 z fotonem cząstek. Aby odczytać wartości przyspieszenia i kąta obrotu, użyliśmy cząstki z adapterem I2c. Ten adapter I2C sprawia, że połączenie z modułem czujnika jest łatwe i bardziej niezawodne.

Krok 1: Wymagany sprzęt:

Wymagany sprzęt
Wymagany sprzęt
Wymagany sprzęt
Wymagany sprzęt
Wymagany sprzęt
Wymagany sprzęt

Materiały wymagane do wykonania naszego zadania to wymienione poniżej komponenty sprzętowe:

1. MPU-6000

2. Cząsteczkowy foton

3. Kabel I2C

4. Tarcza I2C dla fotonu cząsteczkowego

Krok 2: Podłączenie sprzętu:

Podłączenie sprzętu
Podłączenie sprzętu
Podłączenie sprzętu
Podłączenie sprzętu

Sekcja dotycząca podłączania sprzętu zasadniczo wyjaśnia połączenia przewodów wymagane między czujnikiem a fotonem cząstek. 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:

MPU-6000 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 3: Kod do śledzenia ruchu:

Kod do śledzenia ruchu
Kod do śledzenia ruchu

Zacznijmy teraz od kodu cząstek.

Korzystając z modułu czujnika z arduino, dołączamy bibliotekę application.h oraz spark_wiring_i2c.h. Biblioteka "application.h" oraz spark_wiring_i2c.h zawiera funkcje ułatwiające komunikację i2c pomiędzy czujnikiem a cząsteczką.

Cały kod cząstek podano poniżej dla wygody użytkownika:

#include#include // MPU-6000 I2C adres to 0x68(104) #define Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup() { // Ustaw zmienną Particle.variable("i2cdevice", "MPU-6000"); Cząstka.zmienna("xAccl", xAccl); Particle.variable("yAccl", yAccl); Cząstka.zmienna("zAccl", zAccl); Particle.variable("xGyro", xGyro); Particle.variable("yGyro", yGyro); Particle.variable("zGyro", zGyro); // Zainicjuj komunikację I2C jako Master Wire.begin(); // Zainicjuj komunikację szeregową, ustaw szybkość transmisji = 9600 Serial.begin(9600); // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybór rejestru konfiguracji żyroskopu Wire.write(0x1B); // Pełny zakres skali = 2000 dps Wire.write(0x18); // Zatrzymaj transmisję I2C Wire.endTransmission(); // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybierz rejestr konfiguracji akcelerometru Wire.write(0x1C); // Pełny zakres skali = +/-16g Wire.write(0x18); // Zatrzymaj transmisję I2C Wire.endTransmission(); // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybierz rejestr zarządzania energią Wire.write(0x6B); // PLL z referencją xGyro Wire.write(0x01); // Zatrzymaj transmisję I2C Wire.endTransmission(); opóźnienie(300); } void loop() { unsigned int data[6]; // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybierz rejestr danych Wire.write(0x3B); // Zatrzymaj transmisję I2C Wire.endTransmission(); // Żądanie 6 bajtów danych Wire.requestFrom(Addr, 6); // Odczytaj 6 bajtów danych if (Wire.available() == 6) { data[0] = Wire.read(); dane[1] = Drut.odczyt(); dane[2] = Przewód.odczyt(); dane[3] = Przewód.odczyt(); dane[4] = Przewód.odczyt(); dane[5] = Wire.read(); } opóźnienie(800); // Konwertuj dane xAccl = ((data[1] * 256) + data[0]); jeśli (xAccl > 32767) { xAccl -= 65536; } yAccl = ((dane[3] * 256) + dane[2]); jeśli (yAccl > 32767) {yAccl -= 65536; } zAccl = ((dane[5] * 256) + dane[4]); jeśli (zAccl > 32767) { zAccl -= 65536; } opóźnienie(800); // Rozpocznij transmisję I2C Wire.beginTransmission(Addr); // Wybierz rejestr danych Wire.write(0x43); // Zatrzymaj transmisję I2C Wire.endTransmission(); // Żądaj 6 bajtów danych Wire.requestFrom(Addr, 6); // Odczytaj 6 bajtów danych if (Wire.available() == 6) { data[0] = Wire.read(); dane[1] = Drut.odczyt(); dane[2] = Przewód.odczyt(); dane[3] = Przewód.odczyt(); dane[4] = Przewód.odczyt(); dane[5] = Wire.read(); } // Konwersja danych xGyro = ((data[1] * 256) + data[0]); jeśli (xGyro > 32767) { xGyro -= 65536; } yGyro = ((dane[3] * 256) + dane[2]); jeśli (yGyro > 32767) { yGyro -= 65536; } zGyro = ((dane[5] * 256) + dane[4]); jeśli (zGyro > 32767) { zGyro -= 65536; } // Dane wyjściowe do pulpitu nawigacyjnego Particle.publish("Przyspieszenie w osi X: ", String(xAccl)); opóźnienie (1000); Particle.publish("Przyspieszenie w osi Y: ", String(yAccl)); opóźnienie (1000); Particle.publish("Przyspieszenie w osi Z: ", String(zAccl)); opóźnienie (1000); Particle.publish("Oś obrotu X: ", String(xGyro)); opóźnienie (1000); Particle.publish("Oś obrotu Y: ", Ciąg(yGyro)); opóźnienie (1000); Particle.publish("Oś obrotu Z: ", String(zGyro)); opóźnienie (1000); }

Funkcja Particle.variable() tworzy zmienne do przechowywania danych wyjściowych czujnika, a funkcja Particle.publish() wyświetla dane wyjściowe na pulpicie nawigacyjnym witryny.

Wyjście czujnika pokazano na powyższym obrazku w celach informacyjnych.

Krok 4: Aplikacje:

Aplikacje
Aplikacje

MPU-6000 to czujnik śledzenia ruchu, który znajduje zastosowanie w interfejsie ruchu smartfonów i tabletów. W smartfonach czujniki te mogą być wykorzystywane w takich aplikacjach, jak polecenia gestami do aplikacji i sterowania telefonem, ulepszone gry, rozszerzona rzeczywistość, przechwytywanie i przeglądanie zdjęć panoramicznych oraz nawigacja piesza i samochodowa. Technologia MotionTracking może przekształcić telefony i tablety w potężne, inteligentne urządzenia 3D, które mogą być wykorzystywane w różnych aplikacjach, od monitorowania zdrowia i kondycji po usługi oparte na lokalizacji.

Zalecana: