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

WiBot: 10 βήματα (με εικόνες)
WiBot: 10 βήματα (με εικόνες)

Βίντεο: WiBot: 10 βήματα (με εικόνες)

Βίντεο: WiBot: 10 βήματα (με εικόνες)
Βίντεο: WiBot ! 2024, Νοέμβριος
Anonim
WiBot
WiBot

Αυτό το διδακτικό αναφέρει λεπτομερώς τη διαδικασία δημιουργίας ενός ρομπότ Wi-Fi στην πλατφόρμα ZYBO. Αυτό το έργο χρησιμοποιεί ένα λειτουργικό σύστημα σε πραγματικό χρόνο για ανίχνευση αντικειμένων, μέτρηση απόστασης και έλεγχο απόκρισης. Αυτός ο οδηγός θα καλύψει τη διασύνδεση του ZYBO με περιφερειακά, την εκτέλεση προσαρμοσμένου υλικολογισμικού και την επικοινωνία μέσω εφαρμογής Java. Ακολουθεί μια λίστα με όλα τα βασικά στοιχεία που απαιτούνται για αυτό το έργο:

  • 1 Πίνακας Ανάπτυξης ZYBO
  • 1 ασύρματο δρομολογητή TL-WR802N
  • 1 Shadow Chassis
  • 2 Τροχοί 65mm
  • 2 Gearmotors 140 στροφών
  • 2 κωδικοποιητές τροχών
  • 1 Αισθητήρας υπερήχων HC-SR04
  • 1 BSS138 Logic Level Converter
  • 1 L293 H-Bridge Driver Motor
  • 1 Μετατροπέας 12V σε 5V DC/DC
  • 1 Μπαταρία LiPo 2200mAh
  • 1 καλώδιο Ethernet
  • 1 καλώδιο USB Micro-B
  • 1 θηλυκός συνδετήρας XT60
  • 2 αρσενικά προς θηλυκά άλματα καλωδίων
  • 30 Καλώδια από άντρα σε αρσενικό άλτη
  • 2 αντιστάσεις 10kΩ
  • 1 Breadboard

Επιπλέον, πρέπει να εγκατασταθεί το ακόλουθο λογισμικό στον υπολογιστή -στόχο:

  • Xilinx Vivado Design Suite 2018.2
  • Digilent Adept 2.19.2
  • FreeRTOS 10.1.1
  • Κιτ ανάπτυξης Java SE 8.191

Βήμα 1: Συναρμολόγηση πλαισίου ρομπότ

Συναρμολόγηση Robot Chassis
Συναρμολόγηση Robot Chassis
Συναρμολόγηση Robot Chassis
Συναρμολόγηση Robot Chassis
Συναρμολόγηση Robot Chassis
Συναρμολόγηση Robot Chassis

Συναρμολογήστε το σκελετό πλαίσιο και συνδέστε τους κινητήρες και τους κωδικοποιητές στο κάτω πλαίσιο. Ο αισθητήρας ZYBO, το breadboard και ο υπερήχων μπορούν να τοποθετηθούν με τα παρεχόμενα μέρη που μπορούν να εκτυπωθούν 3D και να στερεωθούν στο πλαίσιο χρησιμοποιώντας στάσεις και ταινία διπλής όψης. Η μπαταρία πρέπει να τοποθετηθεί κοντά στο πίσω μέρος του ρομπότ και κατά προτίμηση μεταξύ του επάνω και κατώτατα πλαίσια. Τοποθετήστε το δρομολογητή κοντά στο ZYBO και το μετατροπέα DC/DC κοντά στην πλάκα ψωμιού. Στερεώστε τους τροχούς στα κιβώτια ταχυτήτων στο τέλος.

Βήμα 2: Ηλεκτρονικά καλωδίων

Wire Electronics
Wire Electronics
Wire Electronics
Wire Electronics
Wire Electronics
Wire Electronics

Συνδέστε την είσοδο και την έξοδο του μετατροπέα DC/DC στις δύο ράγες ισχύος στον πίνακα ψωμιού αντίστοιχα. Αυτά θα χρησιμεύσουν ως παροχές 12V και 5V για το σύστημα. Συνδέστε το ZYBO στη ράγα 5V όπως φαίνεται στην εικόνα. Χρησιμοποιήστε ένα καλώδιο τροφοδοσίας USB Micro-B για να συνδέσετε το δρομολογητή στη ράγα 5V επίσης. Το καλώδιο XT60 πρέπει να στερεωθεί στη ράγα 12V. Μην συνδέετε την μπαταρία μέχρι να συνδεθούν σωστά τα υπόλοιπα ηλεκτρονικά. Ο αισθητήρας υπερήχων πρέπει να συνδεθεί με τη ράγα 5V. Δημιουργήστε μια ράγα 3,3V στο breadboard χρησιμοποιώντας τον πείρο 6 της θύρας Pmod JC στο ZYBO. Η είσοδος υψηλής τάσης του λογικού μετατροπέα πρέπει να είναι καλωδιωμένη στη ράγα 5V ενώ η είσοδος χαμηλής τάσης του λογικού μετατροπέα θα πρέπει να είναι καλωδιωμένη στη ράγα 3,3V. Συνδέστε τους κωδικοποιητές κινητήρα στη ράγα 3,3V. Συνδέστε το VCC1 του οδηγού κινητήρα στη ράγα 5V και συνδέστε το VCC2 στη ράγα 12V. Συνδέστε όλες τις ακίδες EN σε 5V και γειώστε όλες τις ακίδες GND.

Συνδέστε τις ακίδες TRIG και ECHO του αισθητήρα υπερήχων στο HV1 και HV2 του λογικού μετατροπέα αντίστοιχα. Το LV1 πρέπει να είναι καλωδιωμένο στο JC4 και το LV2 πρέπει να είναι καλωδιωμένο στο JC3. Ανατρέξτε στο γράφημα για pinouts Pmod. Συνδέστε τους κινητήρες στο πρόγραμμα οδήγησης. Το Y1 πρέπει να συνδεθεί με τον θετικό ακροδέκτη του δεξιού κινητήρα και το Y2 πρέπει να συνδεθεί με τον αρνητικό ακροδέκτη του δεξιού κινητήρα. Ομοίως, το Y3 πρέπει να συνδεθεί με τον θετικό ακροδέκτη του αριστερού κινητήρα και το Y4 πρέπει να συνδεθεί με τον αρνητικό ακροδέκτη του αριστερού κινητήρα. Τα Α1, Α2, Α3 και Α4 πρέπει να αντιστοιχίζονται στα JB2, JB1, JB4 και JB3 αντίστοιχα. Ανατρέξτε στο σχηματικό για τους αριθμούς ακίδων. Καλώδιο JC2 στο δεξί κωδικοποιητή και JC1 στον αριστερό κωδικοποιητή. Βεβαιωθείτε ότι χρησιμοποιούνται αντιστάσεις έλξης για τη σύνδεση αυτών των σημάτων στη ράγα 3,3V. Τέλος, χρησιμοποιήστε το καλώδιο ethernet για να συνδέσετε το ZYBO στο δρομολογητή.

Βήμα 3: Δημιουργήστε διάγραμμα αποκλεισμού στο Vivado

Δημιουργήστε διάγραμμα μπλοκ στο Vivado
Δημιουργήστε διάγραμμα μπλοκ στο Vivado

Δημιουργήστε ένα νέο έργο RTL στο Vivado. Βεβαιωθείτε ότι δεν καθορίζετε καμία πηγή προς το παρόν. Αναζητήστε "xc7z010clg400-1" και πατήστε φινίρισμα. Λήψη encoder_driver.sv και ultrasonic_driver.sv. Τοποθετήστε τους στους δικούς τους φακέλους. Ανοίξτε το IP Packager στην ενότητα "Εργαλεία" και επιλέξτε να συσκευάσετε έναν καθορισμένο κατάλογο. Επικολλήστε τη διαδρομή στο φάκελο που περιέχει το πρόγραμμα οδήγησης κωδικοποιητή και πατήστε "Επόμενο". Κάντε κλικ στο "πακέτο IP" και επαναλάβετε τις διαδικασίες για το πρόγραμμα οδήγησης αισθητήρα υπερήχων. Στη συνέχεια, μεταβείτε στον διαχειριστή αποθετηρίων στην υποενότητα IP στο μενού ρυθμίσεων. Προσθέστε τις διαδρομές στους φακέλους του προγράμματος οδήγησης και πατήστε Apply για να τις συμπεριλάβετε στη βιβλιοθήκη IP.

Δημιουργήστε ένα νέο διάγραμμα μπλοκ και προσθέστε το "Σύστημα επεξεργασίας ZYNQ7". Κάντε διπλό κλικ στο μπλοκ και εισαγάγετε το παρεχόμενο αρχείο ZYBO_zynq_def.xml. Στην ενότητα "Διαμόρφωση MIO", ενεργοποιήστε το χρονόμετρο 0 και το GPIO MIO. πατήστε "OK" για να αποθηκεύσετε τη διαμόρφωση. Προσθέστε 3 μπλοκ "AXI GPIO" και 4 μπλοκ "AXI Timer". Εκτελέστε αυτοματοποίηση μπλοκ ακολουθούμενο από αυτοματοποίηση σύνδεσης για S_AXI. Κάντε διπλό κλικ στα μπλοκ GPIO για να τα διαμορφώσετε. Ένα μπλοκ πρέπει να είναι διπλού καναλιού με είσοδο 4 bit και έξοδο 4 bit. Κάντε αυτές τις συνδέσεις εξωτερικές και χαρακτηρίστε τις SW για είσοδο και LED για έξοδο. Το δεύτερο μπλοκ θα πρέπει επίσης να είναι διπλού καναλιού με 2 εισόδους 32-bit. Το τελευταίο μπλοκ GPIO θα είναι μία μόνο είσοδος 32 bit. Κάντε την έξοδο pwm0 από κάθε μπλοκ χρονοδιακόπτη εξωτερική. Επισημάνετε τα με PWM0, PWM1, PWM2 και PWM3.

Προσθέστε το πρόγραμμα οδήγησης κωδικοποιητή στο διάγραμμα μπλοκ και συνδέστε το CLK στο FCLK_CLK0. Συνδέστε το OD0 και το OD1 στα κανάλια εισόδου του δεύτερου μπλοκ GPIO. Κάντε το ENC εξωτερικό και μετονομάστε το ENC_0 σε ENC. Προσθέστε το μπλοκ αισθητήρα υπερήχων και συνδέστε το CLK στο FCLK_CLK0. Κάντε το TRIG και το ECHO εξωτερικό και μετονομάστε το TRIG_0 σε TRIG και το ECHO_0 σε ECHO. Συνδέστε το RF στο τρίτο μπλοκ GPIO. Ανατρέξτε στο παρεχόμενο μπλοκ διάγραμμα για αναφορά.

Κάντε δεξί κλικ στο αρχείο μπλοκ διαγράμματος στο παράθυρο Πηγές και δημιουργήστε ένα περιτύλιγμα HDL. Φροντίστε να επιτρέπετε τις τροποποιήσεις χρήστη. Προσθέστε το παρεχόμενο αρχείο ZYBO_Master.xdc ως περιορισμό. Πατήστε "Δημιουργία Bitstream" και κάντε ένα διάλειμμα για καφέ.

Βήμα 4: Ρύθμιση περιβάλλοντος ανάπτυξης λογισμικού

Μεταβείτε στην ενότητα "Αρχείο" για να εξάγετε υλικό στο Vivado SDK. Βεβαιωθείτε ότι έχετε συμπεριλάβει το bitstream. Εισαγάγετε το έργο RTOSDemo μέσα στο "CORTEX_A9_Zynq_ZC702". Θα βρίσκεται στον κατάλογο εγκατάστασης του FreeRTOS. Δημιουργήστε ένα νέο πακέτο υποστήριξης πίνακα επιλέξτε τη βιβλιοθήκη lwip202. Αλλάξτε το αναφερόμενο BSP στο έργο RTOSDemo στο BSP που μόλις δημιουργήσατε*.

*Κατά τη σύνταξη αυτού του Instructable, το FreeRTOS φαίνεται να έχει ένα σφάλμα με την αναφορά στο σωστό BSP. Για να διορθώσετε αυτό, δημιουργήστε ένα νέο BSP με τις ίδιες ρυθμίσεις με το πρώτο. Αλλάξτε το αναφερόμενο BSP στο νέο και, στη συνέχεια, αλλάξτε το ξανά στο παλιό αφού αποτύχει να κατασκευαστεί. Το FreeRTOS θα πρέπει τώρα να μεταγλωττίζεται χωρίς σφάλματα. Μη διστάσετε να διαγράψετε το BSP που δεν χρησιμοποιείται.

Βήμα 5: Τροποποιήστε το πρόγραμμα επίδειξης

Δημιουργήστε έναν νέο φάκελο που ονομάζεται "προγράμματα οδήγησης" στον κατάλογο "src" του RTOSDemo. Αντιγράψτε το παρεχόμενο gpio.h. gpio.c, pwm.h, pwm.c, odometer.h, odometer.c, rangefinder.c, rangefinder.h, motor.h και motor.c στον κατάλογο "drivers".

Ανοίξτε το main.c και ορίστε το κύριοSELECTED_APPLICATION σε 2. Αντικαταστήστε το main_lwIP.c στην ενότητα "lwIP_Demo" με την ενημερωμένη έκδοση. Το BasicSocketCommandServer.c στην ενότητα "lwIP_Demo/apps/BasicSocketCommandServer" πρέπει επίσης να ενημερωθεί με νέα έκδοση. Τέλος, μεταβείτε στο "FreeRTOSv10.1.1/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos" και αντικαταστήστε το Sample-CLI-commands.c με την παρεχόμενη έκδοση. Δημιουργήστε το έργο και διασφαλίστε ότι όλα μεταγλωττίζονται με επιτυχία.

Βήμα 6: Flash Firmware σε QSPI

Firmware Flash σε QSPI
Firmware Flash σε QSPI
Firmware Flash σε QSPI
Firmware Flash σε QSPI
Firmware Flash σε QSPI
Firmware Flash σε QSPI

Δημιουργήστε ένα νέο έργο εφαρμογής που ονομάζεται "FSBL" χρησιμοποιώντας το πρότυπο "Zynq FSBL". Αφού συντάξετε το έργο FSBL, δημιουργήστε μια εικόνα εκκίνησης του έργου RTOSDemo. Βεβαιωθείτε ότι το "FSBL/Debug/FSBL.elf" είναι επιλεγμένο ως πρόγραμμα εκκίνησης στην ενότητα "Διαμερίσματα εικόνας εκκίνησης". Προσθέστε με μη αυτόματο τρόπο τη διαδρομή σε αυτό το αρχείο, εάν δεν περιλαμβάνεται στη λίστα.

Μετακινήστε το βραχυκυκλωτήρα JP5 στο ZYBO στο "JTAG". Χρησιμοποιήστε ένα καλώδιο USB Micro-B για να συνδέσετε τον υπολογιστή σας στο ZYBO. Συνδέστε την μπαταρία και ενεργοποιήστε το ZYBO. Εκτελέστε το Adept για να βεβαιωθείτε ότι το ZYBO αναγνωρίζεται σωστά από τον υπολογιστή. Κάντε κλικ στο "Program Flash" στο Vivado SDK και δώστε τις διαδρομές στο αρχείο BOOT.bin στο RTOSDemo και το αρχείο FSBL.elf στο FSBL. Βεβαιωθείτε ότι έχετε επιλέξει "Επαλήθευση μετά το φλας" πριν πατήσετε "Πρόγραμμα". Παρακολουθήστε την κονσόλα για να διασφαλίσετε ότι η λειτουργία αναβοσβήνει ολοκληρώθηκε με επιτυχία. Στη συνέχεια, απενεργοποιήστε το ZYBO και αποσυνδέστε το καλώδιο USB. Μετακινήστε το βραχυκυκλωτήρα JP5 στο "QSPI".

Βήμα 7: Διαμόρφωση ασύρματου σημείου πρόσβασης

Με την μπαταρία ακόμα συνδεδεμένη, συνδεθείτε στο δίκτυο Wi-Fi του δρομολογητή. Το προεπιλεγμένο SSID και ο κωδικός πρόσβασης πρέπει να βρίσκονται στο κάτω μέρος του δρομολογητή. Στη συνέχεια, μεταβείτε στο https://tplinkwifi.net και συνδεθείτε χρησιμοποιώντας το "admin" για το όνομα χρήστη και τον κωδικό πρόσβασης. Εκτελέστε τον οδηγό γρήγορης εγκατάστασης για να διαμορφώσετε το δρομολογητή σε λειτουργία σημείου πρόσβασης με ενεργοποιημένο το DHCP. Βεβαιωθείτε ότι έχετε ενημερώσει και το προεπιλεγμένο όνομα χρήστη και κωδικό πρόσβασης για τη συσκευή. Ο δρομολογητής θα πρέπει να επανεκκινήσει αυτόματα σε λειτουργία σημείου πρόσβασης αφού τελειώσετε.

Ενεργοποιήστε το ZYBO και συνδεθείτε στο δρομολογητή χρησιμοποιώντας το SSID που εκχωρήσατε. Ο δρομολογητής πιθανότατα θα εμφανιστεί είτε στη διεύθυνση IP 192.168.0.100 είτε στην 192.160.0.101. Το ZYBO θα εκχωρηθεί όποια διεύθυνση δεν έχει ο δρομολογητής. Για να προσδιορίσετε γρήγορα τη διεύθυνση IP του δρομολογητή, μπορείτε να εκτελέσετε "ipconfig" από τη γραμμή εντολών στα παράθυρα ή "ifconfig" από το τερματικό σε Linux ή MacOS. Εάν είστε ακόμα συνδεδεμένοι στο δρομολογητή, θα δείτε τη διεύθυνση IP του να εμφανίζεται δίπλα στην ασύρματη διεπαφή σας. Χρησιμοποιήστε αυτές τις πληροφορίες για να καθορίσετε τη διεύθυνση IP του ZYBO. Για να επιβεβαιώσετε τη διεύθυνση IP του ZYBO, μπορείτε είτε να το ping από τη γραμμή εντολών είτε να συνδεθείτε σε αυτό μέσω telnet.

Βήμα 8: Εκτέλεση προγράμματος Java

Εκτελέστε πρόγραμμα Java
Εκτελέστε πρόγραμμα Java

Κατεβάστε το RobotClient.java και μεταγλωττίστε το αρχείο χρησιμοποιώντας την εντολή "javac RobotClient.java" από τη γραμμή εντολών. Εκτελέστε την εντολή "java RobotClient" όπου "ip_address" είναι η διεύθυνση IP του ZYBO. Το GUI ελέγχου θα εμφανιστεί εάν δημιουργηθεί μια επιτυχής σύνδεση μεταξύ του υπολογιστή και του ZYBO. Αφού εστιάσετε το παράθυρο, το ρομπότ θα πρέπει να είναι ελεγχόμενο χρησιμοποιώντας τα πλήκτρα βέλους στο πληκτρολόγιο. Πατήστε το κουμπί διαφυγής για να τερματίσετε τη συνεδρία και να αποσυνδεθείτε από το ρομπότ.

Το GUI θα επισημάνει τα πλήκτρα που πιέζονται και θα εμφανίσει την έξοδο του κινητήρα επάνω δεξιά. Ο μετρητής απόστασης στα αριστερά γεμίζει μια μπάρα κάθε 2 μέτρα έως το πολύ 10 μέτρα.

Βήμα 9: Βαθμονόμηση εύρους εύρους

Οι διακόπτες στο ZYBO μπορούν να χρησιμοποιηθούν για τη διαμόρφωση του ενσωματωμένου εύρους εύρους. Η ελάχιστη απόσταση ανίχνευσης d δίνεται ως συνάρτηση της εισόδου διακόπτη i:

d = 50i + 250

Η είσοδος μπορεί να ποικίλει μεταξύ 0 και 15 σε ακέραια βήματα. Αυτό μεταφράζεται σε απόσταση από 0,25 μέτρα έως 1 μέτρο. Στην ελάχιστη απόσταση, το πρώτο LED θα αρχίσει να αναβοσβήνει. Ο αριθμός των LED που είναι ενεργά είναι ανάλογος με την εγγύτητα του αντικειμένου.

Βήμα 10: Προσβασιμότητα

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

Συνιστάται: