The #PewPew Standalone is pretty much where I wanted it to be in terms of balance between size, simplicity, ease of use, functionality and, last but not least, price. However, if I sacrificed a little bit of convenience and size, maybe I could make something with more functionality?
It comes all soldered up and programmed, you only need to remove the protective foil from the plastic parts and screw together the case. And put in two AAA 1.5V batteries, which are not included.
It comes with CircuitPython 5.0.0 pre-programmed, and several example games. It will run both µGame and Pew Pew games.
From what I can see in the photos (I didn't get one from this batch yet), the only difference from the test units is the black silkscreen and v-cut PCBs — so you might need to use a file or sandpaper to get rid of some uneven edges on the PCB.
While designing this, I kept my eye on the MakeCode Arcade specifications to make sure the device could also be used with that platform. But I never really took the time to test it. Today I finally decided to see if it will work.
I updated the bootloader configuration to include information about all the buttons on the device, and I picked one of the examples to run. And lo and behold, it works:
After such a meticulous and throughout test, I decided it's time to add it officially, so I made a pull request to the uf2-samdx1 repository to add the bootloader configuration there (and had to sign a CLA, thank you Microsoft), and also I dropped the Arcade staff an e-mail asking for adding it to the website. We will see what they think about it.
The holidays came, so I finally have some time to work on the software for this device. For now I only did some simple housekeeping: included the pew library in the default firmware, together with the graphics for the PewPew emulation and for the menu. I also wrote a very simple program selection menu — for now without pagination:
Including all that in the firmware required some changes in the board definition. The pull request for that will probably get merged after the holidays, but it should be included in CircuitPython 5.0.0.
@Christian Walther and me are going to have a table tomorrow (2019-11-22) in Bern (Switzerland) at the HeroFest event, as a part of the Training Grounds there. I will have a whole bag of different PewPews and various prototypes, so if you are around and want to see how they look like, and maybe chat a bit about them, then you should come.
I'm hoping that I can get some game developers and future game developers interested in this.
As I pronounced two logs ago, the current design is the best I can come up with the laser-cut d-pad and those 6x6 buttons. However, there is one more way, and that is using plastic d-pad and buttons from an existing console. To do that, I needed a new PCB that would accommodate smaller buttons that could fit under the plastic d-pad. That PCB arrived today, so I could try a series of new solutions.
First I tried new 6x6 buttons that I ordered from Mouser, ones with 100gf actuation force. They do much less noise, and are easier to press. However, there is one small problem: because they are of better quality than the cheap switches I used before, and because their stems are held by the d-pad, which angles them when it is pressed, the d-pad has to be very carefully positioned at equal height on each of the button stems for the whole contraption to work properly — otherwise it becomes impossible to press some directions, or pressing one directions also presses other buttons. This is very annoying, so I decided to keep looking for better solutions.
The first one is to use the buttons from a Nintendo DS Lite:
This works pretty well, after a little bit of dremeling on the middle layer, to make room for the button's collar that keeps it in place. Unfortunately, once I tightened the screws, it became impossible to press the left direction button — turns out the dimensions of the buttons are not precise, and it's a little bit more than the promised 2.5mm of height. Loosening the screw makes it work again. (There is also the problem of the wrong markings on the buttons, but that could be probably solved by removing them.)
But this gave me an idea. You see, I could use a laser-cut d-pad and caps with those small buttons, if only there was some way of keeping them in place, preventing them from falling out. The plastic ones rely on that collar thing. I could perhaps make a two-layer d-pad and caps with a similar collar, but that would require at least 2 different kinds of acrylic — with different thickness. Plus, gluing them together would make them look bad, as the glue tends to make the transparent acrylic look misty. But I could hold them in place in a different way? How about two-sided tape?
So I put a piece of two-sided tape between the layers of acrylic, and stuck the d-pad cross and the button caps to that. And it works beautifully, even if it doesn't look so great. But that can be fixed. Encouraged with this, I assembled the whole device, and this time instead of using double-sided tape, I used regular tape, applying to the underside of the top layer only over the button holes. The result of that looks much better:
And it still works perfectly fine. I imagine I could order some die-cut stickers in the right shape for the mass production. Of course the holes in the d-pad and caps become unneeded — I used ones with holes, because I already had them.
There is one small complication with this approach: it works best when the d-pad and caps are cut from acrylic thicker than the front plate. That means I will probably need to go back to two sheets of acrylic, one 2.5mm (or even 3mm, to leave some leeway for variations in dimensions of the parts) for the middle layer and the d-pad and caps, and one 2mm, for the top layer. This shouldn't be much of a problem when producing more than 5 units, though, as we can fit multiple copies on both sheets then.
Finally, I discovered one more thing: those tiny buttons come in two versions: with regular actuation force, and with lower one. I think I have the regular version now, so I ordered the ones with lower to see if they will feel even better.
Documentation is the hard part, not only because it's difficult to clearly describe everything, but also because it's hard to find the motivation. For instance, I never really needed a schematic for this device, since most connections are really straightforward, and obvious to me — but probably not to other people. So I have finally cleaned up the schematic view.
There isn't much in it, but it might help when you are trying to figure out what is connected where.
The new front plate and button caps arrived, and I'm happy with them. I don't think I can improve this technique further, so I'm going to leave it like this. The only other improvement I can think of right now is to use switches that require less force for pressing — I will be looking into availability of such switches, so far I didn't get any answer to my inquiries.
I will still experiment with a plastic d-pad and buttons from the NDSL, but I'm not even sure I want to go that way.