Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Το MPU-6000 είναι ένας αισθητήρας παρακολούθησης κίνησης 6 αξόνων που έχει ενσωματωμένο επιταχυνσιόμετρο 3 αξόνων και γυροσκόπιο 3 αξόνων. Αυτός ο αισθητήρας είναι ικανός για αποτελεσματική παρακολούθηση της ακριβούς θέσης και θέσης ενός αντικειμένου στο τρισδιάστατο επίπεδο. Μπορεί να χρησιμοποιηθεί σε συστήματα που απαιτούν ανάλυση θέσης με την υψηλότερη ακρίβεια.
Σε αυτό το σεμινάριο απεικονίζεται η διασύνδεση της μονάδας αισθητήρα MPU-6000 με το arduino nano. Για να διαβάσετε τις τιμές της επιτάχυνσης και της γωνίας περιστροφής, χρησιμοποιήσαμε arduino nano με προσαρμογέα I2c. Αυτός ο προσαρμογέας I2C καθιστά τη σύνδεση με τη μονάδα αισθητήρα εύκολη και πιο αξιόπιστη.
Βήμα 1: Απαιτείται υλικό:
Τα υλικά που χρειαζόμαστε για την επίτευξη του στόχου μας περιλαμβάνουν τα ακόλουθα στοιχεία υλικού:
1. MPU-6000
2. Arduino Nano
3. Καλώδιο I2C
4. I2C Shield για arduino nano
Βήμα 2: Σύνδεση υλικού:
Η ενότητα σύνδεσης υλικού εξηγεί βασικά τις συνδέσεις καλωδίωσης που απαιτούνται μεταξύ του αισθητήρα και του arduino nano. Η διασφάλιση των σωστών συνδέσεων είναι η βασική ανάγκη ενώ εργάζεστε σε οποιοδήποτε σύστημα για την επιθυμητή έξοδο. Έτσι, οι απαιτούμενες συνδέσεις είναι οι εξής:
Το MPU-6000 θα λειτουργεί μέσω I2C. Ακολουθεί το παράδειγμα διαγράμματος καλωδίωσης, που δείχνει πώς συνδέεται κάθε διασύνδεση του αισθητήρα.
Εκτός συσκευασίας, ο πίνακας έχει διαμορφωθεί για διεπαφή I2C, ως εκ τούτου συνιστούμε τη χρήση αυτής της σύνδεσης εάν είστε αλλιώς αγνωστικιστής.
Το μόνο που χρειάζεστε είναι τέσσερα καλώδια! Απαιτούνται μόνο τέσσερις συνδέσεις ακροδέκτες Vcc, Gnd, SCL και SDA και αυτές συνδέονται με τη βοήθεια καλωδίου I2C.
Αυτές οι συνδέσεις φαίνονται στις παραπάνω εικόνες.
Βήμα 3: Κώδικας για παρακολούθηση κίνησης:
Ας ξεκινήσουμε με τον κώδικα arduino τώρα.
Κατά τη χρήση της μονάδας αισθητήρα με το arduino, συμπεριλαμβάνουμε τη βιβλιοθήκη Wire.h. Η βιβλιοθήκη "Wire" περιέχει τις λειτουργίες που διευκολύνουν την επικοινωνία i2c μεταξύ του αισθητήρα και της πλακέτας arduino.
Ολόκληρος ο κώδικας arduino δίνεται παρακάτω για τη διευκόλυνση του χρήστη:
#περιλαμβάνω
// Η διεύθυνση MPU-6000 I2C είναι 0x68 (104)
#define Addr 0x68
void setup ()
{
// Αρχικοποίηση επικοινωνίας I2C ως Master
Wire.begin ();
// Αρχικοποίηση σειριακής επικοινωνίας, ρυθμισμένος ρυθμός baud = 9600
Serial.begin (9600);
// Έναρξη μετάδοσης I2C
Wire.beginTransmission (Addr);
// Επιλέξτε μητρώο διαμόρφωσης γυροσκοπίου
Wire.write (0x1B);
// Εύρος πλήρους κλίμακας = 2000 dps
Wire.write (0x18);
// Διακοπή μετάδοσης I2C
Wire.endTransmission ();
// Έναρξη μετάδοσης I2C
Wire.beginTransmission (Addr);
// Επιλέξτε μητρώο διαμόρφωσης επιταχυνσιόμετρου
Wire.write (0x1C);
// Πλήρες εύρος κλίμακας = +/- 16g
Wire.write (0x18);
// Διακοπή μετάδοσης I2C
Wire.endTransmission ();
// Έναρξη μετάδοσης I2C
Wire.beginTransmission (Addr);
// Επιλέξτε μητρώο διαχείρισης ενέργειας
Wire.write (0x6B);
// PLL με αναφορά xGyro
Wire.write (0x01);
// Διακοπή μετάδοσης I2C
Wire.endTransmission ();
καθυστέρηση (300)?
}
κενός βρόχος ()
{
ανυπόγραφα δεδομένα int [6];
// Έναρξη μετάδοσης I2C
Wire.beginTransmission (Addr);
// Επιλέξτε μητρώο δεδομένων
Wire.write (0x3B);
// Διακοπή μετάδοσης I2C
Wire.endTransmission ();
// Ζητήστε 6 byte δεδομένων
Wire.requestFrom (Addr, 6)?
// Διαβάστε 6 byte δεδομένων
εάν (Wire.available () == 6)
{
δεδομένα [0] = Wire.read ();
δεδομένα [1] = Wire.read ();
δεδομένα [2] = Wire.read ();
δεδομένα [3] = Wire.read ();
δεδομένα [4] = Wire.read ();
δεδομένα [5] = Wire.read ();
}
// Μετατρέψτε τα δεδομένα
int xAccl = δεδομένα [0] * 256 + δεδομένα [1];
int yAccl = δεδομένα [2] * 256 + δεδομένα [3];
int zAccl = δεδομένα [4] * 256 + δεδομένα [5];
// Έναρξη μετάδοσης I2C
Wire.beginTransmission (Addr);
// Επιλέξτε μητρώο δεδομένων
Wire.write (0x43);
// Διακοπή μετάδοσης I2C
Wire.endTransmission ();
// Ζητήστε 6 byte δεδομένων
Wire.requestFrom (Addr, 6)?
// Διαβάστε 6 byte δεδομένων
εάν (Wire.available () == 6)
{
δεδομένα [0] = Wire.read ();
δεδομένα [1] = Wire.read ();
δεδομένα [2] = Wire.read ();
δεδομένα [3] = Wire.read ();
δεδομένα [4] = Wire.read ();
δεδομένα [5] = Wire.read ();
}
// Μετατρέψτε τα δεδομένα
int xGyro = δεδομένα [0] * 256 + δεδομένα [1];
int yGyro = δεδομένα [2] * 256 + δεδομένα [3];
int zGyro = δεδομένα [4] * 256 + δεδομένα [5];
// Έξοδος δεδομένων σε σειριακή οθόνη
Serial.print ("Επιτάχυνση στον άξονα Χ:");
Serial.println (xAccl);
Serial.print ("Επιτάχυνση στον άξονα Υ:");
Serial.println (yAccl);
Serial.print ("Επιτάχυνση στον άξονα Z:");
Serial.println (zAccl);
Serial.print ("X-Axis of Rotation:");
Serial.println (xGyro);
Serial.print ("Y-Axis of Rotation:");
Serial.println (yGyro);
Serial.print ("Z-Axis of Rotation:");
Serial.println (zGyro);
καθυστέρηση (500)?
}
Στη βιβλιοθήκη σύρματος, το Wire.write () και το Wire.read () χρησιμοποιούνται για την εγγραφή των εντολών και την ανάγνωση της εξόδου του αισθητήρα.
Serial.print () και Serial.println () χρησιμοποιούνται για την εμφάνιση της εξόδου του αισθητήρα στη σειριακή οθόνη του Arduino IDE.
Η έξοδος του αισθητήρα εμφανίζεται στην παραπάνω εικόνα.
Βήμα 4: Εφαρμογές:
Το MPU-6000 είναι ένας αισθητήρας παρακολούθησης κίνησης, ο οποίος βρίσκει την εφαρμογή του στη διεπαφή κίνησης smartphone και tablet. Στα smartphone, αυτοί οι αισθητήρες μπορούν να χρησιμοποιηθούν σε εφαρμογές όπως εντολές χειρονομίας για εφαρμογές και έλεγχο τηλεφώνου, βελτιωμένο παιχνίδι, επαυξημένη πραγματικότητα, πανοραμική λήψη και προβολή φωτογραφιών, καθώς και πλοήγηση πεζών και οχημάτων. Η τεχνολογία MotionTracking μπορεί να μετατρέψει ακουστικά και tablet σε ισχυρές τρισδιάστατες έξυπνες συσκευές που μπορούν να χρησιμοποιηθούν σε εφαρμογές που κυμαίνονται από την παρακολούθηση της υγείας και της φυσικής κατάστασης έως υπηρεσίες βάσει τοποθεσίας.