[Details section current as of 4/21/2018. Previous Details section available here.]
Phonetroller is an excellent game controller kit for Android devices. Here is the latest prototype playing the official Android port of Square Enix's classic Final Fantasy VI:
The device includes a number of key innovations that set it apart from other devices on the market:
- Phonetroller is compact and comfortable to use. The side-by-side mounting scheme, while not entirely novel (see Nintendo Switch Joycons or the various controller designs linked on the left of this project page), is unusual and quite a bit more usable than the majority of Android gamepads that hold the phone above the controller.
- Phonetroller is customized for your device. The dimensions of the dock section are precisely adjusted during assembly to ensure a secure fit regardless of which Android device you use, even if you prefer to keep your device in a protective case. Both micro-USB and USB-C dock connections are supported.
- Phonetroller reduces e-waste by reusing key parts from other controllers. Rather than trying to reinvent too many wheels at once, Phonetroller leverages the 'ergonomics package' from existing mass-market game controllers such as the XBOX 360. This approach breathes new life into outdated and proprietary hardware that may otherwise be destined for the landfill; avoids the creation of more plastic parts; and takes advantage of the fantastic engineering that went into existing platforms.
- Phonetroller can be built to work with any Android application. The Phonetroller is based around one of two processor boards, depending on user preference and budget: the Teensy LC or the PocketBeagle. The Teensy option, which is cheaper and consumes very little power, operates as a generic USB HID device and makes use of existing joystick libraries. The PocketBeagle option runs Android Debug Bridge (ADB), mapping user inputs directly to touch gestures for applications that lack USB HID gamepad support.
- Phonetroller is fully open-source. All PCBs and firmware will be released under CC-BY-SA 4.0. Original user-editable design files will be provided, and whenever possible we'll use FOSS software to create these files (primarily Inkscape, KiCad, and the Arduino IDE).
The Phonetroller user experience looks something like this flowchart taken from an earlier project log:
At its core, Phonetroller is and must be a kit. The user sources the salvaged controller 'core' that is disassembled, cut in half, and mostly re-used; they then customize the Phonetroller PCBs to fit their device, attach the appropriate USB connector, install the processor board of choice, and assemble the whole thing back together.
Electrically, Phonetroller's operation is fairly simple:

As of now, @zakqwy will head up the electronic bits while @Jarod White will tackle the Android ADB stuff since that was his idea and he's pretty sure he can get it to work. The next prototype will start to involve custom (non-carved) PCBs and other fanciness, so stay tuned!
zakqwy
above, 14" of snow by Saturday evening with another 5" or so to come. Yes, we almost got half a meter of snow. In mid-fucking-April.
These images show the righthand side of the controller; I didn't allow quite enough extra enamelled wire for the board to lay flat during assembly which made the whole process that much more difficult. Note the heatshrunk cable passthrough above as well; I hot-glued it flat to keep it out of the way of the PCB.


above, a bit of space glue squeezed out between the FR4 and the ABS controller shell. Also note the continued heatshrink tube for the button signal wires. 











Above, another nicely labelled PCB. R1 and R2 are for CC-1 pulldown and pullup, so this board can actually be used for a host or device. I ended up having to swap the resistor for a 5k one, otherwise 5V didn't appear on the VBUS line. Yeah I don't really want to read the USB-C spec, but this seemed to work.









The PCB isn't FR4; it seems like some cheaper composite....
PixJuan
M.daSilva
Supplyframe DesignLab
Victor Dedios
next up: a collapsible screen made from epaper