Projekt Pico Pong 2021
Jerzy Jasonek | 2021-03-05 10:20:32
Na przełomie roku 2020 i 2021 Fundacja Raspberry Pi wydała swój pierwszy mikrokontroler czyli Raspberry Pi Pico.
Organizacja Raspberry Pi była do tej pory znana z komputerów jednopłytkowych, obecnie w ofercie znajdziemy RP 3, RP 4, RP 400 (komputer all in one) czy RP 0. Wszystkie te płytki były pełnoprawnymi komputerami z możliwością zainstalowania systemu operacyjnego (dedykowany Raspberry Pi OS - linux na Debianie).
Tymczasem Raspberry Pi Pico to całkiem coś innego - mikrokontroler oparty o autorski RP 2040. W oparciu o to urządzenie możemy budować projekty podobne do tych, które przez ostatnie lata powstawały np. na Arduino. W porównaniu z Arduino nowe RP Pico ma jednak kilka istotnych zalet, po pierwsze jest tanie - 19,90 zł w polskiej dystrybucji, po drugie jest mocniejsze i po trzecie można go programować w MicroPythonie lub ewentualnie Circuit Pythonie.
Twórcy RP Pico wyposażyli swoje urządzenie w dwurdzeniowy procesor, pamięć ram o wielkości 264 kb i pamięć flash o wielkości 2 MB (pełna specyfikacja urządzenia). To wszystko sprawia, że naszej projekty pisane na to urządzenie nie muszą być kompilowane z języka C++ na niewielkie wykonywalne pliki, ale możemy na urządzeniu zainstalować interpreter MicroPythona (specjalna wersja Pythona na mikrokontrolery) i programować urządzenie w sposób łatwiejszy dla początkującego użytkownika. Dla bardziej zaawansowanych użytkowników pozostała możliwość programowania w C++ ale to wymaga odpowiedniego skonfigurowania środowiska pracy.
Ja na potrzeby edukacyjne programuję, więc w MicroPythonie, do rozpoczęcia pracy wystarczy zainstalować program Thonny Python IDE, który pozwoli nam odpalić MicroPythona, zainstalować konieczne biblioteki i odpalić gotowy projekt na urządzeniu.
Na moim kanale na Youtube - Scratch SPWZ, przerobiłem wszystkie projekty polecane w podręczniku dla początkujących użytkowników, podpatrzyłem też kilka projektów pojawiających się w internecie w szybko rozrastającej się społeczności RP Pico i to wszystko skłoniło to podjęcia próby napisania gry na mikrokontroler.
Inspiracją do mojego projektu Pico Pong 2021, był projekt użytkownika Print 'N Play, który zrobił klona Space Invaders na RP Pico.
W tym samym czasie, postanowiłem napisać z moimi uczniami Ponga w Pythonie, przy użyciu biblioteki PygameZero - wystarczyło, więc tylko przeportować kod na Pico :)
Do projektu użyłem:
- Raspberry Pi Pico z przylutowanymi pinami
- wyświetlacz oled 0,96 cala o rozdzielczości 128x64 piksele działający w protokole I2C
- dwa potencjometry 10 kilo ohm
- płytkę stykową
- kabelki ze złączami męskimi
W wersji rozszerzonej dołożyłem:
- 4 diody + rezystory 330 ohm (3 wskazujące poziom trudności, 1 sygnalizującą tryb treningowy - grę na jednego gracza)
- 2 przyciski (do rozpoczęcia gry i zmiany poziomu trudności)
Ja złożyłem swój projekt w dużej mierze w oparciu o mój adapter do RP Pico, ale całość bez problemu można też zmontować na płytce stykowej.
Schemat podłączenia:
Pin GP w RP Pico | Komponent |
---|---|
GP 26 | Potencjometr - player 1 |
GP 27 | Potencjometr - player 2 |
GP 11 | Dioda czerwona (przez rezystor 330 ohm) - sygnalizująca poziom |
GP 12 | Dioda żółta (przez rezystor 330 ohm) - sygnalizująca poziom |
GP 13 | Dioda zielona (przez rezystor 330 ohm) - sygnalizująca poziom |
GP 1 | Dioda niebieska (przez rezystor 330 ohm) - sygnalizująca tryb treningowy |
GP 15 | Przycisk start |
GP 14 | Przycisk wyboru poziomu trudności |
GP 2 | Oled - SDA |
GP 3 | Oled - SCL |
3,3 V | Oled VIN, przyciski |
3,3 V | Potencjometry |
GND | Oled - GND, diody, potencjometr |
Kod programu, a nawet jego 3 wersje znajdziecie na moim Githubie.
Prezentacje "automatu" do gry i omówienie kodu programu znajdziecie na poniższym filmie.