Σκίτσο δοκιμής συνδυασμένου αισθητήρα ARDUINO GY87
Εισαγωγή
Εάν είστε μανιώδης κατασκευαστής ή λάτρης της ρομποτικής, έχετε συναντήσει αυτό το μικροσκοπικό αλλά ισχυρό στοιχείο Αν είστε άπληστος κατασκευαστής ή λάτρης της ρομποτικής, έχετε συναντήσει αυτό το μικροσκοπικό αλλά ισχυρό βαρόμετρο της μονάδας BMP085. Η μονάδα GY-87 IMU είναι ένας πολύ καλός τρόπος για να προσθέσετε ανίχνευση κίνησης στα έργα σας, όπως ένα ρομπότ αυτοεξισορρόπησης ή ένα τετρακόπτερο.
Αλλά προτού αρχίσετε να πειραματίζεστε με τη μονάδα GY-87 IMU, πρέπει να ξέρετε πώς να τη διασυνδέσετε με την πλακέτα Arduino. Εκεί μπαίνει αυτό το blog! Στις επόμενες παραγράφους, θα καλύψουμε τα βασικά της μονάδας GY-87 IMU, πώς να τη ρυθμίσετε και πώς να γράψετε τον κώδικα Arduino για να διαβάσετε τα δεδομένα του αισθητήρα. Θα παρέχουμε επίσης ορισμένες συμβουλές και πόρους για την αντιμετώπιση προβλημάτων κοινών προβλημάτων.
Έτσι, αν είστε έτοιμοι να ξεκινήσετε, ας βουτήξουμε και ας μάθουμε για τη διασύνδεση της μονάδας GY-87 IMU με το Arduino!
Τι είναι το GY-87 IMU MPU6050
Οι μονάδες αδρανειακής μονάδας μέτρησης (IMU) όπως το GY-87 συνδυάζουν πολλούς αισθητήρες σε ένα μόνο πακέτο, όπως το επιταχυνσιόμετρο/γυροσκόπιο MPU6050, το μαγνητόμετρο HMC5883L και τον αισθητήρα βαρομετρικής πίεσης BMP085. Ως εκ τούτου, το GY-87 IMU MPU6050 είναι μια μονάδα παρακολούθησης κίνησης 9 αξόνων all-in-one που συνδυάζει ένα γυροσκόπιο 3 αξόνων, ένα επιταχυνσιόμετρο 3 αξόνων, ένα μαγνητόμετρο 3 αξόνων και έναν ψηφιακό επεξεργαστή κίνησης. Χρησιμοποιείται πολύ σε ρομποτικά έργα, όπως τετρακόπτερα και άλλα μη επανδρωμένα εναέρια οχήματα (UAV), επειδή μπορεί να μετρήσει και να παρακολουθήσει με ακρίβεια τον προσανατολισμό και την κίνηση. Χρησιμοποιείται επίσης σε άλλες εφαρμογές, όπως πλοήγηση, παιχνίδια και εικονική πραγματικότητα.
Εξαρτήματα υλικού
Θα χρειαστείτε το ακόλουθο υλικό για τη διασύνδεση GY-87 IMU MPU6050 HMC5883L BMP085 Module με Arduino.
εξαρτήματα | Αξία | Ποσ |
Arduino UNO | – | 1 |
MPU6050 Μονάδα αισθητήρα | GY-87 | 1 |
Breadboard | – | 1 |
Σύρματα Jumper | – | 1 |
GY-87 με Arduino
Τώρα που καταλάβατε το GY-87, ήρθε η ώρα να διασυνδέσετε με το Arduino. Για να το κάνετε αυτό, ακολουθήστε Τώρα που καταλάβατε το GY-87, ήρθε η ώρα να διασυνδέσετε με το Arduino. Για να το κάνετε αυτό, ακολουθήστε
Σχηματικό
Πραγματοποιήστε συνδέσεις σύμφωνα με το διάγραμμα κυκλώματος που δίνεται παρακάτω
GY-87 IMU MPU6050 HMC5883L BMP085 ArduinoΚαλωδίωση / Συνδέσεις
Arduino | Αισθητήρας MPU6050 |
5V | VCC |
GND | GND |
A4 | SDA |
A5 | SCA |
Εγκατάσταση Arduino IDE
Πρώτα, πρέπει να εγκαταστήσετε το λογισμικό Arduino IDE από το επίσημο λογισμικό του webιστότοπος Arduino. Ακολουθεί ένας απλός οδηγός βήμα προς βήμα σχετικά με το "Πώς να εγκαταστήσετε το Arduino IDE".
Εγκατάσταση βιβλιοθηκών
Πριν ξεκινήσετε τη μεταφόρτωση κώδικα, πραγματοποιήστε λήψη και αποσυμπίεση των παρακάτω βιβλιοθηκών στο /Program Files (x86)/Arduino/Libraries (προεπιλογή) για να χρησιμοποιήσετε τον αισθητήρα με την πλακέτα Arduino. Ακολουθεί ένας απλός οδηγός βήμα προς βήμα σχετικά με το "Πώς να προσθέσετε βιβλιοθήκες στο Arduino IDE".
- MPU6050
- Adafruit_BMP085
- HMC5883L_Απλό
Κώδικας
Τώρα αντιγράψτε τον παρακάτω κώδικα και μεταφορτώστε τον στο λογισμικό Arduino IDE.
#include "I2Cdev.h" #include "MPU6050.h" #include #περιλαμβάνω MPU085 accelgyro; Adafruit_BMP5883 bmp; HMC6050L_Simple Compass; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = false; void setup() { Serial.begin(16); Wire.begin(); // προετοιμασία συσκευών Serial.println("Initializing I13C devices..."); // αρχικοποίηση bmp9600 if (!bmp.begin()) { Serial.println("Δεν ήταν δυνατή η εύρεση έγκυρου αισθητήρα BMP2, ελέγξτε (!bmp.begin()) { Serial.println("Δεν ήταν δυνατή η εύρεση έγκυρου αισθητήρα BMP085, ελέγξτε Serial.println(accelgyro.testConnection() ? "MPU085 σύνδεση επιτυχής" : "MPU085 σύνδεση απέτυχε"); 6050, 'E');amplingMode(COMPASS_SINGLE);
Compass.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // Ρύθμιση παραμέτρων LED Arduino για έλεγχο δραστηριότητας pinMode(LED_PIN, OUTPUT); } void loop() {
Serial.print("Θερμοκρασία = "); Serial.print(bmp.readTemperature());
Serial.println(" *C"); Serial.print("Pressure = ");
Serial.print(bmp.readPressure()); Serial.println("Pa"); // Υπολογίστε το υψόμετρο υποθέτοντας «τυπική» βαρομετρική // πίεση 1013.25 millibar = 101325 Pascal Serial.print(“Altitude = “); Serial.print(bmp.readAltitude()); Serial.println("μετρητές"); Serial.print("Pressure at sealevel (υπολογισμένη) = ");
Serial.print(bmp.readSealevelPressure()); Serial.println("Pa");
Serial.print("Πραγματικό υψόμετρο = "); Serial.print(bmp.readAltitude(101500));
Serial.println("μετρητές"); // ανάγνωση μη επεξεργασμένων μετρήσεων accel/gyro από τη συσκευή accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // Εμφάνιση τιμών accel/gyro x/y/z διαχωρισμένων με καρτέλες Serial.print(“a/g:\t”); Serial.print(ax);
Serial.print(“\t”); Serial.print(ay); Serial.print(“\t”); Serial.print(az);
Serial.print(“\t”); Serial.print(gx); Serial.print(“\t”); Serial.print(gy);
Serial.print(“\t”); Serial.println(gz); float heading =
Compass.GetHeadingDegrees(); Serial.print("Heading: \t"); Serial.println( επικεφαλίδα ); // αναβοσβήνει το LED για να υποδείξει τη δραστηριότητα blinkState = !blinkState;
digitalWrite(LED_PIN, blinkState); καθυστέρηση (500); }
Ας το δοκιμάσουμε
Μόλις ανεβάσετε τον κωδικό, ήρθε η ώρα να δοκιμάσετε το κύκλωμα! Ο κώδικας στο πρόγραμμα Arduino διασυνδέεται με τους αισθητήρες χρησιμοποιώντας τις βιβλιοθήκες τους, κάτι που του επιτρέπει να διαβάζει δεδομένα αισθητήρων και να ορίζει διάφορες διαμορφώσεις των αισθητήρων. Στη συνέχεια εκτυπώνει τα δεδομένα του αισθητήρα πάνω από τη σειριακή θύρα. Το LED χρησιμοποιείται για να δείξει ότι το κύκλωμα κάνει κάτι. Αυτό σημαίνει ότι το LED αναβοσβήνει κάθε φορά που εκτελείται η λειτουργία βρόχου, υποδεικνύοντας ότι ο κώδικας διαβάζει ενεργά τις τιμές του αισθητήρα.
Επεξήγηση εργασίας
Ο κώδικας είναι το κύριο πράγμα στο οποίο βασίζεται η λειτουργία του κυκλώματος. Λοιπόν, ας καταλάβουμε τον κώδικα:.
- Πρώτον, περιλαμβάνει αρκετές βιβλιοθήκες για διασύνδεση με τους αισθητήρες:
- Τα "I2Cdev.h" και "MPU6050.h" είναι βιβλιοθήκες για τον αισθητήρα επιταχυνσιόμετρο/γυροσκόπιο 6050 αξόνων MPU6
- Το "Adafruit_BMP085.h" είναι μια βιβλιοθήκη για τον αισθητήρα βαρομετρικής πίεσης BMP085.
- Το "HMC5883L_Simple.h" είναι μια βιβλιοθήκη για τον αισθητήρα μαγνητομέτρου HMC5883L.
- Στη συνέχεια, δημιουργεί καθολικά αντικείμενα για τους τρεις αισθητήρες: MPU6050 accelgyro, Adafruit_BMP085 bmp και HMC5883L_Simple Compass.
- Στη συνέχεια, ορίζει ορισμένες μεταβλητές για την αποθήκευση των τιμών του αισθητήρα, όπως ax, ay και az για το επιταχυνσιόμετρο του MPU6050 και για την κατεύθυνση προς το μαγνητόμετρο του HMC5883L. Και ορίζει μια σταθερά LED_PIN και μια μεταβλητή blinkState.
- Η συνάρτηση setup() ξεκινά μια σειριακή επικοινωνία και ξεκινά την επικοινωνία I2C. Στη συνέχεια, αρχικοποιεί τους τρεις αισθητήρες:
- Ο αισθητήρας BMP085 αρχικοποιείται καλώντας τη μέθοδο start(). Εάν αυτό επιστρέψει false, υποδεικνύοντας ότι ο αισθητήρας δεν βρέθηκε, το πρόγραμμα εισάγει έναν άπειρο βρόχο και εκτυπώνει ένα μήνυμα σφάλματος στη σειριακή θύρα.
- Ο αισθητήρας MPU6050 αρχικοποιείται καλώντας τη μέθοδο startize() και ελέγχοντας εάν λειτουργεί σωστά. Και έθεσε ενεργοποιημένη την παράκαμψη I2C για το MPU6050.
- Ο αισθητήρας HMC5883L αρχικοποιείται καλώντας ορισμένες λειτουργίες, όπως SetDeclination, SetSamplingMode, SetScale και SetOrientation, για τη ρύθμιση διαφορετικών διαμορφώσεων για τον αισθητήρα.
- Στη συνάρτηση loop(), ο κώδικας διαβάζει δεδομένα από τους τρεις αισθητήρες και τα εκτυπώνει στη σειριακή θύρα:
- Διαβάζει τη θερμοκρασία, την πίεση, το υψόμετρο και την πίεση στο επίπεδο της θάλασσας από τον αισθητήρα.
- Διαβάζει ακατέργαστες μετρήσεις επιτάχυνσης και γυροσκόπιου από τον αισθητήρα MPU6050.
- Διαβάζει την επικεφαλίδα από τον αισθητήρα HMC5883L, που είναι η γωνία μεταξύ της κατεύθυνσης στην οποία δείχνει ο αισθητήρας και της κατεύθυνσης στην οποία βρίσκεται ο μαγνητικός βορράς.
- Τέλος, αναβοσβήνει το LED για να υποδείξει τη δραστηριότητα και περιμένει μια στιγμή πριν ξαναδιαβάσει τους αισθητήρες.
Έγγραφα / Πόροι
![]() |
Σκίτσο δοκιμής συνδυασμένου αισθητήρα ARDUINO GY87 [pdf] Εγχειρίδιο χρήστη Σκίτσο δοκιμής συνδυασμένου αισθητήρα GY87, GY87, Σκίτσο δοκιμής συνδυασμένου αισθητήρα, σκίτσο δοκιμής αισθητήρα, σκίτσο δοκιμής |