- Απαιτούμενο στοιχείο:
- Ρομπότ συναρμολόγησης δαπέδου:
- Καλωδίωση και συνδέσεις:
- Επεξήγηση προγραμματισμού:
Οι αυτόματοι καθαριστές δαπέδων δεν είναι κάτι καινούργιο, αλλά όλοι έχουν κοινό πρόβλημα. Όλα είναι πολύ ακριβά για αυτό που κάνουν. Σήμερα, θα φτιάξουμε ένα αυτόματο ρομπότ οικιακού καθαρισμού που θα κοστίζει μόνο ένα μικρό μέρος αυτών που κυκλοφορούν στην αγορά. Αυτό το ρομπότ μπορεί να ανιχνεύσει τα εμπόδια και τα αντικείμενα μπροστά του και να συνεχίσει να κινείται, αποφεύγοντας τα εμπόδια, μέχρι να καθαριστεί ολόκληρο το δωμάτιο. Έχει μια μικρή βούρτσα προσαρτημένη σε αυτό για να καθαρίσει το πάτωμα.
Ελέγξτε επίσης το ρομπότ Smart Vacuum Cleaning χρησιμοποιώντας το Arduino
Απαιτούμενο στοιχείο:
- Arduino UNO R3.
- Αισθητήρας υπερήχων.
- Ασπίδα Arduino Motor Driver.
- Ρομπότ σασί τροχού.
- Υπολογιστής για προγραμματισμό του Arduino.
- Μπαταρία για τους κινητήρες.
- Μια τράπεζα δύναμης για να τροφοδοτήσει το Arduino
- Μια βούρτσα παπουτσιών.
- Ένα Scotch Brite Scrub Pad.
Σημείωση: Αντί να χρησιμοποιείτε μπαταρίες, μπορείτε επίσης να χρησιμοποιήσετε ένα μακρύ καλώδιο 4 κλώνων όπως και εμείς. Αν και αυτή δεν είναι μια πολύ κομψή ή πρακτική λύση, αλλά μπορείτε να το κάνετε αν δεν σκοπεύετε να το χρησιμοποιείτε καθημερινά στον πραγματικό κόσμο. Βεβαιωθείτε ότι τα μήκη του καλωδίου είναι αρκετά.
Πριν πάμε σε λεπτομέρειες ας συζητήσουμε πρώτα για την Υπερηχητική.
Αισθητήρας υπερήχων HC-SR04:
Ο αισθητήρας υπερήχων χρησιμοποιείται για τη μέτρηση της απόστασης με υψηλή ακρίβεια και σταθερές μετρήσεις. Μπορεί να μετρήσει απόσταση από 2cm έως 400cm ή από 1 ίντσα έως 13 πόδια. Εκπέμπει κύμα υπερήχων στη συχνότητα των 40KHz στον αέρα και εάν το αντικείμενο θα έρθει στο δρόμο του τότε θα αναπηδήσει πίσω στον αισθητήρα. Χρησιμοποιώντας το χρόνο που χρειάζεται για να χτυπήσει το αντικείμενο και να επιστρέψει, μπορείτε να υπολογίσετε την απόσταση.
Ο αισθητήρας υπερήχων χρησιμοποιεί μια τεχνική που ονομάζεται «ECHO». Το "ECHO" είναι απλώς ένα ανακλώμενο ηχητικό κύμα. Θα έχετε ένα ECHO όταν ο ήχος αντανακλά πίσω αφού φτάσει σε αδιέξοδο
Η μονάδα HCSR04 δημιουργεί δονήσεις ήχου σε εμβέλεια υπερήχων όταν κάνουμε τον πείρο «Trigger» υψηλό για περίπου 10us, ο οποίος θα στείλει μια ηχητική έκρηξη 8 κύκλων με την ταχύτητα του ήχου και αφού χτυπήσει το αντικείμενο, θα ληφθεί από τον πείρο Echo. Ανάλογα με το χρόνο που απαιτείται από τη δόνηση ήχου για την επιστροφή, παρέχει την κατάλληλη έξοδο παλμού. Εάν το αντικείμενο είναι μακριά, τότε χρειάζεται περισσότερος χρόνος για να ακουστεί το ECHO και το πλάτος του παλμού εξόδου θα είναι μεγάλο. Και αν το εμπόδιο είναι κοντά, τότε το ECHO θα ακουστεί γρηγορότερα και το πλάτος παλμού εξόδου θα είναι μικρότερο.
Μπορούμε να υπολογίσουμε την απόσταση του αντικειμένου με βάση το χρόνο που χρειάζεται το υπερηχητικό κύμα για να επιστρέψουμε στον αισθητήρα. Εφόσον είναι γνωστή η ώρα και η ταχύτητα του ήχου, μπορούμε να υπολογίσουμε την απόσταση με τους ακόλουθους τύπους.
Απόσταση = (Χρόνος x Ταχύτητα ήχου στον αέρα (343 m / s)) / 2.
Η τιμή διαιρείται με δύο αφού το κύμα κινείται προς τα εμπρός και προς τα πίσω καλύπτοντας την ίδια απόσταση. Έτσι, ο χρόνος για να φτάσετε στο εμπόδιο είναι μόλις ο μισός του συνολικού χρόνου που απαιτείται
Έτσι Απόσταση σε εκατοστό = 17150 * Τ
Έχουμε κάνει προηγουμένως πολλά χρήσιμα έργα χρησιμοποιώντας αυτόν τον αισθητήρα υπερήχων και το Arduino, ελέγξτε τα παρακάτω:
- Μέτρηση απόστασης βάσει Arduino με χρήση αισθητήρα υπερήχων
- Συναγερμός πόρτας χρησιμοποιώντας αισθητήρα Arduino και υπερήχων
- Παρακολούθηση Dumpster βάσει IOT με χρήση του Arduino
Ρομπότ συναρμολόγησης δαπέδου:
Τοποθετήστε το Arduino στο πλαίσιο. Βεβαιωθείτε ότι δεν βραχυκυκλώνετε τίποτα σε περίπτωση που το πλαίσιο σας είναι κατασκευασμένο από μέταλλο. Είναι καλή ιδέα να πάρετε ένα κουτί για το Arduino και το προστατευτικό του κινητήρα. Ασφαλίστε τους κινητήρες με τους τροχούς και το πλαίσιο χρησιμοποιώντας βίδες. Το σασί σας θα πρέπει να έχει επιλογές για να το κάνει αυτό από το εργοστάσιο, αλλά αν όχι, μπορείτε να αυτοσχεδιάσετε μια διαφορετική λύση. Η εποξική δεν είναι κακή ιδέα. Τοποθετήστε τη βούρτσα παπουτσιών στο μπροστινό μέρος του πλαισίου. Χρησιμοποιήσαμε έναν συνδυασμό εποξειδικών βιδών M-Seal και διατρημένων βιδών για αυτό, αν και μπορείτε να χρησιμοποιήσετε οποιαδήποτε άλλη λύση που μπορεί να είναι ευκολότερη για εσάς. Τοποθετήστε το σκούπισμα Scotch Brite πίσω από τη βούρτσα. Χρησιμοποιήσαμε έναν άξονα που διασχίζει το πλαίσιο που τον κρατά στο παιχνίδι, αν και αυτό είναι επίσης αυτοσχεδιασμό. Μπορεί να χρησιμοποιηθεί ένας άξονας με ελατήριο. Τοποθετήστε τις μπαταρίες (ή καλώδια στο πίσω μέρος του πλαισίου).Το εποξειδικό ή η βάση μπαταριών είναι καλοί τρόποι για να το κάνετε αυτό. Η καυτή κόλλα δεν είναι ούτε κακή.
Καλωδίωση και συνδέσεις:
Το κύκλωμα για αυτό το ρομπότ αυτόματου καθαρισμού σπιτιού είναι πολύ απλό. Συνδέστε τον αισθητήρα υπερήχων στο Arduino όπως αναφέρεται παρακάτω και τοποθετήστε το προστατευτικό του μοτέρ στο Arduino όπως κάθε άλλη ασπίδα.
Ο ακροδέκτης Trig της υπερήχων συνδέεται με τον 12ο πείρο στο Arduino, ο πείρος Echo συνδέεται με τον 13ο πείρο, ο πείρος τάσης στον πείρο 5V και ο πείρος γείωσης στον πείρο γείωσης. Ο πείρος Echo και ο πείρος Trig επιτρέπουν στο Arduino να επικοινωνεί με τον αισθητήρα. Η ισχύς παρέχεται στον αισθητήρα μέσω των ακίδων τάσης και γείωσης, και οι ακίδες Trig και Echo του επιτρέπουν να στέλνει και να λαμβάνει δεδομένα με το Arduino. Μάθετε περισσότερα σχετικά με τον αισθητήρα υπερήχων Interfacing με το Arduino εδώ.
Η ασπίδα του κινητήρα πρέπει να έχει τουλάχιστον 2 εξόδους και πρέπει να είναι συνδεδεμένη με τους 2 κινητήρες σας. Κανονικά, αυτές οι έξοδοι φέρουν την ένδειξη "M1" και "M2" ή "Motor 1" και "Motor 2". Συνδέστε τις μπαταρίες και την τράπεζα τροφοδοσίας σας μέχρι το κάλυμμα του κινητήρα και το Arduino αντίστοιχα. Μην τα διασχίζετε. Η ασπίδα του κινητήρα σας πρέπει να διαθέτει κανάλι εισόδου. Εάν χρησιμοποιείτε καλώδια, συνδέστε τα με μετασχηματιστές AC.
Επεξήγηση προγραμματισμού:
Ανοίξτε το Arduino IDE. Επικολλήστε τον πλήρη κωδικό Arduino, που δίνεται στο τέλος αυτού του σεμιναρίου, στο IDE. Συνδέστε το Arduino στον υπολογιστή. Επιλέξτε τη θύρα στο Εργαλεία / Θύρα. Κάντε κλικ στο κουμπί μεταφόρτωσης.
Δοκιμάστε το ρομπότ. Εάν γυρίσει πολύ λίγο ή πολύ, πειραματιστείτε με τις καθυστερήσεις μέχρι τέλειες.
Πριν πάμε στον κώδικα, πρέπει να εγκαταστήσουμε τη βιβλιοθήκη Adafruit Motor Shield για να οδηγήσουμε τους κινητήρες DC. Δεδομένου ότι χρησιμοποιούμε την ασπίδα οδηγού κινητήρα L293D, πρέπει να πραγματοποιήσουμε λήψη της βιβλιοθήκης AFmotor από εδώ. Στη συνέχεια, προσθέστε το στο φάκελο βιβλιοθήκης Arduino IDE. Βεβαιωθείτε ότι το μετονομάσατε σε AFMotor . Μάθετε περισσότερα σχετικά με την εγκατάσταση αυτής της βιβλιοθήκης.
Ο κώδικας είναι εύκολος και μπορεί να γίνει κατανοητός εύκολα, αλλά εδώ έχουμε εξηγήσει μερικά μέρη του:
Ο παρακάτω κώδικας ρυθμίζει το ρομπότ. Αρχικά συμπεριλάβαμε τη Βιβλιοθήκη Adafruit για οδήγηση των κινητήρων με ασπίδα οδηγού. Μετά από αυτό, ορίσαμε Trig pin και Echo pin. Ρυθμίζει επίσης τους κινητήρες. Ρυθμίζει την έξοδο Trig και την είσοδο Echo.
#include #define trigPin 12 #define echoPin 13 AF_DCMotor motor1 (1, MOTOR12_64KHZ); AF_DCMotor motor2 (2, MOTOR12_8KHZ); άκυρη ρύθμιση () {pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); }
Ο παρακάτω κώδικας λέει στο Arduino να βρει τις ακόλουθες εντολές. Μετά από αυτό, χρησιμοποιεί τον αισθητήρα για τη μετάδοση και τη λήψη ήχων υπερήχων. Υπολογίζει την απόσταση από το αντικείμενο όταν τα κύματα υπερήχων αναπηδήσουν, αφού σημειώσει ότι το αντικείμενο βρίσκεται εντός της καθορισμένης απόστασης, λέει στον Arduino να περιστρέψει τους κινητήρες ανάλογα.
κενός βρόχος () {μεγάλη διάρκεια, απόσταση; digitalWrite (trigPin, LOW); καθυστέρηση Μικροδευτερόλεπτα (2); digitalWrite (trigPin, HIGH); καθυστέρηση Μικροδευτερόλεπτα (10); digitalWrite (trigPin, LOW); διάρκεια = pulseIn (echoPin, HIGH); απόσταση = (διάρκεια / 2) / 29.1; εάν (απόσταση <20) {motor1.setSpeed (255); motor2.setSpeed (0); motor1.run (ΠΙΣΩ); motor2.run (ΠΙΣΩ); καθυστέρηση (2000); // ΑΛΛΑΓΗ ΑΥΤΟΥ ΤΟΥ ΣΥΜΦΩΝΑ ΜΕ ΤΟ ΠΟΤΕ ΤΟ ΡΟΜΠΟΤ ΣΤΡΩΜΑ.
Αυτό κάνει το ρομπότ να περιστρέφεται περιστρέφοντας έναν κινητήρα και κρατώντας τον άλλο στάσιμο.
Ο παρακάτω κώδικας κάνει το ρομπότ να γυρίζει και τους δύο κινητήρες στην ίδια κατεύθυνση για να το κάνει να κινείται προς τα εμπρός έως ότου εντοπίσει ένα αντικείμενο στο προαναφερθέν όριο.
αλλιώς {motor1.setSpeed (160); // ΑΛΛΑΓΗ ΑΥΤΟΥ ΤΟΥ ΣΥΜΦΩΝΑ ΜΕ ΤΟ ΓΡΗΓΟΡΟ ΓΙΑ ΤΟ ΡΟΜΠΟΤ ΣΑΣ ΠΡΕΠΕΙ ΝΑ ΠΑΡΕΤΕ motor2.setSpeed (160); // ΑΛΛΑΓΗ ΑΥΤΗΣ ΣΤΗΝ ΙΔΙΑ ΑΞΙΑ ΕΙΣΤΕ ΤΟ ΠΑΝΩ. motor1.run (Μπροστά); motor2.run (Μπροστά); }