% verze 1.0 3.2.2023 \documentclass[12pt, a4paper, oneside]{article} % velikost písma, stránky, typ dokumentu - detaily viz literatura \usepackage[utf8]{inputenc} \usepackage[czech]{babel} \usepackage{wrapfig} % nastavení obtékání textu \usepackage{graphicx,amsmath} % nastavení grafiky, matematiky %\usepackage{subfig} % více obrázků vedle sebe \usepackage{color} % balíček pro obarvování textů % \color{blue} % přepne barvu textu na modrou \usepackage{xcolor} % zapne možnost používání barev, mj. pro \definecolor \definecolor{mygreen}{RGB}{0,150,0} % nastavení barev odkazů \definecolor{myblue}{RGB}{0,0,200} \definecolor{commentgreen}{RGB}{0,100,0} % nastavení barev pro příklady z C++ \definecolor{deepblue}{rgb}{0,0,0.7} \definecolor{deepred}{rgb}{0.6,0,0} \definecolor{deepgreen}{rgb}{0,0.5,0} \usepackage{hyperref} % balíček pro hypertextové odkazy % \url{www.odkaz.cz} % \href{http://www.odkaz.cz}{Text který bude jako odkaz} %\hyperlink{label}{proklikávací_text} - odkaz na text % \hypertarget{label}{cíl_odkazu} - cíl odkazu \hypersetup{colorlinks=true, linkcolor=myblue, urlcolor=mygreen, citecolor=blue, anchorcolor = magenta, linktocpage = true, frenchlinks } % nastavení barvy odkazů % bookmarksopen=true, bookmarksnumbered=true, bookmarksopenlevel=1 - nastavuje rozbalování levého menu %\addtolength{\textwidth}{-2mm} %\addtolength{\hoffset}{4mm} % posun textu kvůli kroužkové vazbě \setlength{\intextsep}{5mm} % nastavení mezery okolo obrázků % nastavení příkazu >\figcaption pro popis čehokoli, jako by to byly obrázky \makeatletter \newcommand\figcaption{\def\@captype{figure}\caption} \makeatother %\def\refname{Literatura a další zdroje} % přejmenuje anglický název Reference na české Literatura ... %% VLNA KkSsVvZzOoUuAaIi % Defaultni  koncovka pro je ".tex" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % V PROSTŘEDÍ ROVNIC SE NESMÍ VYSKYTOVAT PRÁZDNÝ ŘÁDEK % % PROGRAM VLNA SE MUSÍ SPUSTIT SAMOSTATNĚ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % definice příkazů %\newcommand{\D}{\medskip \noindent} % nový odstavec v "americkém" formátování \usepackage{indentfirst} %odsadí první řádek prvního odstavce v každé kapitole - české formátování \newcommand{\A}{\mathbf} %tučné písmo v matematickém režimu \newcommand{\TO}{\ensuremath{\boldsymbol\Omega}} % tučný znak velké omega - pro ohmy \newcommand{\F}{\footnotesize} % zmenšená velikost písma \newcommand{\N}{\normalsize} % normální velikost písma \newcommand{\U}{\underline} % podtržené písmo \newcommand{\e}{\ensuremath} % další příkaz se aplikuje, pouze, když jste v matematickém režimu \linespread{1.3} % řádkování 1,5x \unitlength=1mm % nastavení volby jednotek % konec hlavičky %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} % začátek textové části % titulní strana %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \pagestyle{empty} % vynechá číslování ~ \voffset = -23mm % posun začátku textu výš \enlargethispage{60mm} % zvětší oblast tisku pro tuto stránku %\the\leftskip %vypíše hodnotu proměnné \leftskip %\rightskip \vspace{-15mm} \begin{figure} \leftskip=-63mm plus 1.0fil % posun levého okraje odstavce \begin{minipage}{.35\textwidth} % \centering \includegraphics[width=0.95\linewidth]{img/logo_ zelene.jpg} \end{minipage} \begin{minipage}{.5\textwidth} \rightskip =-200pt plus 1.0fil \textbf{Střední průmyslová škola a Vyšší~odborná škola~Brno,~Sokolská,} %\leftskip=0mm plus 1.0fil \vspace{-2mm} \textbf{příspěvková organizace} \end{minipage} \end{figure} \vspace{68mm} \begin{center} \Huge \textbf{MATURITNÍ PRÁCE} \\ \vspace{7mm} \huge %\LARGE \textbf{Emulátor konzole GameBoy} \end{center} \vspace{78mm} \large \newcommand{\radkovani}{1mm} %\leftskip = 3mm \begin{tabbing} \hspace{-16mm} \= \hspace{45mm} \= \kill % nastavení zarážek \>Studijní obor: \> Technické lyceum 78 -- 42 -- M/01\\[\radkovani ] \>Třída: \> L4A \\[\radkovani] \>Školní rok: \> 2025/2026 \\[\radkovani] \>Jméno: \> \textbf{Adam} \\[\radkovani] \>Příjmení: \> \textbf{Břicháček} \\ \end{tabbing} \leftskip = 0mm \normalsize %\addtolength{\textheight}{30mm} % zvětší oblast textu na stránce % musí být o stránku dřív, než má začít fungovat %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage % Prohlášení o autorství \voffset = 0mm % posun začátku textu zpět \enlargethispage{60mm} % zvětší oblast tisku pro tuto stránku ~ % musí to tu být, aby fungovala svislá mezera \vspace{185mm} \leftskip=-14.5mm \rightskip=-17mm \noindent \textbf{Prohlašuji, že jsem tuto práci vypracoval samostatně a použil jsem literárních pramenů a informací, které cituji a uvádím v seznamu použité literatury a zdrojů informací.} \vspace{7mm} \noindent V Brně dne: ............... \hspace{85mm} .............................\\ \hspace*{128mm} Adam Břicháček %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage % Poděkování - nepovinné \section{Úvod} %\begin{itemize} %\item proč jsem si zvolil dané téma %\item výchozí situace a předpoklady %\item cíle práce, čeho chci dosáhnout %\item jak asi toho chci dosáhnout (zhruba, stručně) %\end{itemize} Pico GameBoy (zkráceně Pico-GB) Emulátor jsem si vybral jako maturitní práci, protože mě přišla zajímavá emulace starých herních konzolí a celková emulace konzolí a dalších věcí, také mě přišlo zajímavé si vytvořit vlastní konzoli k tomu jako takový menší bonus. K tomu abych docílil pravého pocitu hraní na originálním GameBoyi, které se dneska nedají jednoduše sehnat, jsem se snažil držet originálnímu designu, s tím že jsem ho chtěl vylepšit o svojí vlastní baterií, místo 4 AA baterek nahradit baterií a nabíjením přes USB-C. Předpokládám, že Baterie by mohla mít lepší životnost než v originálu, neboť to není pořád zapnuté a komponenty co jsem vybral by neměli tolik čerpat energii z Baterie a pokud baterie bude dostatečně veliká tak nebude potřeba nabíjet tak často. Další předpoklad je se zbavit originálních kazet, na které se vlezla max 1 - 2 hry (pokud to byla nějaká malá hra se speciálními edicemi tak klidně i 3, ale to jen velice vzácně) a nahradit ji SD kartou kam se vejde celá knihovna VŠECH her vydaných pro originálního GameBoye. Tohle celé bych chtěl dosáhnout pomocí mikrokontroléru Raspberry Pi Pico, LCD displejem ILI9225, SD kartou a pár tlačítek, to by nám stačilo na původní rozjezd a pak jen přidat zbytek komponentů. \section{Text} \subsection{Program v Pi Pico} % https://github.com/deltabeard/RP2040-GB \subsubsection{Originální program} Program, který je nahrán na mikrokontrolér Raspberry Pi Pico, je fork (neboli modifikace) RP2040-GB od deltabeard. Tento program je založen na originálním kódu, který konvertuje soubory .gb (Game Boy) do čitelného jazyka C. Tento proces umožňuje spustit Game Boy hry na Raspberry Pi Pico po přidání pár řádků kódů. Díky této knihovně je možné psát na Game Boy dokonce i naše vlastní hry. Při vývoji vlastních her je však nutné vzít v potaz výkon samotného mikrokontroléru Raspberry Pi Pico. Je důležité, abychom neudělali hru příliš náročnou, aby mohla být spuštěna hladce na tomto zařízení. RP2040-GB je open-source projekt, který umožňuje vývojářům vytvářet vlastní hry a aplikace pro Game Boy. Tento projekt je velmi aktivní a má velké množství přispěvatelů, kteří neustále vylepšují a rozšiřují jeho možnosti. Díky použití tohoto programu můžeme na Raspberry Pi Pico spustit širokou škálu her, od klasických Game Boy titulů až po vlastní tvorby. Je to skvělá možnost pro vývojáře, kteří chtějí vytvářet vlastní hry a aplikace pro Game Boy, a pro hráče, kteří chtějí hrát své oblíbené hry na novém zařízení. Vývoj vlastních her pro Game Boy na Raspberry Pi Pico vyžaduje určité znalosti programování v jazyce C, knihovně Raylib a znalosti o fungování mikrokontrolérů. Nicméně, díky dostupnosti zdrojového kódu a dokumentace, je možné se do tohoto světa snadno zapojit a začít vytvářet své vlastní hry a aplikace. % https://github.com/YouMakeTech/Pico-GB \subsubsection{Modifikovaný program} Pico-GB od YouMakeTech, přidává několik významných vylepšení oproti původnímu kódu. Tato vylepšení zahrnují: \begin{itemize} \item Podpora klasických tlačítek: Program podporuje klasické tlačítka Game Boy, což umožňuje hráčům ovládat hry pomocí známých tlačítek A, B, Start, Select, Up, Down, Left a Right. \item Přetaktování mikrokontroléru na 266MHz: Program umožňuje přetaktování mikrokontroléru Raspberry Pi Pico na 266MHz, což zvyšuje výkon zařízení a umožňuje hladší běh her s vyšším počtem snímků za sekundu (\textasciitilde 60 FPS). To zajišťuje, že hry běží plynuleji a bez zpoždění. \item I2S zvuková podpora: Program přidává podporu pro I2S zvuk, který umožňuje přehrávání 44.1kHz 16-bitového stereo audia. To znamená, že hry budou mít kvalitní zvuk, který odpovídá původnímu Game Boy zvuku. \item Podpora SD karet: Program umožňuje použití SD karet jako úložiště pro hry a jejich uložená data. SD karty musí být naformátované na FAT 32 a mít název uložiště PICO-GB. To umožňuje hráčům snadno ukládat a načítat své hry a uložená data. \end{itemize} Díky těmto vylepšením nabízí Pico-GB od YouMakeTech mnohem lepší herní zážitek než původní kód. Hry běží plynuleji, mají kvalitní zvuk a lze je snadno ukládat a načítat pomocí SD karet. To vše činí Pico-GB velmi atraktivní volbou pro hráče, kteří chtějí hrát své oblíbené Game Boy hry na novém zařízení. \subsection{Součástky} Samotná Pico-GB se skládá z následujících součástek: \begin{itemize} \item Mikrokontrolér Raspberry Pi Pico, který je srdcem celého zařízení a poskytuje potřebný výkon pro emulaci her. \item 2,2 palcový ILI9225 LCD displej s rozlišením 176x220 pixelů, který poskytuje kvalitní obraz pro hraní her. Displej může být vybaven slotem pro microSD kartu, což umožňuje snadné načítání her a dalších souborů. \item Pokud displej není vybaven slotem pro microSD kartu, je nutné použít externí čtečku, která musí být připájena nebo připojena k zařízení. \item MAX98357 I2S mono zesilovač, který zajišťuje kvalitní zvukový výstup pro hraní her. \item 2W 8Ω reproduktor, který poskytuje hlasitý a kvalitní zvuk pro hraní her. \item 8 mikro 5x5x5mm tlačítek, která slouží jako ovládací prvky pro hraní her. Tlačítka jsou rozmístěna podobně originálnímu designu původního GameBoye, aby bylo možné snadno ovládat hry i z paměti. \item Pájecí pole, které umožňuje pájení a propojení všech součástek. \item Drátky, které slouží jako propojovací vodiče pro součástky. \item LiPol baterie 3000mAh 3.7V, která poskytuje dostatečnou kapacitu pro dlouhodobé hraní her. \item Nabíječka Li-ion článku TP4056 s ochranou USB-C, která umožňuje snadné nabíjení baterie bez poníčení. \item Plast na 3D tisk pro krabičku, který slouží jako ochranné pouzdro pro zařízení. \end{itemize} \subsection{Konstrukce} \subsubsection{Nahrávání programu} Nejjednodušší a zároveň nejbezpečnější je nahrát program na Raspberry Pi Pico ještě před samotnou konstrukcí, aby bylo možné otestovat, že všechny funkce komponentů fungují správně. Tím se vyhneme případným problémům při pájení nebo špatném zapojení. \begin{itemize} \item Stáhněte nebo zkompilujte nejnovější verzi \textit{Pico-GB} z oficiálního repozitáře na GitHubu pro získání \texttt{.UF2} souboru. \item Zmáčkněte a držte tlačítko \textbf{BOOTSEL} na Raspberry Pi Pico a připojte zařízení k počítači pomocí micro USB-B kabelu. \item Jakmile se Pico objeví jako nový disk \textbf{RPI-RP2} v systému, pusťte tlačítko \textbf{BOOTSEL}. \item Přetáhněte soubor s příponou \texttt{.UF2} do nově vzniklého disku. Tento soubor obsahuje kompletní program pro Pico. \item Raspberry Pi Pico se automaticky restartuje a spustí nahraný program. \end{itemize} Doporučení: \begin{itemize} \item Pokud program nespustí správně, zkontrolujte nejdřív správnost souboru \texttt{.UF2} a případně ho znovu zkompilujte. \item Při prvním nahrávání je vhodné mít připojený Pico jen k PC, bez dalších komponentů, aby se minimalizovalo riziko poškození. \end{itemize} \subsubsection{Pájení konektorů na Pico} Pro připojení externích modulů k Raspberry Pi Pico je nutné připájet dva 20-pinové 2,54~mm pravoúhlé \textit{male headery}. Alternativně lze použít přímé propojení drátů, pokud se jedná o experimentální zapojení. \begin{figure}[ht] \centering \includegraphics[width=0.6\textwidth]{img/Pi_feet.png} \caption{Připájené nožky na Raspberry Pi Pico} \label{fig:PiFeet} \end{figure} Tipy pro pájení: \begin{itemize} \item Ujistěte se, že pájka je dobře roztavená a nevytváří zkraty mezi sousedními piny. \item Pokud pájíte poprvé, vyzkoušejte si pájení na staré nepoužívané desce. \item Po dokončení pájení doporučujeme vizuálně zkontrolovat všechny spoje a případně změřit kontinuitu multimetrem. \end{itemize} \subsubsection{Připojejí displeje k Raspberry Pi Pico} K připojení ILI9225 displeje použijeme kabely s délkou cca 20 cm s \textit{female} konektory. Připojení se provádí podle následujícího schématu: \begin{itemize} \item LCD VCC = +3,3V (OUT) \texttt{<- Červená} \item LCD GND = GND \texttt{<- Černá} \item LCD CS = GP17 \texttt{<- Bílá} \item LCD CLK = GP18 \texttt{<- Zelená} \item LCD SDI = GP19 \texttt{<- Modrá} \item LCD RS = GP20 \texttt{<- Fialová} \item LCD RST = GP21 \texttt{<- Šedá} \item LCD LED (pokud je) = GP22 \texttt{<- Žlutá} \end{itemize} \begin{figure}[ht] \centering \includegraphics[width=0.8\textwidth]{img/PiDisCir.png} \caption{Zapojení Displeje} \label{fig:PiDisCir} \end{figure} \begin{figure}[ht] \centering \includegraphics[width=0.8\textwidth]{img/PiDisCirIrl.png} \caption{Příklad reálné zapojení dipleje} \label{fig:PiDisCirIrl} \end{figure} \vspace{69mm} \textbf{Poznámky} \begin{itemize} \item Ne všechny ILI9225 displeje mají pin \texttt{LED}. Pokud je přítomen, musí být připojený na +3,3 V nebo na napětí v rozsahu 0-3,3 V pro regulaci jasu, jinak displej nebude svítit. \item Pin \texttt{VCC} není připojen přímo k +3,3 V na Pico, protože tento výstup je omezen na jedno zařízení, proto je nutné připojit kabel k desce, z které budeme napájet více komponentů současně (např. displej + MAX98357 zesilovač). \item Zkontrolujte dvakrát všechna zapojení před napájením. I když Pico obvykle odolá drobným chybám, \textbf{zkrat mezi +3,3 V a GND může zařízení poškodit.} \item Při manipulaci s kabely dávejte pozor, aby nedošlo k poškození konektorů nebo pinů na desce. \end{itemize} \vspace{6mm} \textbf{Tipy pro testování:} \begin{itemize} \item Po připojení displeje a napájení spusťte nahranný program, který rozsvítí displej. \item Pokud displej nefunguje správně, zkontrolujte zapojení pinů a polaritu napájení. \item Pro pohodlné ladění doporučuji použít barevně označené vodiče a poznámky k jejich propojení. \end{itemize} \subsubsection{Připravování SD karty} MicroSD / SD karta slouží pro ukládání herních ROM souborů a ukládání herního postupu (save dat). Bez správně připravené SD karty zařízení nebude schopné hry načíst. Pro tento projekt je nutné použít kartu naformátovanou na souborový systém \textbf{FAT32} s názvem \textbf{Pico-GB}, protože jiný formát (např. exFAT nebo NTFS) program nedokáže správně přečíst. Na kartu je potřeba nahrát pouze ROM soubory her, které legálně vlastníme. Program rozpoznává pouze soubory s příponou \textbf{.gb} (GameBoy ROM). Pokud má soubor jinou příponu (např. .zip nebo .gbc), nebude se v menu zobrazovat. ROM soubory se musí nacházet přímo v hlavní složce (rootu) SD karty - nesmí být uložené v podsložkách. \begin{itemize} \item Připojte SD kartu k počítači a naformátujte ji na FAT32 \item Zkontrolujte, že je karta prázdná \item Zkopírujte všechny .gb soubory přímo do root složky SD karty \item Bezpečně odeberte SD kartu z počítače \item Vložte SD kartu do ILI9225 SD slotu (pomocí MicroSD adaptéru) \end{itemize} Správná příprava SD karty je klíčová - většina problémů s nenačítáním her bývá způsobena špatným formátem nebo nesprávným umístěním souborů. \subsubsection{Připojování SD karty do čtečky} SD čtečka na displeji ILI9225 komunikuje s Pico pomocí SPI rozhraní. Každý pin musí být zapojen správně, jinak komunikace nebude fungovat. \begin{itemize} \item SD MISO = GP12 = ORANGE \item SD CS = GP13 = WHITE \item SD SCK = GP14 = GREEN \item SD MOSI = GP15 = BLUE \end{itemize} \begin{figure}[ht] \centering \includegraphics[width=0.69\textwidth]{img/PicoGBSDCardReaderConnection.png} \caption{Připojení čtečky z displeje} \label{fig:SDDisCon} \end{figure} Některé ILI9225 moduly mají nekvalitní nebo nestabilní SD čtečku. Pokud dojde ke špatnému kontaktu, Pico nedokáže správně číst data z karty. Typickým projevem je zobrazení náhodných znaků nebo prázdného seznamu her. \begin{figure}[ht] \centering \includegraphics[width=0.6\textwidth]{img/BadConnectionWithSDCardReaderOrBrokenSDCardReader.jpg} \caption{Špatné spojení s čtečkou} \label{fig:SDDisBadCon} \end{figure} \vspace{69mm} Pokud se tento problém objeví, je možné obejít vestavěnou čtečku a připojit MicroSD adaptér přímo k Picu. Toto řešení bývá stabilnější. Kromě SPI vodičů je nutné připojit také napájení 3,3V (červený vodič) a GND (černý vodič). \begin{figure}[ht] \centering \includegraphics[width=0.4\textwidth]{img/DirectConnectionToSDCard.jpg} \caption{Přímé spojení s čtečkou} \label{fig:SDDirCon} \end{figure} \vspace{69mm} Po správném připojení displeje a SD karty můžeme Pico připojit přes USB k počítači a ověřit funkčnost. Pokud je vše zapojeno správně, zobrazí se menu s výběrem her. \begin{figure}[ht] \centering \includegraphics[width=0.6\textwidth]{img/PicoGBGameSelectionMenu.png} \caption{Menu výběru her} \label{fig:PiGameSel} \end{figure} \vspace{69mm} \subsubsection{Připojení tlačítek} Tlačítka se připájí na pájecí desku stejně jako na obrázku dole. Každé tlačítko je připojeno na GND na jedné straně a k Picu na druhé. K připojení tlačítek k Picu jsou použity cca 20 cm dráty s ženským konektorem na jedné straně. \textbf{Zapojení jednotlivých tlačítek:} \begin{itemize} \item UP = GP2 = hnědá \item DOWN = GP3 = žlutá \item LEFT = GP4 = fialová \item RIGHT = GP5 = šedá \item BUTTON A = GP6 = bílá \item BUTTON B = GP7 = modrá \item SELECT = GP8 = oranžová \item START = GP9 = zelená \item GND = černá \end{itemize} \begin{figure}[ht] \centering \includegraphics[width=0.6\textwidth]{img/ButtLay.png} \caption{Zapojení tlačítek} \label{fig:ButtLay} \end{figure} \begin{figure}[ht] \centering \includegraphics[width=0.6\textwidth]{img/ButtIrlFront.png} \label{fig:ButtIrlBack} \end{figure} \begin{figure}[ht] \centering \includegraphics[width=0.6\textwidth]{img/ButtIrlBack.png} \label{fig:ButtIrlFront} \end{figure} \vspace{69mm} \subsubsection{Přidání zvuku} Pro přehrávání zvuku použijeme zesilovač MAX98357A, který komunikuje s Pico přes I2S rozhraní. Tento modul převádí digitální audio signál na analogový signál pro reproduktor. Kvůli omezenému počtu 3V3 pinů na Pico je nutné napájení rozvést přes pájecí desku (stejně jako u LCD displeje). \begin{itemize} \item MAX98357A DIN = GP26 = modrá \item MAX98357A BCLK = GP27 = zelená \item MAX98357A LRC = GP28 = bílá \item MAX98357A GND = černá \item MAX98357A VIN = 3V3 (OUT) = červená \end{itemize} \begin{figure}[ht] \centering \includegraphics[width=0.6\textwidth]{img/Sound.png} \caption{Zapojení zesilovače a reproduktoru} \label{fig:PiSound} \end{figure} \vspace{69mm} Po správném zapojení by měl být zvuk čistý a bez výrazného šumu. Pokud se objeví praskání nebo zkreslení, je vhodné zkontrolovat uzemnění a kvalitu spojů. \subsubsection{Připojení baterie a nabíječky} Pico lze napájet přímo přes USB, ale pro vytvoření přenosné herní konzole je vhodné použít baterii (např. Li-Ion nebo Li-Pol) spolu s nabíjecím modulem a vypínačem. Spotřeba Pica není vysoká, ani při přetaktování na 266 MHz. Díky tomu může zařízení na baterii fungovat několik hodin bez nutnosti nabíjení. Doporučený způsob napájení mimo USB je přivedení napětí na pin VSYS v rozsahu 1,8-5,5 V. Toto napětí je následně regulováno interním stabilizátorem. Důležité upozornění: Nikdy nevypínejte baterii, pokud je Pico současně připojeno k napájení přes micro USB-B. Mohlo by dojít k poškození nebo nestabilnímu chování zařízení. Ve finální verzi zapojení by měla být použita Schottkyho dioda, která zabrání zpětnému toku proudu mezi USB a baterií. \begin{figure}[ht] \centering \includegraphics[width=0.8\textwidth]{img/PicoPower.png} \caption{Zapojení napájení} \label{fig:PiPower} \end{figure} \vspace{69mm} \subsubsection{Návrh a výroba 3D tištěné krabičky} Pro vytvoření finální přenosné konzole bylo nutné navrhnout vlastní ochrannou krabičku. Cílem nebylo pouze zakrýt elektroniku, ale vytvořit pevné a ergonomické tělo zařízení, které se bude držet pohodlně v ruce a bude vizuálně připomínat klasický Game Boy. Krabička byla navržena jako dvoudílná - přední část obsahuje otvory pro displej, tlačítka a reproduktor, zadní část slouží jako kryt elektroniky a baterie. Obě části jsou spojeny pomocí šroubů, což umožňuje snadnou údržbu nebo opravu zařízení. \textbf{Použitý materiál - PLA} Pro tisk byl zvolen materiál PLA (polylaktid), protože: \begin{itemize} \item je snadno tisknutelný a vhodný pro začátečníky, \item má dostatečnou pevnost pro běžné používání, \item nevyžaduje vyhřívanou komoru, \item má nízké deformace při tisku. \end{itemize} PLA je zároveň ekologičtější než některé jiné plasty, protože je vyráběn z obnovitelných zdrojů (např. kukuřičného škrobu). \textbf{Nastavení tisku} Při tisku byly použity běžné parametry: \begin{itemize} \item výška vrstvy 0,2 mm, \item výplň 15-20 \%, \item teplota trysky přibližně 200 °C, \item teplota podložky přibližně 60 °C. \end{itemize} Tyto hodnoty zajistily dostatečnou pevnost a zároveň rozumnou dobu tisku. Po vytištění bylo nutné odstranit podpěry a lehce obrousit hrany. \subsubsection{Ergonomie a rozložení ovládání} Rozložení tlačítek bylo inspirováno originálním Game Boyem. Na levé straně je umístěn směrový kříž (D-PAD), na pravé straně akční tlačítka A a B. Pod displejem se nachází tlačítka START a SELECT. Toto rozložení umožňuje intuitivní ovládání her bez nutnosti si zvykat na nové uspořádání. Velikost tlačítek byla přizpůsobena tak, aby bylo možné zařízení pohodlně držet i delší dobu. \subsection{Montáž a finální kompletace} Po vytištění krabičky a otestování všech elektronických částí následovala finální montáž zařízení. Postup: \begin{itemize} \item upevnění displeje do přední části krabičky, \item osazení a fixace tlačítek, \item umístění Raspberry Pi Pico a pájecí desky, \item upevnění reproduktoru, \item vložení baterie a kontrola izolace vodičů, \item uzavření zadního krytu a přišroubování. \end{itemize} Před finálním uzavřením bylo nutné zkontrolovat, zda žádné vodiče nejsou skřípnuté a zda nedochází ke zkratu. \subsubsection{Možná vylepšení do budoucna} I když je zařízení plně funkční, existují možnosti dalšího zlepšení: \begin{itemize} \item použití větší baterie pro delší výdrž, \item přidání regulace hlasitosti pomocí potenciometru, \item použití kvalitnějšího displeje s vyšším rozlišením, \item optimalizace návrhu krabičky pro lepší chlazení. \end{itemize} \section{Závěr} Cílem této maturitní práce bylo navrhnout, postavit a otestovat přenosnou herní konzoli schopnou emulovat hry pro původní Nintendo Game Boy pomocí mikrokontroléru Raspberry Pi Pico. Dále jsem si stanovil za úkol navrhnout vlastní ovládání a vytvořit funkční krabičku, která bude zařízení chránit a zároveň připomínat klasický Game Boy, včetně použití 3D tisku z PLA materiálu. Tyto cíle se mi podařilo splnit. Úspěšně jsem nakonfiguroval a nahrál upravený firmware Pico-GB, který umožňuje spouštět herní soubory ve formátu \texttt{.gb} z SD karty, zobrazovat je na 2,2" LCD displeji a ovládat je pomocí klasického ovládacího rozložení tlačítek (D-PAD a akční tlačítka). Konzole běží plynule a umožňuje přehrávání široké škály her díky optimalizacím jako přetaktování mikrokontroléru a podpoře I2S zvuku. Implementoval jsem také menu pro výběr her ze SD karty s podporou save dat a běžným ovládáním přímo z tlačítek zařízení, podobně jako v originálním handheldu. Součástí práce byla i praktická konstrukce zařízení - navázání všech komponentů, jako jsou displej, SD čtečka, I2S zesilovač a tlačítka, na Raspberry Pi Pico a jejich otestování. Výsledné zařízení funguje jako plnohodnotný emulátor Game Boy her a reaguje na uživatelské ovládání tak, jak bylo zamýšleno. Důležitým výstupem je i ovládací režim v menu a možnost ovládání herních funkcí (např. menu výběru, přehrávání zvuku, změna rychlosti nebo palet). Dalším významným výsledkem je návrh a příprava komponentů pro 3D tištěnou krabičku z PLA materiálu. Tato krabička zajistí mechanickou ochranu všech elektronických částí, umožní pevné uchycení ovládacích prvků a přispěje k celkovému ergonomickému dojmu přenosné konzole, která se svou velikostí a ovládáním blíží klasickému Game Boyi. Inspiraci pro výrobní a tiskové postupy jsem čerpal z open-source zdrojů, které popisují optimalizaci 3D tištěných dílů včetně tlačítek a krytu. Projekt mi umožnil propojit teoretické znalosti s praktickou konstrukcí - od programování mikrokontroléru, přes elektrické zapojení až po mechanický návrh krabičky. Naučil jsem se pracovat s firmwarem, ovládáním menu, SD kartami a také s návrhem dílů pro 3D tisk, což jsou dovednosti, které mohou být využity i v dalších technických projektech. Závěrem lze konstatovat, že všechny stanovené cíle byly dosaženy a výsledkem je funkční a přenosná herní konzole s vlastním ovládáním, emulací klasických her a designem doplněným o 3D tištěnou krabičku. %\vspace{-5mm} % \includegraphics[scale=0.02]{img/Pi_feet.png} %600x400 % \subsubsection{Co se očekává v textu} % často dělení na kapitoly a články úplně stačí % % Všechny texty a nadpisy si samozřejmě upravíte podle svého \dots % % Text by měl obsahovat vše co slibujete v úvodu, včetně dostatečně podrobného popisu použitých metod řešení, všech získaných výsledků, i zápor\-ných -- když zjistím, že je něco úplně jinak, je to taky výsledek. % Je možné zmínit i důležitější slepé uličky, kterými jste museli projít. % Z výsledků samozřejmě vyvodíte podrobné závěry, které se potom stručně shrnou na konci práce. % \section{Velký nadpis} % \subsection{Menší nadpis} % \subsubsection{Ještě menší} % 50\% textu % soubor\_nazev % \begin{itemize} % \item První položka % \item Druhá položka % \end{itemize} % \textbf{Toto je tučné} % \textit{Kurzíva} % \underline{Podtržené} ~ % musí to tu být, aby fungovala svislá mezera \vspace{160mm} \section*{Poděkování} \noindent \textit{Například:} \noindent Děkuji ................ za ...................... a za obětavou pomoc a podnětné připomínky, které mi během práce poskytoval/a. % nebo cokoli dle Vašeho uvážení %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage ~ % musí to tu být, aby fungovala svislá mezera \vspace{10mm} \section*{Zadání} \noindent Dostanete od vyučujícího. \leftskip=0mm \rightskip=0mm %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage \pagestyle{plain} % znovu zapne číslování \tableofcontents % vysází obsah %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage \section{Úvod} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \vspace{20mm} \addcontentsline{toc}{section}{Seznam použitých značek a symbolů} % přidá položku do obsahu \section*{Seznam použitých značek a symbolů} \noindent Pokud pro něj máte použití. \newpage % Hlavní text by měl začínat na nové stránce. \section{Název první kapitoly} \subsection{První článek} \subsubsection{Co se očekává v textu} % často dělení na kapitoly a články úplně stačí Všechny texty a nadpisy si samozřejmě upravíte podle svého \dots Text by měl obsahovat vše co slibujete v úvodu, včetně dostatečně podrobného popisu použitých metod řešení, všech získaných výsledků, i zápor\-ných -- když zjistím, že je něco úplně jinak, je to taky výsledek. Je možné zmínit i důležitější slepé uličky, kterými jste museli projít. Z výsledků samozřejmě vyvodíte podrobné závěry, které se potom stručně shrnou na konci práce. \subsection{Ukázky citací} Parametry měniče napětí LM2567 zjistíte v jeho datasheetu \cite{lm2567}. Jak správ\-ně tento datasheet ocitovat, si přečtete v \cite{cit-jed} na straně 7. Další podrobnosti o~citační normě a vysvětlení použitého citačního stylu \texttt{czplain} najdete v \cite{bibtex:pysny}. Hodně informací o stylu \texttt{czplain} najdete také přímo ve zdrojovém soubouru stylu \textit{czplain.bst} přímo v adresáři této šablony. Další příkazy a informace o~systému \LaTeX{} najdete v knize \cite{rybitex}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage % I závěr by měl podle možností začínat na nové stránce. \section{Závěr} \url{https://www.seznam.cz} Nezapomeňte, že každý čte napřed anotaci, obsah, úvod a závěr. Teprve když toto čtenáře zaujme, bude (možná) číst i vlastní text. Toto platí i pro všechny Vaše budoucí práce. (Samozřejmě se to netýká hodnotitelů.) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage \addcontentsline{toc}{section}{Literatura a další zdroje} \renewcommand{\refname}{Literatura a další zdroje} %\printbibliography[type=book,title={Books only}] %[type=book] \bibliographystyle{czplain} %\bibliographystyle{unsrtcz} % viz text Přehled LaTeXu unsrt \bibliography{literatura} \newpage % někdy je potřeba, aby správně vyšlo číslování stránky se seznamem obrázků v obsahu \addcontentsline{toc}{section}{Seznam obrázků} % přidá seznam obrázků do obsahu \listoffigures % seznam obrázků \newpage % někdy je potřeba, aby správně vyšlo číslování stránky se seznamem obrázků v obsahu \addcontentsline{toc}{section}{Seznam tabulek} % přidá seznam tabulek do obsahu \listoftables % seznam tabulek %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newpage \section*{Další přílohy} \addcontentsline{toc}{section}{Další přílohy} % přidá tuto položku do obsahu % zde budou další přílohy Například grafy, schémata a nebo obrázky na celou stránku. \end{document} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % tady si pište, co chcete, ve výsledku se to neobjeví %****************************************************** 1 pt = 0,35 mm