Πίνακας περιεχομένων:
- Βήμα 1: Φτιάξτε την Ασπίδα/το σανίδι
- Βήμα 2: Προγραμματίστε το Arduino
- Βήμα 3: Φορτώστε την εφαρμογή Android από το Google Play ή διακλαδώστε το GitHub
- Βήμα 4: Συνδεθείτε στο Arduino σε κάτι ενδιαφέρον (χρησιμοποίησα αυτοκίνητο R/C)
- Βήμα 5: Χρησιμοποιήστε τη συσκευή Android για σύνδεση στο Arduino
- Βήμα 6: Αποκτήστε και σχεδιάστε τα δεδομένα
- Βήμα 7: Εισαγωγή σε Python (ή άλλη πλατφόρμα) για περαιτέρω χρήση
Βίντεο: Realtime MPU-6050/A0 Καταγραφή δεδομένων με Arduino και Android: 7 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Με ενδιέφερε να χρησιμοποιήσω το Arduino για μηχανική μάθηση. Ως πρώτο βήμα, θέλω να δημιουργήσω μια οθόνη δεδομένων σε πραγματικό χρόνο (ή πολύ κοντά σε αυτήν) και να καταγράψω με μια συσκευή Android. Θέλω να καταγράψω δεδομένα επιταχυνσιόμετρου από το MPU-6050, οπότε σχεδίασα την κατασκευή για χρήση του HC-05 σε 115200 baud. Με αυτήν τη διαμόρφωση μπορούν να μεταδοθούν 4 κανάλια δεδομένων με 250 δείγματα ανά δευτερόλεπτο.
Η κατασκευή έχει μερικά βήματα:
- Φτιάξτε την ασπίδα ή το σανίδι
- Προγραμματίστε το Arduino
- Φορτώστε την εφαρμογή Android από το Google Play ή διακλαδώστε το GitHub και μεταγλωττίστε την μόνοι σας
- Συνδέστε το MPU-6050 σε κάτι ενδιαφέρον που δονείται (χρησιμοποίησα αυτοκίνητο R/C)
- Χρησιμοποιήστε τη συσκευή Android για να συνδεθείτε στο Arduino
- Σχεδιάστε τα δεδομένα, αποθηκεύστε εάν ενδιαφέρεστε
- Εισαγάγετε σε Python (ή άλλη πλατφόρμα) για περαιτέρω χρήση
Ας αρχίσουμε!
Βήμα 1: Φτιάξτε την Ασπίδα/το σανίδι
Αυτό είναι το διάγραμμα καλωδίωσης για το Arduino, HC-05 και το MPU-6050. Εκτός από το MPU-6050, έχω την αναλογική είσοδο A0 συνδεδεμένη με αισθητήρα φωτός για να δείξω ότι το ADC λειτουργεί. Οποιοδήποτε σήμα 0-5 volt θα μπορούσε να εισαχθεί στο A0 ADC. Αυτά είναι τα στοιχεία που χρησιμοποίησα για την κατασκευή:
- Arduino Uno
- HC-05 (Το HC-06 πρέπει επίσης να λειτουργεί, αλλά η κατασκευή μου ήταν με το HC-05)
- MPU-6050
- Φωτοαντίσταση Sparkfun
- Αντίσταση 10kOhm (καφέ-μαύρο-πορτοκαλί)
Οι περισσότερες μονάδες Bluetooth HC-05 είναι προεπιλεγμένες σε 9600 baud. Για να μεταδοθούν τα δεδομένα με επιτυχία, θα πρέπει να τα επαναπρογραμματίσετε με ρυθμό baud 115200. Υπάρχει ένα καλό HC-05/HC-06 AT Command Instructable που εξηγεί πώς να το κάνετε.
Βήμα 2: Προγραμματίστε το Arduino
Χρησιμοποίησα την έκδοση 1.6.7 του Arduino IDE για να προγραμματίσω το Arduino. Ο κώδικας μπορεί να μεταφορτωθεί από τους συνδέσμους σε αυτό το βήμα ή από το repo του GitHub. Έχω συμπεριλάβει τρεις εκδόσεις: Το Firmware125.ino είναι η έκδοση 125 hertz, το Firmware250.ino είναι η έκδοση των 250 herz και το Firmware500.ino είναι η έκδοση των 500 hertz. Για να φτάσει το Arduino να κάνει ποδήλατο στα 500 hertz, το A0 ADC δεν συλλέγεται.
Το υλικολογισμικό περιλαμβάνει ένα ρολόι εξόδου στο Pin 9 που χρησιμοποίησα για να ελέγξω το χρονοδιάγραμμα. Το ίχνος δείχνει ότι ο χρόνος κύκλου είναι 4 ms (ισοδύναμος με 1/250 hertz). Έχω διαπιστώσει ότι εάν υπάρχουν προβλήματα σειριακής σύνδεσης, ο χρόνος δεν θα είναι ομοιόμορφος.
Ο κώδικας Arduino χρησιμοποιεί κάλυψη bit για να προσθέσει έναν αριθμό καναλιού σε κάθε πακέτο επειδή τα δείγματα μερικές φορές πέφτουν μέσω Bluetooth. Χρησιμοποιώ τα τρία πιο σημαντικά bit για να αποθηκεύσω έναν αριθμό καναλιού. Για υπογεγραμμένους ακέραιους αριθμούς, το πιο σημαντικό bit (MSB) προορίζεται για το πρόσημο. Δεδομένου ότι θέλω να χρησιμοποιήσω το MSB για τη διεύθυνσή μου και όχι το σύμβολο του ακέραιου, πρέπει να μετατρέψω όλες τις υπογεγραμμένες τιμές επιταχυνσιόμετρου σε ακύρωτους ακέραιους αριθμούς. Το κάνω αυτό προσθέτοντας 32768 σε κάθε τιμή (οι μετρήσεις ADC του επιταχυνσιόμετρου MPU είναι +32768 έως -32768) και μεταδίδονται ως ακύρωτοι ακέραιοι αριθμοί:
(χωρίς υπογραφή int) ((μακρύ) iAccelData+32767);
Ο αριθμός καναλιού είναι ο ίδιος για κάθε επιταχυνσιόμετρο και τη θύρα A0, έτσι ώστε ένα πακέτο που έχει πέσει να μπορεί να ανιχνευθεί εάν οι αριθμοί καναλιού είναι εκτός λειτουργίας. Για τα πακέτα που προέρχονται από το Bluetooth στο Arduino, το δυαδικό μοτίβο είναι (τα σημάδια αλλάζουν λίγο):
(xacc 3 bits address = 0x00, 13bit unsigned) (yacc 3 bits address = 0x01, 13bit unsigned) (zacc 3 bits address = 0x02, 13bit unsigned) (3 bits address = 0x03, iadc13bit unsigned)
(xacc 3 bits address = 0x00, 13bit unsigned) (yacc 3 bits address = 0x01, 13bit unsigned) (zacc 3 bits address = 0x02, 13bit unsigned) (3 bits address = 0x03, iadc13bit unsigned) (xacc 3 bits address = 0x00, 13bit χωρίς υπογραφή) (yacc 3 bits address = 0x01, 13bit unsigned) (zacc 3 bits address = 0x02, 13bit unsigned) (3 bits address = 0x03, iadc13bit unsigned)…
Εάν χρησιμοποιείτε κάτι άλλο από την εφαρμογή Accel Plot Android για να διαβάσετε τα δεδομένα Bluetooth, ακολουθούν τα βήματα για να εξαγάγετε τη διεύθυνση (χρησιμοποιώ τα ονόματα μεταβλητών από το αρχείο Accel Plot Bluetooth.java από το repo του GitHub):
- Διαβάστε στο 16 ανυπόγραφο int
- Εξαγάγετε το υψηλό byte και αποθηκεύστε το σε btHigh.
- Εξαγάγετε το χαμηλό byte και αποθηκεύστε το στο btLow.
- Ανακτήστε τη διεύθυνση από το btHigh χρησιμοποιώντας: (btHigh >> 5) & 0x07. Αυτή η δήλωση μετατοπίζει btHigh 5 bits προς τα δεξιά μετακινώντας τα τρία bits διευθύνσεων στους χαμηλότερους τρεις καταχωρητές. Το σύμβολο & είναι ένα λογικό ΚΑΙ που αναγκάζει τα bit 4 και πάνω να είναι μηδέν και τα τρία τελευταία bits να ταιριάζουν με τα bits διευθύνσεων. Το αποτέλεσμα αυτής της δήλωσης είναι η διεύθυνσή σας.
Δεν χρειάζεται να ανησυχείτε για την εξαγωγή διεύθυνσης εάν χρησιμοποιείτε το Accel Plot.
Βήμα 3: Φορτώστε την εφαρμογή Android από το Google Play ή διακλαδώστε το GitHub
Έχετε δύο επιλογές για τη φόρτωση της εφαρμογής Android στη συσκευή σας. Εάν θέλετε να αποφύγετε την κωδικοποίηση, μπορείτε να αναζητήσετε "Accel Plot" και η εφαρμογή θα εμφανιστεί στο Google Play store. Ακολουθήστε τις οδηγίες του καταστήματος για εγκατάσταση.
Η επιθυμία μου με αυτό το Instructable είναι πραγματικά να ενθαρρύνω άλλους να κατασκευάσουν έργα, οπότε έχω επίσης δημοσιεύσει τον κώδικα σε ένα repo του GitHub. Θα πρέπει να μπορείτε να το διακλαδίζετε, να το χτίζετε και να το τροποποιείτε όπως κρίνετε κατάλληλο. Δημοσίευσα τον κωδικό κάτω από την άδεια MIT οπότε διασκεδάστε!
Βήμα 4: Συνδεθείτε στο Arduino σε κάτι ενδιαφέρον (χρησιμοποίησα αυτοκίνητο R/C)
Θέλω τελικά να χρησιμοποιήσω τη συσκευή για ανίχνευση επιφάνειας δρόμου, οπότε σκέφτηκα ότι ένα μικρό τηλεχειριζόμενο (R/C) αυτοκίνητο θα ήταν κατάλληλο. Νομίζω ότι βοηθάει στο επόμενο βήμα αν τα accels μπορούν να βρίσκονται σε κάτι που κινείται ή δονείται.
Βήμα 5: Χρησιμοποιήστε τη συσκευή Android για σύνδεση στο Arduino
Εάν δεν το έχετε κάνει ήδη, θα πρέπει πρώτα να αντιστοιχίσετε το HC-05 στη συσκευή σας Android. Πιστεύω ότι στις περισσότερες συσκευές μπορείτε να το κάνετε αυτό πηγαίνοντας στις ρυθμίσεις. Η προεπιλεγμένη ακίδα για τις περισσότερες συσκευές HC-05 θα είναι 1234 ή 1111.
Ανοίξτε την εφαρμογή AccelPlot στη συσκευή Android. Όταν ανοίξει η εφαρμογή και προτού συνδεθείτε στο HC-05, μπορείτε να αλλάξετε το ρυθμό δειγματοληψίας (αυτό ορίζεται στον κώδικα Arduino), τις κλίμακες επιταχυνσιόμετρων (επίσης στον κώδικα Arduino) και τον αριθμό των δειγμάτων που θα αποθηκευτούν.
Μόλις γίνουν αυτές οι ρυθμίσεις, κάντε κλικ στο κουμπί "Σύνδεση". Θα πρέπει να εμφανίζει τις συσκευές Bluetooth και η συσκευή σας θα πρέπει να εμφανίζεται στη λίστα. Επιλέξτε το και μόλις ο κώδικας δημιουργήσει τη σύνδεση, θα εμφανιστεί ένα τοστ "Συνδεδεμένο".
Χρησιμοποιήστε το κουμπί πίσω βέλους για να επιστρέψετε στο Accel Plot. Πατήστε το κουμπί "Έναρξη ροής" για να εμφανίσετε δεδομένα από τη συσκευή HC-05. Θα πρέπει επίσης να υπάρχουν διαθέσιμα κουμπιά για την αποθήκευση των δεδομένων ή την αναπαραγωγή του περιεχομένου με διαμόρφωση συχνότητας μέσω της υποδοχής ήχου.
Βήμα 6: Αποκτήστε και σχεδιάστε τα δεδομένα
Το κουμπί "Έναρξη ροής" πρέπει να είναι ενεργοποιημένο. Πατήστε το για να ξεκινήσει η ροή δεδομένων στην οθόνη.
Το κουμπί "Αποθήκευση δεδομένων" θα ενεργοποιηθεί επίσης, πατήστε το για να αποθηκεύσετε τα δεδομένα.
Το Accel Plot περιλαμβάνει επίσης μια επιλογή για την έξοδο ενός διαμορφωμένου σήματος στα κανάλια ήχου. Τα 2 κανάλια στην εφαρμογή Accel Plot αναφέρονται στα αριστερά και δεξιά κανάλια της υποδοχής εξόδου ήχου στη συσκευή Android. Αυτό είναι χρήσιμο εάν θέλετε να φέρετε τα δεδομένα MPU-6050 σε ένα ξεχωριστό σύστημα καταγραφής δεδομένων, όπως ένα Εθνικό Όργανο.
Το βίντεο δείχνει ένα παράδειγμα του συστήματος που συλλέγει δεδομένα σε ένα αυτοκίνητο Ε/Κ.
Βήμα 7: Εισαγωγή σε Python (ή άλλη πλατφόρμα) για περαιτέρω χρήση
Τα αρχεία αποθηκεύονται στη συσκευή Android. Τα αρχεία θα αποθηκευτούν στον κατάλογο "AccelPlot" για Android API 18 και άνω. Ο κώδικας τοποθετεί τα αρχεία.dat στο φάκελο "\ Tablet / Documents / AccelPlot" για το API 19 (KitKat 4.4) και νεότερο. Είχα πρόβλημα με ορισμένες συσκευές Android που εμφανίζουν τα αρχεία όταν συνδέονται μέσω USB. Σε ορισμένες περιπτώσεις χρειάστηκε να επανεκκινήσω τη συσκευή Android για να εμφανιστούν. Δεν είμαι σίγουρος γιατί συμβαίνει αυτό, αλλά θα πρέπει να υπάρχουν τέσσερα αρχεία, ένα για κάθε κανάλι. Μπορούν να αντιγραφούν σε έναν τοπικό κατάλογο για επιπλέον εργασία.
Χρησιμοποίησα το Anaconda/Python 2.7 για να ανοίξω τα αρχεία και να εμφανίσω τα δεδομένα. Το αρχείο "ExploratoryAnalysis.ipynb" έχει το αρχείο σημειωματάριου IPython που θα ανοίξει όλα τα αρχεία δεδομένων και θα σχεδιάσει τα δείγματα δεδομένων. Τα δείγματα αρχείων περιλαμβάνονται στο repo του GitHub. Τα δεδομένα αποθηκεύονται ως μεγάλα-endian 4 byte floats ('> f'), οπότε κάθε πρόγραμμα ανάλυσης θα πρέπει να μπορεί να τα ανοίξει.
Έχω επίσης συμπεριλάβει ένα απλούστερο αρχείο που ονομάζεται "ReadDataFiles.ipynb" που δείχνει πώς να διαβάζετε σε ένα μόνο αρχείο κατά όνομα.
Συνιστάται:
Smart Watchz με ανίχνευση συμπτωμάτων Corona και καταγραφή δεδομένων: 10 βήματα
Smart Watchz με ανίχνευση συμπτωμάτων Corona και καταγραφή δεδομένων: Πρόκειται για ένα Smartwatch με ανίχνευση συμπτωμάτων Corona χρησιμοποιώντας LM35 και επιταχυνσιόμετρο με καταγραφή δεδομένων στον διακομιστή. Το Rtc χρησιμοποιείται για την εμφάνιση χρόνου και συγχρονισμού με το τηλέφωνο και τη χρήση του για καταγραφή δεδομένων. Το Esp32 χρησιμοποιείται ως εγκέφαλος με ελεγκτή φλοιού με μπλε
Απλή καταγραφή δεδομένων κινητής τηλεφωνίας χρησιμοποιώντας PfodApp, Android και Arduino: 5 βήματα
Απλή καταγραφή δεδομένων για κινητά χρησιμοποιώντας PfodApp, Android και Arduino: Η καταγραφή δεδομένων Moblie έγινε απλή χρησιμοποιώντας το pfodApp, το Andriod κινητό και το Arduino. ΔΕΝ απαιτείται προγραμματισμός Android. Για τη σχεδίαση δεδομένων στο Android σας, δείτε αυτό το μεταγενέστερο Instuctable Simple Remote Data Plotting χρησιμοποιώντας Android / Arduino / pfodAppΓια σχεδίαση
Απομακρυσμένη καταγραφή δεδομένων υψηλής ακρίβειας χρησιμοποιώντας πολύμετρο/Arduino/pfodApp: 10 βήματα (με εικόνες)
Απομακρυσμένη καταγραφή δεδομένων υψηλής ακρίβειας με χρήση πολύμετρου/Arduino/pfodApp: Ενημερώθηκε στις 26 Απριλίου 2017 Αναθεωρημένο κύκλωμα και πλακέτα για χρήση με μετρητές USB 4000ZC. Δεν απαιτείται κωδικοποίηση Android. Αυτό το διδακτικό σας δείχνει πώς έχετε πρόσβαση σε ένα ευρύ φάσμα μετρήσεων υψηλής ακρίβειας από το Arduino σας και επίσης αποστείλετε τις από απόσταση για καταγραφή και
Μετεωρολογικός σταθμός με καταγραφή δεδομένων: 7 βήματα (με εικόνες)
Μετεωρολογικός σταθμός με καταγραφή δεδομένων: Σε αυτό το διδακτικό θα σας δείξω πώς να φτιάξετε μόνοι σας σύστημα μετεωρολογικών σταθμών. Το μόνο που χρειάζεστε είναι βασικές γνώσεις στα ηλεκτρονικά, τον προγραμματισμό και λίγο χρόνο. Αυτό το έργο είναι ακόμα σε εξέλιξη. Αυτό είναι μόνο το πρώτο μέρος. Οι αναβαθμίσεις θα γίνονται
Ένδειξη θερμοκρασίας και υγρασίας και συλλογή δεδομένων με Arduino και επεξεργασία: 13 βήματα (με εικόνες)
Εμφάνιση θερμοκρασίας και υγρασίας και συλλογή δεδομένων με Arduino και επεξεργασία: Εισαγωγή: Πρόκειται για ένα έργο που χρησιμοποιεί έναν πίνακα Arduino, έναν αισθητήρα (DHT11), έναν υπολογιστή Windows και ένα πρόγραμμα επεξεργασίας (δωρεάν λήψη) για την εμφάνιση δεδομένων θερμοκρασίας, υγρασίας σε ψηφιακή και φόρμα γραφήματος, εμφάνιση ώρας και ημερομηνίας και εκτέλεση χρόνου αντίστροφης μέτρησης