Akcelerometr i pixelart - kilka gier i aplikacji na MPU6050

Typ_projektu
Arduino
Zdjecie główne
Krótki opis projektu

Kontrola akcelerometrem aplikacji i gier wyświetlanych na ekranie pixelart. Projekt zawiera: poziomicę działającą w osiach X i Y, grę typu labirynt, grę typu endless runner (czołg), oraz grę typu sky jump. 

Niezbędne elementy

1. Mikrokontroler ESP 32
2. Akcelerometr MPU 6050
3. Ekran Pixelart
4. Płytka stykowa
5. Zasilanie
6. Przewody
7. Mikrokontroler ESP8266
8. Pushbutton

Opis projektu

1. Wstęp i Założenia Projektu

Przedmiotem projektu jest innowacyjny system rozrywkowo-użytkowy, który łączy w sobie urok retro grafiki wyświetlanej na ekranie typu Pixelart z nowoczesnymi metodami interakcji fizycznej. Zamiast tradycyjnych przycisków kierunkowych czy joysticków, urządzenie wykorzystuje ruchy dłoni użytkownika do sterowania aplikacjami i grami. Sercem układu sensorycznego jest precyzyjny akcelerometr, który na bieżąco analizuje przechylenie urządzenia w przestrzeni.

Projekt ma na celu nie tylko dostarczenie rozrywki poprzez zestaw wbudowanych mini-gier, ale również zademonstrowanie możliwości integracji różnych platform sprzętowych. W systemie współpracują ze sobą dwa popularne mikrokontrolery: ESP32 odpowiedzialny za logikę sterowania i odczyt czujników oraz ESP8266, który zarządza renderowaniem obrazu na matrycy LED. Dodatkowo projekt posiada walor edukacyjny, prezentując w praktyce zagadnienia związane z fizyką (przyspieszenie grawitacyjne), komunikacją cyfrową (magistrala I2C) oraz projektowaniem interfejsów użytkownika.

2. Szczegółowy Wykaz Komponentów

  • Mikrokontroler ESP32: Główna jednostka obliczeniowa projektu. Dzięki dużej mocy obliczeniowej bez problemu radzi sobie z szybkim odczytem danych z akcelerometru, obliczaniem fizyki w grach oraz natychmiastowym przesyłaniem informacji do ekranu.

  • Akcelerometr MPU 6050: Moduł czujnika MEMS, który mierzy przyspieszenie w trzech osiach (X, Y, Z) oraz posiada wbudowany żyroskop. W tym projekcie służy jako główny kontroler – to jego przechylanie przekłada się na ruch na ekranie.

  • Ekran Pixelart: Matryca LED pozwalająca na wyświetlanie prostych, pikselowych animacji, gier i interfejsów. Stanowi moduł wyjściowy (wyświetlacz) całego systemu.

  • Mikrokontroler ESP8266: Dodatkowy mikrokontroler pełniący rolę sterownika samego ekranu Pixelart. Odbiera on przetworzone komendy z głównego układu ESP32 i bezpośrednio zapala odpowiednie diody na matrycy.

  • Płytka stykowa (Breadboard): Baza montażowa pozwalająca na stworzenie obwodu bez konieczności lutowania. Na niej umieszczony jest moduł ESP32, akcelerometr oraz przycisk.

  • Zasilanie (Powerbank): Przenośne źródło energii, które czyni projekt w pełni mobilnym. Dzięki złączom USB zasila zarówno płytkę sterującą, jak i sam ekran LED.

  • Przewody połączeniowe: Zestaw kabli wykorzystywanych do zestawienia ścieżek sygnałowych i zasilających między komponentami.

  • Przycisk: Fizyczny element interfejsu wbudowany w obwód na płytce stykowej, służący do płynnego przełączania się pomiędzy dostępnymi grami i aplikacjami.

3. Architektura i Działanie Systemu

Działanie projektu opiera się na ciągłej pętli odczytu i przetwarzania danych. Użytkownik trzyma w dłoniach płytkę stykową, na której zamocowany jest akcelerometr MPU 6050. Czujnik ten komunikuje się z mikrokontrolerem ESP32 za pomocą cyfrowej magistrali I2C. Kiedy użytkownik przechyla układ w lewo, prawo, do przodu lub do tyłu, akcelerometr wykrywa zmianę rozkładu przyspieszenia ziemskiego na poszczególnych osiach.

ESP32 błyskawicznie analizuje te dane, mapując kąt nachylenia na ruch wirtualnego obiektu w uruchomionej aktualnie grze. Następnie logika gry (np. pozycja gracza, układ przeszkód) jest aktualizowana, a wygenerowany obraz w postaci cyfrowej jest przesyłany do mikrokontrolera ESP8266. ESP8266, zintegrowany z ekranem Pixelart, odbiera tę ramkę danych i odświeża wyświetlacz, co daje efekt płynnej animacji reagującej na ruch bez żadnych widocznych opóźnień.

4. Opis Dostępnych Aplikacji i Gier

Z poziomu urządzenia użytkownik ma dostęp do zestawu czterech zróżnicowanych programów. Między poszczególnymi trybami można się cyklicznie przełączać za pomocą fizycznego przycisku na płytce stykowej.

4.1. Poziomica (Narzędzie)

Aplikacja o charakterze użytkowym. Ekran symuluje zachowanie tradycyjnej poziomicy pęcherzykowej, jednak działa jednocześnie w dwóch osiach (X oraz Y). Na ekranie wyświetlana jest "kropka". Gdy układ leży idealnie płasko, kropka znajduje się w samym centrum matrycy. Przechylenie urządzenia powoduje płynne przesuwanie się punktu w kierunku przeciwnym do wektora grawitacji. Jest to doskonałe narzędzie do kalibracji czujnika oraz sprawdzenia płaskości powierzchni.

4.2. Gra: Labirynt

Gra logiczno-zręcznościowa. Na ekranie generowany jest układ ścian tworzących labirynt, a gracz kontroluje pojedynczy, jasny punkt. Celem jest przeprowadzenie punktu z miejsca startu do wyznaczonego wyjścia. Sterowanie odbywa się poprzez fizyczne przechylanie urządzenia – symuluje to zachowanie metalowej kulki na drewnianej planszy z otworami. Akcelerometr precyzyjnie przenosi siłę przechylenia na prędkość poruszania się wirtualnej "kulki".

4.3. Gra: Endless Runner (Czołg)

Dynamiczna gra akcji, w której ekran przesuwa się nieustannie w jednym kierunku, wymuszając na graczu szybkie reakcje. Gracz kontroluje postać (w tym przypadku czołg) znajdującą się u dołu ekranu. Poprzez przechylanie akcelerometru na boki, czołg porusza się w lewo lub w prawo, unikając nadciągających przeszkód. Gra świetnie testuje refleks użytkownika.

4.4. Gra: Sky Jump

Klasyczna gra zręcznościowa polegająca na skakaniu w górę po platformach. Postać gracza nieustannie podskakuje. Zadaniem użytkownika jest przechylanie urządzenia w lewo lub w prawo, aby skierować postać na wyżej położone platformy, które sukcesywnie pojawiają się na ekranie. Spadnięcie w dół, kończy grę.

5. Instrukcja Montażu Urządzenia

Poniższa instrukcja krok po kroku opisuje proces sprzętowego połączenia komponentów na podstawie schematu ideowego. Przed przystąpieniem do pracy upewnij się, że zasilanie jest odłączone.

  1. Przygotowanie Płytki Stykowej: Umieść moduł czujnika MPU 6050 na płytce stykowej. Następnie umieść na płytce przycisk pushbutton tak, aby jego nóżki znajdowały się po obu stronach środkowego wgłębienia.

  2. Zasilanie Czujnika: Za pomocą przewodów połącz pin zasilający VCC (lub 3V3) czujnika MPU 6050 z odpowiednim pinem 3V3 na mikrokontrolerze ESP32. Następnie połącz pin GND czujnika z pinem GND (masą) na ESP32.

  3. Komunikacja I2C:  Podłącz pin SCL (linia zegara) czujnika MPU 6050 do dedykowanego pinu SCL na module ESP32.

    • Podłącz pin SDA (linia danych) czujnika MPU 6050 do dedykowanego pinu SDA na module ESP32.

  4. Przycisk Zmiany Trybów: Jedną nóżkę przycisku podłącz do masy (GND) układu. Drugą nóżkę podłącz do wybranego cyfrowego pinu wejścia/wyjścia (GPIO) na module ESP32. W kodzie należy pamiętać o uruchomieniu wewnętrznego rezystora podciągającego (pull-up) dla tego pinu.

  5. Ekran: Podłącz ekran pixelart zawierający wewnątrz ESP 8266 do zasilania.

6. Instrukcja Uruchomienia i Obsługi

Ważne: Przed włączeniem zasilania upewnij się, że układ z ESP32 i akcelerometrem leży płasko na stabilnej powierzchni. Jest to niezbędne do prawidłowej, automatycznej kalibracji czujników w pierwszych sekundach pracy.

  1. Zasilanie: Podłącz powerbank do portu USB mikrokontrolera ESP32 oraz do zasilania ekranu Pixelart.

  2. Inicjalizacja: Odczekaj kilka sekund. Diody na układach powinny się zaświecić. ESP32 w tym czasie dokonuje kalibracji MPU 6050 i nawiązuje komunikację z ekranem.

  3. Rozpoczęcie: Po prawidłowym uruchomieniu, na ekranie pojawi się pierwsza aplikacja. Weź płytkę stykową z czujnikiem do rąk.

  4. Sterowanie: Zmiana kąta nachylenia płytki natychmiastowo wpływa na akcję na ekranie. Wykonuj płynne ruchy.

  5. Przełączanie Gier: Aby zmienić aktualną grę lub aplikację, wciśnij krótko przycisk na płytce stykowej.

Zdjęcia
kod programu

"ZIP poniżej"

Schemat
Youtube
Tagi
Pixelart ESP32 Akcelerometr MPU6050 Gry