GithubHelp home page GithubHelp logo

seanp2001 / pico_handheld_games_console Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 35.23 MB

A handheld games console, based on the Raspberry Pi Pico.

License: GNU General Public License v3.0

Python 53.45% C++ 46.55%
pico raspberry-pi rp2040 rpi-pico 3d-printing console diy games handheld pcb

pico_handheld_games_console's Introduction

Pico Handheld Games Console

Table of Contents

Introduction

I started this project to follow on from my ATtiny Handheld Games Console. I decided the project was not as accessible as I wanted because programming an ATtiny is not simple enough for a beginner. While the limitations of the ATtiny make it a fun challenge to create games, it would be nice to be able to make something more elaborate.

Brief

I wanted to make a USB-programmable games console which could be programmed using either MicroPython or C++ (Arduino). I also wanted to use silicone button membranes to give the buttons a more premium feel compared to the tactile buttons on the ATtiny console. I also decided to make a version with a colour LCD display (see the "LCD_Version" branch).

Circuitry

Schematic

PCB Design

Display Pinout Jumpers

A feature of the PCB is the jumper connections under the display. The I2C OLED displays do not all have the same pin layout. When you buy a display online, the item you receive may not have the same pinout as the one in the photos. Due to this inconsistency, I designed the board to work with both pinouts. If your display has the pinout (in order) Vcc/GND/SCL/SDA then you need to use solder to bridge the middle pads to the upper pads (shown in blue below). If it is GND/Vcc/SCL/SDA then you need to bridge the middle pads to the lower pads (shown in red below). Once you have done this, use Kapton tape to insulate the solder bridges and prevent them from causing a short circuit on the back of the display.

Soldered PCB

Board Manager & Programming Setup

To program the board in the Arduino IDE, I used the arduino-pico board manager. I installed this using the method shown in the arduino-pico repository.

For programming the Pico using MicroPython, I followed the fantastic Official Raspberry Pi Foundation Documentation. Before this project, I had never used MicroPython, and the information provided was very helpful.

Code

This repository includes code to test that the buttons, buzzer and display are working correctly. There are two versions; one is an Arduino sketch, and the other is written in MicroPython. When you press a button, the buzzer will sound, and the display will show the name of the button pressed. Recognised buttons are as follows:

  • UP
  • DOWN
  • LEFT
  • RIGHT
  • A
  • B

Enclosure

CAD Renders

3D Printed and Assembled

Game Library

Currently, there are no games for the Pico Handheld Games Console. If you make any games for this console, please do a "fork and pull request" to add a link to the repository for your game in this section.

Further Work

This project has achieved its goal of being a more accessible, USB-programmable alternative to my ATtiny Handheld Games Console.

In future, I would like to push this concept further to make a more advanced console with a larger, colour LCD. I am researching suitable LCDs which can be driven by the Pico (with a frame buffer). To follow the development of this version of the project, please see the "LCD_Version" branch.

pico_handheld_games_console's People

Contributors

seanp2001 avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.