Kontroler do gier FPS

Podobne dokumenty
1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

Projekt MARM. Dokumentacja projektu. Łukasz Wolniak. Stacja pogodowa

Programowanie mikrokontrolerów 2.0

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz

Interfejsy komunikacyjne pomiary sygnałów losowych i pseudolosowych. Instrukcja do ćwiczenia laboratoryjnego

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

Wykrywacz kłamstw. Grzegorz Puzio, Łukasz Ulanicki 15 czerwca 2008

Zdalny czujnik. Adam Zugaj Wydział Elektroniki, PWr IV rok, AiR (ARR) Wrocław, 12 czerwca 2009

Technika mikroprocesorowa. Konsola do gier

Programowanie mikrokontrolerów. 8 listopada 2007

DOKUMENTACJA PROJEKTU

Instrukcja użytkownika ARSoft-WZ1

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

ADuCino 360. Zestaw uruchomieniowy dla mikrokontrolerów ADuCM360/361

INSTRUKCJA OBSŁUGI PROGRAMU REJESTRACJI I AKWIZYCJI DANYCH REJESTRATOR 9.2

Szkolenia specjalistyczne

PRUS. projekt dokumentacja końcowa

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

Termometr LB-471T INSTRUKCJA UśYTKOWANIA wersja instrukcji 1.1

1.2. Architektura rdzenia ARM Cortex-M3...16

NARZĘDZIE KONFIGURACYJNE VNX SETUP TOOL MODUŁÓW RODZINY VNX ADVANCED

WIZUALIZACJA DANYCH SENSORYCZNYCH MINISTACJA METEOROLOGICZNA

Kinect vs VR, czyli technologie sensoryczne stosowane w konsolach do gier.

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

Kod produktu: MP01611

Politechnika Wrocławska

Konfigurowanie sterownika BC8150 firmy Beckhoff wprowadzenie

Terminal TR01. Terminal jest przeznaczony do montażu naściennego w czystych i suchych pomieszczeniach.

Instrukcja przygotowania i programowania animacji programem Animation Manager w drukarce fiskalnej Novitus HD E.

PROJECT OF FM TUNER WITH GESTURE CONTROL PROJEKT TUNERA FM STEROWANEGO GESTAMI

1. Opis aplikacji. 2. Przeprowadzanie pomiarów. 3. Tworzenie sprawozdania

dokument DOK wersja 1.0

Rys. 1. Schemat ideowy karty przekaźników. AVT 5250 Karta przekaźników z interfejsem Ethernet

Programowanie Układów Logicznych kod kursu: ETD6203. Szczegóły realizacji projektu indywidualnego W dr inż.

W.J WIELICZKA

ZL29ARM. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Instrukcja obsługi programatora AVR Prog USB v2

Zgrana para - NerO i CleO

Katedra Inżynierii Systemów Sterowania WEiA PG. Przemysłowe Sieci Informatyczne Laboratorium

Murasaki Zou むらさきぞう v1.1 Opis programowania modułu LPC2368/LPC1768 z wykorzystaniem ISP

Instrukcja obsługi programatora AVR Prog USB v2

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

2. Zawartość dokumentacji. 1. Strona tytułowa. 2. Zawartość dokumentacji. 3. Spis rysunków. 4. Opis instalacji kontroli dostępu. 3.

Instrukcja obsługi programatora AVR Prog USB v2

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

ZL2ARM easyarm zestaw uruchomieniowy dla mikrokontrolerów LPC2104/5/6 (rdzeń ARM7TDMI-S)

Tab. 1. Zestawienie najważniejszych parametrów wybranych mikrokontrolerów z rodziny LPC2100, które można zastosować w zestawie ZL3ARM.

Wstęp Architektura... 13

ZL5PIC. Zestaw uruchomieniowy dla mikrokontrolerów PIC16F887

1. Wymagania funkcjonalne dla modułu pozycjonowania patroli zainstalowany moduł musi posiadać następującą funkcjonalność:

Karta katalogowa JAZZ OPLC JZ20-T40/JZ20-J-T wejść cyfrowych, 2 wejścia analogowe/cyfrowe, 2 wejścia analogowe. 20 wyjść tranzystorowych

OPTIMA PC v Program konfiguracyjny dla cyfrowych paneli domofonowy serii OPTIMA ELFON. Instrukcja obsługi. Rev 1

GENERATOR ZNAKÓW OSD FG-50HD

- WALKER Czteronożny robot kroczący

Pracownia Transmisji Danych, Instytut Fizyki UMK, Toruń. Instrukcja do ćwiczenia nr 10. Transmisja szeregowa sieciami energetycznymi

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Interfejsy systemów pomiarowych

MODEL STANOWISKA DO BADANIA OPTYCZNEJ GŁOWICY ŚLEDZĄCEJ

ACCO. system kontroli dostępu

Laboratorium Komputerowe Systemy Pomiarowe

OPIS PROGRAMU OBSŁUGI STEROWNIKA DISOCONT >> DISOCONT MASTER RAPORTY <<

Instrukcja obsługi wyświetlacza LB-450 wersja marzec 2018 od wersji oprogramowania wewnętrznego 1.000

Sterowniki Programowalne Sem. V, AiR

Komunikacja w mikrokontrolerach Laboratorium

Spis treści. Wykaz ważniejszych skrótów Wprowadzenie Rdzeń Cortex-M Rodzina mikrokontrolerów XMC

ZL4PIC. Uniwersalny zestaw uruchomieniowy dla mikrokontrolerów PIC

LB-471P, panel ciśnieniomierza z pętlą prądową 4..20mA INSTRUKCJA UśYTKOWANIA wersja instrukcji 1.1

Opis procedur asemblera AVR

STANOWISKO DO BADANIA PROCESÓW ODZYSKU CIEPŁA ODPADOWEGO. (PROTOTYP)

Laboratorium Procesorów Sygnałowych

Instrukcja do oprogramowania ENAP DEC-1

TECHNIKA MIKROPROCESOROWA II

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Systemy wbudowane Obsługa interfejsu 1-Wire na przykładzie termometru DS18B20

Ćwiczenie 7 Matryca RGB

2.1 Przesył danych między procesorem a tabelą zmiennych

Karta katalogowa JAZZ OPLC JZ20-R31

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

KONWERTER INTERFEJSÓW USB/RS-232. Typu PD12. Instrukcja obs³ugi

AN ON OFF TEMPERATURE CONTROLLER WITH A MOBILE APPLICATION

AVREVB1. Zestaw uruchomieniowy dla mikrokontrolerów AVR. Zestawy uruchomieniowe

Wykład 4. Interfejsy USB, FireWire

Zestaw Startowy EvB. Więcej informacji na stronie:

Instrukcja użytkownika ARsoft-CFG WZ1 4.0

Instrukcja obsługi czytnika MM-R32

Interfejs komunikacyjny RUD-1 v1.0

Płytka laboratoryjna do współpracy z mikrokontrolerem MC68332

Karta katalogowa JAZZ OPLC. Modele JZ20-T10/JZ20-J-T10 i JZ20-T18/JZ20-J-T18

Program V-SIM tworzenie plików video z przebiegu symulacji

INSTRUKCJA instalacji interfejsu USB-RS422/485

TM PROGRAM TERMINALA RS232 DLA MULTIPLEKSERA 8XRS232 / ETHERNET 10BASE-T

Wydział Elektroniki. Wykrywacz przewodów ściennych. Wizualizacja danych sensorycznych - projekt. Prowadzący: dr inż.

BEZPRZEWODOWA KAMERA INTERNETOWA USB 2.0

Konwerter DAN485-MDIP

Program EDYTOR-AS-OUX

SZYMAŃSKI ŁÓDŹ Ul. Wiskicka 22 Tel./fax. (042) Tel./fax. (042) Kom

Problematyka sieci miejscowej LIN

Interfejs urządzeń peryferyjnych

Transkrypt:

Kontroler do gier FPS Adrian Chemicz Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok III, Specjalność Programowanie Aplikacji Internetowych Streszczenie Tematem mojej pracy jest kontroler do gier typu FPS, który docelowo ma mieć postać kolimatora do repliki broni. Celem tego kontrolera jest możliwie jak największe odwzorowanie ruchów gracza na postać w grze. Urządzenie to wyświetla obraz na LCD od telefonu nokii pobrany z komputera, który pracuje pod kontrolą systemu Windows. 1. Wstęp Mój kontroler do gier został zbudowany z użyciem mikrokontrolera LPC1769 [1] z rdzeniem Cortex- M3. Kontroler ten do komunikacji z komputerem wykorzystuje wirtualny port com, który pracuje z prędkością 6Mbaud/s. Urządzenie to wyświetla obraz na LCD od telefonu nokii pobrany z komputera. Komputer użyty w projekcie korzysta z systemu Windows. Do detekcji ruchów gracza zostały wykorzystane czujniki MEMS. 2. Koncepcja działania projektu Kompletny projekt składa się z kontrolera i podestu. Kontroler w tym wszystkim jest najistotniejszy, ponieważ właśnie to urządzenie odpowiada za komunikacje z komputerem. Zadaniem podestu jest zbieranie informacji o ruchach nóg gracza i przekazywanie ich do kontrolera. Komunikacja między kontrolerem a podestem odbywa się tylko w jednym kierunku(od podestu do urządzenia), a korzysta z podczerwieni. Docelowo kontroler ma mieścić się w kolimatorze na replice. Rys. 1: Elementy projektu.

3. Komunikacja między elementami systemu Komunikacja między mikrokokontrolerem a komputerem korzysta z interfejsu RS485, który pracuje z prędkością 6Mb/s. Do komunikacji z czujnikami MEMS(żyroskop i magnetometr) została wykorzystana szyna I 2 C, która pracuje z częstotliwością 375 khz. LCD od telefonu nokii jest podpięty do szyny SPI i korzysta z maksymalnej częstotliwości 6MHz, która to jest podana w dokumentacji do sterownika tego wyświetlacza (PCF8833) [2]. W projekcie została wykorzystana także podczerwień, która wykorzystuje częstotliwość 36kHz, a do układu czujnik podczerwieni TSOP31236 został podpięty do portu GPIO. Kontroler posiada także zwykłe przyciski podpięte także do GPIO. Rys. 2: Elementy kontrolera. 4. Wyświetlanie obrazu Za wyświetlanie graczowi obrazu z gry komputerowej jest odpowiedzialny wyświetlacz od telefonu nokii posiadający sterownik PCF8833 [2] lub podobny, dla którego maksymalna częstotliwość pracy szyny danych SPI wynosi 6 MHz, co daje możliwość wyświetlania obrazu w przybliżeniu, w 30 klatkach na sekundę. Wyświetlacz użyty w projekcie posiada rozdzielczość 130x130 pikseli i posiada dwunasto-bitową głębie kolorów. Szyna danych SPI dla tego wyświetlacza korzysta z ramek składających się z 9 bitów. Taki format danych oznacza duże trudności, ponieważ nie wszystkie układy mogą pracować z taką konfiguracją szyny SPI, a zazwyczaj dopuszczalna i często jedyna długość ramki wynosi 8 bitów. W przypadku stosowania układu z takimi ograniczeniami sposób obsługi wyświetlacza trzeba realizować w sposób programowy, co pociąga za sobą straty w wydajności i komplikuje program. W przypadku układu użytego w projekcie takie problemy nie występują, ponieważ SPI może pracować z ramką składającą się z od 4 do 16 bitów. Dane wysyłane do wyświetlacza mogą być interpretowane jako dane lub komendy, a różnica między nimi polega na stanie najstarszego bitu w ramce (jeśli jest ustawiony najstarszy bit oznacza to dane). Format danych dla tego wyświetlacza w trybie 12 bitów na kolor przedstawia się następująco: na każde dwa piksele przypadają trzy bajty (Rys. 3).

Rys. 3: Format danych dla sterownika PCF8833 w trybie 12 bitów na kolor. Puste kwadraty oznaczają bity. Na tym rysunku zostały pominięte bity odpowiedzialne za tryb(komendy lub dane). 5. Czujniki MEMS Za detekcje ruchów broni odpowiadają dwa czujniki: trzyosiowy żyroskop L3G4200D [6] firmy STMicroelectronics i trzyosiowy magnetometr HMC5883L [5] firmy Honeywell. Żyroskop pobiera wartość przyspieszenia kątowego z dwóch osi i przekazuje te wartości do PC, gdzie są one zamieniane na ruchy myszki. Wartość przyspieszenia kątowego jest także wykorzystywana do ustalania położenia kontrolera w przestrzeni. Wskutek niedoskonałości i wibracji żyroskopu zachodzi konieczność korekcji pozycji kontrolera, do czego w projekcie wykorzystywany jest magnetometr. Magnetometr jest używany do detekcji wartości maksymalnych pola magnetycznego na poszczególnych osiach, co odpowiada możliwości detekcji czterech kierunków. Możliwości magnetometru są znacznie większe, ale czujnik ten jest bardzo wrażliwy na zakłócenia wywoływane przez linie zasilające i ferromagnetyki wskutek czego jakość pomiaru spada. W celu polepszenia pomiarów należy możliwie jak najdalej odsunąć ten czujnik od źródeł zakłóceń. 6. Aplikacja po stronie Mikrokontrolera Program na kontroler został napisany w asemblerze, ponieważ pierwotnie miał pracować na jednym z najsłabszych układów, czyli na mikrokontrolerze LPC1111 z rdzeniem Cortex-M0, ale wskutek komplikacji spowodowanych niewystarczającą częstotliwością taktowania peryferiów zaszła konieczność przeniesienia projektu na inny, mocniejszy układ. Program składa się z części inicjującej i pętli głównej. W części inicjującej są konfigurowane peryferia i czujniki, a w pętli głównej dane z UART-u są przenoszone do LCD za pomocą SPI, lub w przypadku braku danych dla wyświetlacza następuję odczyt danych z czujników w sposób nie blokujący. 7. Aplikacja po stronie PC Kontroler od strony komputera jest widoczny jak zwykły port COM, ale w przeciwieństwie do standardowego portu COM korzysta z niestandardowych wartości przesyłu danych, czyli 6 Mbaud/s. Do obsługi portu COM na komputerze zostało wykorzystane API dostępne w systemie Windows [7] Aplikacja do obsługi tego urządzenia została napisana z wykorzystaniem wielowątkowości jaką oferuje API systemu Windows, w celu uniknięcia blokad powstałych w wyniku transmisji za pomocą portu COM. W programie wykorzystywane są dwa wątki. Wątek pierwszy robi zrzuty ekranu, odbiera dane od urządzenia i aktualizuje tablice pikseli. Do zadań wątku drugiego należy wysyłanie tablicy pikseli za pomocą portu COM w pętli, w której warunkiem zakończenia jest ustawienie flagi końca. Dane otrzymane od urządzenia są zamieniane na odpowiednie ruchy kursora w komputerze i zdarzenia od naciśniętych klawiszy klawiatury za pomocą funkcji SendInput [8].

Rys. 4: Schemat blokowy algorytmu aplikacji po stronie komputera do obsługi urządzenia. 8. Transmisja danych z wykorzystaniem podczerwieni W celu uniezależnienia elementu odpowiedzialnego za ruch repliki broni i ruch nóg gracza, zastosowano transmisje z wykorzystaniem podczerwieni i pewien format ramki. Takie rozdzielenie dwóch części projektu daje możliwość niezależnej rozbudowy dwóch elementów względem siebie, a także tworzenie nowych modułów, które będą korzystały z wcześniej opracowanych rozwiązań. Rolę odbiornika pełni czujnik TSOP31236 [4], a za wysyłanie odpowiada dioda podczerwona. Format ramki użytej do transmisji z wykorzystaniem podczerwieni składa się z 8 bitów z czego na

dane jest przeznaczone tylko 6 bitów. Bity kodowane są przez zmianę stanu (bit zerowy zmiana z stanu niskiego na wysoki), co daje dodatkową opcje wykrywania błędów. Na każdy stan przypada 16 błysków diody migającej z częstotliwością 36kHz, co stanowi optymalną wartość dla czujnika podczerwieni. Rys. 5: Ilustracja przykładowej ramki, w której pierwszy bit musi być równy 0, a ostatni równy 1. 9. Transmisja danych między PC a kontrolerem Komunikacja między PC a kontrolerem odbywa się za pomocą interfejsu RS485, który pracuje z prędkością 6Mbaud/s. W celu realizacji takich prędkości transmisji zastosowano w projekcie konwerter FT232H, dla którego maksymalna prędkość wynosi 12Mbaud/s. Konwerter ten jest na obecną chwilę najlepszym, dostępnym rozwiązaniem firmy FTDI. Komunikacja między urządzeniami odbywa się z zastosowaniem full-duplexu, co oznacza konieczność zastosowania czterech przewodów transmisyjnych. W kierunku kontrolera transmitowany jest obraz(bajt po bajcie bez żadnych zabezpieczeń), a w kierunku PC specjalnie przygotowane ramki. Rys.6: Format ramki wysyłanej do PC przez kontroler. W powyższej ramce pierwszy i ostatni bajt są to wartości stałe, które umożliwiają dokonanie testu gdzie rozpoczyna się i kończy ramka. W tej ramce są przetrzymywane dane odpowiedzialne za ruchy myszką i dane odpowiedzialne za ruch postaci i atak. 10. Podsumowanie Kontroler ten jest w pełni funkcjonalny, ale ma pewne braki które być może zostaną uzupełnione w przyszłości. Wyświetlany obraz mimo niewielkiej rozdzielczości pozwala na w miarę płynną grę, a ilość klatek jest na poziomie 23, co stanowi minimum do odczucia płynności obrazu. Do poprawy komfortu grania brakuje akcelerometru, który dokonywałby dodatkowych korekt.

Literatura [1] http://www.keil.com/dd/docs/datashts/philips/lpc17xx_um.pdf [2]http://www.kamami.pl/dl/pcf8833_1.pdf [3]http://www.kamami.pl/dl/kamodtft2.pdf [4]http://www.vishay.com/docs/82492/tsop312.pdf [5]http://www51.honeywell.com/aero/common/documents/myaerospacecatalogdocuments/Defense_Brochures-documents/HMC5883L_3-Axis_Digital_Compass_IC.pdf [6]http://www.st.com/st-webui/static/active/en/resource/technical/document/datasheet/CD00265057.pdf [7]http://msdn.microsoft.com/en-us/library/windows/desktop/aa363195%28v=vs.85%29.aspx [8]http://msdn.microsoft.com/en-us/library/windows/desktop/aa363195%28v=vs.85%29.aspx