Πίνακας περιεχομένων:
- Βήμα 1: Κριτήρια
- Βήμα 2: Περίβλημα
- Βήμα 3: Ηλεκτρονικά
- Βήμα 4: Αποδέκτης λογαριασμών
- Βήμα 5: Δοκιμή
- Βήμα 6: Ηλεκτρονικά στο περίβλημα
- Βήμα 7: Τελική δοκιμή
- Βήμα 8: Κωδικός Arduino + Σύνδεσμοι
Βίντεο: Αυτόματο μηχάνημα αυτόματης πώλησης με βάση το Arduino: 8 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:37
Πήραμε την ιδέα μας από τον καθηγητή μηχανικής μας - όλοι σκεφτήκαμε ότι θα ήταν καλή ιδέα να έχουμε ένα μηχάνημα αυτόματης πώλησης για την τάξη μας και είπε - "ωραία, φτιάξε ένα". Αποδείχθηκε ότι ένα μηχάνημα αυτόματης πώλησης θα ήταν ένα μεγάλο ανώτερο έργο και όταν ολοκληρωθεί θα λειτουργούσε ως έρανος για το πρόγραμμα μηχανικής μας.
Ονομάζεται μηχάνημα αυτόματης πώλησης 1 $ όχι επειδή κοστίζει 1 $, αλλά απλώς επειδή ο αποδέκτης λογαριασμών είναι ένα παλαιότερο μοντέλο που παίρνει μόνο λογαριασμούς 1 $:)
Βήμα 1: Κριτήρια
Θέλαμε ένα μηχάνημα αυτόματης πώλησης που θα χωρούσε πάνω από ένα γραφείο και δεν θα ήταν πολύ ψηλό. Πήραμε τις διαστάσεις του πλάτους του τραπεζιού για να βεβαιωθούμε ότι δεν είχαμε τον αυτόματο πωλητή να κρέμεται από το τραπέζι.
Βήμα 2: Περίβλημα
Φτιάξαμε το κουτί μας 19 ίντσες πλάτος και 17 ίντσες μήκος και 25 ίντσες ύψος. Χρησιμοποιήσαμε μια μηχανή CNC για να κόψουμε το ξύλο μας. Χρησιμοποιήσαμε solidworks για να σχεδιάσουμε τα πρόσωπα και στη συνέχεια τα μετατρέψαμε σε τύπους αρχείων σχεδίασης για το λογισμικό CNC. Τρίψαμε τις άκρες και μετά τις βιδώσαμε με 1”. Συνδέσαμε τον μπροστινό πίνακα με μεντεσέ και χρησιμοποιήσαμε βίδες ¼,, έτσι ώστε οι βίδες να μην περάσουν στην άλλη πλευρά. Χρησιμοποιήσαμε επίσης ακρυλικό γυαλί το οποίο κόψαμε για τα ράφια και το μπροστινό πάνελ.
Βήμα 3: Ηλεκτρονικά
Arduino
Χρησιμοποιήσαμε έναν πίνακα Arduino Mega 2560. Χρησιμοποιήσαμε επίσης Adafruit Motor Boards για να μπορούν να τρέχουν τους βηματικούς κινητήρες. Προσθέσαμε καρφίτσες στα adafruit για να συνδεθούν μεταξύ τους. Τα έβαλαν το ένα πάνω στο άλλο. Το καθένα μπορεί να τρέξει 2 κινητήρες. Επίσης, σημειώστε ότι ο βραχυκυκλωτήρας πρέπει να συνδεθεί.
Τροφοδοσία επιφάνειας εργασίας
Bestek ATX Τροφοδοσία χρησιμοποιώντας προσαρμογέα για να διατηρήσετε την τροφοδοσία αναμμένη. Ο προσαρμογέας προέρχεται από το sparkfun.com και παρέχει διάφορες τάσεις.
Πηνία σε Motors
Φτιάξαμε μοντέλα solidworks για να κρατήσουμε τον κινητήρα, να πιάσουμε το πηνίο και να οδηγήσουμε το πηνίο κατά μήκος του ράφι. Είχαμε πετύχει τα πηνία μας από το ebay και τα κόψαμε σε διάσταση. Έπρεπε επίσης να λυγίσουμε 3 από αυτά αφού δεν πήραμε 6 με τις ευθείες άκρες για να συνδεθούμε με τη βάση του πηνίου. Στη συνέχεια τα εκτυπώσαμε 3D και τα συνδέσαμε στο πηνίο και τον κινητήρα. Τα βηματικά μοτέρ που είχαμε, τα βάλαμε σε μια βάση. Θα κρατούσε τον κινητήρα και θα οδηγούσε το πηνίο σε ευθεία διαδρομή.
LCD και πληκτρολόγιο
Χρησιμοποιήσαμε ένα πληκτρολόγιο Arduino και μια οθόνη LCD συνδεδεμένη σε καλώδιο 5V στον προσαρμογέα τροφοδοσίας για τροφοδοσία και στη συνέχεια στον ίδιο πίνακα Arduino
Καλωδίωση
Συνιστούμε τη χρήση καλωδίων 18 μετρητών. Στην περίπτωσή μας, έπρεπε να συμβιβαστούμε με τη χρήση διαφόρων μετρητών, επειδή τελειώσαμε με 18 μετρητές
Λωρίδα LED
Χρησιμοποιήσαμε μια λωρίδα LED για να φωτίσουμε το μηχάνημα. Το συνδέσαμε σε καλώδιο 12V στον προσαρμογέα τροφοδοσίας. Η λωρίδα LED που χρησιμοποιήσαμε ευτυχώς είχε ένα + και - που έκανε τη διαδικασία σύνδεσης ευκολότερη.
Βήμα 4: Αποδέκτης λογαριασμών
Χρησιμοποιήσαμε ένα Coinco BA30B ως αποδέκτη λογαριασμών. Έπρεπε να συνδεθεί απευθείας στον τοίχο ως πηγή ενέργειας. Το συνδυάσαμε με έναν προσαρμογέα 24 ακίδων από ένα τροφοδοτικό atx για να συνδέσουμε και να επιτρέψουμε ευκολότερη καλωδίωση. Τα pinouts που ακολουθήσαμε βρίσκονται στον ακόλουθο σύνδεσμο:
techvalleyprojects.blogspot.com/2011/07/ard…
Στην περίπτωσή μας, έπρεπε να δημιουργήσουμε μια βάση για να ανεβάσουμε τον αποδέκτη λογαριασμού, διότι διαφορετικά θα ήταν πολύ χαμηλός για το περίβλημα μας.
Βήμα 5: Δοκιμή
Δοκιμάστε πρώτα τα ηλεκτρονικά έξω από το περίβλημα για να βεβαιωθείτε ότι τα εξαρτήματα λειτουργούν. Τυχόν προβλήματα που προκύπτουν πρέπει να διορθώνονται πριν τα τοποθετήσετε στο περίβλημα.
Βήμα 6: Ηλεκτρονικά στο περίβλημα
Μόλις δοκιμάσετε τα ηλεκτρονικά και είστε ικανοποιημένοι με τα αποτελέσματά τους, αρχίστε να τα τοποθετείτε στο περίβλημα σας. Ρυθμίστε τα μήκη καλωδίων έτσι ώστε να ταιριάζουν άνετα στο εσωτερικό.
Βήμα 7: Τελική δοκιμή
Μόλις τοποθετηθεί στο περίβλημα, δοκιμάστε ξανά τα πάντα. Αν όλα λειτουργούν όπως τα περιμένατε, συγχαρητήρια! Φτιάξατε ένα αυτόματο μηχάνημα αυτόματης πώλησης.
Βήμα 8: Κωδικός Arduino + Σύνδεσμοι
Λήψεις:
Κωδικός Arduino
drive.google.com/drive/folders/1oC4MhOcMFy…
Φάκελος SolidWorks με αρχεία εξαρτημάτων και συναρμολόγηση
drive.google.com/drive/folders/1amZoypiWcZ…
Σε περίπτωση που κάτι συνέβη στον σύνδεσμο, εδώ εμφανίζεται πλήρως ο κωδικός arduino. Κωδικός Arduino <<
#include #include #include "Arduino.h" #include #include #include "utility/Adafruit_MS_PWMServoDriver.h" #include
const int stepsPerRevolution = 200; const byte ROWS = 4; // τέσσερις σειρές const byte COLS = 3; // τρεις στήλες πλήκτρα char [ROWS] [COLS] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}, {'*', '0', '#'}}; byte rowPins [ROWS] = {5, 6, 7, 8}; // συνδεθείτε με τα pinout των γραμμών των byte πληκτρολογίου colPins [COLS] = {2, 3, 4}; // σύνδεση με τα pinouts της στήλης του πληκτρολογίου Πληκτρολόγιο = Πληκτρολόγιο (makeKeymap (κλειδιά), rowPins, colPins, ROWS, COLS); Adafruit_MotorShield AFMS1 = Adafruit_MotorShield (); Adafruit_StepperMotor *myMotor1 = AFMS1.getStepper (-200, 1); Adafruit_StepperMotor *myMotor2 = AFMS1.getStepper (-200, 2); Adafruit_MotorShield AFMS2 = Adafruit_MotorShield (0x61); Adafruit_StepperMotor *myMotor3 = AFMS2.getStepper (-200, 1); Adafruit_StepperMotor *myMotor4 = AFMS2.getStepper (-200, 2); Adafruit_MotorShield AFMS3 = Adafruit_MotorShield (0x62); Adafruit_StepperMotor *myMotor5 = AFMS3.getStepper (-200, 1); Adafruit_StepperMotor *myMotor6 = AFMS3.getStepper (-200, 2); Adafruit_MotorShield AFMS4 = Adafruit_MotorShield (0x63); Adafruit_StepperMotor *myMotor7 = AFMS4.getStepper (-200, 1); Adafruit_StepperMotor *myMotor8 = AFMS4.getStepper (-200, 2); LiquidCrystal LCD (1, 11, 9, 10, 12, 13); // Digitalηφιακές καρφίτσες που συνδέεται το lcd με το // Constants // // pin για την πιστωτική (-) γραμμή επικύρωσης λογαριασμού const int billValidator = 22;
// Μεταβλητές /
/ καταγραφή της διάρκειας του παλμού (χιλιοστά του δευτερολέπτου) χωρίς υπογραφή μεγάλης διάρκειας.
// κρατώντας τα συνολικά δολάρια που καταγράφηκαν int dollarCounter = 0; void setup () {lcd.begin (16, 1); // ορίστε συντεταγμένες κειμένου lcd.print ("Εισαγωγή μόνο $ 1"); // Ορισμός κειμένου Serial.begin (9600); // Αρχικοποίηση σειριακών θυρών για επικοινωνία. Serial.println ("Stepper test!"); // Πληκτρολογήστε Stepper Test στη σειριακή οθόνη, έτσι ώστε να γνωρίζουμε ποιο βηματικό μοτέρ πιέζεται. AFMS1.begin (); AFMS2.begin (); AFMS3.begin (); AFMS4.begin (); myMotor1-> setSpeed (100); // Ρυθμίστε την ταχύτητα κινητήρα στην οποία θα εκτελέσουν το myMotor2-> setSpeed (100). myMotor3-> setSpeed (100); myMotor4-> setSpeed (100); myMotor5-> setSpeed (100); myMotor6-> setSpeed (100); myMotor7-> setSpeed (100); myMotor8-> setSpeed (100); // Ρυθμίσεις καρφιτσών για τον επικυρωτή λογαριασμού και το κουμπί pinMode (billValidator, INPUT). // Ορίζει το billaccepter
// Αρχικοποίηση σειριακών θυρών για επικοινωνία. Serial.begin (9600); Serial.println ("Αναμονή για δολάριο …"); } void loop () {{duration = pulseIn (billValidator, HIGH); // Αρχίζει να αναζητά το μήκος παλμού που λαμβάνεται από τον αποδέκτη λογαριασμού εάν (διάρκεια> 12000) // Η τιμή του οποίου πρέπει να ξεπεράσει για να επικυρωθεί ως επεξεργασμένο και αυθεντικό δολάριο {// Count dollar dollarCounter ++; // Έλεγχος για κατανόηση Serial.print ("Εντοπίστηκε δολάριο. / N Σύνολο:"); // Εμφάνιση νέου αριθμού δολαρίων Serial.println (dollarCounter); // βρόχος για να περιμένετε μέχρι να πατηθεί ένα κουμπί ενώ (διάρκεια> 12000) {char key = keypad.getKey (); // συνδέει το πληκτρολόγιο και αρχίζει να βλέπει ποιο πατάται εάν (κλειδί! = NO_KEY) {// θα ψάξει για κλειδί πατημένο Serial.println (κλειδί); // μας ενημερώνει ποιο πατήθηκε στη σειριακή οθόνη} {if (key == '1') {// Εάν πατηθεί το Key 1, κάνει τα εξής: int keyPressed = key - '1'; myMotor8-> βήμα (580, ΕΜΠΡΟΣ, ΔΙΠΛΟ); // Εκκινεί τον κινητήρα και περιστρέφεται για 350 μοίρες προς τα εμπρός. myMotor8-> release (); // Απελευθερώνει τον κινητήρα από την κατάσταση που κρατιέται στη θέση του. ΕΠΙΣΤΡΟΦΗ; // Επιστρέφει στην αρχή του κώδικα βρόχου}
if (key == '2') {// Εάν πατηθεί το Key 2, κάνει τα εξής: int keyPressed = key - '2'; myMotor7-> βήμα (400, ΕΜΠΡΟΣ, ΔΙΠΛΟ); // Εκκινεί τον κινητήρα και περιστρέφεται για 350 μοίρες προς τα εμπρός. myMotor7-> release (); // Απελευθερώνει τον κινητήρα από την κατάσταση που κρατιέται στη θέση του. ΕΠΙΣΤΡΟΦΗ; // Επιστρέφει στην αρχή του κώδικα βρόχου} if (key == '3') {// Εάν πατηθεί το πλήκτρο 3, κάνει τα εξής: int keyPressed = key - '3'; myMotor6-> βήμα (400, ΕΜΠΡΟΣ, ΔΙΠΛΟ); // Εκκινεί τον κινητήρα και περιστρέφεται για 350 μοίρες προς τα εμπρός. myMotor6-> release (); // Απελευθερώνει τον κινητήρα από την κατάσταση που κρατιέται στη θέση του. ΕΠΙΣΤΡΟΦΗ; // Επιστρέφει στην αρχή του κώδικα βρόχου} if (key == '4') {// Εάν πατηθεί το πλήκτρο 4, κάνει τα εξής: int keyPressed = key - '4'; myMotor5-> βήμα (180, ΕΜΠΡΟΣ, ΔΙΠΛΟ); // Εκκινεί τον κινητήρα και περιστρέφεται για 350 μοίρες προς τα εμπρός. myMotor5-> release (); // Απελευθερώνει τον κινητήρα από την κατάσταση που κρατιέται στη θέση του. ΕΠΙΣΤΡΟΦΗ; // Επιστρέφει στην αρχή του κώδικα βρόχου} if (key == '5') {// Εάν πατηθεί το πλήκτρο 5, κάνει τα εξής: int keyPressed = key - '5'; myMotor4-> βήμα (6900, ΕΜΠΡΟΣ, ΔΙΠΛΟ); // Εκκινεί τον κινητήρα και περιστρέφεται για 350 μοίρες προς τα εμπρός. myMotor4-> release (); // Απελευθερώνει τον κινητήρα από την κατάσταση που κρατιέται στη θέση του. ΕΠΙΣΤΡΟΦΗ; // Επιστρέφει στην αρχή του κώδικα βρόχου} if (key == '6') {// Εάν πατηθεί το Key 6, κάνει τα εξής: int keyPressed = key - '6'; myMotor3-> βήμα (400, ΕΜΠΡΟΣ, ΔΙΠΛΟ); // Εκκινεί τον κινητήρα και περιστρέφεται για 350 μοίρες προς τα εμπρός. myMotor3-> release (); // Απελευθερώνει τον κινητήρα από την κατάσταση που κρατιέται στη θέση του. ΕΠΙΣΤΡΟΦΗ; // Επιστρέφει στην αρχή του κώδικα βρόχου} if (key == '7') {// Εάν πατηθεί το πλήκτρο 7, κάνει τα εξής: int keyPressed = key - '7'; myMotor7-> βήμα (400, ΕΜΠΡΟΣ, ΔΙΠΛΟ); // Εκκινεί τον κινητήρα και περιστρέφεται για 350 μοίρες προς τα εμπρός. myMotor7-> release (); // Απελευθερώνει τον κινητήρα από την κατάσταση που κρατιέται στη θέση του. ΕΠΙΣΤΡΟΦΗ; // Επιστρέφει στην αρχή του κώδικα βρόχου} if (key == '8') {// Εάν πατηθεί το πλήκτρο 8, κάνει τα εξής: int keyPressed = key - '8'; myMotor8-> βήμα (400, ΕΜΠΡΟΣ, ΔΙΠΛΟ); // Εκκινεί τον κινητήρα και περιστρέφεται για 350 μοίρες προς τα εμπρός. myMotor8-> release (); // Απελευθερώνει τον κινητήρα από την κατάσταση που κρατιέται στη θέση του. ΕΠΙΣΤΡΟΦΗ; // Επιστρέφει στην αρχή του κώδικα βρόχου}}}}}} >>
Συνιστάται:
Αυτόματο σύστημα αυτόματης πλύσης χεριών βασισμένο σε Raspberry Pi για βήματα Covid-19: 4
Αυτόματο σύστημα αυτόματου πλυσίματος χεριών Raspberry Pi Based Touch για Covid-19: Είναι ένα απλό σύστημα πλυσίματος χεριών που χρησιμοποιεί αισθητήρες pir και πίνακα Raspberry pi. Αυτή η εφαρμογή έχει σχεδιαστεί κυρίως για λόγους υγιεινής. Το μοντέλο μπορεί να τοποθετηθεί σε δημόσιους χώρους, νοσοκομεία, εμπορικά κέντρα κ.λπ
Μηχανή αυτόματης πώλησης αστέγων: 3 βήματα
Μηχανή αυτόματης πώλησης αστέγων: Προσπαθώ να αποτρέψω την πείνα στην κοινότητά μας. Υπάρχουν περίπου 3.000+ άνθρωποι στην Οκλαχόμα που αντιμετωπίζουν έλλειψη στέγης. Επιλέξαμε να συνωμοτήσουμε μια λύση για αυτό το ζήτημα για να βελτιώσουμε και να αναπτύξουμε την κοινότητά μας στο σύνολό της. Μεγάλος αριθμός ανθρώπων στο
IoT APIS V2 - Αυτόματο σύστημα αυτόματης άρδευσης με δυνατότητα IoT: 17 βήματα (με εικόνες)
IoT APIS V2 - Αυτόνομο σύστημα αυτόματης άρδευσης με δυνατότητα IoT: Αυτό το έργο είναι μια εξέλιξη του προηγούμενου διδάσκοντός μου: APIS - Αυτόματο σύστημα άρδευσης φυτών Χρησιμοποιώ το APIS για σχεδόν ένα χρόνο τώρα και ήθελα να βελτιωθώ με τον προηγούμενο σχεδιασμό: παρακολουθεί το φυτό από απόσταση. Ετσι
Μηχανή αυτόματης πώλησης ανιχνευτή ψέματος: Με Arduino Leonardo: 6 βήματα
Μηχανή αυτόματης πώλησης Lie Detector+: Με Arduino Leonardo: Αυτός ο ανιχνευτής ψέματος δεν είναι ο κανονικός σας μέσος ανιχνευτής ψεύδους, είναι ένας ανιχνευτής ψεύδους που έχει προσαρτημένο αυτόματο μηχάνημα αυτόματης πώλησης. Βασικά, έτσι λειτουργεί. Στην αρχή, ο παίκτης θα πατήσει ένα κουμπί που θα θέσει σε λειτουργία το μηχάνημα και πριν το ψέμα
Αυτόματο έξυπνο σύστημα αυτόματης ανάλυσης όγκου: 4 βήματα
Αυτόματο έξυπνο σύστημα ανάλυσης όγκου: Το θέμα είναι να φτιάξουμε ένα πρωτότυπο που μπορεί να αναλύσει και να προσδιορίσει δύο διαφορετικά σχήματα και να εμφανίσει τον όγκο του. Εδώ επιλέγουμε να πάμε με Cube και Cylinder ως δύο διαφορετικά σχήματα. Μπορεί να ανιχνεύσει σχήματα, να αναλύσει και να υπολογίσει τον όγκο από μόνο του. Εργασία