Πίνακας περιεχομένων:
- Βήμα 1: Απαιτείται υλικό
- Βήμα 2: Συναρμολόγηση του πλαισίου
- Βήμα 3: Τοποθέτηση των Ηλεκτρονικών
- Βήμα 4: Προσθήκη κάμερας Web
- Βήμα 5: Καλωδίωση όλων
- Βήμα 6: Ρύθμιση του RPI
- Βήμα 7: Διαμόρφωση της σειριακής θύρας RPI
- Βήμα 8: Εγκατάσταση των μονάδων Python
- Βήμα 9: Ρύθμιση του RoboClaw
- Βήμα 10: Εγκατάσταση του προγράμματος/αρχείων Rover
- Βήμα 11: Εκκίνηση του Bot Up
- Βήμα 12: Πρόσβαση στη σελίδα ελέγχου Bot
- Βήμα 13: Ο κώδικας Python/Flask
- Βήμα 14: Χρήση άλλου υλικού
Βίντεο: Rover ελεγχόμενου ιστού: 14 βήματα (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Το να χτίζω και να παίζω με ρομπότ είναι η κύρια ένοχη απόλαυση στη ζωή μου. Άλλοι παίζουν γκολφ ή σκι, αλλά εγώ φτιάχνω ρομπότ (αφού δεν μπορώ να παίξω γκολφ ή να κάνω σκι:-). Το βρίσκω χαλαρωτικό και διασκεδαστικό! Για να φτιάξω τα περισσότερα bots μου, χρησιμοποιώ κιτ πλαισίου. Η χρήση κιτ με βοηθά να κάνω αυτό που μου αρέσει να κάνω περισσότερο, το λογισμικό και τα ηλεκτρονικά και επίσης δημιουργεί ένα καλύτερο πλαίσιο για τον εαυτό μου.
Σε αυτό το Instructable, θα εξετάσουμε τι χρειάζεται για να φτιάξουμε ένα απλό αλλά ανθεκτικό rover με Wi -Fi/web. Το πλαίσιο που χρησιμοποιείται είναι το Actobotics Gooseneck. Το επέλεξα για το μέγεθος, τη δυνατότητα επέκτασης και το κόστος, αλλά μπορείτε να χρησιμοποιήσετε οποιοδήποτε άλλο πλαίσιο της επιλογής σας.
Για ένα έργο όπως αυτό, θα χρειαστούμε έναν καλό συμπαγή υπολογιστή μονής πλακέτας και για αυτό το bot επέλεξα να χρησιμοποιήσω τον Raspberry Pi (RPI) υπολογιστή που βασίζεται σε Linux. Το RPI (και το Linux) μας δίνει πολλές επιλογές κωδικοποίησης και η Python θα χρησιμοποιηθεί για την πλευρά κωδικοποίησης. Για τη διεπαφή ιστού χρησιμοποιώ το Flask, ένα ελαφρύ πλαίσιο ιστού για την Python.
Για να οδηγήσω τους κινητήρες, επέλεξα ένα RoboClaw 2x5a. Επιτρέπει την απλή σειριακή επικοινωνία για την εντολή του και λειτουργεί καλά με το RPI και τους κινητήρες στο Gooseneck.
Τέλος, διαθέτει κάμερα web για σχόλια βίντεο τύπου POV για οδήγηση από απόσταση. Θα καλύψω κάθε θέμα με περισσότερες λεπτομέρειες αργότερα.
Βήμα 1: Απαιτείται υλικό
- Πλαίσιο Actobotics Gooesneck ή κατάλληλη αντικατάσταση της επιλογής σας
- Raspberry Pi της επιλογής σας (ή κλώνος) - Ένα μοντέλο RPI B χρησιμοποιείται σε αυτό το bot, αλλά οποιοδήποτε με τουλάχιστον δύο θύρες USB θα λειτουργήσει
- Τυπική σερβιτόρα B x1
- Στήριγμα ενιαίας γωνίας 90 ° x1
- Πρόγραμμα οδήγησης RoboClaw 2x5a
- S3003 ή παρόμοιο servo τυπικού μεγέθους
- Μικρό breadboard ή Mini breadboard
- Καλώδια από jumper έως θηλυκά jumper
- Καλώδια από άνδρες έως γυναίκες
- Κάμερα Web (προαιρετικό) - Χρησιμοποιώ Logitech C110 και εδώ είναι μια λίστα με υποστηριζόμενες κάμερες για το RPI
- Πηγή ισχύος 5v-6v για σερβο τροφοδοσία
- Μπαταρία 7.2v-11.1v για τροφοδοσία κινητήρα κίνησης
- Τροφοδοτικό USB 5v 2600mah (ή υψηλότερη) για RPI
- Προσαρμογέας USB Wifi
Στο bot μου, χρησιμοποιώ τροχούς 4 για να το κάνω λίγο πιο All-Terrain-Indoor. Για αυτήν την επιλογή θα χρειαστείτε:
- Τροχός 4 ιντσών βαρέως τύπου x2
- 4mm Bore Set Screw Hub (0,770 ίντσες) x2
Βήμα 2: Συναρμολόγηση του πλαισίου
Συναρμολογήστε πρώτα το πλαίσιο ακολουθώντας τις οδηγίες που περιλαμβάνονται στο πλαίσιο ή το βίντεο. Μετά το τέλος θα πρέπει να έχετε κάτι σαν την εικόνα. ΣΗΜΕΙΩΣΗ: Κατά τη συναρμολόγηση του τμήματος λαιμού, απλώς αφήστε το βραχίονα στήριξης απενεργοποιημένο.
Στο bot μου, επέλεξα να αντικαταστήσω τους τροχούς που έφερε το πλαίσιο για ζάντες 4 βαρέως τύπου. Αυτό είναι προαιρετικό και δεν χρειάζεται, εκτός αν θέλετε να κάνετε το ίδιο.
Βήμα 3: Τοποθέτηση των Ηλεκτρονικών
Το Gooseneck έχει πολύ χώρο και επιλογές για την τοποθέτηση των ηλεκτρονικών σας. Σας δίνω αυτές τις εικόνες ως οδηγό, αλλά μπορείτε να επιλέξετε πώς θα θέλατε να τα διατυπώσετε όλα. Μπορείτε να χρησιμοποιήσετε stand-off, ταινία διπλής όψης, Velcro ή servo-tape για να τοποθετήσετε τον πίνακα και τις μπαταρίες.
Βήμα 4: Προσθήκη κάμερας Web
Πάρτε το στήριγμα 90 μοιρών, τον ελαφρύ σερβο διανομέα και τέσσερις (4) βίδες.3125 για αυτό το βήμα:
- Πάρτε το σερβο διανομέα και τοποθετήστε το στη μία πλευρά του βραχίονα και ασφαλίστε το μαζί με τις βίδες.2125 "όπως στην εικόνα
- Στη συνέχεια τοποθετήστε το σερβο στο στήριγμα σερβο
- Συνδέστε το στήριγμα 90 μοιρών με το σερβοκόρνα στη σπονδυλική στήλη και χρησιμοποιήστε τη βίδα κόρνας που συνοδεύει το σερβο για να τα συνδέσετε μεταξύ τους
- Τώρα τοποθετήστε το Servo σε αγκύλη στην κορυφή του λαιμού της χήνας με τις υπόλοιπες βίδες
- Τοποθετήστε την κάμερα με φερμουάρ ή ταινία διπλής όψης στη βάση 90 μοιρών
Χρησιμοποιήστε τις εικόνες για οδηγούς, εάν χρειάζεται.
Βήμα 5: Καλωδίωση όλων
Η καλωδίωση είναι αρκετά στενή προς τα εμπρός για αυτό το ρομπότ.
Οι κινητήρες:
Το συγκολλητικό καλώδιο και στους δύο κινητήρες αν δεν το έχετε κάνει ήδη
Με το ρομπότ μπροστά (το τέλος με το λαιμό της χήνας) στραμμένο μακριά σας:
- Συνδέστε τα καλώδια του κινητήρα στον αριστερό κινητήρα στο κανάλι M1A και M1B
- Συνδέστε τα καλώδια του κινητήρα στο δεξί μοτέρ στο κανάλι M2A και M2B
Συνδέσεις γείωσης (GND):
- Συνδέστε έναν πείρο γείωσης στο RoboClaw στον πίνακα βραχυκυκλωτήρα γείωσης. Η γραμμή ακίδων εδάφους στο RoboClaw είναι πιο κοντά στο κέντρο (Δείτε την εικόνα)
- Συνδέστε το PIN 6 στο RPI στην πλακέτα βραχυκυκλωτήρα. Ανατρέξτε στην εικόνα κεφαλίδας RPI για εκχωρήσεις καρφιτσών.
- Συνδέστε το GND από τη σερβο μπαταρία σε μία από τις ακίδες της πλακέτας βραχυκυκλωτήρα.
- Περάστε ένα καλώδιο βραχυκυκλωτήρα από την πλακέτα βραχυκυκλωτήρα στο καλώδιο servos GND.
RPI στο RoboClaw:
Συνδέστε τον πείρο RPI GPIO14 TXD με τον πείρο RoboClaw S1
Εξουσία:
- Συνδέστε το καλώδιο POS από την servo μπαταρία στο καλώδιο servos POS
- Συνδέστε το καλώδιο POS από την μπαταρία του κινητήρα στο POS (+) του τερματικού εισόδου ισχύος κινητήρα RoboClaw. Θα αφήσουμε το τερματικό GND αποσυνδεδεμένο προς το παρόν.
Βήμα 6: Ρύθμιση του RPI
Υποθέτω ότι ο χρήστης εδώ γνωρίζει μερικά για το Linux και το RPI. Δεν περιγράφω τον τρόπο ρύθμισης ή σύνδεσης σε ένα. Εάν χρειάζεστε βοήθεια σε αυτό, χρησιμοποιήστε τις παρακάτω σελίδες.
Για να λάβετε τη ρύθμιση RPI, ρίξτε μια ματιά στις ακόλουθες σελίδες:
- Βασική ρύθμιση RPI
- Οδηγός γρήγορης εκκίνησης RPI
- Συντεχνία εγκατάστασης NOOBS
Για γενικές αναδυόμενες σελίδες, η κύρια σελίδα του RPI και οι σελίδες eLinux είναι υπέροχα μέρη για να ξεκινήσετε.
Δείτε αυτόν τον σύνδεσμο για τη γενική ρύθμιση Wi -Fi RPI.
Εάν σκοπεύετε να χρησιμοποιήσετε κάποια κάμερα ή κάμερα ιστού στο bot, ρίξτε μια ματιά σε αυτές τις σελίδες για να λάβετε τα βασικά απαραίτητα αρχεία.
- Ρύθμιση κάμερας RPI
- ρύθμιση κάμερας eLinix RPI
Ροή βίντεο:
Υπάρχουν μερικοί τρόποι για να λειτουργήσει η ροή βίντεο σε RPI, αλλά η μέθοδος που προτιμώ είναι η χρήση του Motion.
Για να το εγκαταστήσετε στο RPI, εκτελέστε το εξής: sudo apt-get install motion
Αυτό το εγχειρίδιο υπερβαίνει τη ρύθμιση του για ροή επίσης.
Βήμα 7: Διαμόρφωση της σειριακής θύρας RPI
Θα χρειαστεί να απενεργοποιήσουμε τη λειτουργία κονσόλας Linux για τη χρήση των RX και TX καθώς θέλουμε να μιλήσουμε με τον ελεγκτή κινητήρα RoboClaw από αυτήν τη θύρα. Για να το κάνετε αυτό, μπορείτε να χρησιμοποιήσετε αυτήν τη μέθοδο ή αυτό το εργαλείο. Η επιλογή είναι δική σας ως προς τη μέθοδο καθώς και οι δύο κάνουν το ίδιο πράγμα στο τέλος.
Βήμα 8: Εγκατάσταση των μονάδων Python
Θα χρειαστείτε python εγκατεστημένο στο RPI καθώς και το pip εγκατάστασης πακέτων python.
Για να εγκαταστήσετε το pip κάντε τα εξής:
- sudo apt-get install python-setuptools
- sudo easy_install pip
Τότε:
- φιάλη εγκατάστασης sudo pip
- sudo pip εγκατάσταση pyserial
- sudo pip εγκατάσταση RPIO
Αυτό θα είναι όλες οι ενότητες που απαιτούνται για την εκτέλεση του κώδικα.
Βήμα 9: Ρύθμιση του RoboClaw
Έχω τον κώδικα ρομπότ που μιλά με το RoboClaw σε τυπική σειριακή λειτουργία στα 19200 baud.
Για να ρυθμίσετε το RoboClaw για αυτό, κάντε τα εξής:
- Πατήστε το κουμπί "MODE" στο RoboClaw
- Πατήστε το κουμπί ρύθμισης έως ότου η λυχνία LED αναβοσβήνει 5 (πέντε) φορές μεταξύ των καθυστερήσεων
- Πατήστε το κουμπί "LIPO" για αποθήκευση
- Στη συνέχεια, πατήστε το κουμπί "SET" έως ότου η λυχνία LED αναβοσβήνει 3 (τρεις) φορές μεταξύ των καθυστερήσεων
- Πατήστε το κουμπί LIPO για αποθήκευση
Αυτό είναι για τη ρύθμιση του ελεγκτή κινητήρα. Ανατρέξτε στο pdf που συνδέεται παραπάνω για περισσότερες πληροφορίες, εάν χρειάζεται.
Βήμα 10: Εγκατάσταση του προγράμματος/αρχείων Rover
Κατεβάστε και αντιγράψτε το αρχείο rover.zip στο RPI στον κατάλογο χρήστη pi σας.
Εάν εκτελείτε Linux ή Mac, μπορείτε να χρησιμοποιήσετε το 'scp' για να το κάνετε:
scp ~/location/of/the/file/rover.zip pi@your_rpi_ip:/
Για Windows, μπορείτε να κάνετε λήψη και χρήση pscp και στη συνέχεια να κάνετε:
pscp /location/of/the/file/rover.zip pi@your_rpi_ip:/
Μόλις αντιγραφεί το αρχείο zip στο RPI, συνδεθείτε ως χρήστης pi.
Τώρα τρέξτε:
unzip rover.zip
Αυτό θα αποσυμπιέσει τα αρχεία σε ένα φάκελο με το όνομα "rover" και θα έχει τα ακόλουθα κάτω από αυτόν τον φάκελο:
- restrover.py (Ο κώδικας python για το ρομπότ)
- στατικό (διατηρεί τα αρχεία εικόνας για τα κουμπιά στη σελίδα ελέγχου)
- πρότυπα (διατηρεί το αρχείο index.htlm, την ιστοσελίδα ελέγχου)
Εάν χρησιμοποιείτε κάμερα ιστού, τροποποιήστε τη γραμμή κοντά στο κάτω μέρος του αρχείου index.html στο φάκελο προτύπου. Αλλάξτε τη διεύθυνση URL στη γραμμή IFRAME για να ταιριάζει με τη διεύθυνση URL src για τη ροή βίντεο.
Βήμα 11: Εκκίνηση του Bot Up
Συνδέστε την τροφοδοσία USB στο RPI.
Για να ξεκινήσετε τον κώδικα του bot, συνδεθείτε ως χρήστης pi και εκτελέστε:
- cd rover
- sudo python restrover.py
Εάν όλα ήταν εντάξει, θα πρέπει να δείτε μια οθόνη παρόμοια με την εικόνα σε αυτό το βήμα
Εάν δείτε σφάλματα ή προβλήματα, θα πρέπει να τα διορθώσετε πριν προχωρήσετε.
Τώρα, συνδέστε το καλώδιο GND (-) στον ακροδέκτη NEG (-) στην είσοδο ισχύος του κινητήρα RoboClaw.
Βήμα 12: Πρόσβαση στη σελίδα ελέγχου Bot
Αφού εκτελείται το σενάριο python του ρομπότ, ενεργοποιήστε το RoboClaw και, στη συνέχεια, μεταβείτε στο ip του RPI όπως:
your_rpi_ip
Θα πρέπει να δείτε τη σελίδα ελέγχου Ιστού να αναδύεται όπως στις εικόνες. Εάν όχι, ελέγξτε το τερματικό εξόδου RPI και αναζητήστε τυχόν σφάλματα και διορθώστε τα.
Μόλις βρεθείτε στη σελίδα, είστε έτοιμοι να ελέγξετε το bot.
Το ρομπότ θα ξεκινήσει στη ρύθμιση "Med run" και στη Μέση ταχύτητα.
Το bot μπορεί να ελεγχθεί μέσω των κουμπιών στη σελίδα ή με πλήκτρα στο πληκτρολόγιο.
Τα κλειδιά είναι:
- w - εμπρός
- z - αντίστροφα/πίσω
- α - μεγάλη αριστερή στροφή
- s - μεγάλη δεξιά στροφή
- q - σύντομη αριστερή στροφή
- e - σύντομη δεξιά στροφή
- 1 - αριστερή κάμερα
- 2 κάμερα δεξιά
- 3 - ταψί γεμάτο αριστερά
- 4 - τηγάνι πλήρως δεξιά
- / - οικιακή/ κεντρική κάμερα
- h - stop/stop robot
Υπάρχει ένα buffer καθυστέρησης μισού δευτερολέπτου μεταξύ των εντολών που αποστέλλονται. Το έκανα για να εξαλείψω ανεπιθύμητες επαναλαμβανόμενες εντολές. Μπορείτε φυσικά να το αφαιρέσετε από τον κώδικα αν θέλετε (στο index.html)
Οι υπόλοιποι έλεγχοι και ο έλεγχός του πρέπει να είναι αυτονόητοι.
Βήμα 13: Ο κώδικας Python/Flask
Αυτό το bot χρησιμοποιεί Python και το πλαίσιο ιστού Flask. Μπορείτε να μάθετε περισσότερα για το Flask εδώ εάν σας ενδιαφέρει.
Η μεγάλη διαφορά από μια εφαρμογή Flask και ένα κανονικό σενάριο Python είναι η κατηγορία/μέθοδος @app.route που χρησιμοποιείται για τον χειρισμό του URI. Εκτός από αυτό είναι αρκετά φυσιολογικό Python ως επί το πλείστον.
#!/usr/bin/env python
# # WiFi) # Συνδεθείτε στη θύρα comm για να μιλήσετε με τον ελεγκτή κινητήρα Roboclaw δοκιμάστε: # Αλλάξτε τον ρυθμό baud εδώ, αν είναι διαφορετικός από το 19200 roboclaw = serial. Serial ('/dev/ttyAMA0', 19200) εκτός από το IOError: print ("Comm port not βρέθηκε ") sys.exit (0) # Μεταβλητές ελέγχου ταχύτητας και κίνησης last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Servo neutral position (home) servo_pos = 1250 servo = PWM. Servo () servo.set_servo (18, servo_pos) # Λίγη παραμονή για τον καθορισμό του χρόνου. ύπνος (3) # # χειριστές URI - όλες οι ενέργειες της σελίδας bot γίνονται εδώ # # Αποστολή της σελίδας ελέγχου των bots (αρχική σελίδα) @app.route ("/") def index (): return render_template ('index.html', name = None) @app.route ("/forward") def forward (): global last_direction, run_ti εκτυπώ "Forward" go_forward () last_direction = 0 # sleep 100ms + run_time time.sleep (0.100 + run_time) # Εάν δεν είναι συνεχής, τότε σταματά μετά την καθυστέρηση εάν run_time> 0: last_direction = -1 halt () επιστρέφει "ok" @ app.route ("/backward") def backward (): global last_direction, run_time print "Backward" go_backward () last_direction = 1 # sleep 100ms + run_time time.sleep (0.100 + run_time) # Εάν δεν είναι συνεχής, τότε σταματήστε μετά την καθυστέρηση εάν run_time> 0: last_direction = -1 halt () επιστρέψτε "ok" @app.route ("/left") def left (): global last_direction, turn_tm_offset print "Left" go_left () last_direction = -1 # sleep @1 /2 δεύτερη φορά.sleep (0.500 - turn_tm_offset) # stop stopl () time.sleep (0.100) επιστροφή "ok" @app.route ("/right") def right (): global last_direction, turn_tm_offset print "Right" go_right () # sleep @1/2 second time.sleep (0.500 - turn_tm_offset) last_direction = -1 # stop stop () time.sleep (0.100) επιστροφή "ok" @app.route ("/ltforward") def ltforward (): καθολική last_direction, turn_t m_offset print "Left forward turn" go_left () # sleep @1 /8 second time.sleep (0.250 - (turn_tm_offset / 2)) last_direction = -1 # stop stop () time.sleep (0.100) return "ok" @app.route ("/rtforward") def rtforward (): global last_direction, turn_tm_offset print "Right forward turn" go_right () # sleep @1/8 second time.sleep (0.250 - (turn_tm_offset/2)) last_direction = -1 # stop halt () time.sleep (0.100) επιστροφή "ok" @app.route ("/stop") def stop (): global last_direction print "Stop" halt () last_direction = -1 # sleep 100ms time.sleep (0.100) επιστροφή "ok" @app.route ("/panlt") def panlf (): global servo_pos print "Panlt" servo_pos -= 100 if servo_pos 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # ύπνο 150ms χρόνο. sleep (0.150) επιστροφή "ok" @app.route ("/home") def home (): global servo_pos print "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/panfull_lt") def panfull_lt (): global print servo_pos print "Pan full l eft "servo_pos = 500 servo.set_servo (18, servo_pos) # ύπνο 150ms time.sleep (0.150) επιστροφή" ok " @app.route ("/panfull_rt ") def panfull_rt (): καθολική servo_pos εκτύπωση" Pan full right "servo_pos = 2500 servo.set_servo (18, servo_pos) # ύπνο 150ms time.sleep (0.150) επιστροφή "ok" @app.route ("/speed_low") def speed_low (): global speed_offset, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # Ενημέρωση τρέχουσας κατεύθυνσης για λήψη νέας ταχύτητας εάν last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) επιστροφή "ok" @app.route ("/speed_mid") def speed_mid (): καθολική speed_offset, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # Ενημέρωση τρέχουσας κατεύθυνσης για λήψη νέας ταχύτητας εάν last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) επιστροφή "εντάξει" @app.route ("/speed_hi") def speed_hi (): καθολική ταχύτητα_μετρήσεων, last_direction, turn_tm_offset speed_offset = 126 tur n_tm_offset = 0.332 # Ενημέρωση τρέχουσας κατεύθυνσης για λήψη νέας ταχύτητας εάν last_direction == 0: go_forward () if last_direction == 1: go_backward () # sleep 150ms time.sleep (0.150) επιστροφή "ok" @app.route ("/συνεχόμενη ") def berdewam (): καθολική εκτύπωση χρόνου_χρόνου" Συνεχής εκτέλεση "run_time = 0 # sleep 100ms time.sleep (0.100) επιστροφή" ok " @app.route ("/mid_run ") def mid_run (): global print_time print" Mid εκτέλεση "run_time = 0.750 halt () # sleep 100ms time.sleep (0.100) επιστροφή" ok " @app.route ("/short_time ") def short_time (): καθολική εκτύπωση χρόνου_χρόνου" Short run "run_time = 0.300 stopt () # ύπνος 100ms time.sleep (0.100) επιστροφή "εντάξει" # # Λειτουργίες κινητήρα # def go_forward (): καθολική ταχύτητα_συμπλοκής εάν speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) άλλο: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.wri te (chr (255 - speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_right (): global speed_offset if speed_offset! = 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) else: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) def halt (): roboclaw.write (chr (0)) if _name_ == "_main_": app.run (host = '0.0.0.0', port = 80, debug = True)
Εάν δεν θέλετε ή δεν χρειάζεστε πληροφορίες εντοπισμού σφαλμάτων από το Flask, ορίστε τον εντοπισμό σφαλμάτων σε "false" στη γραμμή app.run.
αν _name_ == "_main_":
app.run (host = '0.0.0.0', port = 80, debug = False)
Μπορείτε επίσης να αλλάξετε τη θύρα που ακούει ο διακομιστής Flask http επίσης εδώ.
Βήμα 14: Χρήση άλλου υλικού
Εάν θέλετε να χρησιμοποιήσετε άλλο υλικό, όπως άλλος τύπος SBC (υπολογιστής μεμονωμένου πίνακα), θα πρέπει να έχετε μικρά προβλήματα με την εκτέλεση Python και Flask σε άλλους πίνακες όπως το Beagle Bone, το PCDuino κ.λπ. … Θα πρέπει να αλλάξετε τον κώδικα για να ταιριάζει με το GPIO διάταξη και χρήση των δυνατοτήτων σερβο οδήγησης της νέας πλακέτας.
Για να χρησιμοποιήσετε έναν άλλο τύπο οδηγού κινητήρα, απλά πρέπει να τροποποιήσετε τις λειτουργίες go_forward, go_backward, go_left, go_right και stop για να κάνετε ό, τι χρειάζεται ο αντικαταστάτης του οδηγού κινητήρα για να κάνει τον κινητήρα να κάνει τη συγκεκριμένη λειτουργία.
Συνιστάται:
Διακόπτης φωτισμού ελεγχόμενου ματιού χρησιμοποιώντας τα γυαλιά Shota Aizawa's Eraser Head (My Hero Academia): 8 βήματα (με εικόνες)
Eye-Blink Controlled Light Switch Using Shota Aizawa's Eraser Head Goggles (My Hero Academia): Εάν διαβάζετε το manga του hero akademia ή παρακολουθείτε το anime του hero hero μου, πρέπει να γνωρίζετε έναν χαρακτήρα που ονομάζεται shota aizawa. Ο Shota Aizawa, γνωστός και ως Eraser Head, είναι επαγγελματίας ήρωας και δάσκαλος της τάξης 1-A των Η.Α. Το Shota's Quirk του δίνει το
Καπάκι μονόκερου ελεγχόμενου WiFi; Με φώτα RGB: 5 βήματα (με εικόνες)
Καπάκι μονόκερου ελεγχόμενου WiFi; Με RGB Lights: Γεια σε όλους. Ο μικρός μου με έσπρωχνε, για λίγο, για ενδιαφέροντα φορετά DIY που σχετίζονται με τους μονόκερους. Έτσι, έχω ξύσει το κεφάλι μου και αποφάσισα να δημιουργήσω κάτι ασυνήθιστο και με πολύ χαμηλό μπάτζετ. Αυτό το έργο δεν απαιτεί εφαρμογή για συνέχιση
Έλεγχος αυτοκινήτου RC μέσω διεπαφής ιστού: 6 βήματα (με εικόνες)
Έλεγχος του RC Car μέσω μιας διεπαφής Ιστού: Γεια σας φίλοι, Σε αυτό το διδακτικό θα σας διδάξω να φτιάχνετε ένα RC Car μέσω μιας διεπαφής ιστού. Θα το ελέγξουμε ασύρματα μέσω ενός δικού μας διακομιστή. Χρησιμοποιώντας τη μέθοδο που θα σας δείξω, δεν θα χρειαστεί να χρησιμοποιήσετε δέκτη RC. Για να φιλοξενήσετε τον ιστό
Ρυθμίστε το φιλτράρισμα περιεχομένου Ιστού σε 4 βήματα με το Ubuntu: 5 βήματα
Ρυθμίστε το φιλτράρισμα περιεχομένου Ιστού σε 4 βήματα με το Ubuntu: Ως τύπος πληροφορικής, ένα από τα πιο συνηθισμένα πράγματα που μου ζητούν οι συνεργάτες είναι πώς μπορούν να ελέγξουν σε ποιους ιστότοπους μπορούν να έχουν πρόσβαση τα παιδιά τους στο διαδίκτυο. Αυτό είναι πολύ εύκολο να γίνει και δωρεάν χρησιμοποιώντας Ubuntu linux, dansguardian και tinyproxy
Έλεγχος Ιστού Arduino LED: 5 βήματα (με εικόνες)
Web Controlled Arduino LED: Αυτό το εκπαιδευτικό σάς δείχνει πώς μπορείτε να δημιουργήσετε μια τρισδιάστατη λυχνία LED με δυνατότητα Web, βασισμένη σε Arduino και ασπίδα WIZnet Ethernet, ελεγχόμενη από οποιοδήποτε πρόγραμμα περιήγησης στο Web. Επειδή το LED εκτίθεται μέσω μιας απλής διαδικτυακής υπηρεσίας RESTful που λειτουργεί με το χρώμα Arduino