Στον κόσμο, κάθε μέρα όλο και πιο δημοφιλής μεταξύ των ρομποτικών καθαριστικών. Χάρη σε τέτοιους μικρούς βοηθούς, το σπίτι γίνεται πολύ καθαρότερο και πολύ λιγότερες προσπάθειες τίθενται σε καθαρισμό. Υπάρχουν πολλές διαφορετικές τροποποιήσεις των ρομπότ, όλες διαφέρουν ως προς τη λειτουργικότητα, το μέγεθος και άλλες παραμέτρους.
Συγκεκριμένα, αυτό το άρθρο θα εξετάσει ένα παράδειγμα του πώς
το κάνετε μόνοι σας Μπορείτε να φτιάξετε ένα απλό ρομπότ, το οποίο θα κενώσει το δωμάτιο όταν είναι απαραίτητο. Ο ελεγκτής χρησιμοποιείται εδώ ως "εγκέφαλος"
Arduino.
Υλικά και εργαλεία για την κατασκευή του ρομπότ:- Πίνακας που ελέγχει τη λειτουργία κινητήρων (ασπίδα κινητήρα Arduino).
- Πίνακας Arduino.
- δύο κινητήρες με γρανάζια (κινητήρες σε 3 βολτ και ταχύτητα περιστροφής περίπου 100 σ.α.λ.) ·
- τροχοί (μπορούν να κατασκευαστούν από δοχεία αλουμινίου ·
- ψυγείο από τροφοδοτικό υπολογιστή (δυνατός τόσο για 5V όσο και για 12V).
- Τροφοδοσία 5V (μπαταρία).
- καλώδια και πλάκα για την εγκατάσταση ραδιοσυχνοτήτων.
- για να το κάνετε θα χρειαστείτε ένα πλαστικό δοχείο.
- Ένα άλλο μικρό δοχείο για τη δημιουργία κάδου απορριμμάτων.
- θερμή κόλλα ·
- μαγνήτες.
- χαρτόνι.
Η διαδικασία κατασκευής του ρομπότ:
Πρώτο βήμα. Λογισμικό μέρος του ρομπότ και σκίτσο:
Η καρδιά του ρομπότ είναι ο ελεγκτής Arduino. Για να το προγραμματίσετε θα χρειαστείτε υπολογιστή και ειδικό λογισμικό.
Για να κατεβάσετε το σκίτσο στο διοικητικό συμβούλιο, θα χρειαστείτε το πρόγραμμα Arduino IDE. Παρακάτω μπορείτε να πάρετε τον κωδικό προγράμματος του ρομπότ και να δείτε το κύριο κύκλωμα.
/*
Πρόγραμμα για τον έλεγχο ενός ρομπότ με δύο κινητήρες.
Το ρομπότ γυρίζει όταν οι κινητήρες αλλάζουν ταχύτητα και κατεύθυνση.
Οι μπροστινοί προφυλακτήρες στις αριστερές και στις δεξιά πλευρές ανιχνεύουν εμπόδια.
Οι υπερήχων μπορούν να συνδεθούν σε αναλογικές εισόδους (δοκιμασμένες σε LV-MaxSonar-EZ1):
- βάλτε καρφίτσες σε σειριακούς πίνακες με την ακόλουθη σειρά: αριστερά, δεξιά, μπροστά, άλλα ..
Παραδείγματα:
1. μόνο τα αριστερά και δεξιά σόναρ που συνδέονται με τις ακίδες 2 και 3: sonarPins [] = {2,3}
2. αριστερά, δεξιά και μπροστά σόναρ που συνδέονται με τους ακροδέκτες 2, 3 και 5: sonarPins [] = {2,3,5}
3. Μόνο μπροστά βυθόμετρο που συνδέεται στον ακροδέκτη 5: sonarPins [] = {-1, -1.5}
4. Μόνο το αριστερό ηχοσύστημα που συνδέεται με τον ακροδέκτη 2: sonarPins [] = {2}
5. Μόνο σωστός σόναρ συνδεδεμένος με ακίδες 3: sonarPins [] = {-1,3}
6.5 ηχάνες που συνδέονται με ακίδες 1,2,3,4,5: sonarPins [] = {1,2,3,4,5}
Η θωράκιση του κινητήρα χρησιμοποιείται για τη λειτουργία κινητήρων.
*/
const int Baud = 9600; // ταχύτητα θύρας UART
// ιδιότητες βυθομέτρου
int sonarPins [] = {1, 2}; // Αναλογικός ακροδέκτης Αριθμοί σε αισθητήρα σόναρ Καρφίτσωμα AN
const long MinLeftDistance = 20; // Ελάχιστη επιτρεπόμενη αριστερή απόσταση
const long MinRightDistance = 20; // Ελάχιστη επιτρεπόμενη απόσταση
const long MinFrontDistance = 15; // Ελάχιστη επιτρεπόμενη απόσταση
const int SamplesAmount = 15; // περισσότερα δείγματα - ομαλότερη μέτρηση και μεγαλύτερη καθυστέρηση
const int SonarDisplayFrequency = 10; // εμφάνιση μόνο μιας από αυτές τις γραμμές - όχι όλες
int sonarDisplayFrequencyCount = 0;
const μακρύς παράγοντας = 2,54 / 2;
μακρά δείγματα [μέγεθοςof (sonarPins)] [SamplesAmount];
int δείγμαIndex [sizeof (sonarPins)];
// δεξιά πλευρά
const int pinRightMotorDirection = 4; // αυτό μπορεί να επισημανθεί στην ασπίδα του κινητήρα ως "DIR A"
const int pinRightMotorSpeed = 3; // αυτό μπορεί να επισημανθεί στην ασπίδα του κινητήρα ως "PWM A"
const int pinRightBumper = 2; // όπου συνδέεται ο σωστός προφυλακτήρας
// αριστερή πλευρά
const int pinLeftMotorDirection = 7; // αυτό μπορεί να επισημανθεί στην ασπίδα του κινητήρα ως "DIR B"
const int pinLeftMotorSpeed = 6; // αυτό μπορεί να επισημανθεί στην ασπίδα του κινητήρα ως "PWM B"
const int pinLeftBumper = 8; // όπου συνδέεται ο σωστός προφυλακτήρας
// αποσυνδέστε τις επόμενες 2 γραμμές αν το Motor Shield έχει σπάσει
// const int pinRightMotorBreak = PUT_BREAK_PIN_HERE; // αυτό μπορεί να επισημανθεί στην ασπίδα του κινητήρα ως "BREAKE A"
// const int pinLeftMotorBreak = PUT_BREAK_PIN_HERE; // αυτό μπορεί να επισημανθεί στην ασπίδα του κινητήρα ως "BREAKE B"
// πεδία
const int turnRightTimeout = 100;
const int turnLeftTimeout = 150;
// να ρυθμίσει τον μετρητή πόσο καιρό ο κινητήρας λειτουργεί: N / 10 (σε χιλιοστά του δευτερολέπτου)
int countDownWhileMovingToRight;
int countDownWhileMovingToLeft;
// Αρχικοποίηση
άκυρη ρύθμιση () {
Serial.begin (Baud);
initPins ();
// αποσυνδέστε τις επόμενες 4 γραμμές εάν το Motor Shield έχει σπάσει
// pinMode (pinLeftMotorBreak, OUTPUT).
// pinMode (pinRightMotorBreak, OUTPUT).
// digitalWrite (pinLeftMotorBreak, LOW). // απενεργοποίηση διακοπών
// digitalWrite (pinRightMotorBreak, LOW). // απενεργοποίηση διακοπών
runRightMotorForward ();
runLeftMotorForward ();
startMotors ();
}
// Κύριος βρόχος
void loop () {
verifyAndSetRightSide ();
verifyAndSetLeftSide ();
processRightSide ();
processLeftSide ();
καθυστέρηση (10), // επαναλαμβάνεται κάθε 10 χιλιοστά του δευτερολέπτου
}
//---------------------------------------------------
void initPins () {
pinMode (pinRightMotorDirection, OUTPUT);
pinMode (pinRightMotorSpeed, OUTPUT);
pinMode (pinRightBumper, είσοδος);
pinMode (pinLeftMotorDirection, OUTPUT);
pinMode (pinLeftMotorSpeed, OUTPUT);
pinMode (pinLeftBumper, είσοδος);
για το (int i = 0, i <μέγεθοςof (sonarPins), i ++)
pinMode (sonarPins [i], είσοδος);
}
void startMotors () {
setMotorSpeed (pinRightMotorSpeed, 255);
setMotorSpeed (pinLeftMotorSpeed, 255);
}
void waitWhileAnyBumperIsPressed () {
ενώ (checkBumperIsNotPressed (pinRightBumper)
&& checkBumperIsNotPressed (pinLeftBumper)) {
καθυστέρηση (20), // ελέγξτε κάθε 20 χιλιοστά του δευτερολέπτου
}
}
void processRightSide () {
αν (countDownWhileMovingToRight MinFrontDistance) // ελέγχει εάν δεν επιτυγχάνεται η ελάχιστη επιτρεπόμενη εμπρόσθια απόσταση
επιστροφή
αν (checkCounterIsNotSet (countDownWhileMovingToLeft)) // αν ο μετρητής δεν μετράει ακόμα
runLeftMotorBackward (); // εκτελέστε το σωστό μοτέρ προς τα πίσω
countDownWhileMovingToLeft = turnLeftTimeout; // ρυθμίστε τον μετρητή στη μέγιστη τιμή για να ξεκινήσετε την καταμέτρηση προς τα κάτω
}
bool checkCounterIsNotSet (int μετρητής) {
μετρητής επιστροφής = ΔείγματαΑποσύνδεσης)
δείγμαIndex [pinIndex] = 0;
δείγματα [pinIndex] [δείγμαIndex [pinIndex]] = τιμή;
επιστροφή true;
}
μακρύς υπολογισμόςAvarageDistance (int pinIndex) {
μακρύς μέσος όρος = 0.
για (int i = 0, i μέσος όρος + = δείγματα [pinIndex] [i];
μέσος όρος επιστροφής / δείγματαΑσυνδυασμός.
}
Βήμα δεύτερο Προετοιμασία των βασικών στοιχείων του ρομπότ
Το χαρτόνι χρησιμοποιείται ως βάση για τη στερέωση όλων των εξαρτημάτων του ρομπότ, συμπεριλαμβανομένης της μπαταρίας, των πινακίδων ελέγχου και των κινητήρων.
Ο στρόβιλος πρέπει να είναι κατάλληλα κολλημένος ή με άλλο τρόπο στερεωμένο σε ένα μικρό πλαστικό δοχείο, στο οποίο πρέπει να κατασκευαστεί μια οπή για την απορρόφηση ακαθαρσιών. Στη συνέχεια, αυτός ο σχεδιασμός είναι κολλημένος στη βάση του χαρτονιού. Επιπλέον, το δοχείο πρέπει να διαθέτει μια πρόσθετη οπή μέσω της οποίας θα εξέρχεται ο αέρας. Θα πρέπει να υπάρχει ένα φίλτρο, ο συγγραφέας αποφάσισε να χρησιμοποιήσει συνθετικό ύφασμα για αυτούς τους σκοπούς.
Στο επόμενο στάδιο, ο ψύκτης πρέπει να κολληθεί με σερβοειδή, και στη συνέχεια αυτό το σχέδιο είναι εγκατεστημένο σε μια βάση από χαρτόνι.
Βήμα τρίτο Κάνουμε τροχούς για το ρομπότ
Για να φτιάξετε τους τροχούς που χρειάζεστε για να παίρνετε δοχεία αλουμινίου και κόψτε τα πάνω και κάτω μέρη από αυτά. Στη συνέχεια, αυτά τα στοιχεία είναι κολλημένα μαζί. Τώρα παραμένει μόνο η σωστή τοποθέτηση των τροχών στους σερβοκινητήρες με κόλλα θερμής τήξης. Είναι σημαντικό να κατανοήσουμε ότι οι τροχοί πρέπει να στερεώνονται σαφώς στο κέντρο των άξονων του σερβο. Διαφορετικά το ρομπότ θα οδηγήσει στραβά, και θα χρησιμοποιήσει την ενέργεια.
Βήμα τέσσερα Η τελική διαδικασία συναρμολόγησης ρομπότ
Αφού εγκατασταθεί η μπαταρία και όλα τα στοιχεία του ρομπότ είναι συνδεδεμένα, παραμένει η τοποθέτηση της δομής σε μια ανθεκτική θήκη. Ένα μεγάλο πλαστικό δοχείο είναι ιδανικό για αυτούς τους σκοπούς. Πρώτα απ 'όλα, πρέπει να γίνουν τρύπες στη μύτη του σώματος ρομπότ, μέσω των οποίων οι επαφές θα εξάγονται που θα δώσουν ένα σήμα ηλεκτρονικά όταν το ρομπότ συγκρούεται με ένα εμπόδιο.
Προκειμένου να αφαιρεθεί εύκολα και γρήγορα η θήκη, οι μαγνήτες χρησιμοποιούνται για την επιδιόρθωσή της, στην περίπτωση αυτή υπάρχουν οκτώ. Οι μαγνήτες είναι κολλημένοι στο εσωτερικό της ηλεκτρικής σκούπας και στο ίδιο το δοχείο, 4 τεμάχια το καθένα.
Αυτό είναι όλο. Τώρα το ρομπότ συναρμολογείται και μπορεί να δοκιμαστεί στην πράξη. Παρά το γεγονός ότι το ρομπότ δεν είναι σε θέση να επαναφορτίσει μόνο του και έχει μάλλον περιορισμένη ικανότητα από άποψη πλοήγησης, σε μισή ώρα θα είναι σε θέση να καθαρίσει τα σκουπίδια στην κουζίνα ή στο μικρό δωμάτιο. Τα πλεονεκτήματα του ρομπότ είναι ότι όλα τα εξαρτήματα μπορούν να βρεθούν εύκολα και δεν είναι πολύ ακριβά. Δεν υπάρχει αμφιβολία σπιτικό Μπορείτε να βελτιώσετε προσθέτοντας νέους αισθητήρες και άλλα στοιχεία.