Initial commit of starter code.

A project log for projectSpigot: Open Source "Steam Controller"

developing a standalone opensource gamepad to fill the gap left by the discontinuation of the Steam Controller, the greatest controller ever

TicktokTicktok 03/08/2021 at 17:130 Comments

I got the esp32 working with Cirque's demo code, then once I figured out what needed to happen to get that working, I moved it over to 2bndy5's cirque trackpoint library and updated that to work with the esp32.  Now that I can reliably control the touchpads, and have already made good progress on functions to interpret the data I need to chose the next step forward.

I was going to work on getting the esp32 ble composit hid device stuff working, but after realizing that the esp32 doesn't have any usb hid capability, I think I might put that on hold, and switch to the teensy 3.2 until my tiny2040, pico, or feather nrf52 boards come in.

I still think I intend to do this all on the arduino nano rp2040, since it has built in ble and imu. Just waiting for it to release. And then I'm going to have to adapt the code over to that.

Another option is circuit python. The rp2040 works with circuit python, and while I'm a bit loath to use python in an embedded device, it would make it extremely open/user friendly to new users, and I've already verified 2ndy5's cirque ciruity python library works pretty solid on the itsybitys m4.  So, I may instead switch over to that. Although, the reason I stopped using the itsybitsy was I discovered all the gamepad libraries didn't have analog triggers or enough button selection options. If I go this route I need to really dig in to the usb/ble hid libraries.

Another concern I have with circuit python is button press latency. of all the gamepads out, the steam controller had some of the worst latency compared to playstation/xbox gamepads. python isn't known for being "high speed embedded", so that may nix this idea as well.

Anyway, here's the initial commit of the git.

forgot to include this in previous log. I've got some posts on my twitter of it working.

Running as a ble mouse on the esp32:

Acting as a "potentiometer" to control a neopixel ring.