Cuprins:

Urmărirea mișcării folosind MPU-6000 și Raspberry Pi: 4 pași
Urmărirea mișcării folosind MPU-6000 și Raspberry Pi: 4 pași
Anonim
Image
Image

MPU-6000 este un senzor de urmărire a mișcării cu 6 axe care are încorporat accelerometru pe 3 axe și giroscop cu 3 axe. Acest senzor este capabil să urmărească eficient poziția și locația exactă a unui obiect în planul tridimensional. Poate fi utilizat în sistemele care necesită analiza poziției cu cea mai mare precizie.

În acest tutorial a fost ilustrată interfața modulului senzor MPU-6000 cu raspberry pi. Pentru a citi valorile accelerației și unghiului de rotație, am folosit raspberry pi cu un adaptor I2c. Acest adaptor I2C face conexiunea la modulul senzor mai ușoară și mai fiabilă.

Pasul 1: Hardware necesar:

Hardware necesar
Hardware necesar
Hardware necesar
Hardware necesar
Hardware necesar
Hardware necesar

Materialele de care avem nevoie pentru îndeplinirea obiectivului nostru includ următoarele componente hardware:

1. MPU-6000

2. Raspberry Pi

3. Cablu I2C

4. I2C Shield pentru zmeură pi

5. Cablu Ethernet

Pasul 2: conectare hardware:

Conectare hardware
Conectare hardware
Conectare hardware
Conectare hardware

Secțiunea de conectare hardware explică practic conexiunile de cablare necesare între senzor și raspberry pi. Asigurarea conexiunilor corecte este necesitatea de bază în timp ce lucrați la orice sistem pentru ieșirea dorită. Deci, conexiunile necesare sunt următoarele:

MPU-6000 va funcționa pe I2C. Iată exemplul schemei de cablare, care demonstrează cum se conectează fiecare interfață a senzorului.

Out-of-the-box, placa este configurată pentru o interfață I2C, ca atare, vă recomandăm să utilizați această conexiune dacă sunteți altfel agnostic.

Nu ai nevoie decât de patru fire! Sunt necesare doar patru conexiuni Vcc, Gnd, SCL și pinii SDA și acestea sunt conectate cu ajutorul cablului I2C.

Aceste conexiuni sunt prezentate în imaginile de mai sus.

Pasul 3: Cod pentru urmărirea mișcării:

Cod pentru urmărirea mișcării
Cod pentru urmărirea mișcării

Avantajul utilizării raspberry pi este că vă oferă flexibilitatea limbajului de programare în care doriți să programați placa pentru a interfața senzorul cu aceasta. Profitând de acest avantaj al acestei plăci, demonstrăm aici programarea sa în python. Python este unul dintre cele mai ușoare limbaje de programare cu cea mai ușoară sintaxă. Codul python pentru MPU-6000 poate fi descărcat din comunitatea noastră GitHub care este Dcube Store

Pe lângă ușurința utilizatorilor, explicăm și codul aici:

Ca primul pas al codificării, trebuie să descărcați biblioteca SMBus în cazul python, deoarece această bibliotecă acceptă funcțiile utilizate în cod. Deci, pentru a descărca biblioteca puteți vizita următorul link:

pypi.python.org/pypi/smbus-cffi/0.5.1

Puteți copia codul de lucru și de aici:

import smbus

timpul de import

# Obțineți autobuzul I2C = smbus. SMBus (1)

# Adresă MPU-6000, 0x68 (104)

# Selectați registrul de configurare a giroscopului, 0x1B (27)

# 0x18 (24) Gama completă a scalei = 2000 dps

bus.write_byte_data (0x68, 0x1B, 0x18)

# Adresă MPU-6000, 0x68 (104)

# Selectați registrul de configurare a accelerometrului, 0x1C (28)

# 0x18 (24) Gama completă a scării = +/- 16g

bus.write_byte_data (0x68, 0x1C, 0x18)

# Adresă MPU-6000, 0x68 (104)

# Selectați registrul de gestionare a energiei1, 0x6B (107)

# 0x01 (01) PLL cu referință xGyro

bus.write_byte_data (0x68, 0x6B, 0x01)

time.sleep (0.8)

# Adresă MPU-6000, 0x68 (104)

# Citiți datele înapoi de la 0x3B (59), 6 octeți

# Accelerometru Axa X MSB, Axa X LSB, Axa Y MSB, Axa Y LSB, Axa Z MSB, Axa Z LSB

data = bus.read_i2c_block_data (0x68, 0x3B, 6)

# Convertiți datele

xAccl = data [0] * 256 + data [1]

dacă xAccl> 32767:

xAccl - = 65536

yAccl = data [2] * 256 + data [3]

dacă yAccl> 32767:

yAccl - = 65536

zAccl = data [4] * 256 + data [5]

dacă zAccl> 32767:

zAccl - = 65536

# Adresă MPU-6000, 0x68 (104)

# Citiți datele înapoi de la 0x43 (67), 6 octeți

# Girometru axa X MSB, axa X LSB, axa Y MSB, axa Y LSB, axa Z MSB, axa Z LSB

data = bus.read_i2c_block_data (0x68, 0x43, 6)

# Convertiți datele

xGyro = data [0] * 256 + data [1]

dacă xGyro> 32767:

xGyro - = 65536

yGyro = data [2] * 256 + data [3]

dacă yGyro> 32767:

yGyro - = 65536

zGyro = data [4] * 256 + data [5]

dacă zGyro> 32767:

zGyro - = 65536

# Ieșire date pe ecran

print "Accelerare în axa X:% d"% xAccl

print "Accelerare în axa Y:% d"% yAccl

print "Accelerare în axa Z:% d"% zAccl

tipăriți „Axa X de rotație:% d”% xGyro

tipăriți "Axa Y de rotație:% d"% yGyro

tipăriți "Axa Z de rotație:% d"% zGyro

Codul este executat folosind următoarea comandă:

$> python MPU-6000.py gt; python MPU-6000.py

Ieșirea senzorului este prezentată în imaginea de mai sus pentru referința utilizatorului.

Pasul 4: Aplicații:

Aplicații
Aplicații

MPU-6000 este un senzor de urmărire a mișcării, care își găsește aplicația în interfața de mișcare a smartphone-urilor și tabletelor. Pe smartphone-uri, acești senzori pot fi utilizați în aplicații, cum ar fi comenzile gestuale pentru aplicații și controlul telefonului, jocuri îmbunătățite, realitate augmentată, captare și vizualizare panoramică a fotografiilor și navigație pietonală și vehicul. Tehnologia MotionTracking poate converti telefoane și tablete în dispozitive inteligente 3D puternice care pot fi utilizate în aplicații care variază de la monitorizarea stării de sănătate și fitness până la servicii bazate pe locație.

Recomandat: