Πίνακας περιεχομένων:

Δημιουργήστε το ρομπότ ροής βίντεο που ελέγχεται από το Διαδίκτυο με Arduino και Raspberry Pi: 15 βήματα (με εικόνες)
Δημιουργήστε το ρομπότ ροής βίντεο που ελέγχεται από το Διαδίκτυο με Arduino και Raspberry Pi: 15 βήματα (με εικόνες)

Βίντεο: Δημιουργήστε το ρομπότ ροής βίντεο που ελέγχεται από το Διαδίκτυο με Arduino και Raspberry Pi: 15 βήματα (με εικόνες)

Βίντεο: Δημιουργήστε το ρομπότ ροής βίντεο που ελέγχεται από το Διαδίκτυο με Arduino και Raspberry Pi: 15 βήματα (με εικόνες)
Βίντεο: Συνδέοντας την εκπαίδευση STEM με τη Ρομποτική, Oμιλία Μηνά Δασυγένη 2019 σε εκδήλωση ΠΔΜ 2024, Ιούλιος
Anonim
Δημιουργήστε το ρομπότ ροής βίντεο που ελέγχεται από το Διαδίκτυο με Arduino και Raspberry Pi
Δημιουργήστε το ρομπότ ροής βίντεο που ελέγχεται από το Διαδίκτυο με Arduino και Raspberry Pi
Δημιουργήστε το ρομπότ ροής βίντεο που ελέγχεται από το Διαδίκτυο με Arduino και Raspberry Pi
Δημιουργήστε το ρομπότ ροής βίντεο που ελέγχεται από το Διαδίκτυο με Arduino και Raspberry Pi
Δημιουργήστε το ρομπότ ροής βίντεο που ελέγχεται από το Διαδίκτυο με Arduino και Raspberry Pi
Δημιουργήστε το ρομπότ ροής βίντεο που ελέγχεται από το Διαδίκτυο με Arduino και Raspberry Pi

Είμαι ο @RedPhantom (γνωστός και ως LiquidCrystalDisplay / Itay), ένας 14χρονος μαθητής από το Ισραήλ που μαθαίνει στο Max Shein Junior High School for Advanced Science and Mathematics. Κάνω αυτό το έργο για να μάθουν όλοι και να το μοιραστούν!

Mayσως να σκεφτήκατε τον εαυτό σας: χμμμ … είμαι γκέικ … Και τα παιδιά μου θέλουν να κάνω ένα έργο μαζί τους … θελε να φτιάξει ένα ρομπότ. Wantedθελε να το ντύσει σαν ένα μικρό κουτάβι. Είναι ένα καλό έργο για τα Σαββατοκύριακα!

Το Raspberry Pi είναι ιδανικό για κάθε χρήση: σήμερα θα εκφράσουμε τις δυνατότητες αυτού του μικροϋπολογιστή να φτιάξει ένα ρομπότ. Αυτό το ρομπότ μπορεί:

  • Οδηγήστε και ελέγξτε μέσω LAN (WiFi) χρησιμοποιώντας οποιονδήποτε υπολογιστή συνδεδεμένο στο ίδιο δίκτυο WiFi με το Raspberry Pi.
  • Μεταδώστε ζωντανά βίντεο χρησιμοποιώντας τη μονάδα κάμερας Raspberry Pi
  • Αποστολή δεδομένων αισθητήρα χρησιμοποιώντας το Arduino

Για να δείτε τι χρειάζεστε για αυτό το ωραίο έργο φωτισμού διαβάστε το επόμενο βήμα (προειδοποιήσεις) και μετά το βήμα Wanted: Components.

Εδώ είναι το repo του GitHub: GITHUB REPO BY ME

Εδώ είναι η τοποθεσία του έργου: PROJECT SITE BY ME

Βήμα 1: Προειδοποίηση: Προσέξτε να το δοκιμάσετε στο σπίτι

ΠΡΟΣΟΧΗ:

Ο ΣΥΓΓΡΑΦΕΑΣ ΑΥΤΟΥ ΤΟΥ ΦΡΟΝΤΙΣΤΙΚΟΥ ΥΠΟΘΕΣΕΙ ΟΤΙ ΕΧΕΤΕ ΑΡΚΕΤΕΣ ΓΝΩΣΕΙΣ ΓΙΑ ΤΗΝ ΗΛΕΚΤΡΙΚΟΤΗΤΑ ΚΑΙ ΤΗ ΒΑΣΙΚΗ ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ ΗΛΕΚΤΡΙΚΟΥ ΕΞΟΠΛΙΣΜΟΥ. ΑΝ ΔΕΝ ΕΙΣΤΕ ΠΡΟΣΕΚΤΙΚΟΙ ΚΑΙ ΜΗΝ ΑΚΟΛΟΥΘΗΣΕΤΕ ΤΙΣ ΟΔΗΓΙΕΣ ΣΕ ΑΥΤΟ ΤΟ ΦΡΟΝΤΙΣΤΗΡΙΟ ΠΟΥ ΜΠΟΡΕΙΤΕ: ΒΛΑΒΕΤΕ ΤΟΝ ΗΛΕΚΤΡΟΝΙΚΟ ΕΞΟΠΛΙΣΜΟ, ΚΑΙΤΕ ΤΟΝ ΕΑΥΤΟ ΣΑΣ OR ΠΡΟΦΥΛΑΞΕ ΦΩΤΙΑ. Παρακαλώ προσέξτε και χρησιμοποιήστε την κοινή λογική. Εάν δεν έχετε τις γνώσεις που απαιτούνται για αυτό το σεμινάριο (συγκόλληση, βασικά ηλεκτρονικά), παρακαλούμε να συνεργαστείτε με ένα άτομο που το κάνει. Σας ευχαριστώ.

Ο ΣΥΓΓΡΑΦΕΑΣ ΑΥΤΗΣ ΤΗΣ ΟΔΗΓΙΑΣ ΑΦΑΙΡΕΣΕΙ ΟΠΟΙΑΔΗΠΟΤΕ ΕΥΘΥΝΗ ΑΠΟ ΤΟΝ ΕΑΥΤΟ ΤΟΥ ΓΙΑ ΖΗΜΙΑ ΠΟΥ ΠΡΟΒΛΗΘΗΚΕ OR ΧΑΣΑΝ ΙΔΙΟΤΗΤΑ OR ΦΥΣΙΚΗ ΖΗΜΙΑ. ΧΡΗΣΗ ΚΟΙΝΗΣ ΑΙΣΘΗΣΗΣ

Βήμα 2: Συστατικά

Συνδέσεις
Συνδέσεις
Συνδέσεις
Συνδέσεις
Συνδέσεις
Συνδέσεις
Συνδέσεις
Συνδέσεις

Πριν ζεστάνουμε το συγκολλητικό σίδερο, πρέπει να εξετάσουμε τι πρέπει να συνδεθεί με τι. Έφτιαξα αυτό το απλό γράφημα (το MS Paint δεν με απογοητεύει ποτέ) που περιγράφει πού βρίσκονται ορισμένα μέρη μέσα στο ρομπότ.

Η εικόνα είναι κατασκευασμένη έτσι ώστε να μπορείτε να κάνετε μεγέθυνση και να δείτε σε πλήρη ανάλυση και να διαβάσετε το κείμενο.

Βήμα 6: Διεύθυνση για το Pi

Το Arduino συνομιλεί με το Pi σύμφωνα με το σχέδιο. Και το Pi μιλάει στον υπολογιστή, λοιπόν πώς λειτουργεί όλο αυτό;

Ας δούμε την ακολουθία έναρξης σύνδεσης:

  1. Το Raspberry Pi ξεκινά
  2. Αρχίζει το Arduino
  3. Το Raspberry Pi ξεκινά τον πελάτη TCP. Βγάζει τη διεύθυνση IP του μέσω LED.
  4. Το Raspberry Pi ξεκινά την υπηρεσία Serial Communications και συνδέεται με το Arduino

Επομένως, δημιουργήσαμε ένα είδος επικοινωνίας:

Υπολογιστής Raspberry Pi Arduino

Έχω χρησιμοποιήσει το Visual Basic. NET (Microsoft Visual Studio 2013 Community) για να γράψω το πρόγραμμα που συνομιλεί με το Raspberry Pi και την Python για να γράψω το πρωτόκολλο Arduino/Raspberry Pi.

Το μόνο που χρειάζεται να κάνετε για να γνωρίζετε τη διεύθυνση IP Pi σας, είναι να τη συνδέσετε σε μια οθόνη HDMI, να συνδεθείτε στο Shell και να πληκτρολογήσετε την εντολή:

όνομα κεντρικού υπολογιστή -I

Βήμα 7: Το σχέδιο

Τώρα που έχουμε τη διεύθυνση IP του Pi θα την SSH (SSH είναι Secure Shell - συνδέουμε απομακρυσμένα το κέλυφος Linux) και θα γράψουμε ένα αρχείο που εμφανίζει τη διεύθυνση IP του διακομιστή. Το Pi, κατά την εκκίνηση θα το κάνει επίσης και θα γράψει τη θύρα που ακούει. Εδώ θα δώσω μόνο μερικά παραδείγματα από τον κώδικα, αλλά είναι διαθέσιμο για λήψη από αυτό το βήμα και από τον κλάδο GitHub που έχω δημιουργήσει. Λεπτομέρειες σχετικά αργότερα.

Λειτουργεί έτσι:

  1. Το RPi ξεκινά.
  2. Το RPi ξεκινά το πρόγραμμα Tcp στην τοπική του IP και σε μια καθορισμένη θύρα.
  3. Το RPI ξεκινά τη ροή βίντεο
  4. Το RPI κλείνει.

Βήμα 8: Φυσική

Τώρα, είμαστε έτοιμοι να ξεκινήσουμε τη φυσική κατασκευή του συνόλου. Εάν δεν έχετε διαβάσει το βήμα 1 (προειδοποιητικό κείμενο και άδεια), κάντε το πριν προχωρήσετε. Δεν είμαι υπεύθυνος για οποιαδήποτε ζημιά προκληθεί. Και σε περίπτωση αμφιβολίας, αυτό το ρομπότ δεν πρέπει να χρησιμοποιείται για στρατιωτικούς σκοπούς, εκτός αν πρόκειται για αποκάλυψη ζόμπι. Και ακόμη και τότε χρησιμοποιήστε την κοινή λογική.

Προτείνεται να διαβάσετε τις οδηγίες που ακούτε στη Λίστα ανάγνωσης.

Κατεβάστε το σχήμα σύνδεσης από το βήμα "Συνδέσεις".

ΜΟΤΟΡ

Οι κινητήρες που αγοράσατε μοιάζουν πιθανώς έτσι, και είναι εντάξει αν δεν έχουν: εάν έχουν μόνο δύο καλώδια (μαύρες και κόκκινες στις περισσότερες περιπτώσεις) θα πρέπει να λειτουργούν. Αναζητήστε το φύλλο δεδομένων τους online για να δείτε την τάση και το ρεύμα λειτουργίας τους. Μη διστάσετε να κάνετε ερωτήσεις στην ενότητα σχολίων. Τα διαβάζω πάντα.

H-BRIDGE

Δεν έχω ξαναδουλέψει με H-Bridge. Έψαξα λίγο στο googl και βρήκα ένα καλό εκπαιδευτικό που εξηγούσε τις αρχές ενός HB. Μπορείτε επίσης να κοιτάξετε εκεί (δείτε το βήμα της Λίστας ανάγνωσης) και να γαντζώσετε επίσης τη δική σας. Δεν θα εξηγήσω πολλά. Μπορείτε να διαβάσετε εκεί και να γνωρίζετε όλα όσα πρέπει για αυτό το κύκλωμα.

LED

Αυτή η μικρή λάμπα μπορεί να τρέξει από λογική τάση μόνο και μόνο επειδή δεν απαιτεί σχεδόν καθόλου ρεύμα και τάση 3V-5V 4mA-18mA. Προαιρετικός.

ARDUINO

Το Arduino θα λάβει σήματα και εντολές μέσω σειριακής σύνδεσης από το Raspberry Pi. Χρησιμοποιούμε το Arduino για τον έλεγχο των κινητήρων μας επειδή το Raspberry Pi δεν μπορεί να εξάγει αναλογικές τιμές μέσω του GPIO.

Βήμα 9: Αυτόματη εκκίνηση Raspberry Pi

Κάθε φορά που ενεργοποιείτε το Raspberry Pi, θα πρέπει να πληκτρολογείτε το όνομα χρήστη και τον κωδικό πρόσβασης. Δεν θέλουμε να το κάνουμε αυτό γιατί μερικές φορές απλά δεν μπορούμε να συνδέσουμε ένα πληκτρολόγιο στο Pi, οπότε θα ακολουθήσουμε αυτά τα βήματα από αυτό το σεμινάριο για την αυτόματη εκκίνηση του προγράμματος που προετοιμάζει το Pi. Εάν κολλήσει σε έναν βρόχο, μπορούμε πάντα Ctrl+C να το διακόψουμε.

  • sudo crontab -e
  • Στη συνέχεια, θα εισαγάγουμε την εντολή που προσθέτει αυτό το αρχείο στο auto-strartup στο διαχειριστή cron.

Θα καλέσουμε το αρχείο pibot.sh το οποίο θα δίνει εντολές για την εκκίνηση όλων των ειδών των σεναρίων python για τη λειτουργία του ρομπότ. Ας το ξεπεράσουμε: (Εμείς sudo με τα προγράμματα κουρτίνας Python για να επιτρέψουμε στο πρόγραμμα να έχει πρόσβαση στο GPIO)

raspivid -o --t 0 -hf -w 640 -h 360 -fps 25 | ροή cvlc -vvv: /// dev/stdin --sout '#rtp {sdp = rtsp: //: 8554}': demux = h264

Ο κώδικας που κάνει όλη τη δουλειά στο πλάι του pi θα ονομάζεται upon_startup.sh.

Είναι ένα απλό σενάριο κελύφους που τρέχει τα πάντα.

Βήμα 10: Χιούστον, είχαμε πρόβλημα… Οι DC Motors δεν είναι το ίδιο μοντέλο

Έχω ήδη δοκιμάσει το H-Bridge και λειτουργεί καλά, αλλά όταν συνδέω τους κινητήρες που πήρα από την πλατφόρμα ρομπότ, παρήγγειλα online, αυτοί οι δύο κινητήρες γυρίζουν με διαφορετικές ταχύτητες και κάνουν διαφορετικούς θορύβους. Άλλαξα το γκάζι στο 100% στους κινητήρες. Και οι δύο δεν μπορούσαν να τρέξουν στη μέγιστη ικανότητά τους.

Φαίνεται ότι πρόκειται για δύο διαφορετικούς κινητήρες. Το ένα έχει μεγαλύτερη ροπή που είναι εξαιρετική για αυτό το είδος ρομπότ, αλλά το άλλο απλά δεν θα μετακινήσει το ρομπότ. Γυρίζει λοιπόν σε κύκλους.

Σε αυτό το σημείο, αυτό που έχω είναι ότι το σειριακό πρόγραμμα στο Arduino λειτουργεί εντελώς καλά, αλλά ο διακομιστής Tcp στον υπολογιστή και ο πελάτης Tcp στο Pi δεν έχουν κωδικοποιηθεί ακόμη. Πρέπει να συμπληρώσω αυτήν την καταχώρηση για τον διαγωνισμό. Τι να κάνω?

  1. Αρχικά, τριπλασιάζω την τάση για τους κινητήρες. Το φύλλο δεδομένων έλεγε 3V, 6V δεν τα μετακίνησε. Τότε είναι 9V. Συνδέω παράλληλα μπαταρίες teo για να διπλασιάσω το ρεύμα και η τάση παραμένει η ίδια.
  2. Έχω άλλους κινητήρες που ταιριάζουν στο στήριγμα στην πλατφόρμα; Maybeσως μπορώ να δω Αν είναι παρόμοια μοντέλα.
  3. Μπορώ να αντικαταστήσω το Servos εάν η σοκολάτα χτυπήσει πραγματικά τον ανεμιστήρα.

Το σχολείο ξεκίνησε. Πρέπει να δω τι θα κάνω.

Σημείωση: Γιατί στο καλό γράφω τα προβλήματα που αντιμετωπίζω εδώ; Έτσι, εάν είστε λιγότερο έμπειροι και έχετε τα ίδια προβλήματα, θα ξέρετε τι να κάνετε.

Η λύση:

Έκανα λοιπόν άλλη δοκιμή. Έχω προσαρμόσει τη διαφορά ταχύτητας στον κώδικα Arduino.

ΣΗΜΕΙΩΣΗ: οι κινητήρες μπορεί να περιστρέφονται σε διαφορετικές ταχύτητες για εσάς! Αλλάξτε τις τιμές στο σκίτσο του Arduino.

Βήμα 11: [TCP]: Γιατί Tcp και Not Secure Shell; Τι είναι το TCP;

Έχω δύο εξηγήσεις γιατί να χρησιμοποιήσω Tcp και όχι SSH για το P. C. - Pi επικοινωνία.

  1. Πρώτον, το SSH (Secure Shell, βλέπε Επεξηγήσεις) προορίζεται για την εκκίνηση εντολών από απομακρυσμένο υπολογιστή. Είναι πιο δύσκολο να ανταποκριθεί το Pi με πληροφορίες που θέλουμε, επειδή η μόνη επιλογή μας για ανάλυση των δεδομένων είναι μέσω σκληρής και κουραστικής επεξεργασίας συμβολοσειρών.
  2. Δεύτερον, γνωρίζουμε ήδη πώς να χρησιμοποιούμε το SSH και θέλουμε να μάθουμε περισσότερους τρόπους επικοινωνίας μεταξύ συσκευών σε αυτό το σεμινάριο.

Το TCP, ή το πρωτόκολλο ελέγχου μετάδοσης, είναι ένα βασικό πρωτόκολλο της σουίτας πρωτοκόλλων Internet. Προήλθε από την αρχική εφαρμογή δικτύου στην οποία συμπλήρωσε το Πρωτόκολλο Διαδικτύου (IP). Επομένως, ολόκληρη η σουίτα αναφέρεται συνήθως ως TCP/IP. Το TCP παρέχει αξιόπιστη, διατεταγμένη και ελεγχόμενη από σφάλματα ροή οκτάδας μεταξύ εφαρμογών που εκτελούνται σε κεντρικούς υπολογιστές που επικοινωνούν μέσω δικτύου IP.

(Από τη Βικιπαίδεια)

Τα πλεονεκτήματα του TCP είναι:

  • Ασφαλής
  • Γρήγορα
  • Λειτουργεί οπουδήποτε στο δίκτυο
  • Παρέχει μεθόδους για τον έλεγχο της σωστής μετάδοσης δεδομένων
  • Έλεγχος ροής: έχει προστασία σε περίπτωση που ο αποστολέας δεδομένων στέλνει δεδομένα πολύ γρήγορα για να εγγραφεί και να επεξεργαστεί ο πελάτης.

Και τα μειονεκτήματα είναι:

  • Στο TCP δεν μπορείτε να μεταδώσετε (Αποστολή δεδομένων σε όλες τις συσκευές σε ένα δίκτυο) και πολλαπλής εκπομπής (το ίδιο αλλά λίγο διαφορετικό- δίνει τη δυνατότητα σε κάθε συσκευή να μεταδίδεται σαν διακομιστής).
  • Σφάλματα στις βιβλιοθήκες του προγράμματος και του λειτουργικού σας συστήματος (που διαχειρίζονται οι ίδιοι την επικοινωνία TCP, ο δρομολογητής σας δεν κάνει σχεδόν τίποτα παρά μόνο να συνδέσει τις δύο [ή περισσότερες] συσκευές)

Γιατί να μην χρησιμοποιήσετε το UDP, μπορείτε να ρωτήσετε; Λοιπόν, σε αντίθεση με το TCP, το UDP δεν βεβαιώνεται ότι ο πελάτης σας λαμβάνει τα δεδομένα πριν στείλει περισσότερα. Όπως η αποστολή ενός μηνύματος ηλεκτρονικού ταχυδρομείου και η άγνοια εάν ο πελάτης το λαμβάνει. Επιπλέον, το UDP είναι λιγότερο ασφαλές. Για περισσότερες πληροφορίες, διαβάστε αυτήν την ανάρτηση από το Stack Exchange Super User

Αυτό το άρθρο είναι καλό και συνιστάται.

Βήμα 12: [TCP]: Lets Make a Client

Ο πελάτης (Raspberry Pi στην περίπτωσή μας), που λαμβάνει τα δεδομένα από τον διακομιστή (Ο υπολογιστής μας στην περίπτωσή μας) θα λάβει δεδομένα για αποστολή στο Pi (σειριακές εντολές που θα εκτελεστούν στο Arduino) και θα λάβει δεδομένα πίσω (Αναγνώσεις αισθητήρων και ανατροφοδότηση απευθείας από το Arduino. Το συνημμένο σχήμα δείχνει τη σχέση μεταξύ των τριών.

Το άρθρο Python Wiki TcpCommunication δείχνει ότι είναι τόσο απλό να πραγματοποιήσετε μια τέτοια επικοινωνία με μερικές γραμμές κώδικα χρησιμοποιώντας την ενσωματωμένη μονάδα υποδοχής. Θα έχουμε ένα πρόγραμμα στον υπολογιστή και ένα άλλο πρόγραμμα στο Pi.

Θα δουλέψουμε με διακοπές. Μάθετε περισσότερα στο βήμα Επεξηγήσεων σχετικά με αυτά. Διαβάστε επίσης για τα buffer. Τώρα, μπορούμε να διαβάσουμε τα δεδομένα που έχουμε χρησιμοποιώντας το data = s.recv (BUFFER_SIZE), αλλά θα είναι πόσοι χαρακτήρες έχουμε ορίσει με κενά τσιμπήματα. Μπορούμε να χρησιμοποιήσουμε διακοπές; Μια άλλη ερώτηση: θα είναι κενό το buffer ή θα περιμένει ο διακομιστής να στείλει περισσότερα δεδομένα, οπότε ο διακομιστής/πελάτης θα κάνει εξαίρεση;

Ας το αντιμετωπίσουμε ένα κάθε φορά. Πριν το κάνουμε αυτό, αναζήτησα αυτό το άρθρο της Βικιπαίδειας που παραθέτει χρησιμοποιούμενες θύρες TCP και UDP. Μετά από μια γρήγορη ματιά αποφάσισα ότι αυτό το έργο θα επικοινωνήσει στη θύρα 12298 επειδή δεν χρησιμοποιείται από το λειτουργικό σύστημα και τις τοπικές υπηρεσίες.

Βήμα 13: Δοκιμάστε τα Tcp Comms

Για να δούμε αν μπορούμε να χρησιμοποιήσουμε διακοπές, ας δημιουργήσουμε έναν απλό πελάτη και έναν διακομιστή χρησιμοποιώντας τη γραμμή εντολών Python. Θα το κάνω στα παρακάτω βήματα:

  1. Ξεκινήστε ένα πρόγραμμα που στέλνει ένα κείμενο μέσω Tcp σε έναν βρόχο μέσω μιας θύρας κουρτίνας
  2. Ξεκινήστε ένα άλλο πρόγραμμα (παράλληλα) που διαβάζει όλο το κείμενο σε έναν βρόχο και το εκτυπώνει στην οθόνη.

Θα εμφανίζονται μόνο τμήματα του προγράμματος. Όλα τα προγράμματα εκτελούνται με Python 3. Το μόνο που κάνουν αυτά είναι να στείλουν τη σειριακή εντολή από το πληκτρολόγιο του χρήστη του υπολογιστή στο Arduino μέσω του Pi.

  • SBcontrolPC.py - Για εκτέλεση στον υπολογιστή. Ξεκινά μια σύνδεση TCP στην τοπική διεύθυνση και στην καθορισμένη θύρα (χρησιμοποιώ τη θύρα 12298, δείτε το προηγούμενο βήμα γιατί)
  • SBcontrolPi.py - Για εκτέλεση στο Pi. Διαβάζει το buffer του κάθε μισό δευτερόλεπτο (0,5 δευτερόλεπτα). Ξεκινά ένα σενάριο κελύφους που διαχειρίζεται πράγματα όπως η ροή βίντεο κ.λπ.

Συνιστάται: