Η προσθήκη μιας μονάδας πυξίδας στον μικροελεγκτή Arduino σας ανοίγει μια σειρά από δυνατότητες για έργα. Δείτε πώς να συνδέσετε ένα και να το χρησιμοποιήσετε.
Στα σύγχρονα έργα DIY, είναι αρκετά συνηθισμένο να βρίσκουμε προηγμένους αισθητήρες όπως επιταχυνσιόμετρα και μαγνητόμετρα να διασυνδέονται με μικροελεγκτές. Ενώ μπορεί να έχετε χρησιμοποιήσει αυτούς τους αισθητήρες στο τηλέφωνό σας, είναι δύσκολο να φανταστεί κανείς πώς λειτουργούν αυτές οι μονάδες, αλλά είναι εκπληκτικά απλό.
Ο αισθητήρας μαγνητομέτρου πυξίδας GY-271 επιτρέπει την ανίχνευση προσανατολισμού για διάφορες εφαρμογές. Εδώ θα διερευνήσουμε τη διαδικασία διασύνδεσης του αισθητήρα GY-271 με έναν μικροελεγκτή Arduino, πώς να τον βαθμονομήσετε και θα εξετάσουμε τα προβλήματα που ενδέχεται να αντιμετωπίσετε ενώ το κάνετε.
Τι είναι το GY-271 Compass Module;
Η μονάδα πυξίδας GY-271 είναι ένα πολύ ευαίσθητο μαγνητόμετρο που μπορεί να μετρήσει μαγνητικά πεδία σε τρεις διαστάσεις. Χρησιμοποιείται για την ανίχνευση του μαγνητικού πεδίου της Γης και τον προσδιορισμό της κατεύθυνσης ή του προσανατολισμού των συσκευών σε εφαρμογές όπως συστήματα πλοήγησης, ρομποτική και drones. Σκεφτείτε το σαν μια πολύ ακριβής ψηφιακή πυξίδα. Αυτός ο αισθητήρας είναι εξοπλισμένος με συμπαγή και στιβαρό σχεδιασμό που τον καθιστά εύκολο στην εγκατάσταση και τη χρήση σε ένα ευρύ φάσμα έργων.
Πώς λειτουργεί το GY-271 Compass Module;
Η μονάδα πυξίδας GY-271 HCM5883L περιέχει έναν αισθητήρα μαγνητομέτρου 3 αξόνων, ο οποίος βασίζεται στην τεχνολογία ανισότροπης μαγνητοαντίστασης (AMR). Ο αισθητήρας μετρά την ισχύ και την κατεύθυνση του μαγνητικού πεδίου της Γης ανιχνεύοντας τις αλλαγές στην αντίσταση των εσωτερικών στοιχείων AMR.
Όταν ο αισθητήρας εκτίθεται σε μαγνητικό πεδίο, η αντίσταση των στοιχείων AMR αλλάζει, δημιουργώντας μια τάση που είναι ανάλογη με την ισχύ και την κατεύθυνση του μαγνητικού πεδίου. Στη συνέχεια, ο επεξεργαστής ψηφιακού σήματος του αισθητήρα μετατρέπει αυτήν την τάση σε ψηφιακό σήμα, το οποίο μπορεί να διαβαστεί από έναν μικροελεγκτή. Μετρώντας την τάση και στους τρεις άξονες, ο αισθητήρας μπορεί να παρέχει εξαιρετικά ακριβείς μετρήσεις της ισχύος και της κατεύθυνσης του μαγνητικού πεδίου σε τρεις διαστάσεις.
Σύνδεση του GY-271 με ένα Arduino Uno
Η σύνδεση αυτής της μονάδας με το Arduino είναι αρκετά απλή. Καλύψαμε και άλλα εύχρηστες μονάδες Arduino που μπορεί να βοηθήσει στην κλίμακα του έργου σας στο μέλλον. Η μονάδα GY-271 έχει συνολικά πέντε ακίδες, συμπεριλαμβανομένων VCC, GNDκαι τρεις ακίδες σήματος (SDA, SCL, και ΔΡΔΥ).
Θα χρειαστείτε τα ακόλουθα εξαρτήματα:
- Μονάδα πυξίδας GY-271 HMC5883L
- Arduino Uno (ή άλλο μοντέλο)
- Καλώδια βραχυκυκλωτήρα (αρσενικό σε αρσενικό και από αρσενικό σε θηλυκό)
- Breadboard (προαιρετικό)
Πρώτα, συνδέστε το VCC και GND καρφίτσες της μονάδας GY-271 στο 5V και GND καρφίτσες του Arduino Uno, αντίστοιχα.
Στη συνέχεια, συνδέστε το SDA και SCL καρφίτσες της μονάδας στο Α4 και Α5 αναλογικές ακίδες του Arduino Uno, αντίστοιχα.
Εγκατάσταση των Απαραίτητων Βιβλιοθηκών
Για να ξεκινήσετε να εργάζεστε με τη μονάδα πυξίδας GY-271 και το Arduino, πρέπει να εγκαταστήσετε τις απαραίτητες βιβλιοθήκες για να επικοινωνήσετε με τον αισθητήρα.
Η πρώτη βιβλιοθήκη που πρέπει να συμπεριλάβετε στο σκίτσο σας είναι η βιβλιοθήκη Wire, η οποία χρησιμοποιείται για την επικοινωνία I2C μεταξύ του Arduino και του αισθητήρα. Η βιβλιοθήκη Wire παρέχεται προεγκατεστημένη με το Arduino IDE, επομένως δεν χρειάζεται να το κατεβάσετε ξεχωριστά. Για να εγκαταστήσετε το δεύτερο, το HMC5883L βιβλιοθήκη, θα πρέπει να ακολουθήσετε τα εξής βήματα:
Ανοίξτε το Arduino IDE και μεταβείτε στο Σκίτσο > Συμπεριλάβετε τη βιβλιοθήκη > Διαχείριση Βιβλιοθηκών.
Στη Διαχείριση βιβλιοθήκης, αναζητήστε HMC5883L στη γραμμή αναζήτησης.
Επίλεξε το HMC5883L βιβλιοθήκη συγκεκριμένα από το Adafruit. Μόλις εγκατασταθεί η βιβλιοθήκη, μπορείτε να τη συμπεριλάβετε στο σκίτσο του Arduino μεταβαίνοντας στο Σκίτσο > Συμπεριλάβετε τη βιβλιοθήκη > HMC5883L.
Κατανόηση του Κώδικα
Πρέπει να γράψετε ένα πρόγραμμα που να αρχικοποιεί τον αισθητήρα, να διαβάζει τα δεδομένα του και να υπολογίζει την ισχύ και την κατεύθυνση του μαγνητικού πεδίου της Γης. Μπορείτε να κατεβάσετε τον πλήρη κωδικό από την επίσημη υπηρεσία μας Αποθετήριο GitHub.
Στην αρχή του κώδικα, πρέπει να συμπεριλάβετε τις απαραίτητες βιβλιοθήκες που μόλις κατεβάσατε.
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
Μην ξεχάσετε να εκχωρήσετε ένα μοναδικό αναγνωριστικό στον αισθητήρα. Χρησιμοποιήστε αυτήν τη γραμμή για να το κάνετε αυτό:
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);
Στον κωδικό εγκατάστασης, ξεκινήστε τη σειριακή οθόνη και ελέγξτε εάν ο αισθητήρας ανταποκρίνεται. Μπορείτε να εκτυπώσετε μηνύματα στην οθόνη για να ενημερώσετε την κατάσταση του αισθητήρα:
κενόςεγκατάσταση(κενός)
{
Κατα συρροη.αρχίζουν(9600);
Κατα συρροη.println("Δοκιμή μαγνητόμετρου HMC5883"); Κατα συρροη.println("");
/* Εκκίνηση του αισθητήρα */
αν(!μαγ.αρχίζουν())
{
Κατα συρροη.println("Ωχ, δεν εντοπίστηκε HMC5883... Ελέγξτε την καλωδίωση σας!»);
ενώ(1);
}
}
Στον βρόχο, πρώτα, λάβετε ένα νέο συμβάν αισθητήρα:
αισθητήρες_γεγονός_t Εκδήλωση;
mag.getEvent(&event);
Στη συνέχεια, εμφανίστε τις ενδείξεις του αισθητήρα στη σειριακή οθόνη. Μην ξεχάσετε να ορίσετε τον ρυθμό baud σε 9600.
Κατα συρροη.Τυπώνω("Χ: "); Κατα συρροη.Τυπώνω(γεγονός.μαγνητικό.χ); Κατα συρροη.Τυπώνω(" ");
Κατα συρροη.Τυπώνω("Y:"); Κατα συρροη.Τυπώνω(event.magnetic.y); Κατα συρροη.Τυπώνω(" ");
Κατα συρροη.Τυπώνω("Ζ:"); Κατα συρροη.Τυπώνω(γεγονός.magnetic.z); Κατα συρροη.Τυπώνω(" ");Κατα συρροη.println("uT");
Κρατήστε τη μονάδα έτσι ώστε Ζ δείχνει "πάνω" και μετρήστε την επικεφαλίδα με Χ και Υ. Κάνοντας αυτό, μπορείτε στη συνέχεια να υπολογίσετε την κατεύθυνση όταν το μαγνητόμετρο είναι επίπεδο. Αυτή η γραμμή κώδικα βοηθά σε αυτό είναι:
φλοτέρ επικεφαλίδα = ατάν2(event.magnetic.y, event.magnetic.x);
Μόλις έχετε το δικό σας επικεφαλίδα, πρέπει στη συνέχεια να προσθέσετε το δικό σας απόκλισηΓωνία, το οποίο είναι το σφάλμα του μαγνητικού πεδίου στην τοποθεσία σας.
φλοτέρ απόκλισηΓωνία = 0.663;
επικεφαλίδα += απόκλισηΓωνία;
Μπορείτε να βρείτε εύκολα τη γωνία απόκλισης της περιοχής σας στο Ιστοσελίδα Magnetic Declination. Εάν για κάποιο λόγο δεν μπορείτε να βρείτε τη γωνία απόκλισης, σχολιάστε τις δύο γραμμές από τον κώδικά σας.
Ο σχολιασμός των δύο γραμμών κώδικα μπορεί να οδηγήσει σε λανθασμένες μετρήσεις του αισθητήρα. Προσπαθήστε να βαθμονομήσετε τον αισθητήρα πριν από τη χρήση.
Τέλος, εκτυπώστε την επικεφαλίδα στη σειριακή οθόνη και προσθέστε μια καθυστέρηση για να περιμένετε για μισό δευτερόλεπτο πριν διαβάσετε ξανά.
Κατα συρροη.Τυπώνω("Τίτλος (βαθμοί):");
Κατα συρροη.println(επικεφαλίδα Πτυχία);
καθυστέρηση(500);
Από εδώ, μπορείτε να προσαρμόσετε τον κώδικα για να ταιριάζει στις ανάγκες του έργου σας και να προσθέσετε πρόσθετες λειτουργίες, όπως η καταγραφή δεδομένων.
Εάν προτιμάτε να χρησιμοποιήσετε τη βιβλιοθήκη Adafruit, συνιστούμε να την προμηθευτείτε από Αποθετήριο GitHub της Adafruit.
Ανάγνωση και ερμηνεία δεδομένων πυξίδας
Τα δεδομένα αισθητήρα που εμφανίζονται στη σειριακή οθόνη δείχνουν τις τιμές διανύσματος μαγνητικού πεδίου που μετρήθηκαν από το μαγνητόμετρο σε microteslas (μT) για τους άξονες X, Y και Z, αντίστοιχα. Αυτές οι τιμές μπορούν να χρησιμοποιηθούν για τον προσδιορισμό του προσανατολισμού και του μεγέθους του μαγνητικού πεδίου.
Η τιμή της κατεύθυνσης που εμφανίζεται σε μοίρες είναι επίσης σημαντική και αντιπροσωπεύει την κατεύθυνση του μαγνητικού βόρειου πόλου σε σχέση με τη θέση του αισθητήρα. Αυτή η ανάγνωση μπορεί να χρησιμοποιηθεί σε έργα όπου πρέπει να καθοριστεί η κατεύθυνση ενός κινούμενου αντικειμένου, όπως σε συστήματα ρομποτικής, πλοήγησης και γεωεντοπισμού.
Βαθμονόμηση αισθητήρα
Εάν έχετε ήδη εγκαταστήσει μια διαφορετική βιβλιοθήκη για τη μονάδα HMC5883L, θα πρέπει να την απεγκαταστήσετε ή να τη διαγράψετε. Διαφορετικά, ενδέχεται να λάβετε σφάλματα μεταγλώττισης ή να δείτε προειδοποιήσεις στη σειριακή οθόνη σας κατά τη βαθμονόμηση. Συνιστούμε τη χρήση η βιβλιοθήκη του Jarzebski διαθέσιμο στο GitHub, καθώς διαθέτει τους πλήρεις πόρους βαθμονόμησης που απαιτούνται για αυτήν την ενότητα.
Πρώτα, κατεβάστε το αρχείο zip από το αποθετήριο κάνοντας κλικ στο Κώδικας > Λήψη ZIP.
Στη συνέχεια, ανοίξτε το Arduino IDE και κάντε κλικ στο Σκίτσο > Συμπεριλάβετε τη βιβλιοθήκη > Προσθήκη βιβλιοθήκης.
Επίλεξε το Arduino-HMC5883 zip που μόλις κατεβάσατε και το Arduino IDE θα εγκαταστήσει αυτόματα τη βιβλιοθήκη για εσάς.
Εκτελέστε το σκίτσο βαθμονόμησης που είναι διαθέσιμο στο αποθετήριο ενώ μετακινείτε τον αισθητήρα σε μια επίπεδη επιφάνεια κατά τη μεταφόρτωση. Οι τιμές που λαμβάνονται από τη σειριακή οθόνη είναι οι τιμές μετατόπισης του αισθητήρα σας, τις οποίες μπορείτε να χρησιμοποιήσετε για να διορθώσετε τις μετρήσεις σας ενώ χρησιμοποιείτε την πυξίδα κατά τη διάρκεια των έργων σας.
Προβλήματα που ενδέχεται να αντιμετωπίσετε
Υπάρχουν πολλά σφάλματα που μπορεί να αντιμετωπίσει κάποιος κατά τη διασύνδεση της μονάδας πυξίδας με το Arduino. Ακολουθούν μερικά παραδείγματα και οι λύσεις τους:
Σφάλματα μεταγλώττισης: Αυτά μπορεί να προκύψουν εάν δεν περιλαμβάνονται οι απαραίτητες βιβλιοθήκες ή εάν υπάρχουν συντακτικά σφάλματα στον κώδικα. Για να το διορθώσετε, βεβαιωθείτε ότι έχετε εγκαταστήσει τις σωστές βιβλιοθήκες και ελέγξτε τον κώδικά σας για τυχόν συντακτικά σφάλματα. Όπως έχουμε δει πολλές φορές, μπορεί να έχετε εγκαταστήσει κατά λάθος πολλές βιβλιοθήκες HCM5883L.
Σφάλμα μεταγλώττισης: 'Adafruit_HMC5883_Unified' κάνει δεν ονομάστε έναν τύπο
Σφάλματα επικοινωνίας: Εάν δεν μπορείτε να επικοινωνήσετε με τη μονάδα πυξίδας, βεβαιωθείτε ότι την έχετε συνδέσει στις σωστές ακίδες στο Arduino και ότι η καλωδίωση είναι σωστή. Μπορεί επίσης να χρειαστεί να προσαρμόσετε τη διεύθυνση I2C της μονάδας στον κώδικά σας, εάν είναι διαφορετική από την προεπιλεγμένη — η οποία είναι 0x1E.
Λάθος χρησιμοποιώντας hmc5883l/testDevice (γραμμή246) Σφάλμα επικοινωνίας με τον αισθητήρα HMC5883L. Η αξία ανάγνωση από ID_A, ID_B και ID_C καταχωρήσεις κάνωδεν ταιριάζουν με τις αναμενόμενες τιμές.
Μαγνητική παρεμβολή: Εάν οι ενδείξεις της πυξίδας είναι ασταθείς ή κυμαίνονται, μπορεί να οφείλεται σε μαγνητικές παρεμβολές από κοντινά αντικείμενα. Απομακρύνετε τη μονάδα από μαγνήτες ή άλλες πηγές μαγνητικής παρεμβολής για να έχετε πιο σταθερές μετρήσεις.
Ανεβάστε τα έργα σας με τη μονάδα πυξίδας GY-271
Η δυνατότητα χρήσης της μονάδας πυξίδας GY-271 HCM5883L ανοίγει μια πόρτα για την κατασκευή πιο περίπλοκων έργων DIY χρησιμοποιώντας το Arduino, όπως ρόβερ που καθοδηγούνται με GPS και drones DIY. Οι δυνατότητες είναι ατελείωτες, ειδικά όταν προσθέτετε άλλους αισθητήρες.