Inhaltsverzeichnis:

WiBot - Gunook
WiBot - Gunook

Video: WiBot - Gunook

Video: WiBot - Gunook
Video: WIBOT 🤖 SIMPLIFICA LA VIDA DE TUS CLIENTES ✔️ Aprende a Configurar un usuario WIBOT 2024, November
Anonim
WiBot
WiBot

Dieses anweisbare beschreibt den Prozess zum Bau eines Wi-Fi-Roboters auf der ZYBO-Plattform. Dieses Projekt verwendet ein Echtzeit-Betriebssystem für die Objekterkennung, Entfernungsmessung und reaktionsschnelle Steuerung. In diesem Handbuch wird die Verbindung des ZYBO mit Peripheriegeräten, das Ausführen benutzerdefinierter Firmware und die Kommunikation über eine Java-Anwendung behandelt. Im Folgenden finden Sie eine Liste aller Schlüsselkomponenten, die für dieses Projekt erforderlich sind:

  • 1 ZYBO-Entwicklungsboard
  • 1 WLAN-Router TL-WR802N
  • 1 Schatten-Chassis
  • 2 65-mm-Räder
  • 2 140 U/min Getriebemotoren
  • 2 Rad-Encoder
  • 1 Ultraschallsensor HC-SR04
  • 1 BSS138 Logikpegelwandler
  • 1 L293 H-Brücken-Motortreiber
  • 1 12V zu 5V DC/DC-Wandler
  • 1 2200mAh LiPo-Akku
  • 1 Ethernet-Kabel
  • 1 USB Micro-B-Kabel
  • 1 weiblicher XT60-Anschluss
  • 2 Stecker-zu-Buchse-Überbrückungsdrähte
  • 30 Stecker-zu-Stecker-Überbrückungsdrähte
  • 2 10kΩ Widerstände
  • 1 Steckbrett

Zusätzlich muss auf dem Zielrechner folgende Software installiert sein:

  • Xilinx Vivado Design Suite 2018.2
  • Digilent-Adept 2.19.2
  • FreeRTOS 10.1.1
  • Java SE-Entwicklungskit 8.191

Schritt 1: Robotergehäuse zusammenbauen

Robotergehäuse zusammenbauen
Robotergehäuse zusammenbauen
Robotergehäuse zusammenbauen
Robotergehäuse zusammenbauen
Robotergehäuse zusammenbauen
Robotergehäuse zusammenbauen

Montieren Sie das Schattenchassis und befestigen Sie die Getriebemotoren und Encoder am unteren Rahmen. Der ZYBO, das Steckbrett und der Ultraschallsensor können mit den mitgelieferten Teilen montiert werden, die in 3D gedruckt und mit Abstandshaltern und doppelseitigem Klebeband am Chassis befestigt werden können unteren Rahmen. Montieren Sie den Router in der Nähe des ZYBO und den DC/DC-Wandler in der Nähe des Steckbretts. Befestigen Sie die Räder ganz am Ende an den Getriebemotoren.

Schritt 2: Drahtelektronik

Drahtelektronik
Drahtelektronik
Drahtelektronik
Drahtelektronik
Drahtelektronik
Drahtelektronik

Verbinden Sie den Eingang und Ausgang des DC/DC-Wandlers jeweils mit den beiden Stromschienen auf dem Steckbrett. Diese dienen als 12-V- und 5-V-Versorgung für das System. Verbinden Sie den ZYBO wie im Bild gezeigt mit der 5V-Schiene. Verwenden Sie ein USB Micro-B-Versorgungskabel, um den Router ebenfalls mit der 5V-Schiene zu verbinden. Das XT60-Kabel sollte an die 12V-Schiene angeschlossen werden. Stecken Sie den Akku erst ein, wenn die restliche Elektronik richtig verkabelt ist. Der Ultraschallsensor sollte an die 5V-Schiene angeschlossen werden. Erstellen Sie eine 3,3-V-Schiene auf dem Steckbrett mit Pin 6 des Pmod-Ports JC am ZYBO. Der Hochspannungseingang des Logikwandlers sollte mit der 5V-Schiene verdrahtet werden, während der Niederspannungseingang des Logikwandlers mit der 3,3V-Schiene verdrahtet werden sollte. Verdrahten Sie die Motor-Encoder mit der 3,3-V-Schiene. Verbinden Sie VCC1 des Motortreibers mit der 5V-Schiene und verbinden Sie VCC2 mit der 12V-Schiene. Binden Sie alle EN-Pins an 5V und erden Sie alle GND-Pins.

Verbinden Sie die TRIG- und ECHO-Pins des Ultraschallsensors mit HV1 bzw. HV2 des Logikwandlers. LV1 sollte an JC4 und LV2 an JC3 angeschlossen werden. Beziehen Sie sich auf die Tabelle für Pmod-Pinbelegungen. Verbinden Sie die Motoren mit dem Motortreiber. Y1 sollte an den Pluspol des rechten Motors angeschlossen werden und Y2 sollte an den Minuspol des rechten Motors angeschlossen werden. Ebenso sollte Y3 an den Pluspol des linken Motors und Y4 an den Minuspol des linken Motors angeschlossen werden. A1, A2, A3 und A4 sollten JB2, JB1, JB4 bzw. JB3 zugeordnet werden. Die Pin-Nummern finden Sie im Schaltplan. Verbinden Sie JC2 mit dem rechten Encoder und JC1 mit dem linken Encoder. Stellen Sie sicher, dass Pullup-Widerstände verwendet werden, um diese Signale an die 3,3-V-Schiene zu binden. Verwenden Sie schließlich das Ethernet-Kabel, um den ZYBO mit dem Router zu verbinden.

Schritt 3: Erstellen Sie ein Blockdiagramm in Vivado

Erstellen Sie ein Blockdiagramm in Vivado
Erstellen Sie ein Blockdiagramm in Vivado

Erstellen Sie ein neues RTL-Projekt in Vivado. Stellen Sie sicher, dass Sie zu diesem Zeitpunkt keine Quellen angeben. Suchen Sie nach "xc7z010clg400-1" und klicken Sie auf Fertig stellen. Laden Sie encoder_driver.sv und ultraschall_driver.sv herunter. Legen Sie sie in ihre eigenen Ordner. Öffnen Sie den IP Packager unter "Tools" und wählen Sie ein bestimmtes Verzeichnis zu packen. Fügen Sie den Pfad zum Ordner mit dem Encoder-Treiber ein und klicken Sie auf "Weiter". Klicken Sie auf „Paket IP“und wiederholen Sie die Vorgänge für den Ultraschallsensortreiber. Navigieren Sie anschließend zum Repository-Manager unter dem Unterabschnitt IP im Einstellungsmenü. Fügen Sie die Pfade zu den Treiberordnern hinzu und klicken Sie auf Übernehmen, um sie in die IP-Bibliothek aufzunehmen.

Erstellen Sie ein neues Blockdiagramm und fügen Sie das "ZYNQ7 Processing System" hinzu. Doppelklicken Sie auf den Block und importieren Sie die bereitgestellte Datei ZYBO_zynq_def.xml. Aktivieren Sie unter "MIO-Konfiguration" Timer 0 und GPIO MIO. Klicken Sie auf "OK", um die Konfiguration zu speichern. Fügen Sie 3 Blöcke "AXI GPIO" und 4 Blöcke "AXI Timer" hinzu. Führen Sie die Blockautomatisierung aus, gefolgt von der Verbindungsautomatisierung für S_AXI. Doppelklicken Sie auf die GPIO-Blöcke, um sie zu konfigurieren. Ein Block sollte zweikanalig mit einem 4-Bit-Eingang und einem 4-Bit-Ausgang sein. Machen Sie diese Verbindungen extern und beschriften Sie sie mit SW für Eingang und LED für Ausgang. Der zweite Block sollte ebenfalls zweikanalig mit 2 32-Bit-Eingängen sein. Der letzte GPIO-Block ist ein einzelner 32-Bit-Eingang. Machen Sie die PWM0-Ausgabe von jedem Timer-Block extern. Beschriften Sie sie mit PWM0, PWM1, PWM2 und PWM3.

Fügen Sie den Encoder-Treiber zum Blockdiagramm hinzu und verbinden Sie CLK mit FCLK_CLK0. Verbinden Sie OD0 und OD1 mit den Eingangskanälen des zweiten GPIO-Blocks. Machen Sie ENC extern und benennen Sie ENC_0 in ENC um. Fügen Sie den Ultraschallsensorblock hinzu und verbinden Sie CLK mit FCLK_CLK0. Machen Sie TRIG und ECHO extern und benennen Sie TRIG_0 in TRIG und ECHO_0 in ECHO um. Verbinden Sie RF mit dem dritten GPIO-Block. Siehe das bereitgestellte Blockdiagramm als Referenz.

Klicken Sie im Quellenbereich mit der rechten Maustaste auf Ihre Blockdiagrammdatei und erstellen Sie einen HDL-Wrapper. Achten Sie darauf, Benutzeränderungen zuzulassen. Fügen Sie die bereitgestellte Datei ZYBO_Master.xdc als Einschränkung hinzu. Klicken Sie auf "Bitstream generieren" und machen Sie eine Kaffeepause.

Schritt 4: Einrichten der Softwareentwicklungsumgebung

Gehen Sie unter "Datei", um Hardware in das Vivado SDK zu exportieren. Stellen Sie sicher, dass Sie den Bitstream einschließen. Importieren Sie das RTOSDemo-Projekt in das "CORTEX_A9_Zynq_ZC702". Es befindet sich im FreeRTOS-Installationsverzeichnis. Erstellen Sie ein neues Board Support Package, wählen Sie die Bibliothek lwip202 aus. Ändern Sie das referenzierte BSP im RTOSDemo-Projekt in das gerade erstellte BSP*.

* Zum Zeitpunkt des Schreibens dieses Instructable scheint FreeRTOS einen Fehler mit dem Verweis auf das richtige BSP zu haben. Um dies zu beheben, erstellen Sie ein neues BSP mit den gleichen Einstellungen wie das erste. Ändern Sie das referenzierte BSP in das neue, und ändern Sie es dann wieder in das alte, nachdem die Erstellung fehlgeschlagen ist. FreeRTOS sollte jetzt fehlerfrei kompilieren. Fühlen Sie sich frei, das nicht verwendete BSP zu löschen.

Schritt 5: Ändern Sie das Demoprogramm

Erstellen Sie einen neuen Ordner namens "drivers" im "src"-Verzeichnis von RTOSDemo. Kopieren Sie die bereitgestellte gpio.h. gpio.c-, pwm.h-, pwm.c-, odometer.h-, odometer.c-, rangefinder.c-, rangefinder.h-, motor.h- und motor.c-Dateien in das Verzeichnis "drivers".

Öffnen Sie main.c und setzen Sie mainSELECTED_APPLICATION auf 2. Ersetzen Sie main_lwIP.c unter "lwIP_Demo" durch die aktualisierte Version. Auch BasicSocketCommandServer.c unter "lwIP_Demo/apps/BasicSocketCommandServer" muss mit einer neuen Version aktualisiert werden. Navigieren Sie zuletzt zu "FreeRTOSv10.1.1/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos" und ersetzen Sie Sample-CLI-commands.c durch die bereitgestellte Version. Erstellen Sie das Projekt und stellen Sie sicher, dass alles erfolgreich kompiliert wird.

Schritt 6: Firmware auf QSPI flashen

Firmware auf QSPI flashen
Firmware auf QSPI flashen
Firmware auf QSPI flashen
Firmware auf QSPI flashen
Firmware auf QSPI flashen
Firmware auf QSPI flashen

Erstellen Sie ein neues Anwendungsprojekt namens "FSBL" mit der Vorlage "Zynq FSBL". Erstellen Sie nach dem Kompilieren des FSBL-Projekts ein Boot-Image des RTOSDemo-Projekts. Stellen Sie sicher, dass "FSBL/Debug/FSBL.elf" als Bootloader unter "Boot-Image-Partitionen" ausgewählt ist. Fügen Sie den Pfad zu dieser Datei manuell hinzu, wenn sie nicht aufgeführt ist.

Verschieben Sie den JP5-Jumper auf dem ZYBO auf "JTAG". Verwenden Sie ein USB Micro-B-Kabel, um Ihren Computer mit dem ZYBO zu verbinden. Schließen Sie den Akku an und schalten Sie den ZYBO ein. Führen Sie Adept aus, um sicherzustellen, dass der ZYBO vom Computer richtig erkannt wird. Klicken Sie im Vivado SDK auf "Program Flash" und geben Sie die Pfade zur Datei BOOT.bin in RTOSDemo und zur Datei FSBL.elf in FSBL an. Stellen Sie sicher, dass Sie "Verify after flash" auswählen, bevor Sie auf "Program" klicken. Beobachten Sie die Konsole, um sicherzustellen, dass der Flashvorgang erfolgreich abgeschlossen wurde. Schalten Sie anschließend den ZYBO aus und ziehen Sie das USB-Kabel ab. Setzen Sie den JP5-Jumper auf "QSPI".

Schritt 7: Wireless Access Point konfigurieren

Stellen Sie bei angeschlossenem Akku eine Verbindung zum Wi-Fi-Netzwerk des Routers her. Die Standard-SSID und das Passwort sollten sich auf der Unterseite des Routers befinden. Navigieren Sie anschließend zu https://tplinkwifi.net und melden Sie sich mit "admin" für den Benutzernamen und das Passwort an. Führen Sie den Schnelleinrichtungsassistenten aus, um den Router im Zugriffspunktmodus mit aktiviertem DHCP zu konfigurieren. Stellen Sie sicher, dass Sie auch den Standardbenutzernamen und das Standardkennwort für das Gerät aktualisieren. Der Router sollte automatisch in den Access Point-Modus neu starten, nachdem Sie fertig sind.

Schalten Sie den ZYBO ein und verbinden Sie sich mit dem Router mit der von Ihnen zugewiesenen SSID. Der Router wird höchstwahrscheinlich entweder die IP-Adresse 192.168.0.100 oder 192.160.0.101 verwenden. Dem ZYBO wird die Adresse zugewiesen, die der Router nicht hat. Um die IP-Adresse des Routers schnell zu ermitteln, können Sie "ipconfig" über die Eingabeaufforderung in Windows oder "ifconfig" über das Terminal unter Linux oder MacOS ausführen. Wenn Sie immer noch mit dem Router verbunden sind, wird seine IP-Adresse neben Ihrer drahtlosen Schnittstelle angezeigt. Verwenden Sie diese Informationen, um die IP-Adresse des ZYBO zu ermitteln. Um die IP-Adresse des ZYBO zu bestätigen, können Sie es entweder von der Befehlszeile aus anpingen oder sich über Telnet damit verbinden.

Schritt 8: Java-Programm ausführen

Java-Programm ausführen
Java-Programm ausführen

Laden Sie RobotClient.java herunter und kompilieren Sie die Datei mit dem Befehl "javac RobotClient.java" aus der Befehlszeile. Führen Sie den Befehl "java RobotClient" aus, wobei "ip_address" die IP-Adresse des ZYBO ist. Die Steuerungs-GUI öffnet sich, wenn eine erfolgreiche Verbindung zwischen dem Computer und dem ZYBO hergestellt wurde. Nach dem Fokussieren des Fensters sollte der Roboter mit den Pfeiltasten auf der Tastatur steuerbar sein. Drücken Sie die Escape-Taste, um die Sitzung zu beenden und die Verbindung zum Roboter zu trennen.

Die GUI hebt die gedrückten Tasten hervor und zeigt die Motorleistung oben rechts an. Der Entfernungsmesser auf der linken Seite füllt alle 2 Meter einen Balken bis maximal 10 Meter.

Schritt 9: Entfernungsmesser kalibrieren

Die Schalter an Bord des ZYBO können verwendet werden, um den Bord-Entfernungsmesser zu konfigurieren. Der minimale Erfassungsabstand d ergibt sich als Funktion des Schalteingangs i:

d = 50i + 250

Die Eingabe kann zwischen 0 und 15 in ganzzahligen Schritten variieren. Dies entspricht einem Entfernungsbereich von 0,25 Meter bis 1 Meter. Beim Mindestabstand beginnt die erste LED zu blinken. Die Anzahl der aktiven LEDs ist proportional zur Nähe des Objekts.

Schritt 10: Zugänglichkeit

Dieser Roboter ist sehr leicht zugänglich. Aufgrund der Einfachheit seiner Steuerung kann es mit nur einem Finger vollständig gesteuert werden. Um die Zugänglichkeit zu verbessern, könnte die Unterstützung für zusätzliche Eingabegeräte hinzugefügt werden. Dies könnte es behinderten Benutzern ermöglichen, den Roboter mit einem anderen Teil ihres Körpers zu steuern.