GitHub Files: https://github.com/bpwagner/GamerGorl
The heart of this project is the Wemos d1 mini board. These boards can be purchased for <$5 from China and are equipped with a usb serial interface and a esp8266 chip. The Wemos D1 mini is running Micropython.
There is an A and B button. They are 12mm tactile push buttons from ebay.
There is an X Box joystick that has two potentiometers that are tied to the analog port of the D1 Mini. I used two diodes (1N5819) to control which pot is being read at which time. I think just about any general purpose diode would work. I followed this instructable https://www.instructables.com/id/ESP8266-with-Multiple-Analog-Sensors/ to figure out how to do this. Look at the code in getJoystickX() and getJoystickY()
There is a surface mount piezo buzzer that makes sound for the GamerGorl.
The OLED display is a 1.3" I2C display that has the pins in the following order vdd, gnd, sck, sda. Some oled displays have power and ground reversed so be aware when you buy them. Also this OLED display uses a SSD1106 chip and not the SSD1306 chip so you have to use the correct OLED library. I use the library that uses framebuffer.
The board has a 3 pin WS1812B 5V led strip header. These LEDs are commonly called neopixels and are easy to program and add bling to your project. I have 19 neopixels in the case.
You need a microusb cable to program and power the GamerGorl on a standard Mac or PC. You can also power the GamerGorl using common USB battery cell chargers.
The circuit board was designed by me using DipTrace. I highly recommend Diptrace as it is easier to use than all the other circuit board software I have tried. Files will be up on github soon.
The case was designed by Jack R and printed in clear PLA on a Prusa MK3 printer. It has two parts that are press fit together. You can use #4 screws to secure the circuit board to the case top. Fusion 360 was used as the design software.
The case has holes for the USB cable and the reset switch. It also has slots that securely hold the LED strip in place.
The case went through many iterations before the design was finalized. See the log.
Even though the files are here, the latest will be stored on github once I have them up there. Stay tuned.
First, all of the code here is in MicroPython. Your D1 Mini will need to be flashed with the latest MicroPython (version 1.10.??? or later). There is a command to erase the D1 mini and then reflash it. There are many instructions online about how to do this.
Next, I used the program PyCharm and the PyCharm Micropython plugin as the IDE for programming the board. I will not lie to you, this can be tricky to get running but once it is running it works well. You have to have Python version 3 to make all this stuff work. https://plugins.jetbrains.com/plugin/9777-micropython