- Απαιτούμενα στοιχεία
- Επιταχυνσιόμετρο ADXL335
- Διάγραμμα κυκλώματος
- Πώς λειτουργεί το βηματόμετρο;
- Προγραμματισμός του μετρητή βημάτων Arduino
- Δοκιμή του βηματομέτρου Arduino
Οι μπάντες γυμναστικής γίνονται πολύ δημοφιλείς στις μέρες μας, οι οποίες όχι μόνο μετράνε τα βήματα αλλά και παρακολουθούν τις θερμίδες που καίγονται, εμφανίζουν τον καρδιακό ρυθμό, το χρόνο προβολής και πολλά άλλα. Και αυτές οι συσκευές IoT συγχρονίζονται με το σύννεφο, έτσι ώστε να μπορείτε να αποκτήσετε εύκολα όλο το ιστορικό της φυσικής σας δραστηριότητας σε ένα smartphone. Έχουμε επίσης δημιουργήσει ένα σύστημα παρακολούθησης ασθενών με βάση το IoT όπου τα κρίσιμα δεδομένα έχουν σταλεί στο ThingSpeak για παρακολούθηση από οπουδήποτε.
Τα βηματόμετρα είναι οι συσκευές που χρησιμοποιούνται μόνο για τη μέτρηση των βημάτων. Έτσι, σε αυτό το σεμινάριο, πρόκειται να φτιάξουμε ένα εύκολο και φτηνό DIY Pedometer χρησιμοποιώντας το Arduino και το επιταχυνσιόμετρο. Αυτό το βηματόμετρο θα μετρήσει τον αριθμό των βημάτων και θα τα εμφανίσει σε μια μονάδα LCD 16x2. Αυτό το βηματόμετρο μπορεί να ενσωματωθεί σε αυτό το Arduino Smart Watch.
Απαιτούμενα στοιχεία
- Arduino Nano
- Επιταχυνσιόμετρο ADXL 335
- LCD 16 * 2
- Ενότητα LCD I2C
- Μπαταρία
Επιταχυνσιόμετρο ADXL335
Το ADXL335 είναι ένα πλήρες αναλογικό επιταχυνσιόμετρο 3 αξόνων και λειτουργεί σύμφωνα με την αρχή της χωρητικής ανίχνευσης. Πρόκειται για μια μικρή, λεπτή μονάδα χαμηλής ισχύος με αισθητήρα πολυπυριτίου επιφανειακής μηχανικής και κύκλωμα κλιματισμού σημάτων. Το επιταχυνσιόμετρο ADXL335 μπορεί να μετρήσει τη στατική καθώς και τη δυναμική επιτάχυνση. Εδώ σε αυτό το έργο Arduino Pedometer, το επιταχυνσιόμετρο ADXL335 θα λειτουργεί ως αισθητήρας Pedometer.
Το Επιταχυνσιόμετρο είναι μια συσκευή που μπορεί να μετατρέψει την επιτάχυνση σε οποιαδήποτε κατεύθυνση στην αντίστοιχη μεταβλητή τάση. Αυτό επιτυγχάνεται με τη χρήση πυκνωτών (αναφορά εικόνας), καθώς το Accel κινείται, ο πυκνωτής που υπάρχει μέσα σε αυτό, θα υποστεί επίσης αλλαγές (αναφορά εικόνας) με βάση την κίνηση, καθώς η χωρητικότητα ποικίλλει, μπορεί επίσης να επιτευχθεί μεταβλητή τάση.
Ακολουθούν οι εικόνες για το Επιταχυνσιόμετρο από την μπροστινή και την πίσω πλευρά μαζί με την περιγραφή του πείρου-
Καρφίτσα Περιγραφή του επιταχυνσιόμετρου:
- Η παροχή Vcc- 5 volt πρέπει να συνδεθεί σε αυτόν τον πείρο.
- X-OUT- Αυτός ο πείρος δίνει μια αναλογική έξοδο σε κατεύθυνση x
- Y-OUT- Αυτός ο ακροδέκτης δίνει αναλογική έξοδο προς την κατεύθυνση y
- Z-OUT- Αυτός ο πείρος δίνει μια αναλογική έξοδο σε κατεύθυνση z
- GND- Γείωση
- ST- Αυτός ο πείρος χρησιμοποιείται για καθορισμένη ευαισθησία του αισθητήρα
Κατασκευάζουμε πολλά έργα χρησιμοποιώντας το Accelerometer ADXL335, συμπεριλαμβανομένων ρομπότ ελεγχόμενων χειρονομιών, συναγερμού ανιχνευτή σεισμού, παιχνιδιών πινγκ πονγκ κ.λπ.
Διάγραμμα κυκλώματος
Το διάγραμμα κυκλώματος για τον μετρητή βημάτων Arduino Accelerometer δίνεται παρακάτω.
Σε αυτό το κύκλωμα, επικοινωνούμε με το Arduino Nano με το ADXL335 Accelerometer. Οι ακίδες X, Y και Z του επιταχυνσιόμετρου συνδέονται με αναλογικούς πείρους (A1, A2 & A3) του Arduino Nano. Για τη διασύνδεση μονάδων LCD 16x2 με το Arduino, χρησιμοποιούμε τη μονάδα I2C. Οι ακίδες SCL & SDA της μονάδας I2C συνδέονται με τις ακίδες A5 και A4 του Arduino Nano, αντίστοιχα. Πλήρεις συνδέσεις δίνονται στον παρακάτω πίνακα:
Arduino Nano | ADXL335 |
3.3V | VCC |
GND | GND |
Α'1 | Χ |
Α2 | Υ |
Α3 | Ζ |
Arduino Nano | Ενότητα LCD I2C |
5V | VCC |
GND | GND |
Α4 | SDA |
Α5 | SCL |
Κατασκευάσαμε αρχικά αυτό το βηματόμετρο χρησιμοποιώντας τη ρύθμιση Arduino σε ένα breadboard
Και μετά από επιτυχείς δοκιμές το αναπαραγάγαμε στο Perfboard κολλώντας όλο το στοιχείο στο Perfboard όπως φαίνεται παρακάτω:
Πώς λειτουργεί το βηματόμετρο;
Ένα βηματόμετρο υπολογίζει το συνολικό αριθμό των βημάτων που έκανε ένα άτομο χρησιμοποιώντας τα τρία συστατικά της κίνησης που είναι εμπρός, κάθετα και πλευρικά. Το σύστημα βηματόμετρου χρησιμοποιεί ένα επιταχυνσιόμετρο για να πάρει αυτές τις τιμές. Το επιταχυνσιόμετρο ενημερώνει συνεχώς τις μέγιστες και ελάχιστες τιμές της επιτάχυνσης 3 αξόνων μετά από κάθε καθορισμένο αριθ. δειγμάτων. Η μέση τιμή αυτών των 3 αξόνων (Max + Min) / 2, ονομάζεται δυναμικό επίπεδο κατωφλίου και αυτή η τιμή κατωφλίου χρησιμοποιείται για να αποφασίσει εάν το βήμα έχει ληφθεί ή όχι.
Κατά την εκτέλεση, το βηματόμετρο μπορεί να είναι σε οποιοδήποτε προσανατολισμό, οπότε το βηματόμετρο υπολογίζει τα βήματα χρησιμοποιώντας τον άξονα του οποίου η μεγαλύτερη αλλαγή επιτάχυνσης είναι η μεγαλύτερη.
Τώρα επιτρέψτε μου να σας δώσω μια γρήγορη αναδρομή στη λειτουργία αυτού του Arduino Pedometer:
- Πρώτον, το βηματόμετρο ξεκινά τη βαθμονόμηση μόλις ενεργοποιηθεί.
- Στη συνέχεια, στη λειτουργία κενού βρόχου , λαμβάνει συνεχώς τα δεδομένα από τον άξονα X, Y και Z.
- Μετά από αυτό, υπολογίζει το συνολικό διάνυσμα επιτάχυνσης από το σημείο εκκίνησης.
- Το διάνυσμα επιτάχυνσης είναι η τετραγωνική ρίζα (x ^ 2 + y ^ 2 + z ^ 2) των τιμών X, Y και Z-axis.
- Στη συνέχεια, συγκρίνει τις μέσες τιμές επιτάχυνσης με τις τιμές κατωφλίου για να μετρήσει τον αριθμό βήματος.
- Εάν το διάνυσμα επιτάχυνσης υπερβεί την τιμή κατωφλίου, τότε αυξάνει τον αριθμό βημάτων. Διαφορετικά, απορρίπτει τις άκυρες δονήσεις.
Προγραμματισμός του μετρητή βημάτων Arduino
Ο πλήρης Arduino Step Counter Code δίνεται στο τέλος αυτού του εγγράφου. Εδώ εξηγούμε μερικά σημαντικά αποσπάσματα αυτού του κώδικα.
Ως συνήθως, ξεκινήστε τον κώδικα συμπεριλαμβάνοντας όλες τις απαιτούμενες βιβλιοθήκες. Το επιταχυνσιόμετρο ADXL335 δεν απαιτεί βιβλιοθήκη καθώς δίνει αναλογική έξοδο.
#περιλαμβάνω
Μετά από αυτό, ορίστε το Arduino Pins, όπου είναι συνδεδεμένο το επιταχυνσιόμετρο.
const int xpin = A1; const int ypin = A2; const int zpin = A3;
Ορίστε την τιμή κατωφλίου για το επιταχυνσιόμετρο. Αυτή η τιμή κατωφλίου θα συγκριθεί με το διάνυσμα επιτάχυνσης για τον υπολογισμό του αριθμού των βημάτων.
κατώφλι float = 6;
Μέσα στην κενή ρύθμιση , η λειτουργία βαθμονομεί το σύστημα όταν τροφοδοτείται.
μετρώ την διάμετρο();
Μέσα στη λειτουργία κενών βρόχων , θα διαβάσει τις τιμές άξονα X, Y και Z για 100 δείγματα.
για (int a = 0; a <100; a ++) {xaccl = float (analogRead (xpin) - 345); καθυστέρηση (1) yaccl = float (analogRead (ypin) - 346); καθυστέρηση (1) zaccl = float (analogRead (zpin) - 416); καθυστέρηση (1)
Αφού λάβετε τις τιμές 3 αξόνων, υπολογίστε το συνολικό διάνυσμα επιτάχυνσης λαμβάνοντας την τετραγωνική ρίζα των αξόνων X, Y και Z.
totvect = sqrt (((xaccl - xavg) * (xaccl - xavg)) + ((yaccl - yavg) * (yaccl - yavg)) + ((zval - zavg) * (zval - zavg)));
Στη συνέχεια, υπολογίστε τον μέσο όρο των μέγιστων και ελάχιστων τιμών διανύσματος επιτάχυνσης.
totave = (totvect + totvect) / 2;
Τώρα συγκρίνετε τη μέση επιτάχυνση με το όριο. Εάν ο μέσος όρος είναι μεγαλύτερος από το όριο, αυξήστε τον αριθμό βημάτων και αυξήστε τη σημαία.
if (totave> threshold && flag == 0) {βήματα = βήματα + 1; σημαία = 1; }
Εάν ο μέσος όρος είναι μεγαλύτερος από το κατώφλι, αλλά η σημαία είναι ανυψωμένη, τότε μην κάνετε τίποτα.
αλλιώς εάν (totave> όριο && flag == 1) {// Μην μετράτε}
Εάν ο συνολικός μέσος όρος είναι μικρότερος από το όριο και ανυψωθεί η σημαία, τοποθετήστε τη σημαία προς τα κάτω.
εάν (totave <threshold && flag == 1) {flag = 0; }
Εκτυπώστε τον αριθμό των βημάτων στη σειριακή οθόνη και στην οθόνη LCD.
Serial.println (βήματα); lcd.print ("Βήματα:"); lcd.print (βήματα);
Δοκιμή του βηματομέτρου Arduino
Μόλις το υλικό και ο κωδικός σας είναι έτοιμοι, συνδέστε το Arduino στον φορητό υπολογιστή και ανεβάστε τον κωδικό. Τώρα πάρτε τη ρύθμιση του βηματόμετρου στα χέρια σας και ξεκινήστε να περπατάτε βήμα προς βήμα, θα πρέπει να εμφανίζει τον αριθμό των βημάτων στην οθόνη LCD. Μερικές φορές αυξάνει τον αριθμό των βημάτων όταν το βηματόμετρο δονείται πολύ γρήγορα ή πολύ αργά.
Το πλήρες βίντεο και ο κωδικός εργασίας για το βηματόμετρο ADXL335 Arduino δίνονται παρακάτω.