I had some guests at the office this week and took a quick break at one point to play some video games on my phone. I'd recently fixed my Phonetroller (actually, I just figured out I needed to re-enable USB OTG) and was excited to use it after a 5-month hiatus. One of the guests was intrigued by the device and after giving it some thought, I realized it could be a reasonable entry for both the Open Hardware Design and Human-Machine Interface sections of the 2018 Hackaday Prize.
First, to get the open source-y bits out of the way: all design (firmware and hardware) files related to this project will be released under CC-BY-SA 4.0. Once design begins in earnest I'll get a repo up to hold official/latest fab files for everything. And I'll probably apply for OSHWA certification if the finished product gets to that point.
I spent a few minutes writing down some ideas in my notebook:
The most important part of this project is that it is a kit, and final assembly should be carried out by the user to customize the device for their phone. By making strategic parts of the Phonetroller II modular and user-adjustable (at least one-time adjustable), the end result can be far more compact than a commercially available device that must work for many phones. Another key aspect is the wired connection; avoiding Bluetooth means lower cost, simpler development, and no need for a built-in power source. And since most users have cases on their phones, giving them an option to customize the Phonetroller II for their device in its case will help prevent damaging the phone.
A number of other considerations need to be addressed in future iterations, including:
- how modular to make the device. Is it sufficient to make the USB connection and case thickness adjustable, or is it also worthwhile for the user to change button positions and type (i.e. D-pad vs joystick, etc)?
- what platform to use. I built the original device around the Teensy 3.2 and I'm leaning towards doing the same for this version, as it's a de facto standard among controller/keyboard builders due to its excellent USB HID support. It's also easy for the user to program via the Arduino IDE. But other chips have USB stacks too, and saving money/size is appealing.
- input device selection. I already swapped the tiny and painful buttons on the original device for some ALPS switches, but I want to experiment with other types too. In particular, at least having a rubber dome / membrane option would be nice; as compared to custom keyboards where discrete mechanical switches rule, I like the rubber dome feel better for thumb buttons.
- input device selection, other side. joystick? D-pad? both? If these bits aren't modular I'll need to decide which to use, and what type. I use both when gaming as some are better suited for some games and vice-versa. Whatever the case, I'm ditching the tiny generic PSP-style joystick in the original as its precision and force requirements and linearity and everything else are subpar at best.
- aspect ratio. the prototype covered a little bit of screen real estate on either side, but this makes no difference for 4:3 games and (again) saves space. but 16:9 games are also a thing and blocking screen area for those could look bad.
I likely won't have a ton of time to spend on this project as work stuff is quite busy right now. But I'll submit these plans (probably with a lot more detail added) to the Hardware Design Challenge, and if I have time I'll build a prototype (or several prototypes) and enter the Human - Computer Interface Challenge as well.