Sommario:

Tapis roulant VR fai da te - Basys3 FPGA-Digilent Contest: 3 passaggi
Tapis roulant VR fai da te - Basys3 FPGA-Digilent Contest: 3 passaggi

Video: Tapis roulant VR fai da te - Basys3 FPGA-Digilent Contest: 3 passaggi

Video: Tapis roulant VR fai da te - Basys3 FPGA-Digilent Contest: 3 passaggi
Video: DIY treadmill #shorts 2024, Dicembre
Anonim
Tapis roulant VR fai da te - Basys3 FPGA-Digilent Contest
Tapis roulant VR fai da te - Basys3 FPGA-Digilent Contest

Vuoi costruire un tapis roulant VR su cui eseguire le tue applicazioni desktop e i tuoi giochi? Allora siete venuti nel posto giusto!

Nei giochi convenzionali usi il mouse e la tastiera per interagire con l'ambiente. Pertanto, dobbiamo inviare lo stesso tipo di segnali di un mouse e di una tastiera in modo che non ci siano problemi di compatibilità tra il nostro tapis roulant e il gioco. Piuttosto che smontare questi dispositivi, creeremo il nostro dispositivo in grado di simularli il più vicino possibile.

Per gli input del mouse utilizzeremo un disco con fette conduttive e non conduttive alternate, su cui scorreranno due fili, con un piccolo offset. La scheda leggerà i segnali provenienti dai fili, dandoci una delle quattro combinazioni: 00, 11, 10, 01, che possiamo tradurre direttamente in movimento sinistra-destra.

Per il movimento su-giù, invece di un disco, utilizzeremo una piastra con lo stesso schema di 0 e 1.

Come ingressi per il modulo che simula la tastiera, avremo degli interruttori posti sullo snodo di un'asta che reggerà l'imbracatura. Quando fai un passo in qualsiasi direzione, l'asta si piegherà leggermente, aprendo così l'interruttore.

(Tieni presente che il progetto è ancora in corso e può essere migliorato, quindi attendo qualche consiglio che possa renderlo migliore)

Passaggio 1: base

Base
Base
Base
Base
Base
Base

La base dovrebbe avere un baricentro basso, quindi è necessario utilizzare un materiale pesante. Nel mio caso, ho usato gesso e un disco antenna per realizzare uno stampo concavo, ma si possono usare altri mezzi (es. palla da yoga). Dopo che lo stampo si sarà asciugato, verrà posizionato su due dischi dello stesso diametro realizzati in MDF o materiale simile. Verrà introdotto un distanziatore tra i due dischi MDF. Tra questi dischi, verrà posizionato un profilo a triangolo, che ha cuscinetti sui bordi. Un'altra serie di cuscinetti sarà posta perpendicolare ai vertici del triangolo e tangente al disco, in alto. Per una migliore precisione, è possibile utilizzare più cuscinetti. Un'asta verrà posizionata su uno dei vertici, come mostrato nella terza immagine. Questa asta contiene l'imbracatura in cui verrà posizionato il giocatore.

Un'altra asta esterna fissa viene utilizzata per sostenere i fili e anche come punto di riferimento per il movimento di rotazione.

Passaggio 2: 2 Gestione degli ingressi

2 Gestione degli ingressi
2 Gestione degli ingressi
2 Gestione degli ingressi
2 Gestione degli ingressi
2 Gestione degli ingressi
2 Gestione degli ingressi

Dal punto di vista della scatola nera, il dispositivo avrà i seguenti ingressi: 4 connessioni per i contatori del mouse x, y, 2 connessioni per i pulsanti del mouse e 4 connessioni per i tasti freccia. L'uscita è rappresentata da 4 pin: 2 per la connessione PS2 del mouse e altri 2 per la connessione PS2 della tastiera. Per una descrizione più dettagliata del protocollo PS2, è possibile controllare il seguente sito:

Come input per la scheda, ho scelto i pin digitali JB (1 fino a 0). Considerando la sequenza …11001100…, letta sui due ingressi, possiamo distinguere tre stati dei contatori:

1. Conta fino;

2. Conto alla rovescia;

3. Salva il valore corrente;

Il modulo Count_Type fa esattamente questo. Se c'è un cambiamento nell'ingresso, allora il modulo invia un messaggio appropriato al contatore a 8 bit (implementato nel file 8_bit_count.vhd), che aggiunge o sottrae dal valore corrente, a meno che non venga ricevuto un segnale di reset.

La stessa idea viene utilizzata per il movimento su-giù della testa, ma al posto di un disco si usa un profilo lineare scorrevole con lo stesso schema alternato 0&1.

Passaggio 3: implementazione VHDL

Implementazione VHDL
Implementazione VHDL

In allegato alla presentazione i seguenti moduli:

1. Count_Type: questo modulo gestisce la decodifica dei due fili in ingresso dal disco o dal profilo, descritti nel secondo passaggio;

2. 8bit_count: questo modulo interpreta il messaggio decodificato da Count_Type e incrementa o decrementa i contatori;

3. 3bytepacket: questo modulo gestisce lo stato dei pulsanti sinistro e destro e formatta i dati in modo che possano essere introdotti nel pacchetto dati da 3 byte utilizzato nel protocollo PS2;

4.clk12khz: questo modulo fornisce un clock di 12khz specifico del protocollo PS2 su cui lavorano determinati componenti e processi;

5. MessageManager: questo modulo invia il pacchetto dati di 3 byte, lo interpreta e fornisce la risposta appropriata, come risposta a un messaggio dal PC.

6. PS2Interface: questo modulo interfaccia il protocollo di comunicazione tra il dispositivo e l'host (PC) (questo modulo necessita di un po' di debugging e di un'attenta rivalutazione per funzionare correttamente).

Consigliato: