This project is submitted for

Description

the idea is to build upon the great PiGrrl - a gameboy-like portable console that is raspberry-pi driven - but to use a single carrier pcb to reduce the size to a gameboy-micro like form-factor.

this project will build upon the open-source (thnx! :-D) plans for different adafruit products and their "learning"-resources to add the different features - and ultimately build a truly compact and portable console

the overall shape was put toghether relatively quickly - but getting the d-pad to feel right took some iterations, the first few where still cross-shaped

turned out, that shrinking and making it round works better for the alps switch. connecting the ABXY buttons eases installation

also playing with the back part, for example splitting it in two with overlapping part along the seam:

which would be printed standing up:

this would have the upside of a sturdier frame - but on the downside prints waaay longer, with increased risk of print failure and the split/seam doesn't look as nice as a single-pice backside does, paintability would probably be another issue - so i'll stick with the single-piece for now

btw: the front piece in its current form uses the pause-print-insert-M3-trapped-nuts-resume-print approach:

the usb-socket has mounting tabs which i decided to trim down at the side close to the alps-nav switch, just in case the room is needed later on by the 3d printed that'll come ontop of it

the omron switches chosen for ABXY have some position keys on the back, which have to be trimmed also -- which was a design decision, including holes for those would have interfered with the smd-pads on the other side

in retrospect it would have been a bit easier to mount the tft last, since it sits close to some solder-pads... but it was still doable

ok, again repopulating the board with the components grouped by function (the raspberry-zero and the powerboost 500 are already mounted)

first: soft-power

connecting the lipo battery and hitting the power button the pi boots, and pulling the gpio down powers it of :-D

second: audio

NOTE: the components in the top right corner are left/right channel = two times the same set, but their placement got a bit mixed up = is not symmetrical... oh well, just have to follow the silkscreen :-P

Testing the audio with a pair of headphones: works! :-)

(when nothing is playing - eg the channels are silent - there seems to be a tiny bit of high frequency noise coming from somewhere - and sd-io is also slightly audible... i wonder if that is just due to the anaolog/pwm nature of the system or bad board design/soldering :-S )

third: backlight and tft display:

the 2.2" display is held by a metal bracket, which in turn is glued with strips of double sided tape to the donor-pcb.

a sharp knife makes short work of these:

reapplied double-sided tape to the bracket and glued it to the pi-boy pcb - aligned to the right edge of the silkscreen square

Note: are some contacts on the front-side of the pi-boy-pcb that need to be masked of with insulating tape befor glueing down the metal braket!

transplanting the tft screen:

* the ribbon cable of the screen was desoldered from the donor-pcb with the previously mentioned tea-candle method

* pre-tinning the contacts on the pi-boy pcb

* and finally re-soldering the 14 contact

* double/tripple check the solder-joints/solder bridges since the contact pitch is ultra small :-P

similar projects that mounted the raspberry onto another pcb seem to reflow it in some way or another, with a hot-air rework station or similar tools. the same is doable with a good fine tipped soldering iron.

these steps seemed to produce good results:

1) widen the mounting hole near the hdmi to 3mm, which will be used as position key (and later on by a screw holding the case together) - done by hand, very carefully :-)

2) pre-tin all the surface mount pads on the base-board with a slight (!) amount of solder

3) use a M3 screw to get an accurate position, clamp the boards together and solder by first heating up the rim of the pin-hole, then feeding solder into it until the hole is roughly half filled. at this point it should connect with the pad below and visibly suck the solder a bit down

the tip i used fit halfway through the pin-holes, which i could put into the soldered holes that seemed to have a hard time connecting to the pad below (was the case with some of the holes connected to the ground plane, since they sucked the heat away pretty fast)

not wanting to discard the perfectly good smd-components that are already on the Mk1 pcb a candle-light desoldering session was in order: the Mk1 pcb below - roughly 1cm above the flame of a small tea light candle - and the Mk2 above ready to receive the transplant

moving the candle under the specific components to desolder; small tweezers in one, the solder iron in the other hand - worked like a charm :-)

Discussions

Become a member

Having trouble understanding what's the purpose of the 2.5v regulator, the dual buffer has an input of up to 7v. Meaning you can drive it from either the battery directly or the 3.3v rail on the pi itself. Am I missing something? Also, would have been nice to include dual pads for the buttons, I know you wanted to use those really nice expensive buttons, but honestly I think tact switches would work just fine or the non-smd style that have through-hole pins. I'm like 50% of the way into the build, screen is working, haven't ordered the all the buttons yet, but the pads on the board are definitely working. Going to work on getting sound up and running soon. Great project, hoping to finish it soon once all my parts come in.

I suspect the separate regulator is to get a cleaner supply to reduce noise... but that is just a guess... I'll be interested on your result, I've lot of noise on mine on the audio output, I suspect it might be because I didn't used the LCD from ladyada, but directly the raw LCDs from china and mine do not have a backing metal support...

on the left side of the page, there is a link to OSH park, you can directly order from there, there's a moq of 3 on OSH park through, there is also the gerber files on Github if you want to use another fab, or print/etch the PCB yourself.

OSH park is a pcb fab, you receive the blank PCB, every other part needs to be sourced yourself. also the soldering is not easy, the creator choose to stay with "large" smd component and enlarged the pads for easier soldering, but I had to resort to a magnifying glass to do it.

There's a Bill of Material CSV file here that list the component, out of my head here's where I sourced my parts:

* the switches ICs and connector: I used Mouser.

* for the passive I used aliexpress to order sets of capacitors and resistors to cut prices, just make sure the sets contains all the values you need and are of the correct size. The batteries also comes from there. I think some transistors and diode also comes from there, globally I took all I culd found on aliexpress and used mouser for the specific hard to find component.

* for the screen, rather than having the hassle to desolder the LCD from adafruit's board, I used the part number that you can find in the BoM to order directly the LCD on aliexpress for far cheaper than on adafruit (shipping is prohibitive here if I buy on adafruit...)

* for this exact reason I ordered the lipo chargers from pimoroni as he has them in stock and shipping is much better for me from his shop, of course your mileage may vary depending on where you're located.

* for the pi zero, your bet is as good as mine price and availability seems to vary a lot.

The interesting fact with mouser is that given the shipping fee and the prices, ordering components for the three PCB cost the same as if you order for just 2 board but that depend of where you are...

I've more or less successfully made the first few steps, through it wasn't without issues. here is a rundown if it interest someone.

hardware:

- soldering the pi on the baseboard was not easy, I managed to do it, but I had some debug to do to find three pads that weren't connected. nothing big, there's no real way around this, and the compactness + avoiding the rat-nest easily outweigh the difficulty...

- I place the alps joystick in reverse, my fault, but for your info, one of the photo you have shows the joystick in reverse, it's my fault for not having checked the datasheet there, but you might want to remove that photo. on my side I left the hardware like that, I've no real use for a dpad click, in fact I didn't noticed it before. I did not even needed to short the center click pad to ground as RetroGame support definition of pin "GND" which in fact means that the GPIO will act as a ground.

software:

- I selected a pi zero w, I first used the piggrl image. it worked directly, but I wasn't able to get sound on... the real problem arose when I wanted to connect my piboy to the wifi, only to find out that this image does not support wifi on the pi zero W...

- my next attempt was to use the latest raspbian, then install all on it... everything went fine until I tried to install the screen using the setup screen from adafruit, only to find out that it do not work with the latest raspbian on the pi zero W. I also just noticed you made a great script to do all these at once, but it rely on the same adafruit script that will not run on latest raspbian.

- the following step was to restart with a clean Raspbian, then just use the overlays as the screen is already supported. I got the console working in no time, just to find out that all I got was a black screen when starting emulation station.

- it turns out the screen issue was that emulationstation renders to fb0 while the screen is using fb1. I had to manually get, compile and configure to start automatically a small program called fbcp to copy fb0 to fb1.

- but I lost possibility to use console as it was constantly overwritten by fbcp, not a big deal, I just had to switch console from fb1 to fb0 and all was fixed.

As you can see I had lots of fun for my first SMD device and for my first linux project too... next step will be to source a correct battery (using a random one I had around). then try to get some case printed (that will also be a first btw). I also have some trouble with the audio. it work, but it is really noisy, how is your sound? there the noise is really at a similar level than the sounds. (I fear it might be because the screen I used didn't had that metallic support yours have...)

Thanks for your great project, it's fun so far.

rundown for the software on pi zero W so far:

- use the latest raspbian image.

- boot first one time to expand the filesystem.

- use an external tft + keyboard to enter wifi settings to "wpa_supplicant.conf"

I've assembled the power, pi, and buttons, but I'm having trouble desoldering the LCD ribbon. I tried the candle technique but it didn't seem to get hot enough and I ripped the traces off the ribbon. I will try again tomorrow getting the candle closer to the bottom of the board. If anyone has any other tips for this that would be helpful.

best use one of those third-hand-clamps to hold the pcb, point the candle at the PCB-backside roughly where the LCD-traces are (with the LCD folded away, so it doesn't get hot) and wait for the candle to heat the PCB and melt the solder

I plan to build three of these in the next week or so. I will link to my build log afterwards. I have read the build log and looked at the git repo. I would also like to contribute to the project and have submitted an application. (Tbh idk if that is necessary since my contributions will likely be all software, so maybe GitHub would be a better place for me to be a contributor.)

Is there anything not in the build log that I need to know before I order the parts and pcbs?

Also do you have any objection to my selling one of them to recoup my costs?

Also what do you think it would take to add a piezo speaker which shuts off when headphones are connected? Could it be done with a spare gpio and some software trickery to detect headphones? Maybe something like is commonly done for gpio capacitive sensing where you put a pin high and see how long it takes to drain capacitance when pulled low?

a speaker might be doable, but would probably need some amplifier - and the pcb is kinda full :-s

also i did exclude any form of speaker (like many other retropie/raspbery-gamboys have) on purpose... since i didn't want to annoy my peers with the retro-noise, and it just drains the battery and eats up space in the case-design :P

btw: just updated the git with software related stuff - if you have any changes/updates/suggestions or find bugs: give me a pull request :-)

I built one back in April or May but have been so busy. The plan is to build one 3 total and I have parts and most of 3 built up (except for the pizero and displays and powerboost on 2 of them). My colleagues at work are going to split the cost of the parts. But I don't know how to start trouble shooting the thing.

I got the Powerboost500C. It seems the black connector on the side that attaches to my LIPO is blocked by the USB connector on the Pi Grrl pcb. Is that connector supposed to be used or the microusb to power the board? My LIPO 2-bin battery connector will not fit in with the USB type A connector I have installed in there blocking the way. I will try to upload a photo to show what I mean before soldering in the PowerBoost500C.

Really exciting project! Adafruit released the official PiGRRL Zero a frew days ago. But I'm looking forward to your project because the size is much smaller and compact, so hopefully I'm going to build yours soon!

yeah,saw the official piggrl zero too - was a little disappointed that they build custom pcbs but stuck with those horrible tactile switches, and designed the case bulkier than needed :P

mine sits on the edge of the desk and waits for a me to come back and continue working on it - the dreaded 95% done ;-)

recently i was playing with yocto to build a custom/minimal image/kernel, but that didn't went far... the only two major things not finished are on software side (soft-power needs some kernel changes, and pwm-backlight needs attention too - from a configuration side) - atm i consider the hardware side as done

Where is the kicad board file? I am trying to figure out the value of a three components above U3. After that and the powerboost (yet to order) and I will have one complete. I can power directly from a +5V supply in the meantime right?

Cool, I was going to call them nipples but that sounds perverse. Registration keys sounds better. Yeah, I filed them. I realized I forgot to buy the directional joystick thingy with my $53 (3 sets) of parts order from mouser that I got in Friday. Arrgh. My colleague is printing the cases..one in glow in the dark PLA..3 of us are building them. BTW, We found a cheap $10 alternative to the display (its exact same as Adafruit but cheaper).

@David Perrenoud: I just discovered your project; I'm very impressed that you use RGB666 to drive the screen. Bravo! I was planning to contribute to the PiGrrl-Zero with an alternative version featuring a Sharp LS035Y8DX04A display (3.5", IPS) as I was excited with the 60 FPS promise of http://blog.reasonablycorrect.com/raw-dpi-raspberry-pi/. I didn't know this interface was available on smaller displays.

@JohSchneider Are you still interested? There are around 100 people on the Gamegirl Discord chat and I would be very glad if you could advise us on the PWM/PCM audio. We can help you with the buttons in exchange.