- Απαιτούμενα στοιχεία
- Μονάδα αισθητήρα MPU6050 - Μια σύντομη εισαγωγή
- Διάγραμμα κυκλώματος μετρητή βημάτων Attiny85
- Κατασκευή PCB για Attiny85 Step Counter
- Παραγγελία PCB από PCBWay
- Συναρμολόγηση του ATTiny85 Step Counter PCB
- ATtiny85 Step Counter Code Επεξήγηση
- Ας πάρουμε τον μετρητή βημάτων Arduino για μια βόλτα
Σε αυτό το σεμινάριο, πρόκειται να δημιουργήσουμε ένα εύκολο και φθηνό βηματόμετρο χρησιμοποιώντας ATtiny85 IC, MPU6050 Accelerometer & Gyroscope, και OLED Display Module. Αυτός ο απλός μετρητής βημάτων με βάση το Arduino τροφοδοτείται από ένα κελί 3V, καθιστώντας το εύκολο στη μεταφορά όταν βγαίνετε για μια βόλτα ή τζόκινγκ. Απαιτεί επίσης πολύ λίγα στοιχεία για την κατασκευή και ο κώδικας είναι επίσης σχετικά απλός. Το πρόγραμμα σε αυτό το έργο χρησιμοποιεί το MPU6050 για τη μέτρηση του μεγέθους της επιτάχυνσης κατά μήκος του άξονα 3 (X, Y και Z). Στη συνέχεια υπολογίζει τη διαφορά του μεγέθους επιτάχυνσης μεταξύ των προηγούμενων και των τρεχουσών τιμών. Εάν η διαφορά είναι μεγαλύτερη από ένα ορισμένο κατώφλι (Για περπάτημα μεγαλύτερο από 6 και για τρέξιμο μεγαλύτερο από 10), τότε αυξάνει ανάλογα τον αριθμό βημάτων. Τα συνολικά βήματα που ακολουθούν εμφανίζονται στη συνέχεια στην οθόνη OLED.
Για να χτίσουμε αυτόν τον φορητό μετρητή βημάτων σε ένα PCB, έχουμε κατασκευάσει τις πλακέτες PCB από το PCBWay και θα συναρμολογήσουμε και θα δοκιμάσουμε το ίδιο σε αυτό το έργο. Εάν θέλετε να προσθέσετε περισσότερες δυνατότητες, μπορείτε επίσης να προσθέσετε μια οθόνη Heartbeat σε αυτήν τη ρύθμιση και έχουμε επίσης δημιουργήσει προηγουμένως έναν μετρητή βημάτων επιταχυνσιόμετρου Arduino χρησιμοποιώντας το ADXL335, ελέγξτε τα αν σας ενδιαφέρει.
Απαιτούμενα στοιχεία
Για να δημιουργήσετε αυτό το βηματόμετρο χρησιμοποιώντας το Arduino, θα χρειαστείτε τα ακόλουθα στοιχεία.
- Attiny85 IC
- MPU6050
- Ενότητα οθόνης OLED
- 2 × Πλήκτρα
- Αντιστάσεις 5 × 10KΩ (SMD)
Μονάδα αισθητήρα MPU6050 - Μια σύντομη εισαγωγή
Το MPU6050 βασίζεται σε τεχνολογία Micro-Mechanical Systems (MEMS). Αυτός ο αισθητήρας διαθέτει επιταχυνσιόμετρο 3 αξόνων, γυροσκόπιο 3 αξόνων και ενσωματωμένο αισθητήρα θερμοκρασίας. Μπορεί να χρησιμοποιηθεί για τη μέτρηση παραμέτρων όπως Επιτάχυνση, Ταχύτητα, Προσανατολισμός, Μετατόπιση κ.λπ. Έχουμε προηγουμένως διασυνδέσει το MPU6050 με Arduino και Raspberry pi και έχουμε επίσης κατασκευάσει μερικά έργα που το χρησιμοποιούν όπως: Self Balancing robot, Arduino Digital Protractor και Arduino Inclinometer.
Η μονάδα MPU6050 είναι μικρού μεγέθους και έχει χαμηλή κατανάλωση ενέργειας, υψηλή επανάληψη, υψηλή αντοχή σε κραδασμούς και χαμηλά σημεία τιμών χρήστη. Το MPU6050 διαθέτει διεπαφή διαύλου I2C και βοηθητικού διαύλου I2C και μπορεί εύκολα να επηρεάσει άλλους αισθητήρες όπως μαγνητόμετρα και μικροελεγκτές.
Διάγραμμα κυκλώματος μετρητή βημάτων Attiny85
Το σχήμα για τον μετρητή βημάτων MPU6050 δίνεται παρακάτω:
Η παραπάνω εικόνα δείχνει το διάγραμμα κυκλώματος για διασύνδεση MPU6050 και OLED Display με Attiny85 IC. Η διεπαφή μεταξύ MPU6050, OLED Display και Arduino πρέπει να υλοποιηθεί χρησιμοποιώντας το πρωτόκολλο I2C. Ως εκ τούτου, το SCLPin (PB2) του ATtiny85 συνδέεται με το SCLPin του MPU6050 και OLED Display αντίστοιχα. Παρομοίως, το SDAPin (PB0) του ATtiny85 είναι συνδεδεμένο με το SDAPin του MPU6050 και OLED Display. Δύο κουμπιά συνδέονται επίσης στον ακροδέκτη PB3 & PB4 του ATtiny85 IC. Αυτά τα κουμπιά μπορούν να χρησιμοποιηθούν για κύλιση του κειμένου ή αλλαγή του κειμένου στην οθόνη.
Σημείωση: Ακολουθήστε το προηγούμενο σεμινάριό μας Προγραμματισμός ATtiny85 IC απευθείας μέσω USB χρησιμοποιώντας Digispark Bootloader για να προγραμματίσετε το ATtiny85 IC μέσω USB και Digispark Boot-loader.
Κατασκευή PCB για Attiny85 Step Counter
Το σχηματικό έχει ολοκληρωθεί και μπορούμε να προχωρήσουμε με την τοποθέτηση του PCB. Μπορείτε να σχεδιάσετε το PCB χρησιμοποιώντας οποιοδήποτε λογισμικό PCB της επιλογής σας. Χρησιμοποιήσαμε το EasyEDA για την κατασκευή PCB για αυτό το έργο.
Ακολουθούν οι προβολές 3D μοντέλου του άνω στρώματος και του κάτω στρώματος του Step Counter PCB:
Η διάταξη PCB για το παραπάνω κύκλωμα είναι επίσης διαθέσιμη για λήψη ως Gerber από τον παρακάτω σύνδεσμο:
- Αρχείο Gerber για ATtiny85 Step Counter
Παραγγελία PCB από PCBWay
Τώρα μετά την ολοκλήρωση του σχεδιασμού, μπορείτε να προχωρήσετε στην παραγγελία του PCB:
Βήμα 1: Μπείτε στο https://www.pcbway.com/, εγγραφείτε εάν αυτή είναι η πρώτη σας φορά. Στη συνέχεια, στην καρτέλα Πρωτότυπο PCB, εισαγάγετε τις διαστάσεις του PCB σας, τον αριθμό των επιπέδων και τον αριθμό των PCB που χρειάζεστε.
Βήμα 2: Συνεχίστε κάνοντας κλικ στο κουμπί «Προσφορά τώρα». Θα μεταφερθείτε σε μια σελίδα όπου θα ορίσετε μερικές επιπλέον παραμέτρους όπως τον τύπο πίνακα, τα επίπεδα, το υλικό για PCB, το πάχος και πολλά άλλα, τα περισσότερα από αυτά επιλέγονται από προεπιλογή, εάν επιλέγετε συγκεκριμένες παραμέτρους, μπορείτε να επιλέξετε εδώ.
Βήμα 3: Το τελευταίο βήμα είναι να ανεβάσετε το αρχείο Gerber και να προχωρήσετε στην πληρωμή. Για να βεβαιωθείτε ότι η διαδικασία είναι ομαλή, το PCBWAY επαληθεύει εάν το αρχείο Gerber είναι έγκυρο πριν προχωρήσετε στην πληρωμή. Με αυτόν τον τρόπο, μπορείτε να είστε σίγουροι ότι το PCB σας είναι φιλικό στην κατασκευή και θα σας φτάσει ως δεσμευμένο.
Συναρμολόγηση του ATTiny85 Step Counter PCB
Μετά από λίγες ημέρες, λάβαμε το PCB μας σε ένα τακτοποιημένο πακέτο και η ποιότητα του PCB ήταν καλή όπως πάντα. Το άνω στρώμα και το κάτω στρώμα του πίνακα φαίνονται παρακάτω:
Αφού βεβαιωθείτε ότι τα ίχνη και τα ίχνη ήταν σωστά. Προχώρησα στη συναρμολόγηση του PCB. Η πλήρως συγκολλημένη σανίδα φαίνεται ως εξής:
ATtiny85 Step Counter Code Επεξήγηση
Ο πλήρης μετρητής βημάτων Arduino δίνεται στο τέλος του εγγράφου. Εδώ εξηγούμε ορισμένα σημαντικά μέρη του κώδικα.
Ο κώδικας χρησιμοποιεί τις βιβλιοθήκες TinyWireM.h & TinyOzOLED.h. Μπορείτε να κατεβάσετε τη βιβλιοθήκη TinyWireM από τη Διαχείριση βιβλιοθήκης στο Arduino IDE και να την εγκαταστήσετε από εκεί. Για αυτό, ανοίξτε το Arduino IDE και μεταβείτε στο Σκίτσο <Συμπερίληψη βιβλιοθήκης <Διαχείριση βιβλιοθηκών . Τώρα αναζητήστε το TinyWireM.h και εγκαταστήστε τη βιβλιοθήκη TinyWireM από την Adafruit.
Ενώ η βιβλιοθήκη TinyOzOLED.h μπορεί να ληφθεί από τους δεδομένους συνδέσμους.
Αφού εγκαταστήσετε τις βιβλιοθήκες στο Arduino IDE, ξεκινήστε τον κώδικα συμπεριλαμβάνοντας τα απαραίτητα αρχεία βιβλιοθηκών.
#include "TinyWireM.h" #include "TinyOzOLED.h"
Αφού συμπεριλάβετε τις βιβλιοθήκες, ορίστε τις μεταβλητές για να αποθηκεύσετε τις αναγνώσεις του Επιταχυνσιόμετρου
intaccelX, accelY, accelZ;
Μέσα στο βρόχο ρύθμισης () , αρχικοποιήστε τη βιβλιοθήκη καλωδίων και επαναφέρετε τον αισθητήρα μέσω του μητρώου διαχείρισης ισχύος, επίσης, αρχικοποιήστε την επικοινωνία I2C για OLED Display. Στη συνέχεια, στις επόμενες γραμμές ορίστε τον προσανατολισμό της οθόνης και εισαγάγετε τη διεύθυνση μητρώου για τις τιμές επιταχυνσιόμετρου και γυροσκοπίου.
TinyWireM.begin (); OzOled.init (); OzOled.clearDisplay (); OzOled.setNormalDisplay (); OzOled.sendCommand (0xA1); OzOled.sendCommand (0xC8); TinyWireM.beginTransmission (mpu); TinyWireM.write (0x6B); TinyWireM.write (0b00000000); TinyWireM.write (0x1B);
Στη συνάρτηση getAccel () , ξεκινήστε διαβάζοντας τα δεδομένα του επιταχυνσιόμετρου. Τα δεδομένα για κάθε άξονα αποθηκεύονται σε δύο byte (Άνω & Κάτω) ή καταχωρητές. Για να τα διαβάσετε όλα, ξεκινήστε με τον πρώτο καταχωρητή και χρησιμοποιώντας τη συνάρτηση RequiestFrom () , ζητάμε να διαβάσετε και τους 6 καταχωρητές για τους άξονες X, Y και Z. Στη συνέχεια, διαβάζουμε τα δεδομένα από κάθε καταχωρητή και επειδή τα αποτελέσματα είναι συμπληρωματικά δύο, συνδυάστε τα κατάλληλα για να λάβετε τις πλήρεις τιμές επιταχυνσιόμετρου.
voidgetAccel () {TinyWireM.beginTransmission (mpu); TinyWireM.write (0x3B); TinyWireM.endTransmission (); TinyWireM.requestFrom (mpu, 6); accelX = TinyWireM.read () << 8-TinyWireM.read (); accelY = TinyWireM.read () << 8-TinyWireM.read (); accelZ = TinyWireM.read () << 8-TinyWireM.read (); }
Τώρα μέσα στη συνάρτηση βρόχου, διαβάστε πρώτα τις τιμές των αξόνων X, Y και Z και αφού λάβετε τις τιμές 3 αξόνων, υπολογίστε το συνολικό διάνυσμα επιτάχυνσης λαμβάνοντας την τετραγωνική ρίζα των τιμών αξόνων X, Y και Z. Στη συνέχεια, υπολογίστε τη διαφορά μεταξύ του τρέχοντος διανύσματος και του προηγούμενου διανύσματος και εάν η διαφορά είναι μεγαλύτερη από 6, αυξήστε τον αριθμό βημάτων.
getAccel (); διάνυσμα = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vector προηγούμενο; if (totalvector> 6) {Βήματα ++; } OzOled.printString ("Βήματα", 0, 4); OzOled.printNumber (Βήματα, 0, 8, 4); vectorpre sebelumnya = διάνυσμα; καθυστέρηση (600)
Ας πάρουμε τον μετρητή βημάτων Arduino για μια βόλτα
Μόλις ολοκληρώσετε τη συναρμολόγηση του PCB, συνδέστε το ATtiny85 στην πλακέτα προγραμματιστή και ανεβάστε τον κωδικό. Τώρα πάρτε τη ρύθμιση του μετρητή βημάτων στα χέρια σας και ξεκινήστε να περπατάτε βήμα προς βήμα, θα πρέπει να εμφανίζει τον αριθμό των βημάτων στο OLED. Μερικές φορές αυξάνει τον αριθμό των βημάτων όταν η εγκατάσταση δονείται πολύ γρήγορα ή πολύ αργά.
Έτσι μπορείτε να δημιουργήσετε το δικό σας Step Counter χρησιμοποιώντας τα ATtiny85 και MPU6050. Η πλήρης εργασία του έργου μπορεί επίσης να βρεθεί στο παρακάτω βίντεο. Ελπίζω να σας άρεσε το έργο και βρήκατε ενδιαφέρον να δημιουργήσετε το δικό σας. Εάν έχετε απορίες, αφήστε τις στην παρακάτω ενότητα σχολίων.