Πίνακας περιεχομένων:

Παρακολούθηση κίνησης χρησιμοποιώντας MPU-6000 και Parton Photon: 4 βήματα
Παρακολούθηση κίνησης χρησιμοποιώντας MPU-6000 και Parton Photon: 4 βήματα

Βίντεο: Παρακολούθηση κίνησης χρησιμοποιώντας MPU-6000 και Parton Photon: 4 βήματα

Βίντεο: Παρακολούθηση κίνησης χρησιμοποιώντας MPU-6000 και Parton Photon: 4 βήματα
Βίντεο: John Moffat: Modifying Gravity & The Dark Matter Myth 2024, Νοέμβριος
Anonim
Image
Image

Το MPU-6000 είναι ένας αισθητήρας παρακολούθησης κίνησης 6 αξόνων που έχει ενσωματωμένο επιταχυνσιόμετρο 3 αξόνων και γυροσκόπιο 3 αξόνων. Αυτός ο αισθητήρας είναι ικανός για αποτελεσματική παρακολούθηση της ακριβούς θέσης και θέσης ενός αντικειμένου στο τρισδιάστατο επίπεδο. Μπορεί να χρησιμοποιηθεί σε συστήματα που απαιτούν ανάλυση θέσης με την υψηλότερη ακρίβεια.

Σε αυτό το σεμινάριο απεικονίζεται η διασύνδεση της μονάδας αισθητήρα MPU-6000 με σωματίδιο φωτονίου. Για να διαβάσετε τις τιμές επιτάχυνσης και γωνίας περιστροφής, χρησιμοποιήσαμε σωματίδιο με προσαρμογέα I2c. Αυτός ο προσαρμογέας I2C καθιστά τη σύνδεση με τη μονάδα αισθητήρα εύκολη και πιο αξιόπιστη.

Βήμα 1: Απαιτείται υλικό:

Απαιτούμενο υλικό
Απαιτούμενο υλικό
Απαιτούμενο υλικό
Απαιτούμενο υλικό
Απαιτούμενο υλικό
Απαιτούμενο υλικό

Τα υλικά που απαιτούνται για την εκτέλεση του έργου μας περιλαμβάνουν τα παρακάτω στοιχεία υλικού:

1. MPU-6000

2. Φωτόνιο σωματιδίων

3. Καλώδιο I2C

4. Ασπίδα I2C για σωματίδιο φωτονίου

Βήμα 2: Σύνδεση υλικού:

Σύνδεση υλικού
Σύνδεση υλικού
Σύνδεση υλικού
Σύνδεση υλικού

Η ενότητα σύνδεσης υλικού εξηγεί βασικά τις συνδέσεις καλωδίωσης που απαιτούνται μεταξύ του αισθητήρα και του φωτονίου σωματιδίων. Η διασφάλιση των σωστών συνδέσεων είναι η βασική ανάγκη ενώ εργάζεστε σε οποιοδήποτε σύστημα για την επιθυμητή έξοδο. Έτσι, οι απαιτούμενες συνδέσεις είναι οι εξής:

Το MPU-6000 θα λειτουργεί μέσω I2C. Ακολουθεί το παράδειγμα διαγράμματος καλωδίωσης, που δείχνει πώς συνδέεται κάθε διασύνδεση του αισθητήρα.

Εκτός συσκευασίας, ο πίνακας έχει διαμορφωθεί για διεπαφή I2C, ως εκ τούτου συνιστούμε τη χρήση αυτής της σύνδεσης εάν είστε αλλιώς αγνωστικιστής. Το μόνο που χρειάζεστε είναι τέσσερα καλώδια!

Απαιτούνται μόνο τέσσερις συνδέσεις ακροδέκτες Vcc, Gnd, SCL και SDA και αυτές συνδέονται με τη βοήθεια καλωδίου I2C.

Αυτές οι συνδέσεις φαίνονται στις παραπάνω εικόνες.

Βήμα 3: Κώδικας για παρακολούθηση κίνησης:

Κωδικός για παρακολούθηση κίνησης
Κωδικός για παρακολούθηση κίνησης

Ας ξεκινήσουμε με τον κωδικό σωματιδίων τώρα.

Κατά τη χρήση της μονάδας αισθητήρα με το arduino, συμπεριλαμβάνουμε τη βιβλιοθήκη application.h και spark_wiring_i2c.h. Η βιβλιοθήκη "application.h" και spark_wiring_i2c.h περιέχει τις λειτουργίες που διευκολύνουν την επικοινωνία i2c μεταξύ του αισθητήρα και του σωματιδίου.

Ολόκληρος ο κωδικός σωματιδίων δίνεται παρακάτω για τη διευκόλυνση του χρήστη:

#περιλαμβάνει #περιλαμβάνει // MPU-6000 Η διεύθυνση I2C είναι 0x68 (104) #ορίστε το Addr 0x68 int xGyro = 0, yGyro = 0, zGyro = 0, xAccl = 0, yAccl = 0, zAccl = 0; void setup () {// Ορισμός μεταβλητής Particle.variable ("i2cdevice", "MPU-6000"); Particle.variable ("xAccl", xAccl); Particle.variable ("yAccl", yAccl); Particle.variable ("zAccl", zAccl); Particle.variable ("xGyro", xGyro); Particle.variable ("yGyro", yGyro); Particle.variable ("zGyro", zGyro); // Αρχικοποίηση επικοινωνίας 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)? } void loop () {unsigned int data [6]; // Έναρξη μετάδοσης I2C Wire.beginTransmission (Addr); // Επιλέξτε μητρώο δεδομένων Wire.write (0x3B); // Διακοπή μετάδοσης I2C Wire.endTransmission (); // Ζητήστε 6 byte δεδομένων Wire.requestFrom (Addr, 6); // Διαβάστε 6 byte δεδομένων εάν (Wire.available () == 6) {data [0] = Wire.read (); δεδομένα [1] = Wire.read (); δεδομένα [2] = Wire.read (); δεδομένα [3] = Wire.read (); δεδομένα [4] = Wire.read (); δεδομένα [5] = Wire.read (); } καθυστέρηση (800); // Μετατρέψτε τα δεδομένα xAccl = ((δεδομένα [1] * 256) + δεδομένα [0]); εάν (xAccl> 32767) {xAccl -= 65536; } yAccl = ((δεδομένα [3] * 256) + δεδομένα [2]); εάν (yAccl> 32767) {yAccl -= 65536; } zAccl = ((δεδομένα [5] * 256) + δεδομένα [4]); εάν (zAccl> 32767) {zAccl -= 65536; } καθυστέρηση (800); // Έναρξη μετάδοσης I2C Wire.beginTransmission (Addr); // Επιλέξτε μητρώο δεδομένων Wire.write (0x43); // Διακοπή μετάδοσης I2C Wire.endTransmission (); // Ζητήστε 6 byte δεδομένων Wire.requestFrom (Addr, 6); // Διαβάστε 6 byte δεδομένων εάν (Wire.available () == 6) {data [0] = Wire.read (); δεδομένα [1] = Wire.read (); δεδομένα [2] = Wire.read (); δεδομένα [3] = Wire.read (); δεδομένα [4] = Wire.read (); δεδομένα [5] = Wire.read (); } // Μετατρέψτε τα δεδομένα xGyro = ((δεδομένα [1] * 256) + δεδομένα [0]); εάν (xGyro> 32767) {xGyro -= 65536; } yGyro = ((δεδομένα [3] * 256) + δεδομένα [2]); εάν (yGyro> 32767) {yGyro -= 65536; } zGyro = ((δεδομένα [5] * 256) + δεδομένα [4]); εάν (zGyro> 32767) {zGyro -= 65536; } // Έξοδος δεδομένων στον πίνακα ελέγχου Particle.publish ("Acceleration in X-Axis:", String (xAccl)); καθυστέρηση (1000)? Particle.publish ("Acceleration in Y-Axis:", String (yAccl)); καθυστέρηση (1000)? Particle.publish ("Acceleration in Z-Axis:", String (zAccl)); καθυστέρηση (1000)? Particle.publish ("X-Axis of Rotation:", String (xGyro)); καθυστέρηση (1000)? Particle.publish ("Y-Axis of Rotation:", String (yGyro)); καθυστέρηση (1000)? Particle.publish ("Z-Axis of Rotation:", String (zGyro)); καθυστέρηση (1000)? }

Η συνάρτηση Particle.variable () δημιουργεί τις μεταβλητές για αποθήκευση της εξόδου του αισθητήρα και η λειτουργία Particle.publish () εμφανίζει την έξοδο στον πίνακα ελέγχου της τοποθεσίας.

Η έξοδος του αισθητήρα εμφανίζεται στην παραπάνω εικόνα για αναφορά.

Βήμα 4: Εφαρμογές:

Εφαρμογές
Εφαρμογές

Το MPU-6000 είναι ένας αισθητήρας παρακολούθησης κίνησης, ο οποίος βρίσκει την εφαρμογή του στη διεπαφή κίνησης smartphone και tablet. Στα smartphone, αυτοί οι αισθητήρες μπορούν να χρησιμοποιηθούν σε εφαρμογές όπως εντολές χειρονομίας για εφαρμογές και έλεγχο τηλεφώνου, βελτιωμένο παιχνίδι, επαυξημένη πραγματικότητα, πανοραμική λήψη και προβολή φωτογραφιών, καθώς και πλοήγηση πεζών και οχημάτων. Η τεχνολογία MotionTracking μπορεί να μετατρέψει ακουστικά και tablet σε ισχυρές τρισδιάστατες έξυπνες συσκευές που μπορούν να χρησιμοποιηθούν σε εφαρμογές που κυμαίνονται από την παρακολούθηση της υγείας και της φυσικής κατάστασης έως υπηρεσίες βάσει τοποθεσίας.

Συνιστάται: