Sommario:

WiBot: 10 passaggi (con immagini)
WiBot: 10 passaggi (con immagini)

Video: WiBot: 10 passaggi (con immagini)

Video: WiBot: 10 passaggi (con immagini)
Video: Wybot Osprey 700 - Test d'un robot nettoyeur de piscine 2024, Settembre
Anonim
WiBot
WiBot

Questa istruzione descrive in dettaglio il processo per la creazione di un robot Wi-Fi sulla piattaforma ZYBO. Questo progetto utilizza un sistema operativo in tempo reale per il rilevamento di oggetti, la misurazione della distanza e il controllo reattivo. Questa guida tratterà l'interfacciamento di ZYBO con le periferiche, l'esecuzione di firmware personalizzato e la comunicazione tramite l'applicazione Java. Di seguito è riportato un elenco di tutti i componenti chiave richiesti per questo progetto:

  • 1 scheda di sviluppo ZYBO
  • 1 router wireless TL-WR802N
  • 1 telaio ombra
  • 2 ruote da 65 mm
  • 2 motoriduttori da 140 giri/min
  • Encoder a 2 ruote
  • 1 sensore a ultrasuoni HC-SR04
  • 1 convertitore di livello logico BSS138
  • 1 driver motore H-Bridge L293
  • 1 Convertitore CC/CC da 12V a 5V
  • 1 batteria LiPo da 2200 mAh
  • 1 cavo ethernet
  • 1 cavo USB Micro-B
  • 1 connettore XT60 femmina
  • 2 cavi jumper maschio-femmina
  • 30 cavi jumper maschio-maschio
  • 2 resistori da 10kΩ
  • 1 tagliere

Inoltre, sul computer di destinazione deve essere installato il seguente software:

  • Xilinx Vivado Design Suite 2018.2
  • Esperto Digilent 2.19.2
  • FreeRTOS 10.1.1
  • Kit di sviluppo Java SE 8.191

Passaggio 1: assemblare lo chassis del robot

Assemblare il telaio del robot
Assemblare il telaio del robot
Assemblare il telaio del robot
Assemblare il telaio del robot
Assemblare il telaio del robot
Assemblare il telaio del robot

Assemblare il telaio ombra e collegare i motoriduttori e gli encoder al telaio inferiore. Lo ZYBO, la breadboard e il sensore a ultrasuoni possono essere montati con le parti fornite che possono essere stampate in 3D e fissate al telaio utilizzando distanziatori e nastro biadesivo. La batteria deve essere montata vicino alla parte posteriore del robot e preferibilmente tra la parte superiore e cornici inferiori. Montare il router vicino allo ZYBO e il convertitore DC/DC vicino alla breadboard. Fissare le ruote ai motoriduttori all'estremità.

Passaggio 2: elettronica del filo

Elettronica a filo
Elettronica a filo
Elettronica a filo
Elettronica a filo
Elettronica a filo
Elettronica a filo

Collegare l'ingresso e l'uscita del convertitore CC/CC rispettivamente ai due binari di alimentazione sulla breadboard. Questi serviranno da alimentazione a 12V e 5V per il sistema. Collega lo ZYBO al binario 5V come mostrato nell'immagine. Utilizzare un cavo di alimentazione USB Micro-B anche per collegare il router alla guida 5V. Il cavo XT60 deve essere collegato alla guida 12V. Non collegare la batteria finché il resto dell'elettronica non è cablato correttamente. Il sensore a ultrasuoni deve essere collegato alla guida 5V. Creare un binario da 3,3 V sulla breadboard utilizzando il pin 6 della porta Pmod JC sullo ZYBO. L'ingresso ad alta tensione del convertitore logico deve essere collegato al binario 5V mentre l'ingresso a bassa tensione del convertitore logico deve essere collegato al binario 3,3V. Collegare gli encoder del motore alla guida da 3,3 V. Collegare VCC1 del driver del motore al binario 5V e collegare VCC2 al binario 12V. Collegare tutti i pin EN a 5V e mettere a terra tutti i pin GND.

Collegare i pin TRIG ed ECHO del sensore a ultrasuoni rispettivamente a HV1 e HV2 del convertitore logico. LV1 dovrebbe essere collegato a JC4 e LV2 dovrebbe essere collegato a JC3. Fare riferimento alla tabella per i pinout di Pmod. Collegare i motori al driver del motore. Y1 deve essere collegato al terminale positivo del motore destro e Y2 deve essere collegato al terminale negativo del motore destro. Allo stesso modo, Y3 dovrebbe essere collegato al terminale positivo del motore sinistro e Y4 dovrebbe essere collegato al terminale negativo del motore sinistro. A1, A2, A3 e A4 devono essere mappati rispettivamente su JB2, JB1, JB4 e JB3. Fare riferimento allo schema per i numeri di pin. Collegare JC2 all'encoder destro e JC1 all'encoder sinistro. Assicurarsi che vengano utilizzati resistori di pull-up per collegare questi segnali alla guida da 3,3 V. Infine, utilizza il cavo ethernet per collegare ZYBO al router.

Passaggio 3: crea un diagramma a blocchi in Vivado

Crea diagramma a blocchi in Vivado
Crea diagramma a blocchi in Vivado

Crea un nuovo progetto RTL in Vivado. Assicurati di non specificare alcuna fonte in questo momento. Cerca "xc7z010clg400-1" e premi Fine. Scarica encoder_driver.sv e ultrasonic_driver.sv. Mettili nelle loro cartelle. Apri IP Packager in "Strumenti" e scegli di impacchettare una directory specificata. Incolla il percorso nella cartella contenente il driver dell'encoder e premi "Avanti". Fare clic su "IP pacchetto" e ripetere i processi per il driver del sensore a ultrasuoni. Successivamente, vai al gestore del repository nella sottosezione IP nel menu delle impostazioni. Aggiungi i percorsi alle cartelle dei driver e premi applica per includerli nella libreria IP.

Crea un nuovo diagramma a blocchi e aggiungi il "Sistema di elaborazione ZYNQ7". Fare doppio clic sul blocco e importare il file ZYBO_zynq_def.xml fornito. In "Configurazione MIO", abilita Timer 0 e GPIO MIO. premi "OK" per salvare la configurazione. Aggiungi 3 blocchi "AXI GPIO" e 4 blocchi "AXI Timer". Esegui l'automazione del blocco seguita dall'automazione della connessione per S_AXI. Fare doppio clic sui blocchi GPIO per configurarli. Un blocco dovrebbe essere a doppio canale con un ingresso a 4 bit e un'uscita a 4 bit. Rendi queste connessioni esterne ed etichettale SW per input e LED per output. Anche il secondo blocco dovrebbe essere a doppio canale con 2 ingressi a 32 bit. L'ultimo blocco GPIO sarà un singolo input a 32 bit. Rendere esterna l'uscita pwm0 da ciascun blocco timer. Etichettali PWM0, PWM1, PWM2 e PWM3.

Aggiungere il driver dell'encoder allo schema a blocchi e collegare CLK a FCLK_CLK0. Collega OD0 e OD1 ai canali di ingresso del secondo blocco GPIO. Rendi ENC esterno e rinomina ENC_0 in ENC. Aggiungere il blocco del sensore a ultrasuoni e collegare CLK a FCLK_CLK0. Rendi TRIG ed ECHO esterni e rinomina TRIG_0 in TRIG e ECHO_0 in ECHO. Connetti RF al terzo blocco GPIO. Fare riferimento allo schema a blocchi fornito per riferimento.

Fare clic con il pulsante destro del mouse sul file del diagramma a blocchi nel riquadro Origini e creare un wrapper HDL. Assicurati di consentire le modifiche dell'utente. Aggiungi il file ZYBO_Master.xdc fornito come vincolo. Premi "Genera Bitstream" e fai una pausa caffè.

Passaggio 4: configurazione dell'ambiente di sviluppo software

Vai sotto "File" per esportare l'hardware in Vivado SDK. Assicurati di includere il bitstream. Importa il progetto RTOSDemo all'interno di "CORTEX_A9_Zynq_ZC702". Si troverà nella directory di installazione di FreeRTOS. Crea un nuovo Board Support Package seleziona la libreria lwip202. Modificare il BSP di riferimento nel progetto RTOSDemo nel BSP appena creato*.

* Al momento della stesura di questo Instructable, FreeRTOS sembra avere un bug nel fare riferimento al BSP corretto. Per rimediare, crea un nuovo BSP con le stesse impostazioni del primo. Cambia il BSP di riferimento con quello nuovo e poi cambialo di nuovo in quello vecchio dopo che non riesce a costruire. FreeRTOS dovrebbe ora essere compilato senza errori. Sentiti libero di eliminare il BSP inutilizzato.

Passaggio 5: modifica del programma demo

Crea una nuova cartella chiamata "drivers" nella directory "src" di RTOSDemo. Copia il file gpio.h fornito. gpio.c, pwm.h, pwm.c, odometer.h, odometer.c, rangefinder.c, rangefinder.h, motor.h e motor.c nella directory "drivers".

Apri main.c e imposta mainSELECTED_APPLICATION su 2. Sostituisci main_lwIP.c in "lwIP_Demo" con la versione aggiornata. Anche BasicSocketCommandServer.c in "lwIP_Demo/apps/BasicSocketCommandServer" deve essere aggiornato con una nuova versione. Infine, vai a "FreeRTOSv10.1.1/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos" e sostituisci Sample-CLI-commands.c con la versione fornita. Crea il progetto e assicurati che tutto venga compilato correttamente.

Passaggio 6: flash del firmware su QSPI

Da firmware flash a QSPI
Da firmware flash a QSPI
Da firmware flash a QSPI
Da firmware flash a QSPI
Da firmware flash a QSPI
Da firmware flash a QSPI

Crea un nuovo progetto di applicazione chiamato "FSBL" utilizzando il modello "Zynq FSBL". Dopo aver compilato il progetto FSBL, creare un'immagine di avvio del progetto RTOSDemo. Assicurati che "FSBL/Debug/FSBL.elf" sia selezionato come bootloader in "Partizioni immagine di avvio". Aggiungi manualmente il percorso a questo file se non è elencato.

Sposta il jumper JP5 sullo ZYBO su "JTAG". Usa un cavo USB Micro-B per collegare il tuo computer allo ZYBO. Collega la batteria e accendi ZYBO. Esegui Adept per assicurarti che ZYBO sia correttamente identificato dal computer. Fare clic su "Programma Flash" in Vivado SDK e fornire i percorsi del file BOOT.bin in RTOSDemo e del file FSBL.elf in FSBL. Assicurati di selezionare "Verifica dopo il flash" prima di premere "Programma". Guarda la console per assicurarti che l'operazione di lampeggio sia stata completata correttamente. Successivamente, spegni ZYBO e scollega il cavo USB. Spostare il jumper JP5 su "QSPI".

Passaggio 7: configurare il punto di accesso wireless

Con la batteria ancora collegata, connettiti alla rete Wi-Fi del router. L'SSID e la password predefiniti dovrebbero trovarsi nella parte inferiore del router. Successivamente, vai su https://tplinkwifi.net e accedi utilizzando "admin" per il nome utente e la password. Eseguire la procedura guidata di configurazione rapida per configurare il router in modalità punto di accesso con DHCP abilitato. Assicurati di aggiornare anche il nome utente e la password predefiniti per il dispositivo. Al termine, il router dovrebbe riavviarsi automaticamente in modalità punto di accesso.

Accendi ZYBO e connettiti al router utilizzando l'SSID che hai assegnato. Molto probabilmente il router verrà visualizzato con l'indirizzo IP 192.168.0.100 o 192.160.0.101. A ZYBO verrà assegnato l'indirizzo che il router non ha. Per determinare rapidamente l'indirizzo IP del router, puoi eseguire "ipconfig" dal prompt dei comandi in Windows o "ifconfig" dal terminale in Linux o MacOS. Se sei ancora connesso al router, vedrai il suo indirizzo IP visualizzato accanto alla tua interfaccia wireless. Utilizzare queste informazioni per determinare l'indirizzo IP di ZYBO. Per confermare l'indirizzo IP di ZYBO, puoi eseguire il ping dalla riga di comando o connetterti tramite telnet.

Passaggio 8: eseguire il programma Java

Esegui programma Java
Esegui programma Java

Scarica RobotClient.java e compila il file utilizzando il comando "javac RobotClient.java" dalla riga di comando. Eseguire il comando "java RobotClient " dove "ip_address" è l'indirizzo IP dello ZYBO. La GUI di controllo apparirà se viene stabilita una connessione riuscita tra il computer e ZYBO. Dopo aver messo a fuoco la finestra, il robot dovrebbe essere controllabile utilizzando i tasti freccia sulla tastiera. Premi il pulsante Esci per terminare la sessione e disconnetterti dal robot.

La GUI evidenzierà i tasti premuti e mostrerà l'uscita del motore in alto a destra. Il distanziometro a sinistra riempie una barra ogni 2 metri fino ad un massimo di 10 metri.

Passaggio 9: calibrazione del telemetro

Gli interruttori a bordo dello ZYBO possono essere utilizzati per configurare il telemetro di bordo. La distanza minima di rilevamento d è data in funzione dell'ingresso dell'interruttore i:

d = 50i + 250

L'ingresso può variare da 0 a 15 in passi interi. Ciò si traduce in un intervallo di distanza compreso tra 0,25 metri e 1 metro. Alla minima distanza, il primo LED inizierà a lampeggiare. Il numero di LED attivi è proporzionale alla vicinanza dell'oggetto.

Passaggio 10: accessibilità

Questo robot è molto facilmente accessibile. Grazie alla semplicità del suo controllo, può essere completamente controllato con un solo dito. Per migliorare l'accessibilità, potrebbe essere aggiunto il supporto per dispositivi di input aggiuntivi. Ciò potrebbe consentire agli utenti disabili di controllare il robot con una parte diversa del proprio corpo.

Consigliato: