Inhoudsopgave:

WiBot: 10 stappen (met afbeeldingen)
WiBot: 10 stappen (met afbeeldingen)

Video: WiBot: 10 stappen (met afbeeldingen)

Video: WiBot: 10 stappen (met afbeeldingen)
Video: Zwembad-disco 2024, November
Anonim
WiBot
WiBot

Deze instructable beschrijft het proces voor het bouwen van een Wi-Fi-robot op het ZYBO-platform. Dit project maakt gebruik van een realtime besturingssysteem voor objectdetectie, afstandsmeting en responsieve besturing. Deze handleiding behandelt de interface van de ZYBO met randapparatuur, het uitvoeren van aangepaste firmware en communicatie via een Java-toepassing. Het volgende is een lijst van alle belangrijke componenten die nodig zijn voor dit project:

  • 1 ZYBO-ontwikkelingsbord
  • 1 TL-WR802N draadloze router
  • 1 schaduwchassis
  • 2 65 mm wielen
  • 2 140 tpm motorreductoren
  • 2 wiel encoders
  • 1 HC-SR04 ultrasone sensor
  • 1 BSS138 logische niveau-omzetter
  • 1 L293 H-brug motorstuurprogramma
  • 1 12V naar 5V DC/DC-omzetter
  • 1 2200mAh LiPo-batterij
  • 1 Ethernet-kabel
  • 1 USB Micro-B-kabel
  • 1 vrouwelijke XT60-connector
  • 2 man-naar-vrouw verbindingsdraden
  • 30 man-naar-mannelijke verbindingsdraden
  • 2 10kΩ weerstanden
  • 1 Breadboard

Daarnaast moet de volgende software op de doelcomputer zijn geïnstalleerd:

  • Xilinx Vivado Design Suite 2018.2
  • Digilente Adept 2.19.2
  • FreeRTOS 10.1.1
  • Java SE-ontwikkelkit 8.191

Stap 1: monteer robotchassis

Monteer robotchassis
Monteer robotchassis
Monteer robotchassis
Monteer robotchassis
Monteer robotchassis
Monteer robotchassis

Monteer het schaduwchassis en bevestig de motorreductoren en encoders aan het onderframe. De ZYBO, breadboard en ultrasone sensor kunnen worden gemonteerd met de meegeleverde onderdelen die 3D kunnen worden geprint en op het chassis kunnen worden bevestigd met afstandhouders en dubbelzijdige tape. De batterij moet dicht bij de achterkant van de robot worden gemonteerd en bij voorkeur tussen de bovenkant en onderste kozijnen. Monteer de router dicht bij de ZYBO en de DC/DC-converter dicht bij het breadboard. Bevestig de wielen helemaal aan de motorreductoren.

Stap 2: Draadelektronica

Draad elektronica
Draad elektronica
Draad elektronica
Draad elektronica
Draad elektronica
Draad elektronica

Sluit de in- en uitgang van de DC/DC-converter respectievelijk aan op de twee voedingsrails op het breadboard. Deze zullen dienen als de 12V- en 5V-voedingen voor het systeem. Sluit de ZYBO aan op de 5V-rail zoals weergegeven in de afbeelding. Gebruik een USB Micro-B-voedingskabel om de router ook op de 5V-rail aan te sluiten. De XT60-kabel moet aan de 12V-rail worden bevestigd. Sluit de batterij pas aan als de rest van de elektronica correct is aangesloten. De ultrasone sensor moet worden aangesloten op de 5V-rail. Maak een 3,3V-rail op het breadboard met behulp van pin 6 van Pmod-poort JC op de ZYBO. De hoogspanningsingang van de logische converter moet worden aangesloten op de 5V-rail, terwijl de laagspanningsingang van de logische converter moet worden aangesloten op de 3,3V-rail. Sluit de motor-encoders aan op de 3,3V-rail. Sluit VCC1 van de motordriver aan op de 5V-rail en sluit VCC2 aan op de 12V-rail. Bind alle EN-pinnen op 5V en aard alle GND-pinnen.

Verbind de TRIG- en ECHO-pinnen van de ultrasone sensor met respectievelijk HV1 en HV2 van de logische converter. LV1 moet worden aangesloten op JC4 en LV2 moet worden aangesloten op JC3. Raadpleeg de tabel voor Pmod-pinouts. Sluit de motoren aan op de motordriver. Y1 moet worden aangesloten op de positieve pool van de rechtermotor en Y2 moet worden aangesloten op de negatieve pool van de rechtermotor. Evenzo moet Y3 worden aangesloten op de positieve pool van de linkermotor en Y4 moet worden aangesloten op de negatieve pool van de linkermotor. A1, A2, A3 en A4 moeten respectievelijk worden toegewezen aan JB2, JB1, JB4 en JB3. Raadpleeg het schema voor pinnummers. Sluit JC2 aan op de rechter encoder en JC1 op de linker encoder. Zorg ervoor dat er pull-up-weerstanden worden gebruikt om deze signalen aan de 3,3V-rail te binden. Gebruik ten slotte de ethernetkabel om de ZYBO op de router aan te sluiten.

Stap 3: Maak een blokdiagram in Vivado

Maak een blokdiagram in Vivado
Maak een blokdiagram in Vivado

Maak een nieuw RTL-project aan in Vivado. Zorg ervoor dat u op dit moment geen bronnen opgeeft. Zoek naar "xc7z010clg400-1" en klik op voltooien. Download encoder_driver.sv en ultrasonic_driver.sv. Plaats ze in hun eigen mappen. Open de IP Packager onder "Tools" en kies ervoor om een gespecificeerde directory te verpakken. Plak het pad naar de map met het encoderstuurprogramma en klik op "Volgende". Klik op "package IP" en herhaal de processen voor de ultrasone sensordriver. Navigeer daarna naar de repository manager onder de IP-subsectie in het instellingenmenu. Voeg de paden toe aan de stuurprogrammamappen en klik op toepassen om ze in de IP-bibliotheek op te nemen.

Maak een nieuw blokschema en voeg het "ZYNQ7 Processing System" toe. Dubbelklik op het blok en importeer het meegeleverde bestand ZYBO_zynq_def.xml. Schakel onder "MIO-configuratie" Timer 0 en GPIO MIO in. druk op "OK" om de configuratie op te slaan. Voeg 3 "AXI GPIO" blokken en 4 "AXI Timer" blokken toe. Voer blokautomatisering uit gevolgd door verbindingsautomatisering voor S_AXI. Dubbelklik op de GPIO-blokken om ze te configureren. Eén blok moet tweekanaals zijn met een 4-bits invoer en een 4-bits uitvoer. Maak deze aansluitingen extern en label ze SW voor input en LED voor output. Het tweede blok moet ook dual channel zijn met 2 32-bits ingangen. Het laatste GPIO-blok is een enkele 32-bits invoer. Maak de pwm0-uitvoer van elk timerblok extern. Label ze PWM0, PWM1, PWM2 en PWM3.

Voeg het encoderstuurprogramma toe aan het blokschema en sluit CLK aan op FCLK_CLK0. Sluit OD0 en OD1 aan op de ingangskanalen van het tweede GPIO-blok. Maak ENC extern en hernoem ENC_0 naar ENC. Voeg het ultrasone sensorblok toe en sluit CLK aan op FCLK_CLK0. Maak TRIG en ECHO extern en hernoem TRIG_0 naar TRIG en ECHO_0 naar ECHO. Verbind RF met het derde GPIO-blok. Raadpleeg het meegeleverde blokschema ter referentie.

Klik met de rechtermuisknop op uw blokdiagrambestand in het deelvenster Bronnen en maak een HDL-wrapper. Zorg ervoor dat u gebruikersbewerkingen toestaat. Voeg het meegeleverde ZYBO_Master.xdc-bestand toe als een beperking. Druk op "Bitstream genereren" en neem een koffiepauze.

Stap 4: Software-ontwikkelomgeving instellen

Ga onder "Bestand" om hardware naar de Vivado SDK te exporteren. Zorg ervoor dat u de bitstream opneemt. Importeer het RTOSDemo-project in de "CORTEX_A9_Zynq_ZC702". Het bevindt zich in de FreeRTOS-installatiemap. Maak een nieuw Board Support Package aan, selecteer de lwip202-bibliotheek. Wijzig de BSP waarnaar wordt verwezen in het RTOSDemo-project in de BSP die u zojuist hebt gemaakt*.

* Op het moment van schrijven van deze Instructable lijkt FreeRTOS een bug te hebben met het verwijzen naar de juiste BSP. Om dit te verhelpen, maakt u een nieuwe BSP aan met dezelfde instellingen als de eerste. Wijzig de BSP waarnaar wordt verwezen in de nieuwe en verander deze vervolgens terug naar de oude nadat het niet is gelukt om te bouwen. FreeRTOS zou nu zonder fouten moeten compileren. Voel je vrij om de ongebruikte BSP te verwijderen.

Stap 5: Wijzig het demoprogramma

Maak een nieuwe map met de naam "drivers" in de map "src" van RTOSDemo. Kopieer de verstrekte gpio.h. gpio.c, pwm.h, pwm.c, odometer.h, odometer.c, rangefinder.c, rangefinder.h, motor.h en motor.c bestanden in de "drivers" directory.

Open main.c en stel mainSELECTED_APPLICATION in op 2. Vervang main_lwIP.c onder "lwIP_Demo" door de bijgewerkte versie. BasicSocketCommandServer.c onder "lwIP_Demo/apps/BasicSocketCommandServer" moet ook worden bijgewerkt met een nieuwe versie. Navigeer ten slotte naar "FreeRTOSv10.1.1/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos" en vervang Sample-CLI-commands.c door de meegeleverde versie. Bouw het project en zorg ervoor dat alles succesvol wordt gecompileerd.

Stap 6: Flash Firmware naar QSPI

Flash-firmware naar QSPI
Flash-firmware naar QSPI
Flash-firmware naar QSPI
Flash-firmware naar QSPI
Flash-firmware naar QSPI
Flash-firmware naar QSPI

Maak een nieuw toepassingsproject met de naam "FSBL" met behulp van de sjabloon "Zynq FSBL". Maak na het compileren van het FSBL-project een opstartimage van het RTOSDemo-project. Zorg ervoor dat "FSBL/Debug/FSBL.elf" is geselecteerd als de bootloader onder "Boot image partities". Voeg het pad handmatig toe aan dit bestand als het niet in de lijst staat.

Verplaats de JP5-jumper op de ZYBO naar "JTAG". Gebruik een USB Micro-B-kabel om uw computer op de ZYBO aan te sluiten. Sluit de batterij aan en zet de ZYBO aan. Voer Adept uit om ervoor te zorgen dat de ZYBO correct wordt geïdentificeerd door de computer. Klik op "Program Flash" in de Vivado SDK en geef de paden op naar het BOOT.bin-bestand in RTOSDemo en het FSBL.elf-bestand in FSBL. Zorg ervoor dat u "Verifiëren na flash" selecteert voordat u op "Programma" klikt. Bekijk de console om ervoor te zorgen dat de knipperende bewerking met succes is voltooid. Schakel daarna de ZYBO uit en koppel de USB-kabel los. Verplaats de JP5-jumper naar "QSPI".

Stap 7: Draadloos toegangspunt configureren

Maak verbinding met het wifi-netwerk van de router terwijl de batterij nog is aangesloten. De standaard SSID en het standaardwachtwoord moeten aan de onderkant van de router staan. Navigeer daarna naar https://tplinkwifi.net en log in met "admin" voor de gebruikersnaam en het wachtwoord. Voer de wizard voor snelle installatie uit om de router te configureren in de toegangspuntmodus met DHCP ingeschakeld. Zorg ervoor dat u ook de standaard gebruikersnaam en het standaardwachtwoord voor het apparaat bijwerkt. De router moet automatisch opnieuw opstarten in de toegangspuntmodus nadat u klaar bent.

Schakel de ZYBO in en maak verbinding met de router met behulp van de SSID die u hebt toegewezen. De router zal hoogstwaarschijnlijk op IP-adres 192.168.0.100 of 192.160.0.101 komen. De ZYBO wordt toegewezen aan het adres dat de router niet heeft. Om snel het IP-adres van de router te bepalen, kunt u "ipconfig" uitvoeren vanaf de opdrachtprompt in Windows of "ifconfig" vanaf de terminal in Linux of MacOS. Als u nog steeds verbonden bent met de router, ziet u het IP-adres naast uw draadloze interface. Gebruik deze informatie om het IP-adres van de ZYBO te bepalen. Om het IP-adres van de ZYBO te bevestigen, kunt u het pingen vanaf de opdrachtregel of er verbinding mee maken via telnet.

Stap 8: Java-programma uitvoeren

Java-programma uitvoeren
Java-programma uitvoeren

Download RobotClient.java en compileer het bestand met de opdracht "javac RobotClient.java" vanaf de opdrachtregel. Voer de opdracht "java RobotClient" uit, waarbij "ip_address" het IP-adres van de ZYBO is. De bedienings-GUI verschijnt als er een succesvolle verbinding tot stand is gebracht tussen de computer en de ZYBO. Nadat het venster is scherpgesteld, moet de robot bestuurbaar zijn met de pijltjestoetsen op het toetsenbord. Druk op de escape-knop om de sessie te beëindigen en de verbinding met de robot te verbreken.

De GUI zal de ingedrukte toetsen markeren en rechtsboven het motorvermogen weergeven. De afstandsmeter links vult elke 2 meter een balk tot een maximum van 10 meter.

Stap 9: Kalibreer afstandsmeter

De schakelaars aan boord van de ZYBO kunnen worden gebruikt om de ingebouwde afstandsmeter te configureren. De minimale detectieafstand d wordt gegeven als functie van de schakelaaringang i:

d = 50i + 250

De invoer kan variëren van 0 tot 15 in stappen van gehele getallen. Dit vertaalt zich in een afstandsbereik van 0,25 meter tot 1 meter. Op de minimale afstand begint de eerste LED te knipperen. Het aantal LED's dat actief is, is evenredig met de nabijheid van het object.

Stap 10: Toegankelijkheid

Deze robot is zeer goed bereikbaar. Door de eenvoud van zijn bediening kan hij volledig worden bediend met slechts één vinger. Om de toegankelijkheid te verbeteren, zou ondersteuning voor extra invoerapparaten kunnen worden toegevoegd. Hierdoor kunnen gehandicapte gebruikers de robot met een ander deel van hun lichaam besturen.

Aanbevolen: