Πίνακας περιεχομένων:
- Βήμα 1: Τι χρειάζεστε…
- Βήμα 2: Συγκόλληση του πίνακα
- Βήμα 3: Ρύθμιση του Arduino
- Βήμα 4: Ρύθμιση της Python
- Βήμα 5: Πού συμβαίνει η μαγεία
Βίντεο: Servodriver-Board Με Python-GUI και Arduino: 5 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Κατά την κατασκευή πρωτοτύπων ή την κατασκευή μοντέλων αεροπλάνων, συναντάτε συχνά το πρόβλημα, ότι πρέπει να ελέγξετε τη διαδρομή σερβομηχανισμού ή να ρυθμίσετε τα servos στη μεσαία θέση.
Σε περίπτωση που δεν συνηθίζετε να δημιουργείτε ολόκληρο το σύστημα RC ή τη δοκιμή σας, πόσο μακριά μπορείτε να πιέσετε το σερβο ή όπου βρίσκεται η μεσαία θέση, τότε αυτός ο πίνακας είναι για εσάς! Σας επιτρέπει να μετακινήσετε το σερβο σε καθορισμένες θέσεις ή να ταξιδέψετε πίσω και πίσω.
Λειτουργεί εκπληκτικά καλά, ακόμη και με 6 σερβο που τρέχουν από τη μία θέση στην άλλη στον βρόχο.
Επίσης, είναι ένα ωραίο έργο για να μάθετε για την επικοινωνία μεταξύ Python-GUI και Arduino χρησιμοποιώντας Serial.
Βήμα 1: Τι χρειάζεστε…
Για αυτό το έργο, θα χρειαστείτε τα ακόλουθα:
Σκεύη, εξαρτήματα
- Arduino nano με καλώδιο. Χρησιμοποίησα έναν κλώνο και ο κώδικας Python αναμένει στην πραγματικότητα ένα τσιπ CH340 ενός κλώνου
- Ένας πίνακας πρωτοτύπων. 7x5cm είναι αρκετά
- Κάποιες κεφαλίδες και ακίδες 2, 54 χιλιοστών
- 1-6 μερίδες
- Τροφοδοσία για τα servos (χρησιμοποίησα ένα πακέτο μπαταριών με 4 μπαταρίες)
Λογισμικό
- Python 3:
- Πρόγραμμα οδήγησης USB για τα τσιπ CH340: Απλώς κάντε google για προγράμματα οδήγησης για προγράμματα οδήγησης CH340
- Arduino IDE:
Βήμα 2: Συγκόλληση του πίνακα
Η συγκόλληση είναι στην πραγματικότητα ευθεία προς τα εμπρός σύμφωνα με το Fritzing στην εικόνα. Απλά βεβαιωθείτε ότι μπορείτε να συνδέσετε εύκολα τα servos στις σειρές των 3 ακίδων.
- Οι σειρές 3 ακίδων είναι προσαρτημένες στην ψηφιακή ακίδα 3, 5, 6, 9, 10 και 11 του Arduino nano.
- Το κόκκινο σύρμα είναι προσαρτημένο στην ακίδα 5V του Arduino
- Το μαύρο καλώδιο συνδέεται με τον ακροδέκτη GND του Arduino
- Το ζεύγος των ακίδων κάτω από τις σειρές 3 ακίδων προορίζεται να συνδέσει ένα τυπικό τροφοδοτικό δέκτη RC, μπορείτε να προσθέσετε βύσματα όπως θέλετε, όπως βίδωμα ακροδεκτών, βύσματα XT, JST ή… ή…
Προσωπικά, μου αρέσουν οι σειρές γυναικείων κεφαλίδων για να βάλω το Arduino, αλλά αυτό εξαρτάται από εσάς.
Λάβετε υπόψη ότι οι κοντές γυναικείες κεφαλίδες είναι jumper, που σας επιτρέπουν να παρέχετε το σερβο χρησιμοποιώντας την πηγή 5V του Arduino για σκοπούς δοκιμής. Εάν το καταπονήσετε πάρα πολύ, το Arduino θα επαναρυθμιστεί και θα χάσει τον σωστό ρυθμό. ΠΡΕΠΕΙ να αφαιρεθούν, πριν συνδέσετε άλλο τροφοδοτικό.
Βήμα 3: Ρύθμιση του Arduino
Εγκαταστήστε το Arduino IDE και αναβοσβήστε το Arduino nano με το συνημμένο σκίτσο.
Βήμα 4: Ρύθμιση της Python
Εγκαταστήστε το Python 3 μετά τη λήψη του. Βεβαιωθείτε ότι έχετε ελέγξει την επιλογή δημιουργίας μεταβλητής "PATH".
Πρέπει να εγκαταστήσετε δύο ακόμη πακέτα χρησιμοποιώντας pip. Για αυτό, πατήστε το πλήκτρο "Windows", πληκτρολογήστε "cmd" και πατήστε "enter". Στη γραμμή εντολών πληκτρολογήστε τις ακόλουθες εντολές:
- σειριακή εγκατάσταση pip
- piip install pyserial
- pip εγκατάσταση tkinter
Όπως μπορείτε να δείτε, χρειάζομαι τα modules σειριακά καθώς και pyserial, το οποίο πιθανότατα δεν είναι το πιο αποτελεσματικό, αφού το pyserial πρέπει να αντικαταστήσει το σειριακό. Παρ 'όλα αυτά λειτουργεί και μόλις αρχίζω να μαθαίνω;).
Ανοίξτε το Python-Script στο IDE και εκτελέστε το ή εκτελέστε το απευθείας από το τερματικό.
Στο αναπτυσσόμενο μενού, μπορείτε να επιλέξετε μεταξύ δύο λειτουργιών, "Go Straight" και "Ping Pong":
- Go Straight: Εισαγάγετε μια θέση σερβο σε δευτερόλεπτα στην πρώτη στήλη και πατήστε "Έναρξη" για να μετακινήσετε το σερβο στην καθορισμένη θέση.
- Πινγκ πονγκ: Εισάγετε ένα κάτω όριο και ένα ανώτερο όριο στη δεύτερη και την τρίτη στήλη. Αυτή είναι η κάτω και η πάνω θέση, μεταξύ των οποίων το σερβο θα πηγαίνει πίσω και πίσω. Στη στήλη "Χρόνος πινγκ πονγκ" μπορείτε να καθορίσετε έναν χρόνο σε χιλιοστά του δευτερολέπτου, για να περιμένει το σερβο όταν φτάσει στην άνω ή στην κάτω θέση. Πατήστε "Έναρξη" και το σερβο θα αρχίσει να κινείται προς τα πίσω, πατήστε "Διακοπή" και το σερβο θα σταματήσει.
Βήμα 5: Πού συμβαίνει η μαγεία
Τελευταίο αλλά όχι λιγότερο σημαντικό, θέλω να επισημάνω μερικές από τις λεπτομέρειες του κώδικα για όσους θέλουν να μπουν σε μια σειριακή επικοινωνία μεταξύ Python και Arduino.
Τώρα, τι συμβαίνει στο πρόγραμμα Python;
Πρώτα απ 'όλα, το πρόγραμμα ελέγχει τι είναι προσαρτημένο στις θύρες COM σε αυτήν τη γραμμή και το αποθηκεύει σε μια λίστα:
self. COMPortsList = λίστα (serial.tools.list_ports.comports ())
Στη συνέχεια, περιηγείται στη λίστα μέχρι να βρει ένα διαβόητο τσιπ CH340, να το αποθηκεύσει και στη συνέχεια να δημιουργήσει μια σειριακή σύνδεση μετά τον βρόχο for. Σημειώστε ότι ο βρόχος σπάει μόλις βρεθεί το πρώτο CH340.
for p in self. COMPortsList: if "CH340" in p [1]: # Looking for a Arduino Clone self. COMPort = p [0] break other: pass self. Ser = serial. Serial (self. COMPort, 57600)
Η σειριακή σύνδεση πραγματοποιείται με τη θύρα COM με baudrate 57600.
Και τι κάνει ο κώδικας Arduino; Λοιπόν, δεδομένου ότι το Arduino έχει μόνο μία θύρα COM, η σειριακή σύνδεση είναι μόνο μία γραμμή:
Serial.begin (57600);
Τώρα, μπορούμε να χρησιμοποιήσουμε και τις δύο θύρες για επικοινωνία. Σε αυτήν την περίπτωση, μόνο μηνύματα από την Python στο Arduino. Τα μηνύματα αποστέλλονται εδώ από την Python. Η σειριακή σύνδεση μεταδίδει bytes ως προεπιλογή. Αυτός είναι επίσης ο γρηγορότερος τρόπος αποστολής δεδομένων και, από όσο γνωρίζω, ακόμα αρκετά διαδεδομένος. Έτσι, τα int για τον αριθμό του σερβο (έτσι το Arduino γνωρίζει ποιο σερβο θα μετακινηθεί) και η θέση σε μικροδευτερόλεπτα μετατρέπονται σε byte.
Command = struct.pack ('> B', self. Place) # Η int-μεταβλητή "self. Place" μετατρέπεται σε byte
self. Ser. > B ', Command) # Γυρίζοντας το int σε ένα byte self. Ser.write (Command) # Γράφοντας το byte στο Serial-Port
Επίσης, η ανάλυση δεδομένων απαιτεί χρόνο (για παράδειγμα, η ερμηνεία τεσσάρων byte "1", "2", "3" και "0" ως int 1230, όχι ως τέσσερις διαφορετικοί χαρακτήρες) και είναι καλύτερο να το κάνετε αυτό όχι στο Arduino.
Από την πλευρά του Arduino, οι πληροφορίες που αποστέλλονται συλλέγονται ως εξής:
εάν (Serial.available ()> 1) {// Εάν είναι διαθέσιμα σειριακά δεδομένα, τότε ο βρόχος εισάγεται c = Serial.read (); // Το πρώτο byte (αριθμός σερβο) αποθηκεύεται σε μια μεταβλητή Micros = Serial.read (); // Η θέση του σερβο αποθηκεύεται εδώ Micros = Micros * 10; }
Συνιστάται:
Αυτόματος ανεμιστήρας ψύξης με αισθητήρα θερμοκρασίας και υγρασίας Servo και DHT11 με Arduino: 8 βήματα
Αυτόματος ανεμιστήρας ψύξης χρησιμοποιώντας αισθητήρα θερμοκρασίας και υγρασίας Servo και DHT11 με Arduino: Σε αυτό το σεμινάριο θα μάθουμε πώς να ξεκινάμε & περιστρέψτε έναν ανεμιστήρα όταν η θερμοκρασία ανέβει πάνω από ένα ορισμένο επίπεδο
Πώς να δημιουργήσετε και να εισαγάγετε έναν πίνακα και να προσθέσετε επιπλέον στήλες και/ή σειρές σε αυτόν τον πίνακα στο Microsoft Office Word 2007: 11 βήματα
Πώς να δημιουργήσετε και να εισαγάγετε έναν πίνακα και να προσθέσετε επιπλέον στήλες και/ή σειρές σε αυτόν τον πίνακα στο Microsoft Office Word 2007: Είχατε ποτέ πολλά δεδομένα με τα οποία εργάζεστε και σκεφτήκατε τον εαυτό σας … " πώς μπορώ να κάνω όλα αυτά τα δεδομένα φαίνονται καλύτερα και είναι πιο εύκολα κατανοητά; " Αν ναι, τότε η απάντησή σας μπορεί να είναι ένας πίνακας στο Microsoft Office Word 2007
Αναγνώριση προσώπου και αναγνώριση - Arduino Face ID χρησιμοποιώντας OpenCV Python και Arduino .: 6 βήματα
Αναγνώριση προσώπου και αναγνώριση | Arduino Face ID χρησιμοποιώντας OpenCV Python και Arduino .: Αναγνώριση προσώπου Το αναγνωριστικό προσώπου AKA είναι ένα από τα πιο σημαντικά χαρακτηριστικά στα κινητά τηλέφωνα στις μέρες μας. Έτσι, είχα μια ερώτηση " μπορώ να έχω ένα αναγνωριστικό προσώπου για το έργο μου στο Arduino " και η απάντηση είναι ναι … Το ταξίδι μου ξεκίνησε ως εξής: Βήμα 1: Πρόσβαση σε εμάς
8 Έλεγχος ρελέ με NodeMCU και δέκτη IR χρησιμοποιώντας WiFi και IR Τηλεχειριστήριο και εφαρμογή Android: 5 βήματα (με εικόνες)
8 Έλεγχος ρελέ με δέκτη NodeMCU και IR χρησιμοποιώντας WiFi και IR Τηλεχειριστήριο και εφαρμογή Android: Έλεγχος 8 διακοπτών ρελέ χρησιμοποιώντας nodemcu και δέκτη ir μέσω wifi και ir απομακρυσμένης και εφαρμογής Android. Το ir remote λειτουργεί ανεξάρτητα από τη σύνδεση wifi. ΕΔΩ ΕΙΝΑΙ ΕΝΗΜΕΡΩΜΕΝΗ ΚΛΙΚ ΕΔΩ
Ένδειξη θερμοκρασίας και υγρασίας και συλλογή δεδομένων με Arduino και επεξεργασία: 13 βήματα (με εικόνες)
Εμφάνιση θερμοκρασίας και υγρασίας και συλλογή δεδομένων με Arduino και επεξεργασία: Εισαγωγή: Πρόκειται για ένα έργο που χρησιμοποιεί έναν πίνακα Arduino, έναν αισθητήρα (DHT11), έναν υπολογιστή Windows και ένα πρόγραμμα επεξεργασίας (δωρεάν λήψη) για την εμφάνιση δεδομένων θερμοκρασίας, υγρασίας σε ψηφιακή και φόρμα γραφήματος, εμφάνιση ώρας και ημερομηνίας και εκτέλεση χρόνου αντίστροφης μέτρησης