CrokPocket

CrokPocket
CrokPocket is the second in my series of handheld gaming devices that share a similar form factor. It's powered by an ESP32-S3 and runs Retro-Go firmware. This emulation software package supports NES, Game Boy, GBC, Master System, Game Gear, Doom, and other games. SNES and Genesis are also supported, but performance is poor. More information on Retro-Go can be found on its GitHub repository
This is a hobbyist DIY retro gaming handheld and does not compete with the hundreds of retro gaming handhelds flooding out of China. CrokPocket has similar performance to the iconic ESP32-based Odroid Go.
As with PicoPocket, review the bill of materials and instructions before diving in. There are a few "I'm not sure I can do this" micro-soldering moments (e.g. the 16-pin USB port). You will need a hot plate and advanced skills. I made it for myself, but if the project looks manageable and you fancy a go... go for it.
Licensing: My PCB files and STLs are released under The Unlicense. Everything else retains the licenses assigned by their creators. I take no responsibility for anything.
Supplies

1 x 2 inch TFT LCD Display - 240x320 - ST7789 AliExpress
1 x 602550 Polymer Lithium Battery AliExpress
1 x ESP32-S3 N16R8 AliExpress
1 x Ghxamp Mini Speaker 8Ohm 1W - 34.8mm*11.2mm*6.0mm AliExpress
10 x Buttons - hanxia HX TS5220A 160gf LCSC
1 x Slide Switch - Shenzhen Kinghelm Elec KH-SS12F23-G6 LCSC
1 x 3.5mm Stereo Audio Jack Socket AliExpress
1 x G-Switch Card Slot MicroSD - GT-TF003-H0185-01 LCSC
1 x MOLEX PicoBlade(MX 1.25) - Mfr. Part #532610271 LCSC
1 x Female USB Connector 16pin LCSC
1 x TP4056 LCSC
1 x NS4168 LCSC
1 x CH340C LCSC
1 x 700mA Voltage Regulator - XC6210B332MR-G LCSC
1 x Transistor package - UMH3N LCSC
1 x NPN Transistor - S8050 (J3Y) LCSC
2 x Buttons - GT-TC029B-H025-L1N LCSC
3 x 0603 LEDs 3 Colours AliExpress
2 x Schottky Diode LCSC
5 x 0805 Capacitors 10uF LCSC
5 x 0603 Capacitors 100nF LCSC
1 x 0603 Capacitor 1uF LCSC
20 x 0603 SMD Resistors (See Schematic & PCB) AliExpress
4 x M2 x 16mm Flat Head Hex Socket Screws Amazon
1 x Silicone Rubber Sheet Thickness 0.5 AliExpress
1 x Clear Grass Trimmer Line Amazon
1 x Micro SD card 32gb Amazon
Hand Tools & Equipment
Soldering iron + Solder Wire 40/60 + Solder Flux + Isopropyl
A Hot Plate and 3d printer
Watch Makers Loupe or other Magnification
Kapton tape + Hot Glue + Sand Paper + Double Sided Tape
Design files like the STL's, gerbers, schematic, etc. can be found on the GitHub Page for this project
The custom PCB can be ordered from a PCB fabrication manufacturer Like JLBPCB : Gerber File Zip (Use default PCB board settings. 1.6mm thickness etc. Just upload the gerber zip and order)
Soldering

I started with the hotplate components first, which for me was the ESP32, the AMP (NS4168), the TP4056 and the USB C port. I find it easier to hand solder, so I just do the minimum with the hotplate.
On the back (pictured above) the only really tricky parts are the 16 pin USB C port, and the package at Q1. This Q1 component (UMH3N - a six-legged dual transistor) lacks an orientation dot. There is one on the PCB, and you must have the letter "H" nearest the dot. It goes without saying, you can't do any of this without magnification of some sort.
My recommendation is to complete the back completely, and then move to the front. Applying too much heat to the on/off switch or headphone jack will render them useless. Also getting too much isopropanol in any of the buttons will make them unreliable or stop working completely!
Soldering 2



The front is straightforward. I soldered the screen ribbon cable last. The LCDs I used were Orange, Green and Red (from top to bottom). Cathode is on the left. Usually it's marked with a bit of green on the upper side of an SMD LCD.
As stated before, getting isopropanol in any of the buttons will make them unreliable or non-functional.
Not much to say about the screen ribbon cable. Get it bang in the middle. In the picture above it's a little off, but I re-soldered it. I tin the pads first, but you do you.
Before soldering the speaker, it needs to be glued in place. I went for a clear back on this version, so I hot glued it at the front.
When attaching the battery, make sure the polarity is correct ! Some batches of batteries will have the red (positive) and black (negative) wires swapped around. I also shortened my wires quite a lot to give the exposed back a cleaner finish. A bit of double-sided tape was used to fix the 600mAh 602550 battery.
Screen Alignment


My method of screen alignment uses two 3d printed parts. Some might consider this odd, but it works for me. It also raises the screen about 3mm which is needed for the case design. The two pegs of the small "end stop" go into the larger piece. There are two holes in the PCB which the pegs legs also fit into. Once you are happy this all fits, I would use some thin double sided to attach it to the PCB.
Another small blob of double sided tape is applied as seen in image 3. The screen is then carefully pushed into place. For me this gave a perfectly aligned screen, but perhaps other people will have to make some very small adjustments?
If all else fails, you can just manually align and raise the screen with 2 or 3 strips of 1mm sponge foam double-sided tape. There is plenty of slack in the ribbon cable.
The Case



The above picture is the case for the PicoPocket. Exactly the same method can be used on CrokPocket. Colours used for the buttons were black, grey, yellow, orange red & brown PLA from Eryone. The case was printed on a Bambu Lab A1 mini 3D Printer.
The Base
The base is printed in what you might describe as the "correct" way. I used a wide wide 8mm brim to stop corner lift. The other setting changes are :
- System preset = 0.16mm Optimal
- Brim enabled - Outer brim only 10mm
- Supports enabled - Snug
- Bottom surface pattern Hilbert Curve
- Seam position = Back
You could also slow down the bottom layer print speed for a better finish. After printing the base, it's bottom curves can be sanded to a smooth finish using grits from 240 to 1500.
The Top
This is printed in the "wrong way"... why? Just accept it and move on. Mostly default setting, with the following changes:
- System preset = 0.16mm Optimal
- Brim enabled - Outer brim only 10mm
- Supports enabled - Default
- TOP surface pattern Hilbert Curve
You could also slow down the top layer print speed for a better finish. After printing the top, carefully remove the supports and brim. This takes a while to do well, as does the sanding of the base.
The Buttons and Thumbs stick
System preset 0.16mm Optimal, again with brims (8mm) and then sanded with grits from 240 to 1500. If you want it to feel like it was injection moulded, you have to put the work in.
Case Design Links
The design is available on TinkerCad and as STL files are on GitHub
Speaker Insert

I just printed the the speaker grill insert in solid grey PLA and then sprayed it with Chrome paint. Brush on Chrome paint would also work. After drying, I glued it into the case front.
Light Pipes

This is again a picture of PicoPocket, but the same applies for CrokPocket. I glued light pipes for the LED's using 1.3mm clear lawn trimmer line. On the resin printed front (pictured top and bottom of this post), I actually used 1.75mm clear Petg since the holes had less shrink.
Silicone Sheet

I used some 0.5mm silicone sheet to dampen the button's clickiness. This doesn't have to be that accurate. Just cut some sheet as shown in the picture. Without it, the buttons are going to have too much rattle and the wrong height. You could adjust them in CAD Software if you want to skip the silicone for some reason.
Screws

4 x M2 x 16mm Flat Head Hex Socket Screws. If you do a home printed PLA case, these will go in perfect. If you get a resin printed case like I did, there is less hole shrink (or none probably) so you may have to get "fatter" screws, or glue them in.
Software

First upload the custom Retro-Go img file to CrokPocket.. This can be done by first downloading Esptool and unzipping it on your Desktop. I used esptool-v4.8.1-win64.zip. Place the retro-go_1.44_crokpocket.img file (available from Github) in the same Esptool directory. Open a CMD (command prompt) instance in the directory.
Type in, or cut and paste the following command :
esptool -b 921600 write_flash --flash_size detect 0x0 retro-go_1.44_crokpocket.img
Make sure the CrokPocket is connect to the PC via a USB data cable. Make sure the CrokPocket is ON (and a battery is attached). Press ENTER and watch as your electronic brick is magically transformed in to a retro gaming handheld.
After this you will need to prepare a micro SD card. Copy the contents of the CrokPocket.SD.zip to your micro SD card. You need to find some game ROM's from somewhere. Add game ROMs to their respective roms/ subfolder
Concusion
CrokPocket is based on a schematic by Ohdarling (Chinese website). I feel enough changes and improvements were made to the design to call it unique. It's actually taken 6 revisions to get to a final. That's not to say it's perfect, but I'm happy with the result.
Run time on a full charge is about 4 hours. An orange low battery warning light will start flashing very shortly before the 3V battery cut off.
The version of Retro-Go running on CrokPocket was compiled by DynaMight1124 who has his own projects on Hackster.io, Thingiverse and Instructables.
A lot of people have made similar ESP32 devices both commercial and hobbyist starting with the arguably iconic Odroid Go in 2018. I've always wanted to make one, and this project is also part of a personal quest to create a themed range of handhelds. Many thanks to Ohdarling, Dynamight, and Ducalex over at Retro-Go